diff --git a/.next/build-manifest.json b/.next/build-manifest.json index 53f412d..75e00c9 100644 --- a/.next/build-manifest.json +++ b/.next/build-manifest.json @@ -12,11 +12,6 @@ ], "rootMainFiles": [], "pages": { - "/": [ - "static/chunks/webpack.js", - "static/chunks/main.js", - "static/chunks/pages/index.js" - ], "/_app": [ "static/chunks/webpack.js", "static/chunks/main.js", @@ -27,6 +22,16 @@ "static/chunks/main.js", "static/chunks/pages/_error.js" ], + "/tools/dimension-reduction/pca": [ + "static/chunks/webpack.js", + "static/chunks/main.js", + "static/chunks/pages/tools/dimension-reduction/pca.js" + ], + "/tools/dimension-reduction/tsne": [ + "static/chunks/webpack.js", + "static/chunks/main.js", + "static/chunks/pages/tools/dimension-reduction/tsne.js" + ], "/tools/ml/rf": [ "static/chunks/webpack.js", "static/chunks/main.js", diff --git a/.next/cache/webpack/client-development-fallback/0.pack.gz b/.next/cache/webpack/client-development-fallback/0.pack.gz index 881a64b..23ebed9 100644 Binary files a/.next/cache/webpack/client-development-fallback/0.pack.gz and b/.next/cache/webpack/client-development-fallback/0.pack.gz differ diff --git a/.next/cache/webpack/client-development-fallback/1.pack.gz b/.next/cache/webpack/client-development-fallback/1.pack.gz index a8123d8..3d9babe 100644 Binary files a/.next/cache/webpack/client-development-fallback/1.pack.gz and b/.next/cache/webpack/client-development-fallback/1.pack.gz differ diff --git a/.next/cache/webpack/client-development-fallback/index.pack.gz b/.next/cache/webpack/client-development-fallback/index.pack.gz new file mode 100644 index 0000000..f4f2830 Binary files /dev/null and b/.next/cache/webpack/client-development-fallback/index.pack.gz differ diff --git a/.next/cache/webpack/client-development-fallback/index.pack.gz.old b/.next/cache/webpack/client-development-fallback/index.pack.gz.old index 3f52d3e..9804763 100644 Binary files a/.next/cache/webpack/client-development-fallback/index.pack.gz.old and b/.next/cache/webpack/client-development-fallback/index.pack.gz.old differ diff --git a/.next/cache/webpack/client-development/1.pack.gz b/.next/cache/webpack/client-development/1.pack.gz index fce39eb..0a16fe3 100644 Binary files a/.next/cache/webpack/client-development/1.pack.gz and b/.next/cache/webpack/client-development/1.pack.gz differ diff --git a/.next/cache/webpack/client-development/10.pack.gz b/.next/cache/webpack/client-development/10.pack.gz index d72bfa0..4df2800 100644 Binary files a/.next/cache/webpack/client-development/10.pack.gz and b/.next/cache/webpack/client-development/10.pack.gz differ diff --git a/.next/cache/webpack/client-development/11.pack.gz b/.next/cache/webpack/client-development/11.pack.gz index 33270b6..71c8702 100644 Binary files a/.next/cache/webpack/client-development/11.pack.gz and b/.next/cache/webpack/client-development/11.pack.gz differ diff --git a/.next/cache/webpack/client-development/12.pack.gz b/.next/cache/webpack/client-development/12.pack.gz index 8fe8f6a..4d793ec 100644 Binary files a/.next/cache/webpack/client-development/12.pack.gz and b/.next/cache/webpack/client-development/12.pack.gz differ diff --git a/.next/cache/webpack/client-development/13.pack.gz b/.next/cache/webpack/client-development/13.pack.gz index 49ac18f..5d959ab 100644 Binary files a/.next/cache/webpack/client-development/13.pack.gz and b/.next/cache/webpack/client-development/13.pack.gz differ diff --git a/.next/cache/webpack/client-development/14.pack.gz b/.next/cache/webpack/client-development/14.pack.gz index 3caadc4..0aba268 100644 Binary files a/.next/cache/webpack/client-development/14.pack.gz and b/.next/cache/webpack/client-development/14.pack.gz differ diff --git a/.next/cache/webpack/client-development/16.pack.gz b/.next/cache/webpack/client-development/16.pack.gz index 418044f..8b329ce 100644 Binary files a/.next/cache/webpack/client-development/16.pack.gz and b/.next/cache/webpack/client-development/16.pack.gz differ diff --git a/.next/cache/webpack/client-development/18.pack.gz b/.next/cache/webpack/client-development/18.pack.gz index c6a80a3..d38a1ed 100644 Binary files a/.next/cache/webpack/client-development/18.pack.gz and b/.next/cache/webpack/client-development/18.pack.gz differ diff --git a/.next/cache/webpack/client-development/20.pack.gz b/.next/cache/webpack/client-development/20.pack.gz index f303892..db236eb 100644 Binary files a/.next/cache/webpack/client-development/20.pack.gz and b/.next/cache/webpack/client-development/20.pack.gz differ diff --git a/.next/cache/webpack/client-development/21.pack.gz b/.next/cache/webpack/client-development/21.pack.gz index 6de03cf..86c1ac1 100644 Binary files a/.next/cache/webpack/client-development/21.pack.gz and b/.next/cache/webpack/client-development/21.pack.gz differ diff --git a/.next/cache/webpack/client-development/22.pack.gz b/.next/cache/webpack/client-development/22.pack.gz index 077a0b7..86e5b7f 100644 Binary files a/.next/cache/webpack/client-development/22.pack.gz and b/.next/cache/webpack/client-development/22.pack.gz differ diff --git a/.next/cache/webpack/client-development/23.pack.gz b/.next/cache/webpack/client-development/23.pack.gz index 58f5660..54700e0 100644 Binary files a/.next/cache/webpack/client-development/23.pack.gz and b/.next/cache/webpack/client-development/23.pack.gz differ diff --git a/.next/cache/webpack/client-development/24.pack.gz b/.next/cache/webpack/client-development/24.pack.gz new file mode 100644 index 0000000..172e0dc Binary files /dev/null and b/.next/cache/webpack/client-development/24.pack.gz differ diff --git a/.next/cache/webpack/client-development/25.pack.gz b/.next/cache/webpack/client-development/25.pack.gz new file mode 100644 index 0000000..4ce9185 Binary files /dev/null and b/.next/cache/webpack/client-development/25.pack.gz differ diff --git a/.next/cache/webpack/client-development/3.pack.gz b/.next/cache/webpack/client-development/3.pack.gz index 8b01333..cfd4600 100644 Binary files a/.next/cache/webpack/client-development/3.pack.gz and b/.next/cache/webpack/client-development/3.pack.gz differ diff --git a/.next/cache/webpack/client-development/5.pack.gz b/.next/cache/webpack/client-development/5.pack.gz index 03e432b..7ce7f95 100644 Binary files a/.next/cache/webpack/client-development/5.pack.gz and b/.next/cache/webpack/client-development/5.pack.gz differ diff --git a/.next/cache/webpack/client-development/6.pack.gz b/.next/cache/webpack/client-development/6.pack.gz index 8699598..4de4143 100644 Binary files a/.next/cache/webpack/client-development/6.pack.gz and b/.next/cache/webpack/client-development/6.pack.gz differ diff --git a/.next/cache/webpack/client-development/7.pack.gz b/.next/cache/webpack/client-development/7.pack.gz index f38f878..b404a10 100644 Binary files a/.next/cache/webpack/client-development/7.pack.gz and b/.next/cache/webpack/client-development/7.pack.gz differ diff --git a/.next/cache/webpack/client-development/8.pack.gz b/.next/cache/webpack/client-development/8.pack.gz index 500b303..926e2fd 100644 Binary files a/.next/cache/webpack/client-development/8.pack.gz and b/.next/cache/webpack/client-development/8.pack.gz differ diff --git a/.next/cache/webpack/client-development/9.pack.gz b/.next/cache/webpack/client-development/9.pack.gz index 8f472d6..d10ed78 100644 Binary files a/.next/cache/webpack/client-development/9.pack.gz and b/.next/cache/webpack/client-development/9.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz index 56738d1..574e34f 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz and b/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz.old b/.next/cache/webpack/client-development/index.pack.gz.old index 2443bb7..77f2230 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz.old and b/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/.next/cache/webpack/server-development/0.pack.gz b/.next/cache/webpack/server-development/0.pack.gz index 4557c33..f954453 100644 Binary files a/.next/cache/webpack/server-development/0.pack.gz and b/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/.next/cache/webpack/server-development/1.pack.gz b/.next/cache/webpack/server-development/1.pack.gz index 4d9fe30..8ebcc79 100644 Binary files a/.next/cache/webpack/server-development/1.pack.gz and b/.next/cache/webpack/server-development/1.pack.gz differ diff --git a/.next/cache/webpack/server-development/10.pack.gz b/.next/cache/webpack/server-development/10.pack.gz index e5d0b06..aad9d17 100644 Binary files a/.next/cache/webpack/server-development/10.pack.gz and b/.next/cache/webpack/server-development/10.pack.gz differ diff --git a/.next/cache/webpack/server-development/11.pack.gz b/.next/cache/webpack/server-development/11.pack.gz index 3f8543e..ddcb084 100644 Binary files a/.next/cache/webpack/server-development/11.pack.gz and b/.next/cache/webpack/server-development/11.pack.gz differ diff --git a/.next/cache/webpack/server-development/12.pack.gz b/.next/cache/webpack/server-development/12.pack.gz index 707805e..74074d5 100644 Binary files a/.next/cache/webpack/server-development/12.pack.gz and b/.next/cache/webpack/server-development/12.pack.gz differ diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz index 758b153..0c72621 100644 Binary files a/.next/cache/webpack/server-development/2.pack.gz and b/.next/cache/webpack/server-development/2.pack.gz differ diff --git a/.next/cache/webpack/server-development/3.pack.gz b/.next/cache/webpack/server-development/3.pack.gz index a13d71a..f0a7753 100644 Binary files a/.next/cache/webpack/server-development/3.pack.gz and b/.next/cache/webpack/server-development/3.pack.gz differ diff --git a/.next/cache/webpack/server-development/4.pack.gz b/.next/cache/webpack/server-development/4.pack.gz index 707805e..ca7204c 100644 Binary files a/.next/cache/webpack/server-development/4.pack.gz and b/.next/cache/webpack/server-development/4.pack.gz differ diff --git a/.next/cache/webpack/server-development/5.pack.gz b/.next/cache/webpack/server-development/5.pack.gz index d98b561..57586de 100644 Binary files a/.next/cache/webpack/server-development/5.pack.gz and b/.next/cache/webpack/server-development/5.pack.gz differ diff --git a/.next/cache/webpack/server-development/6.pack.gz b/.next/cache/webpack/server-development/6.pack.gz index d00cd09..5bbc766 100644 Binary files a/.next/cache/webpack/server-development/6.pack.gz and b/.next/cache/webpack/server-development/6.pack.gz differ diff --git a/.next/cache/webpack/server-development/7.pack.gz b/.next/cache/webpack/server-development/7.pack.gz index e980bb4..a23dd45 100644 Binary files a/.next/cache/webpack/server-development/7.pack.gz and b/.next/cache/webpack/server-development/7.pack.gz differ diff --git a/.next/cache/webpack/server-development/8.pack.gz b/.next/cache/webpack/server-development/8.pack.gz index acd1ab8..41bb173 100644 Binary files a/.next/cache/webpack/server-development/8.pack.gz and b/.next/cache/webpack/server-development/8.pack.gz differ diff --git a/.next/cache/webpack/server-development/9.pack.gz b/.next/cache/webpack/server-development/9.pack.gz index f7d8b50..9ad8da7 100644 Binary files a/.next/cache/webpack/server-development/9.pack.gz and b/.next/cache/webpack/server-development/9.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz index 4c1194d..18f7d1f 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz and b/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz.old b/.next/cache/webpack/server-development/index.pack.gz.old index 2d141ea..b7218fb 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz.old and b/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/.next/react-loadable-manifest.json b/.next/react-loadable-manifest.json index 84d4f37..b3b2b42 100644 --- a/.next/react-loadable-manifest.json +++ b/.next/react-loadable-manifest.json @@ -3,10 +3,16 @@ "id": "../node_modules/scikitjs/dist/esm/simpleSerializer.js -> ./index", "files": [] }, - "index.js -> ../components/TargetGetter": { - "id": "index.js -> ../components/TargetGetter", + "tools/dimension-reduction/pca.js -> ../../../components/PCA_Plot": { + "id": "tools/dimension-reduction/pca.js -> ../../../components/PCA_Plot", "files": [ - "static/chunks/components_TargetGetter_js.js" + "static/chunks/components_PCA_Plot_js.js" + ] + }, + "tools/dimension-reduction/tsne.js -> ../../../components/tSNE_Plot": { + "id": "tools/dimension-reduction/tsne.js -> ../../../components/tSNE_Plot", + "files": [ + "static/chunks/components_tSNE_Plot_js.js" ] }, "tools/ml/rf.js -> ../../../components/RandomForest": { diff --git a/.next/server/components_PCA_Plot_js.js b/.next/server/components_PCA_Plot_js.js new file mode 100644 index 0000000..1b58151 --- /dev/null +++ b/.next/server/components_PCA_Plot_js.js @@ -0,0 +1,55 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +exports.id = "components_PCA_Plot_js"; +exports.ids = ["components_PCA_Plot_js"]; +exports.modules = { + +/***/ "./components/D3ColorLegend.js": +/*!*************************************!*\ + !*** ./components/D3ColorLegend.js ***! + \*************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-scale-chromatic */ \"d3-scale-chromatic\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([d3__WEBPACK_IMPORTED_MODULE_2__, d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_3__]);\n([d3__WEBPACK_IMPORTED_MODULE_2__, d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\nconst D3ColorLegend = ()=>{\n const chartRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n var colorScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleSequential(d3__WEBPACK_IMPORTED_MODULE_2__.interpolateSinebow).domain([\n 0,\n 10\n ]);\n continuous(chartRef, colorScale);\n function continuous(selector_id, colorscale) {\n var legendheight = 50, legendwidth = 500, margin = {\n top: 10,\n right: 2,\n bottom: 20,\n left: 60\n }; // Adjust margins for a horizontal legend\n var canvas = d3__WEBPACK_IMPORTED_MODULE_2__.select(selector_id.current).style(\"height\", legendheight + \"px\").style(\"width\", legendwidth + \"px\").style(\"position\", \"relative\").append(\"canvas\").attr(\"height\", 1) // Set height to 1 for a horizontal legend\n .attr(\"width\", legendwidth - margin.left - margin.right) // Adjust width based on legendwidth and margins\n .style(\"height\", legendheight - margin.top - margin.bottom + \"px\").style(\"width\", legendwidth - margin.left - margin.right + \"px\").style(\"border\", \"1px solid #000\").style(\"position\", \"absolute\").style(\"top\", margin.top + \"px\").style(\"left\", margin.left + \"px\").node();\n var ctx = canvas.getContext(\"2d\");\n var legendscale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleLinear().range([\n 0,\n legendwidth - margin.left - margin.right\n ]) // Adjust the range for a horizontal legend\n .domain(colorscale.domain());\n // image data hackery based on http://bl.ocks.org/mbostock/048d21cf747371b11884f75ad896e5a5\n var image = ctx.createImageData(legendwidth - margin.left - margin.right, 1); // Create a horizontal image\n d3__WEBPACK_IMPORTED_MODULE_2__.range(legendwidth - margin.left - margin.right).forEach(function(i) {\n var c = d3__WEBPACK_IMPORTED_MODULE_2__.rgb(colorscale(legendscale.invert(i)));\n image.data[4 * i] = c.r;\n image.data[4 * i + 1] = c.g;\n image.data[4 * i + 2] = c.b;\n image.data[4 * i + 3] = 255;\n });\n ctx.putImageData(image, 0, 0);\n var legendaxis = d3__WEBPACK_IMPORTED_MODULE_2__.axisBottom() // Use axisBottom for a horizontal legend\n .scale(legendscale).tickSize(6).ticks(8);\n var svg = d3__WEBPACK_IMPORTED_MODULE_2__.select(selector_id.current).append(\"svg\").attr(\"height\", legendheight + \"px\").attr(\"width\", legendwidth + \"px\").style(\"position\", \"absolute\").style(\"left\", \"0px\").style(\"top\", \"0px\");\n svg.append(\"g\").attr(\"class\", \"axis\").attr(\"transform\", \"translate(\" + margin.left + \",\" + (legendheight - margin.bottom) + \")\") // Adjust transform for a horizontal legend\n .call(legendaxis);\n }\n ;\n }, []); // Empty dependency array to ensure useEffect runs only once\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: chartRef,\n id: \"color-legend\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/D3ColorLegend.js\",\n lineNumber: 73,\n columnNumber: 12\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (D3ColorLegend);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxPQUFPO1lBRWxCMEIsSUFDS3pCLE1BQU0sQ0FBQyxLQUNQQyxJQUFJLENBQUMsU0FBUyxRQUNkQSxJQUFJLENBQUMsYUFBYSxlQUFnQlYsT0FBT0ksSUFBSSxHQUFJLE1BQU9OLENBQUFBLGVBQWVFLE9BQU9HLE1BQU0sSUFBSSxLQUFLLDJDQUEyQzthQUN4SWdDLElBQUksQ0FBQ047UUFDZDs7SUFFSixHQUFHLEVBQUUsR0FBRyw0REFBNEQ7SUFFcEUscUJBQU8sOERBQUNPO1FBQUlDLEtBQUsvQztRQUFVZ0QsSUFBRzs7Ozs7O0FBQ2xDO0FBRUEsaUVBQWVqRCxhQUFhQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL0QzQ29sb3JMZWdlbmQuanM/Mjc3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgKiBhcyBkM3NjYWxlIGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5cbmNvbnN0IEQzQ29sb3JMZWdlbmQgPSAoKSA9PiB7XG4gICAgY29uc3QgY2hhcnRSZWYgPSB1c2VSZWYoKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBjb2xvclNjYWxlID0gZDMuc2NhbGVTZXF1ZW50aWFsKGQzLmludGVycG9sYXRlU2luZWJvdylcbiAgICAgICAgICAgIC5kb21haW4oWzAsIDEwXSk7XG5cbiAgICAgICAgY29udGludW91cyhjaGFydFJlZiwgY29sb3JTY2FsZSk7XG5cbiAgICAgICAgZnVuY3Rpb24gY29udGludW91cyhzZWxlY3Rvcl9pZCwgY29sb3JzY2FsZSkge1xuICAgICAgICAgICAgdmFyIGxlZ2VuZGhlaWdodCA9IDUwLCAvLyBSZWR1Y2UgdGhlIGhlaWdodCBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIGxlZ2VuZHdpZHRoID0gNTAwLCAvLyBJbmNyZWFzZSB0aGUgd2lkdGggZm9yIGEgaG9yaXpvbnRhbCBsZWdlbmRcbiAgICAgICAgICAgICAgICBtYXJnaW4gPSB7IHRvcDogMTAsIHJpZ2h0OiAyLCBib3R0b206IDIwLCBsZWZ0OiA2MCB9OyAvLyBBZGp1c3QgbWFyZ2lucyBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gZDMuc2VsZWN0KHNlbGVjdG9yX2lkLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwiaGVpZ2h0XCIsIGxlZ2VuZGhlaWdodCArIFwicHhcIilcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJ3aWR0aFwiLCBsZWdlbmR3aWR0aCArIFwicHhcIilcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJwb3NpdGlvblwiLCBcInJlbGF0aXZlXCIpXG4gICAgICAgICAgICAgICAgLmFwcGVuZChcImNhbnZhc1wiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIDEpIC8vIFNldCBoZWlnaHQgdG8gMSBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgbGVnZW5kd2lkdGggLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodCkgLy8gQWRqdXN0IHdpZHRoIGJhc2VkIG9uIGxlZ2VuZHdpZHRoIGFuZCBtYXJnaW5zXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwiaGVpZ2h0XCIsIChsZWdlbmRoZWlnaHQgLSBtYXJnaW4udG9wIC0gbWFyZ2luLmJvdHRvbSkgKyBcInB4XCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwid2lkdGhcIiwgKGxlZ2VuZHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQpICsgXCJweFwiKVxuICAgICAgICAgICAgICAgIC5zdHlsZShcImJvcmRlclwiLCBcIjFweCBzb2xpZCAjMDAwXCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiKVxuICAgICAgICAgICAgICAgIC5zdHlsZShcInRvcFwiLCAobWFyZ2luLnRvcCkgKyBcInB4XCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwibGVmdFwiLCAobWFyZ2luLmxlZnQpICsgXCJweFwiKVxuICAgICAgICAgICAgICAgIC5ub2RlKCk7XG5cbiAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXG4gICAgICAgICAgICB2YXIgbGVnZW5kc2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgICAgICAgICAgICAgLnJhbmdlKFswLCBsZWdlbmR3aWR0aCAtIG1hcmdpbi5sZWZ0IC0gbWFyZ2luLnJpZ2h0XSkgLy8gQWRqdXN0IHRoZSByYW5nZSBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIC5kb21haW4oY29sb3JzY2FsZS5kb21haW4oKSk7XG5cbiAgICAgICAgICAgIC8vIGltYWdlIGRhdGEgaGFja2VyeSBiYXNlZCBvbiBodHRwOi8vYmwub2Nrcy5vcmcvbWJvc3RvY2svMDQ4ZDIxY2Y3NDczNzFiMTE4ODRmNzVhZDg5NmU1YTVcbiAgICAgICAgICAgIHZhciBpbWFnZSA9IGN0eC5jcmVhdGVJbWFnZURhdGEobGVnZW5kd2lkdGggLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodCwgMSk7IC8vIENyZWF0ZSBhIGhvcml6b250YWwgaW1hZ2VcbiAgICAgICAgICAgIGQzLnJhbmdlKGxlZ2VuZHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQpLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgYyA9IGQzLnJnYihjb2xvcnNjYWxlKGxlZ2VuZHNjYWxlLmludmVydChpKSkpO1xuICAgICAgICAgICAgICAgIGltYWdlLmRhdGFbNCAqIGldID0gYy5yO1xuICAgICAgICAgICAgICAgIGltYWdlLmRhdGFbNCAqIGkgKyAxXSA9IGMuZztcbiAgICAgICAgICAgICAgICBpbWFnZS5kYXRhWzQgKiBpICsgMl0gPSBjLmI7XG4gICAgICAgICAgICAgICAgaW1hZ2UuZGF0YVs0ICogaSArIDNdID0gMjU1O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjdHgucHV0SW1hZ2VEYXRhKGltYWdlLCAwLCAwKTtcblxuICAgICAgICAgICAgdmFyIGxlZ2VuZGF4aXMgPSBkMy5heGlzQm90dG9tKCkgLy8gVXNlIGF4aXNCb3R0b20gZm9yIGEgaG9yaXpvbnRhbCBsZWdlbmRcbiAgICAgICAgICAgICAgICAuc2NhbGUobGVnZW5kc2NhbGUpXG4gICAgICAgICAgICAgICAgLnRpY2tTaXplKDYpXG4gICAgICAgICAgICAgICAgLnRpY2tzKDgpO1xuXG4gICAgICAgICAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNlbGVjdG9yX2lkLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgLmFwcGVuZChcInN2Z1wiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIChsZWdlbmRoZWlnaHQpICsgXCJweFwiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgKGxlZ2VuZHdpZHRoKSArIFwicHhcIilcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwibGVmdFwiLCBcIjBweFwiKVxuICAgICAgICAgICAgICAgIC5zdHlsZShcInRvcFwiLCBcIjBweFwiKVxuXG4gICAgICAgICAgICBzdmdcbiAgICAgICAgICAgICAgICAuYXBwZW5kKFwiZ1wiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJheGlzXCIpXG4gICAgICAgICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAobWFyZ2luLmxlZnQpICsgXCIsXCIgKyAobGVnZW5kaGVpZ2h0IC0gbWFyZ2luLmJvdHRvbSkgKyBcIilcIikgLy8gQWRqdXN0IHRyYW5zZm9ybSBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIC5jYWxsKGxlZ2VuZGF4aXMpO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICB9LCBbXSk7IC8vIEVtcHR5IGRlcGVuZGVuY3kgYXJyYXkgdG8gZW5zdXJlIHVzZUVmZmVjdCBydW5zIG9ubHkgb25jZVxuXG4gICAgcmV0dXJuIDxkaXYgcmVmPXtjaGFydFJlZn0gaWQ9XCJjb2xvci1sZWdlbmRcIj48L2Rpdj47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEM0NvbG9yTGVnZW5kO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwiZDMiLCJkM3NjYWxlIiwiRDNDb2xvckxlZ2VuZCIsImNoYXJ0UmVmIiwiY29sb3JTY2FsZSIsInNjYWxlU2VxdWVudGlhbCIsImludGVycG9sYXRlU2luZWJvdyIsImRvbWFpbiIsImNvbnRpbnVvdXMiLCJzZWxlY3Rvcl9pZCIsImNvbG9yc2NhbGUiLCJsZWdlbmRoZWlnaHQiLCJsZWdlbmR3aWR0aCIsIm1hcmdpbiIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImNhbnZhcyIsInNlbGVjdCIsImN1cnJlbnQiLCJzdHlsZSIsImFwcGVuZCIsImF0dHIiLCJub2RlIiwiY3R4IiwiZ2V0Q29udGV4dCIsImxlZ2VuZHNjYWxlIiwic2NhbGVMaW5lYXIiLCJyYW5nZSIsImltYWdlIiwiY3JlYXRlSW1hZ2VEYXRhIiwiZm9yRWFjaCIsImkiLCJjIiwicmdiIiwiaW52ZXJ0IiwiZGF0YSIsInIiLCJnIiwiYiIsInB1dEltYWdlRGF0YSIsImxlZ2VuZGF4aXMiLCJheGlzQm90dG9tIiwic2NhbGUiLCJ0aWNrU2l6ZSIsInRpY2tzIiwic3ZnIiwiY2FsbCIsImRpdiIsInJlZiIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/D3ColorLegend.js\n"); + +/***/ }), + +/***/ "./components/Loader.js": +/*!******************************!*\ + !*** ./components/Loader.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Loader)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction Loader({ loadingText = \"Processsing\" }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n textAlign: \"center\"\n },\n children: [\n loadingText,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"loader\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Loader.js\",\n lineNumber: 5,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Loader.js\",\n lineNumber: 3,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xvYWRlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWUsU0FBU0EsT0FBTyxFQUFFQyxjQUFjLGFBQWEsRUFBQztJQUN6RCxxQkFDSSw4REFBQ0M7UUFBSUMsT0FBTztZQUFDQyxXQUFVO1FBQVE7O1lBQzFCSDswQkFDRCw4REFBQ0M7Z0JBQUlHLFdBQVU7Ozs7Ozs7Ozs7OztBQUkzQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vY29tcG9uZW50cy9Mb2FkZXIuanM/YTE1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2FkZXIoeyBsb2FkaW5nVGV4dCA9ICdQcm9jZXNzc2luZyd9KXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246XCJjZW50ZXJcIn19PlxuICAgICAgICAgICAge2xvYWRpbmdUZXh0fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgIClcbn0iXSwibmFtZXMiOlsiTG9hZGVyIiwibG9hZGluZ1RleHQiLCJkaXYiLCJzdHlsZSIsInRleHRBbGlnbiIsImNsYXNzTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Loader.js\n"); + +/***/ }), + +/***/ "./components/PCA_Plot.js": +/*!********************************!*\ + !*** ./components/PCA_Plot.js ***! + \********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ PCAPlot)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_LigandContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/LigandContext */ \"./context/LigandContext.js\");\n/* harmony import */ var ml_pca__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ml-pca */ \"ml-pca\");\n/* harmony import */ var ml_pca__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(ml_pca__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _ScatterPlot__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./ScatterPlot */ \"./components/ScatterPlot.js\");\n/* harmony import */ var _Loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Loader */ \"./components/Loader.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_ScatterPlot__WEBPACK_IMPORTED_MODULE_4__]);\n_ScatterPlot__WEBPACK_IMPORTED_MODULE_4__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\n\nfunction PCAPlot() {\n const { ligand } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_context_LigandContext__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n const [pcaData, setPCAData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n setTimeout(()=>{\n processCompounds();\n }, \"1000\");\n const processCompounds = ()=>{\n var fp_storer = ligand.map((obj)=>obj.fingerprint);\n try {\n const pca = new ml_pca__WEBPACK_IMPORTED_MODULE_3__.PCA(fp_storer);\n const pca_data_raw = pca.predict(fp_storer, {\n nComponents: 2\n });\n const pca_data_in = pca_data_raw.data.map(([x, y])=>({\n x,\n y\n }));\n setPCAData(pca_data_in);\n } catch (error) {\n console.error(\"Error:\", error);\n }\n };\n }, []);\n if (pcaData === null) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Loader__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/PCA_Plot.js\",\n lineNumber: 35,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/PCA_Plot.js\",\n lineNumber: 34,\n columnNumber: 9\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/PCA_Plot.js\",\n lineNumber: 41,\n columnNumber: 9\n }, this),\n pcaData && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ScatterPlot__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n data: pcaData,\n width: 600,\n height: 600,\n colorProperty: ligand.map((obj)=>obj.pKi)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/PCA_Plot.js\",\n lineNumber: 42,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/PCA_Plot.js\",\n lineNumber: 40,\n columnNumber: 7\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1BDQV9QbG90LmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQXdEO0FBQ0g7QUFDeEI7QUFDVztBQUNWO0FBR2YsU0FBU087SUFDdEIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR1IsaURBQVVBLENBQUNHLDhEQUFhQTtJQUMzQyxNQUFNLENBQUNNLFNBQVNDLFdBQVcsR0FBR1IsK0NBQVFBLENBQUM7SUFFdkNELGdEQUFTQSxDQUFDO1FBQ1JVLFdBQVc7WUFDVEM7UUFDRixHQUFHO1FBRUgsTUFBTUEsbUJBQW1CO1lBQ3ZCLElBQUlDLFlBQVlMLE9BQU9NLEdBQUcsQ0FBQyxDQUFDQyxNQUFRQSxJQUFJQyxXQUFXO1lBQ2pELElBQUk7Z0JBQ0YsTUFBTUMsTUFBTSxJQUFJYix1Q0FBR0EsQ0FBQ1M7Z0JBQ3BCLE1BQU1LLGVBQWVELElBQUlFLE9BQU8sQ0FBQ04sV0FBVztvQkFBRU8sYUFBYTtnQkFBRTtnQkFFN0QsTUFBTUMsY0FBY0gsYUFBYUksSUFBSSxDQUFDUixHQUFHLENBQUMsQ0FBQyxDQUFDUyxHQUFHQyxFQUFFLEdBQU07d0JBQUVEO3dCQUFHQztvQkFBRTtnQkFDOURkLFdBQVdXO1lBQ2IsRUFBRSxPQUFPSSxPQUFPO2dCQUNkQyxRQUFRRCxLQUFLLENBQUMsVUFBVUE7WUFDMUI7UUFDSjtJQUVGLEdBQUcsRUFBRTtJQUVILElBQUdoQixZQUFZLE1BQUs7UUFDbEIscUJBQ0UsOERBQUNrQjtZQUFJQyxXQUFVO3NCQUNiLDRFQUFDdEIsK0NBQU1BOzs7Ozs7Ozs7O0lBR2I7SUFDQSxxQkFDRSw4REFBQ3FCO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDQzs7Ozs7WUFDQXBCLHlCQUFXLDhEQUFDSixvREFBV0E7Z0JBQUNpQixNQUFNYjtnQkFBU3FCLE9BQU87Z0JBQUtDLFFBQVE7Z0JBQUtDLGVBQWV4QixPQUFPTSxHQUFHLENBQUMsQ0FBQ0MsTUFBUUEsSUFBSWtCLEdBQUc7Ozs7Ozs7Ozs7OztBQUduSCIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vY29tcG9uZW50cy9QQ0FfUGxvdC5qcz9hZWVlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaWdhbmRDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L0xpZ2FuZENvbnRleHRcIjtcbmltcG9ydCB7IFBDQSB9IGZyb20gJ21sLXBjYSc7XG5pbXBvcnQgU2NhdHRlclBsb3QgZnJvbSAnLi9TY2F0dGVyUGxvdCc7XG5pbXBvcnQgTG9hZGVyIGZyb20gJy4vTG9hZGVyJztcblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBQQ0FQbG90KCkge1xuICBjb25zdCB7IGxpZ2FuZCB9ID0gdXNlQ29udGV4dChMaWdhbmRDb250ZXh0KTtcbiAgY29uc3QgW3BjYURhdGEsIHNldFBDQURhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgcHJvY2Vzc0NvbXBvdW5kcygpO1xuICAgIH0sIFwiMTAwMFwiKTtcblxuICAgIGNvbnN0IHByb2Nlc3NDb21wb3VuZHMgPSAoKSA9PiB7XG4gICAgICB2YXIgZnBfc3RvcmVyID0gbGlnYW5kLm1hcCgob2JqKSA9PiBvYmouZmluZ2VycHJpbnQpO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHBjYSA9IG5ldyBQQ0EoZnBfc3RvcmVyKTtcbiAgICAgICAgICBjb25zdCBwY2FfZGF0YV9yYXcgPSBwY2EucHJlZGljdChmcF9zdG9yZXIsIHsgbkNvbXBvbmVudHM6IDIgfSk7XG5cbiAgICAgICAgICBjb25zdCBwY2FfZGF0YV9pbiA9IHBjYV9kYXRhX3Jhdy5kYXRhLm1hcCgoW3gsIHldKSA9PiAoeyB4LCB5IH0pKTtcbiAgICAgICAgICBzZXRQQ0FEYXRhKHBjYV9kYXRhX2luKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjpcIiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBcbiAgfSwgW10pO1xuXG4gICAgaWYocGNhRGF0YSA9PT0gbnVsbCl7XG4gICAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgICAgPExvYWRlciAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIClcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICAgIDxicj48L2JyPlxuICAgICAgICB7cGNhRGF0YSAmJiA8U2NhdHRlclBsb3QgZGF0YT17cGNhRGF0YX0gd2lkdGg9ezYwMH0gaGVpZ2h0PXs2MDB9IGNvbG9yUHJvcGVydHk9e2xpZ2FuZC5tYXAoKG9iaikgPT4gb2JqLnBLaSl9Lz59XG4gICAgICA8L2Rpdj5cbiAgICApO1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkxpZ2FuZENvbnRleHQiLCJQQ0EiLCJTY2F0dGVyUGxvdCIsIkxvYWRlciIsIlBDQVBsb3QiLCJsaWdhbmQiLCJwY2FEYXRhIiwic2V0UENBRGF0YSIsInNldFRpbWVvdXQiLCJwcm9jZXNzQ29tcG91bmRzIiwiZnBfc3RvcmVyIiwibWFwIiwib2JqIiwiZmluZ2VycHJpbnQiLCJwY2EiLCJwY2FfZGF0YV9yYXciLCJwcmVkaWN0IiwibkNvbXBvbmVudHMiLCJwY2FfZGF0YV9pbiIsImRhdGEiLCJ4IiwieSIsImVycm9yIiwiY29uc29sZSIsImRpdiIsImNsYXNzTmFtZSIsImJyIiwid2lkdGgiLCJoZWlnaHQiLCJjb2xvclByb3BlcnR5IiwicEtpIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/PCA_Plot.js\n"); + +/***/ }), + +/***/ "./components/ScatterPlot.js": +/*!***********************************!*\ + !*** ./components/ScatterPlot.js ***! + \***********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AxisBottom: () => (/* binding */ AxisBottom),\n/* harmony export */ AxisLeft: () => (/* binding */ AxisLeft),\n/* harmony export */ \"default\": () => (/* binding */ Scatterplot)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var _D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./D3ColorLegend */ \"./components/D3ColorLegend.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([d3__WEBPACK_IMPORTED_MODULE_2__, _D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__]);\n([d3__WEBPACK_IMPORTED_MODULE_2__, _D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n// tick length\nconst TICK_LENGTH = 20;\nconst AxisBottom = ({ xScale, pixelsPerTick, height })=>{\n const range = xScale.range();\n const ticks = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const width = range[1] - range[0];\n const numberOfTicksTarget = Math.floor(width / pixelsPerTick);\n return xScale.ticks(numberOfTicksTarget).map((value)=>({\n value,\n xOffset: xScale(value)\n }));\n }, [\n xScale,\n height\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: ticks.map(({ value, xOffset })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(${xOffset}, 0)`,\n shapeRendering: \"crispEdges\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n y1: TICK_LENGTH,\n y2: -height - TICK_LENGTH,\n stroke: \"var(--text-color)\",\n strokeWidth: 0.5\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 34,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n style: {\n fontSize: \"10px\",\n textAnchor: \"middle\",\n transform: \"translateY(20px)\",\n fill: \"var(--text-color)\"\n },\n children: value\n }, value, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 40,\n columnNumber: 11\n }, undefined)\n ]\n }, value, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 29,\n columnNumber: 9\n }, undefined))\n }, void 0, false);\n};\nconst AxisLeft = ({ yScale, pixelsPerTick, width })=>{\n const range = yScale.range();\n const ticks = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const height = range[0] - range[1];\n const numberOfTicksTarget = Math.floor(height / pixelsPerTick);\n return yScale.ticks(numberOfTicksTarget).map((value)=>({\n value,\n yOffset: yScale(value)\n }));\n }, [\n yScale\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: ticks.map(({ value, yOffset })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(0, ${yOffset})`,\n shapeRendering: \"crispEdges\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: -TICK_LENGTH,\n x2: width + TICK_LENGTH,\n stroke: \"var(--text-color)\",\n strokeWidth: 0.5\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 78,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n style: {\n fontSize: \"10px\",\n textAnchor: \"middle\",\n transform: \"translateX(-20px)\",\n fill: \"var(--text-color)\"\n },\n children: value\n }, value, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 84,\n columnNumber: 11\n }, undefined)\n ]\n }, value, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 73,\n columnNumber: 9\n }, undefined))\n }, void 0, false);\n};\nconst MARGIN = {\n top: 60,\n right: 60,\n bottom: 60,\n left: 60\n};\nfunction Scatterplot({ width, height, data, xAxisTitle = \"Principal Component 1\", yAxisTitle = \"Principal Component 2\", colorProperty = null }) {\n // Layout. The div size is set by the given props.\n // The bounds (=area inside the axis) is calculated by subtracting the margins\n const boundsWidth = width - MARGIN.right - MARGIN.left;\n const boundsHeight = height - MARGIN.top - MARGIN.bottom;\n const padding = 4;\n const xDomain = [\n d3__WEBPACK_IMPORTED_MODULE_2__.min(data, (d)=>d.y) - padding,\n d3__WEBPACK_IMPORTED_MODULE_2__.max(data, (d)=>d.y) + padding\n ];\n const yDomain = [\n d3__WEBPACK_IMPORTED_MODULE_2__.min(data, (d)=>d.x) - padding,\n d3__WEBPACK_IMPORTED_MODULE_2__.max(data, (d)=>d.x) + padding\n ];\n const xScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleLinear().domain(xDomain).range([\n 0,\n boundsWidth\n ]);\n const yScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleLinear().domain(yDomain).range([\n boundsHeight,\n 0\n ]);\n const colorScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleSequential().domain([\n 1,\n 10\n ]).interpolator(d3__WEBPACK_IMPORTED_MODULE_2__.interpolateSinebow);\n console.log(colorProperty);\n // Build the shapes\n const allShapes = data.map((d, i)=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n r: 4,\n cx: xScale(d.y),\n cy: yScale(d.x),\n opacity: 1,\n stroke: colorProperty == null ? \"var(--accent-color)\" : colorScale(colorProperty[i]),\n fill: colorProperty == null ? \"var(--accent-color)\" : colorScale(colorProperty[i]),\n fillOpacity: 0.2,\n strokeWidth: 1\n }, i, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 130,\n columnNumber: 7\n }, this);\n });\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 148,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: width,\n height: height,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n width: boundsWidth,\n height: boundsHeight,\n transform: `translate(${[\n MARGIN.left,\n MARGIN.top\n ].join(\",\")})`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AxisLeft, {\n yScale: yScale,\n pixelsPerTick: 40,\n width: boundsWidth\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 157,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(0, ${boundsHeight})`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AxisBottom, {\n xScale: xScale,\n pixelsPerTick: 40,\n height: boundsHeight\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 162,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 159,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n x: boundsWidth / 2,\n y: boundsHeight + MARGIN.top - 10,\n textAnchor: \"middle\",\n style: {\n fontSize: \"14px\",\n fill: \"var(--text-color)\"\n },\n children: xAxisTitle\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 170,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n transform: `translate(${-MARGIN.left + 20},${boundsHeight / 2}) rotate(-90)`,\n textAnchor: \"middle\",\n style: {\n fontSize: \"14px\",\n fill: \"var(--text-color)\"\n },\n children: yAxisTitle\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 178,\n columnNumber: 11\n }, this),\n allShapes\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 151,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 149,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 147,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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OzswQkFDZCw4REFBQ3NFO2dCQUFJOUQsT0FBT0E7Z0JBQU9ILFFBQVFBOzBCQUV6Qiw0RUFBQ1U7b0JBQ0NQLE9BQU9tQztvQkFDUHRDLFFBQVF1QztvQkFDUjVCLFdBQVcsQ0FBQyxVQUFVLEVBQUU7d0JBQUNpQixPQUFPSSxJQUFJO3dCQUFFSixPQUFPQyxHQUFHO3FCQUFDLENBQUNxQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7O3NDQUc5RCw4REFBQzNDOzRCQUFTQyxRQUFRQTs0QkFBUXpCLGVBQWU7NEJBQUlJLE9BQU9tQzs7Ozs7O3NDQUVwRCw4REFBQzVCOzRCQUNDQyxXQUFXLENBQUMsYUFBYSxFQUFFNEIsYUFBYSxDQUFDLENBQUM7c0NBRTFDLDRFQUFDMUM7Z0NBQ0NDLFFBQVFBO2dDQUNSQyxlQUFlO2dDQUNmQyxRQUFRdUM7Ozs7Ozs7Ozs7O3NDQUtaLDhEQUFDckI7NEJBQ0M2QixHQUFHVCxjQUFjOzRCQUNqQk0sR0FBR0wsZUFBZVgsT0FBT0MsR0FBRyxHQUFHOzRCQUMvQlIsWUFBVzs0QkFDWEYsT0FBTztnQ0FBRUMsVUFBVTtnQ0FBUUUsTUFBTTs0QkFBb0I7c0NBRXBEYTs7Ozs7O3NDQUVILDhEQUFDakI7NEJBQ0NQLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQ2lCLE9BQU9JLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRU8sZUFBZSxFQUFFLGFBQWEsQ0FBQzs0QkFDNUVsQixZQUFXOzRCQUNYRixPQUFPO2dDQUFFQyxVQUFVO2dDQUFRRSxNQUFNOzRCQUFvQjtzQ0FFcERjOzs7Ozs7d0JBSUZvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTVgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbXBvbmVudHMvU2NhdHRlclBsb3QuanM/YzNiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgRDNDb2xvckxlZ2VuZCBmcm9tICcuL0QzQ29sb3JMZWdlbmQnO1xuXG4vLyB0aWNrIGxlbmd0aFxuY29uc3QgVElDS19MRU5HVEggPSAyMDtcblxuZXhwb3J0IGNvbnN0IEF4aXNCb3R0b20gPSAoe1xuICB4U2NhbGUsXG4gIHBpeGVsc1BlclRpY2ssXG4gIGhlaWdodCxcbn0pID0+IHtcbiAgY29uc3QgcmFuZ2UgPSB4U2NhbGUucmFuZ2UoKTtcblxuICBjb25zdCB0aWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gcmFuZ2VbMV0gLSByYW5nZVswXTtcbiAgICBjb25zdCBudW1iZXJPZlRpY2tzVGFyZ2V0ID0gTWF0aC5mbG9vcih3aWR0aCAvIHBpeGVsc1BlclRpY2spO1xuXG4gICAgcmV0dXJuIHhTY2FsZS50aWNrcyhudW1iZXJPZlRpY2tzVGFyZ2V0KS5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgdmFsdWUsXG4gICAgICB4T2Zmc2V0OiB4U2NhbGUodmFsdWUpLFxuICAgIH0pKTtcbiAgfSwgW3hTY2FsZSwgaGVpZ2h0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRpY2tzIGFuZCBsYWJlbHMgKi99XG4gICAgICB7dGlja3MubWFwKCh7IHZhbHVlLCB4T2Zmc2V0IH0pID0+IChcbiAgICAgICAgPGdcbiAgICAgICAgICBrZXk9e3ZhbHVlfVxuICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke3hPZmZzZXR9LCAwKWB9XG4gICAgICAgICAgc2hhcGVSZW5kZXJpbmc9e1wiY3Jpc3BFZGdlc1wifVxuICAgICAgICA+XG4gICAgICAgICAgPGxpbmVcbiAgICAgICAgICAgIHkxPXtUSUNLX0xFTkdUSH1cbiAgICAgICAgICAgIHkyPXstaGVpZ2h0IC0gVElDS19MRU5HVEh9XG4gICAgICAgICAgICBzdHJva2U9XCJ2YXIoLS10ZXh0LWNvbG9yKVwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17MC41fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBmb250U2l6ZTogXCIxMHB4XCIsXG4gICAgICAgICAgICAgIHRleHRBbmNob3I6IFwibWlkZGxlXCIsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDIwcHgpXCIsXG4gICAgICAgICAgICAgIGZpbGw6IFwidmFyKC0tdGV4dC1jb2xvcilcIixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgPC9nPlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQXhpc0xlZnQgPSAoeyB5U2NhbGUsIHBpeGVsc1BlclRpY2ssIHdpZHRoIH0pID0+IHtcbiAgY29uc3QgcmFuZ2UgPSB5U2NhbGUucmFuZ2UoKTtcbiAgY29uc3QgdGlja3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBoZWlnaHQgPSByYW5nZVswXSAtIHJhbmdlWzFdO1xuICAgIGNvbnN0IG51bWJlck9mVGlja3NUYXJnZXQgPSBNYXRoLmZsb29yKGhlaWdodCAvIHBpeGVsc1BlclRpY2spO1xuXG4gICAgcmV0dXJuIHlTY2FsZS50aWNrcyhudW1iZXJPZlRpY2tzVGFyZ2V0KS5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgdmFsdWUsXG4gICAgICB5T2Zmc2V0OiB5U2NhbGUodmFsdWUpLFxuICAgIH0pKTtcbiAgfSwgW3lTY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUaWNrcyBhbmQgbGFiZWxzICovfVxuICAgICAge3RpY2tzLm1hcCgoeyB2YWx1ZSwgeU9mZnNldCB9KSA9PiAoXG4gICAgICAgIDxnXG4gICAgICAgICAga2V5PXt2YWx1ZX1cbiAgICAgICAgICB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoMCwgJHt5T2Zmc2V0fSlgfVxuICAgICAgICAgIHNoYXBlUmVuZGVyaW5nPXtcImNyaXNwRWRnZXNcIn1cbiAgICAgICAgPlxuICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICB4MT17LVRJQ0tfTEVOR1RIfVxuICAgICAgICAgICAgeDI9e3dpZHRoICsgVElDS19MRU5HVEh9XG4gICAgICAgICAgICBzdHJva2U9XCJ2YXIoLS10ZXh0LWNvbG9yKVwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17MC41fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBmb250U2l6ZTogXCIxMHB4XCIsXG4gICAgICAgICAgICAgIHRleHRBbmNob3I6IFwibWlkZGxlXCIsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC0yMHB4KVwiLFxuICAgICAgICAgICAgICBmaWxsOiBcInZhcigtLXRleHQtY29sb3IpXCIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgICA8L3RleHQ+XG4gICAgICAgIDwvZz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgTUFSR0lOID0geyB0b3A6IDYwLCByaWdodDogNjAsIGJvdHRvbTogNjAsIGxlZnQ6IDYwIH07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjYXR0ZXJwbG90KHsgd2lkdGgsIGhlaWdodCwgZGF0YSwgXG4gIHhBeGlzVGl0bGUgPSAnUHJpbmNpcGFsIENvbXBvbmVudCAxJywgeUF4aXNUaXRsZSA9ICdQcmluY2lwYWwgQ29tcG9uZW50IDInLFxuICBjb2xvclByb3BlcnR5ID0gbnVsbCB9KSB7XG4gIC8vIExheW91dC4gVGhlIGRpdiBzaXplIGlzIHNldCBieSB0aGUgZ2l2ZW4gcHJvcHMuXG4gIC8vIFRoZSBib3VuZHMgKD1hcmVhIGluc2lkZSB0aGUgYXhpcykgaXMgY2FsY3VsYXRlZCBieSBzdWJ0cmFjdGluZyB0aGUgbWFyZ2luc1xuICBjb25zdCBib3VuZHNXaWR0aCA9IHdpZHRoIC0gTUFSR0lOLnJpZ2h0IC0gTUFSR0lOLmxlZnQ7XG4gIGNvbnN0IGJvdW5kc0hlaWdodCA9IGhlaWdodCAtIE1BUkdJTi50b3AgLSBNQVJHSU4uYm90dG9tO1xuICBjb25zdCBwYWRkaW5nID0gNDtcblxuICBjb25zdCB4RG9tYWluID0gW2QzLm1pbihkYXRhLCBkID0+IGQueSkgLSBwYWRkaW5nLCBkMy5tYXgoZGF0YSwgZCA9PiBkLnkpICsgcGFkZGluZ107XG4gIGNvbnN0IHlEb21haW4gPSBbZDMubWluKGRhdGEsIGQgPT4gZC54KSAtIHBhZGRpbmcsIGQzLm1heChkYXRhLCBkID0+IGQueCkgKyBwYWRkaW5nXTtcblxuICBjb25zdCB4U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgLmRvbWFpbih4RG9tYWluKVxuICAgIC5yYW5nZShbMCwgYm91bmRzV2lkdGhdKTtcblxuICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgLmRvbWFpbih5RG9tYWluKVxuICAgIC5yYW5nZShbYm91bmRzSGVpZ2h0LCAwXSk7XG5cblxuICBjb25zdCBjb2xvclNjYWxlID0gZDMuc2NhbGVTZXF1ZW50aWFsKCkuZG9tYWluKFsxLDEwXSlcbiAgLmludGVycG9sYXRvcihkMy5pbnRlcnBvbGF0ZVNpbmVib3cpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9yUHJvcGVydHkpXG4gIC8vIEJ1aWxkIHRoZSBzaGFwZXNcbiAgY29uc3QgYWxsU2hhcGVzID0gZGF0YS5tYXAoKGQsIGkpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGNpcmNsZVxuICAgICAgICBrZXk9e2l9XG4gICAgICAgIHI9ezR9XG4gICAgICAgIGN4PXt4U2NhbGUoZC55KX1cbiAgICAgICAgY3k9e3lTY2FsZShkLngpfVxuICAgICAgICBvcGFjaXR5PXsxfVxuICAgICAgICBzdHJva2U9IHtjb2xvclByb3BlcnR5ID09IG51bGwgPyBcInZhcigtLWFjY2VudC1jb2xvcilcIiA6IGNvbG9yU2NhbGUoY29sb3JQcm9wZXJ0eVtpXSl9XG4gICAgICAgIGZpbGw9e2NvbG9yUHJvcGVydHkgPT0gbnVsbCA/IFwidmFyKC0tYWNjZW50LWNvbG9yKVwiIDogY29sb3JTY2FsZShjb2xvclByb3BlcnR5W2ldKX1cbiAgICAgICAgZmlsbE9wYWNpdHk9ezAuMn1cbiAgICAgICAgc3Ryb2tlV2lkdGg9ezF9XG4gICAgICAvPlxuICAgICk7XG4gIH0pO1xuXG5cblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8RDNDb2xvckxlZ2VuZCAvPlxuICAgICAgPHN2ZyB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fT5cbiAgICAgICAgXG4gICAgICAgIDxnXG4gICAgICAgICAgd2lkdGg9e2JvdW5kc1dpZHRofVxuICAgICAgICAgIGhlaWdodD17Ym91bmRzSGVpZ2h0fVxuICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke1tNQVJHSU4ubGVmdCwgTUFSR0lOLnRvcF0uam9pbignLCcpfSlgfVxuICAgICAgICA+XG4gICAgICAgICAgey8qIFkgYXhpcyAqL31cbiAgICAgICAgICA8QXhpc0xlZnQgeVNjYWxlPXt5U2NhbGV9IHBpeGVsc1BlclRpY2s9ezQwfSB3aWR0aD17Ym91bmRzV2lkdGh9IC8+XG4gICAgICAgICAgey8qIFggYXhpcywgdXNlIGFuIGFkZGl0aW9uYWwgdHJhbnNsYXRpb24gdG8gYXBwZWFyIGF0IHRoZSBib3R0b20gKi99XG4gICAgICAgICAgPGdcbiAgICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgwLCAke2JvdW5kc0hlaWdodH0pYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QXhpc0JvdHRvbVxuICAgICAgICAgICAgICB4U2NhbGU9e3hTY2FsZX1cbiAgICAgICAgICAgICAgcGl4ZWxzUGVyVGljaz17NDB9XG4gICAgICAgICAgICAgIGhlaWdodD17Ym91bmRzSGVpZ2h0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2c+XG5cbiAgICAgICAgICB7LyogQXhpcyBUaXRsZXMgKi99XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIHg9e2JvdW5kc1dpZHRoIC8gMn1cbiAgICAgICAgICAgIHk9e2JvdW5kc0hlaWdodCArIE1BUkdJTi50b3AgLSAxMH1cbiAgICAgICAgICAgIHRleHRBbmNob3I9XCJtaWRkbGVcIlxuICAgICAgICAgICAgc3R5bGU9e3sgZm9udFNpemU6IFwiMTRweFwiLCBmaWxsOiBcInZhcigtLXRleHQtY29sb3IpXCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eEF4aXNUaXRsZX1cbiAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgkey1NQVJHSU4ubGVmdCArIDIwfSwke2JvdW5kc0hlaWdodCAvIDJ9KSByb3RhdGUoLTkwKWB9XG4gICAgICAgICAgICB0ZXh0QW5jaG9yPVwibWlkZGxlXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGZvbnRTaXplOiBcIjE0cHhcIiwgZmlsbDogXCJ2YXIoLS10ZXh0LWNvbG9yKVwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3lBeGlzVGl0bGV9XG4gICAgICAgICAgPC90ZXh0PlxuXG4gICAgICAgICAgey8qIENpcmNsZXMgKi99XG4gICAgICAgICAge2FsbFNoYXBlc31cbiAgICAgICAgPC9nPlxuICAgICAgPC9zdmc+XG4gICAgICBcbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwiZDMiLCJEM0NvbG9yTGVnZW5kIiwiVElDS19MRU5HVEgiLCJBeGlzQm90dG9tIiwieFNjYWxlIiwicGl4ZWxzUGVyVGljayIsImhlaWdodCIsInJhbmdlIiwidGlja3MiLCJ3aWR0aCIsIm51bWJlck9mVGlja3NUYXJnZXQiLCJNYXRoIiwiZmxvb3IiLCJtYXAiLCJ2YWx1ZSIsInhPZmZzZXQiLCJnIiwidHJhbnNmb3JtIiwic2hhcGVSZW5kZXJpbmciLCJsaW5lIiwieTEiLCJ5MiIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwidGV4dCIsInN0eWxlIiwiZm9udFNpemUiLCJ0ZXh0QW5jaG9yIiwiZmlsbCIsIkF4aXNMZWZ0IiwieVNjYWxlIiwieU9mZnNldCIsIngxIiwieDIiLCJNQVJHSU4iLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJTY2F0dGVycGxvdCIsImRhdGEiLCJ4QXhpc1RpdGxlIiwieUF4aXNUaXRsZSIsImNvbG9yUHJvcGVydHkiLCJib3VuZHNXaWR0aCIsImJvdW5kc0hlaWdodCIsInBhZGRpbmciLCJ4RG9tYWluIiwibWluIiwiZCIsInkiLCJtYXgiLCJ5RG9tYWluIiwieCIsInNjYWxlTGluZWFyIiwiZG9tYWluIiwiY29sb3JTY2FsZSIsInNjYWxlU2VxdWVudGlhbCIsImludGVycG9sYXRvciIsImludGVycG9sYXRlU2luZWJvdyIsImNvbnNvbGUiLCJsb2ciLCJhbGxTaGFwZXMiLCJpIiwiY2lyY2xlIiwiciIsImN4IiwiY3kiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJkaXYiLCJzdmciLCJqb2luIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/ScatterPlot.js\n"); + +/***/ }) + +}; +; \ No newline at end of file diff --git a/.next/server/components_TargetGetter_js.js b/.next/server/components_TargetGetter_js.js index 56bc4a9..8e699a2 100644 --- a/.next/server/components_TargetGetter_js.js +++ b/.next/server/components_TargetGetter_js.js @@ -27,7 +27,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac \*********************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DataPreProcessToolKit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_LigandContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/LigandContext */ \"./context/LigandContext.js\");\n/* harmony import */ var _utils_rdkit_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/rdkit_loader */ \"./components/utils/rdkit_loader.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Loader */ \"./components/Loader.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/router */ \"./node_modules/next/router.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nfunction DataPreProcessToolKit() {\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_6__.useRouter)();\n const { ligand, setLigand } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_context_LigandContext__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n const [dataDeduplication, setDataDeduplication] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [fingerprinting, setFingerprinting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [pkistate, setpkistate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [fpRadius, setFpRadius] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(2);\n const [fpSize, setFpSize] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(2048);\n const [RDKit, setRDKit] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [stateOfRDKit, setStateOfRDKit] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [fpProcessing, setFPProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [fploading, setFPloading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [totalComps, setTotalComps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n async function loadRDKit() {\n const RDK = await (0,_utils_rdkit_loader__WEBPACK_IMPORTED_MODULE_3__.initRDKit)();\n setRDKit(RDK);\n setStateOfRDKit(true);\n }\n loadRDKit();\n });\n function dataDeuplicater() {\n if (dataDeduplication) {\n let de_dup_lig = ligand.map(({ molecule_chembl_id, canonical_smiles, standard_value })=>{\n const newKey = \"pKi\";\n const newValue = -Math.log10(standard_value * 10e-9);\n return {\n molecule_chembl_id,\n canonical_smiles,\n standard_value,\n [newKey]: newValue\n };\n }).filter((ligand, index, self)=>index === self.findIndex((t)=>t.molecule_chembl_id === ligand.molecule_chembl_id && t.canonical_smiles === ligand.canonical_smiles && ligand.standard_value));\n setTotalComps(de_dup_lig.length);\n if (fingerprinting) {\n de_dup_lig.forEach(async (lig, i)=>{\n try {\n const mol = RDKit.get_mol(lig.canonical_smiles);\n const mol_fp = mol.get_morgan_fp_as_uint8array(JSON.stringify({\n radius: fpRadius,\n nBits: fpSize\n }));\n de_dup_lig[i][\"fingerprint\"] = mol_fp;\n mol?.delete();\n } catch (e) {\n console.error(e);\n }\n // Use functional form of setFPProgress to ensure correct update\n if (i === de_dup_lig.length - 1) {\n // Update the state with the final ligand array\n setLigand(de_dup_lig);\n }\n });\n setFPloading(false);\n router.push(\"/tools/data-distribution\");\n } else {\n // Update the state without fingerprinting\n setLigand(de_dup_lig);\n }\n }\n }\n if (fpProcessing) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: fploading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Loader__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 86,\n columnNumber: 22\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {}, void 0, false)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 85,\n columnNumber: 7\n }, this);\n } else {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n width: \"100%\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n children: \"Data Processing\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 92,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 93,\n columnNumber: 9\n }, this),\n stateOfRDKit ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"RDKit is Loaded ✅\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 94,\n columnNumber: 26\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Loading RDKit\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 94,\n columnNumber: 61\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 95,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n checked: dataDeduplication,\n type: \"checkbox\",\n id: \"data-dedup-check\",\n onChange: ()=>setDataDeduplication(!dataDeduplication)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 96,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"data-dedup-check\",\n children: \"Data De-Duplication\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 102,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 103,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n checked: fingerprinting,\n type: \"checkbox\",\n id: \"fingerprint-check\",\n onChange: ()=>setFingerprinting(!fingerprinting)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 104,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fingerprint-check\",\n children: \"Fingerprinting\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 110,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 111,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n checked: pkistate,\n type: \"checkbox\",\n id: \"pki-check\",\n onChange: ()=>setpkistate(!pkistate)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 112,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"pki-check\",\n children: \"Convert to pKi\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 118,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 120,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 120,\n columnNumber: 18\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"details\", {\n open: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"summary\", {\n children: \"Fingerprint Settings\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 122,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fp-radius\",\n children: \"Radius: \"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n className: \"input\",\n id: \"fp-radius\",\n type: \"number\",\n value: fpRadius,\n onChange: (e)=>setFpRadius(e.target.value)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 124,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 131,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fp-size\",\n children: \"Bit Size: \"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 132,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n className: \"input\",\n id: \"fp-size\",\n type: \"number\",\n value: fpSize,\n onChange: (e)=>setFpSize(e.target.value)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 133,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 121,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 142,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"button\",\n onClick: ()=>{\n setFPProcessing(true);\n setFPloading(true);\n setTimeout(function() {\n dataDeuplicater();\n }, 3000);\n },\n children: \"Pre-Process Data\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 143,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 150,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"Filtered Ligands: \",\n totalComps\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 151,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 91,\n columnNumber: 7\n }, this);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCw4REFBQ007NEJBQU1DLFNBQVE7c0NBQVU7Ozs7OztzQ0FDekIsOERBQUNOOzRCQUNDVSxXQUFVOzRCQUNWUCxJQUFHOzRCQUNIRCxNQUFLOzRCQUNMUyxPQUFPaEU7NEJBQ1B5RCxVQUFVLENBQUNmLElBQU16QyxVQUFVeUMsRUFBRXVCLE1BQU0sQ0FBQ0QsS0FBSzs7Ozs7Ozs7Ozs7OzhCQUk3Qyw4REFBQ1o7Ozs7OzhCQUNELDhEQUFDYztvQkFBT0gsV0FBVTtvQkFBU0ksU0FBUzt3QkFDbEM1RCxnQkFBZ0I7d0JBQ2hCRSxhQUFhO3dCQUNiMkQsV0FBVzs0QkFDVHREO3dCQUNGLEdBQUc7b0JBQ0w7OEJBQUc7Ozs7Ozs4QkFDSCw4REFBQ3NDOzs7Ozs4QkFDRCw4REFBQ2lCOzt3QkFBRTt3QkFBbUIzRDs7Ozs7Ozs7Ozs7OztJQUc1QjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL0RhdGFQcmVQcm9jZXNzVG9vbEtpdC5qcz8zZmYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaWdhbmRDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L0xpZ2FuZENvbnRleHRcIjtcbmltcG9ydCB7IGluaXRSREtpdCB9IGZyb20gJy4vdXRpbHMvcmRraXRfbG9hZGVyJ1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IExvYWRlciBmcm9tICcuL0xvYWRlcic7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L3JvdXRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFQcmVQcm9jZXNzVG9vbEtpdCgpIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IHsgbGlnYW5kLCBzZXRMaWdhbmQgfSA9IHVzZUNvbnRleHQoTGlnYW5kQ29udGV4dCk7XG4gIGNvbnN0IFtkYXRhRGVkdXBsaWNhdGlvbiwgc2V0RGF0YURlZHVwbGljYXRpb25dID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtmaW5nZXJwcmludGluZywgc2V0RmluZ2VycHJpbnRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtwa2lzdGF0ZSwgc2V0cGtpc3RhdGVdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtmcFJhZGl1cywgc2V0RnBSYWRpdXNdID0gdXNlU3RhdGUoMik7XG4gIGNvbnN0IFtmcFNpemUsIHNldEZwU2l6ZV0gPSB1c2VTdGF0ZSgyMDQ4KTtcblxuICBjb25zdCBbUkRLaXQsIHNldFJES2l0XSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbc3RhdGVPZlJES2l0LCBzZXRTdGF0ZU9mUkRLaXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IFtmcFByb2Nlc3NpbmcsIHNldEZQUHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmcGxvYWRpbmcsIHNldEZQbG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgW3RvdGFsQ29tcHMsIHNldFRvdGFsQ29tcHNdID0gdXNlU3RhdGUoMCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkUkRLaXQoKSB7XG4gICAgICBjb25zdCBSREsgPSBhd2FpdCBpbml0UkRLaXQoKVxuICAgICAgc2V0UkRLaXQoUkRLKTtcbiAgICAgIHNldFN0YXRlT2ZSREtpdCh0cnVlKTtcbiAgICB9XG4gICAgbG9hZFJES2l0KCk7XG4gIH0pXG5cbiAgZnVuY3Rpb24gZGF0YURldXBsaWNhdGVyKCkge1xuICAgIGlmIChkYXRhRGVkdXBsaWNhdGlvbikge1xuICAgICAgbGV0IGRlX2R1cF9saWcgPSBsaWdhbmQubWFwKCh7IG1vbGVjdWxlX2NoZW1ibF9pZCwgY2Fub25pY2FsX3NtaWxlcywgc3RhbmRhcmRfdmFsdWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdLZXkgPSAncEtpJztcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAtTWF0aC5sb2cxMChzdGFuZGFyZF92YWx1ZSAqIDEwZS05KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtb2xlY3VsZV9jaGVtYmxfaWQsXG4gICAgICAgICAgY2Fub25pY2FsX3NtaWxlcyxcbiAgICAgICAgICBzdGFuZGFyZF92YWx1ZSxcbiAgICAgICAgICBbbmV3S2V5XTogbmV3VmFsdWUsXG4gICAgICAgIH07XG4gICAgICB9KS5maWx0ZXIoKGxpZ2FuZCwgaW5kZXgsIHNlbGYpID0+XG4gICAgICAgIGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgodCkgPT4gKFxuICAgICAgICAgIHQubW9sZWN1bGVfY2hlbWJsX2lkID09PSBsaWdhbmQubW9sZWN1bGVfY2hlbWJsX2lkICYmXG4gICAgICAgICAgdC5jYW5vbmljYWxfc21pbGVzID09PSBsaWdhbmQuY2Fub25pY2FsX3NtaWxlcyAmJlxuICAgICAgICAgIGxpZ2FuZC5zdGFuZGFyZF92YWx1ZVxuICAgICAgICApKSk7XG5cbiAgICAgIHNldFRvdGFsQ29tcHMoZGVfZHVwX2xpZy5sZW5ndGgpO1xuXG4gICAgICBpZiAoZmluZ2VycHJpbnRpbmcpIHtcbiAgICAgICAgZGVfZHVwX2xpZy5mb3JFYWNoKGFzeW5jIChsaWcsIGkpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbW9sID0gUkRLaXQuZ2V0X21vbChsaWcuY2Fub25pY2FsX3NtaWxlcyk7XG4gICAgICAgICAgICBjb25zdCBtb2xfZnAgPSBtb2wuZ2V0X21vcmdhbl9mcF9hc191aW50OGFycmF5KEpTT04uc3RyaW5naWZ5KHsgcmFkaXVzOiBmcFJhZGl1cywgbkJpdHM6IGZwU2l6ZSB9KSk7XG4gICAgICAgICAgICBkZV9kdXBfbGlnW2ldWydmaW5nZXJwcmludCddID0gbW9sX2ZwO1xuICAgICAgICAgICAgbW9sPy5kZWxldGUoKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVzZSBmdW5jdGlvbmFsIGZvcm0gb2Ygc2V0RlBQcm9ncmVzcyB0byBlbnN1cmUgY29ycmVjdCB1cGRhdGVcblxuICAgICAgICAgIGlmIChpID09PSBkZV9kdXBfbGlnLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhdGUgd2l0aCB0aGUgZmluYWwgbGlnYW5kIGFycmF5XG4gICAgICAgICAgICBzZXRMaWdhbmQoZGVfZHVwX2xpZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0RlBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgcm91dGVyLnB1c2goJy90b29scy9kYXRhLWRpc3RyaWJ1dGlvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGF0ZSB3aXRob3V0IGZpbmdlcnByaW50aW5nXG4gICAgICAgIHNldExpZ2FuZChkZV9kdXBfbGlnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cbiAgaWYgKGZwUHJvY2Vzc2luZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICB7ZnBsb2FkaW5nID8gPExvYWRlciAvPiA6IDw+PC8+fVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgIDxoMj5EYXRhIFByb2Nlc3Npbmc8L2gyPlxuICAgICAgICA8aHI+PC9ocj5cbiAgICAgICAge3N0YXRlT2ZSREtpdCA/ICg8c3Bhbj5SREtpdCBpcyBMb2FkZWQg4pyFPC9zcGFuPikgOiAoPHNwYW4+TG9hZGluZyBSREtpdDwvc3Bhbj4pfVxuICAgICAgICA8YnI+PC9icj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2hlY2tlZD17ZGF0YURlZHVwbGljYXRpb259XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBpZD0nZGF0YS1kZWR1cC1jaGVjaydcbiAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0RGF0YURlZHVwbGljYXRpb24oIWRhdGFEZWR1cGxpY2F0aW9uKX1cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJkYXRhLWRlZHVwLWNoZWNrXCI+RGF0YSBEZS1EdXBsaWNhdGlvbjwvbGFiZWw+XG4gICAgICAgIDxicj48L2JyPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjaGVja2VkPXtmaW5nZXJwcmludGluZ31cbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPSdmaW5nZXJwcmludC1jaGVjaydcbiAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0RmluZ2VycHJpbnRpbmcoIWZpbmdlcnByaW50aW5nKX1cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJmaW5nZXJwcmludC1jaGVja1wiPkZpbmdlcnByaW50aW5nPC9sYWJlbD5cbiAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNoZWNrZWQ9e3BraXN0YXRlfVxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9J3BraS1jaGVjaydcbiAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0cGtpc3RhdGUoIXBraXN0YXRlKX1cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJwa2ktY2hlY2tcIj5Db252ZXJ0IHRvIHBLaTwvbGFiZWw+XG5cbiAgICAgICAgPGJyPjwvYnI+PGJyPjwvYnI+XG4gICAgICAgIDxkZXRhaWxzIG9wZW49e2ZhbHNlfT5cbiAgICAgICAgICA8c3VtbWFyeT5GaW5nZXJwcmludCBTZXR0aW5nczwvc3VtbWFyeT5cbiAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImZwLXJhZGl1c1wiPlJhZGl1czogPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0XCJcbiAgICAgICAgICAgIGlkPSdmcC1yYWRpdXMnXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIHZhbHVlPXtmcFJhZGl1c31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RnBSYWRpdXMoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJmcC1zaXplXCI+Qml0IFNpemU6IDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dFwiXG4gICAgICAgICAgICBpZD0nZnAtc2l6ZSdcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgdmFsdWU9e2ZwU2l6ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RnBTaXplKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2RldGFpbHM+XG5cbiAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIHNldEZQUHJvY2Vzc2luZyh0cnVlKTtcbiAgICAgICAgICBzZXRGUGxvYWRpbmcodHJ1ZSlcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRhdGFEZXVwbGljYXRlcigpO1xuICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICB9fT5QcmUtUHJvY2VzcyBEYXRhPC9idXR0b24+XG4gICAgICAgIDxicj48L2JyPlxuICAgICAgICA8cD5GaWx0ZXJlZCBMaWdhbmRzOiB7dG90YWxDb21wc308L3A+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJMaWdhbmRDb250ZXh0IiwiaW5pdFJES2l0IiwiTGluayIsIkxvYWRlciIsInVzZVJvdXRlciIsIkRhdGFQcmVQcm9jZXNzVG9vbEtpdCIsInJvdXRlciIsImxpZ2FuZCIsInNldExpZ2FuZCIsImRhdGFEZWR1cGxpY2F0aW9uIiwic2V0RGF0YURlZHVwbGljYXRpb24iLCJmaW5nZXJwcmludGluZyIsInNldEZpbmdlcnByaW50aW5nIiwicGtpc3RhdGUiLCJzZXRwa2lzdGF0ZSIsImZwUmFkaXVzIiwic2V0RnBSYWRpdXMiLCJmcFNpemUiLCJzZXRGcFNpemUiLCJSREtpdCIsInNldFJES2l0Iiwic3RhdGVPZlJES2l0Iiwic2V0U3RhdGVPZlJES2l0IiwiZnBQcm9jZXNzaW5nIiwic2V0RlBQcm9jZXNzaW5nIiwiZnBsb2FkaW5nIiwic2V0RlBsb2FkaW5nIiwidG90YWxDb21wcyIsInNldFRvdGFsQ29tcHMiLCJsb2FkUkRLaXQiLCJSREsiLCJkYXRhRGV1cGxpY2F0ZXIiLCJkZV9kdXBfbGlnIiwibWFwIiwibW9sZWN1bGVfY2hlbWJsX2lkIiwiY2Fub25pY2FsX3NtaWxlcyIsInN0YW5kYXJkX3ZhbHVlIiwibmV3S2V5IiwibmV3VmFsdWUiLCJNYXRoIiwibG9nMTAiLCJmaWx0ZXIiLCJpbmRleCIsInNlbGYiLCJmaW5kSW5kZXgiLCJ0IiwibGVuZ3RoIiwiZm9yRWFjaCIsImxpZyIsImkiLCJtb2wiLCJnZXRfbW9sIiwibW9sX2ZwIiwiZ2V0X21vcmdhbl9mcF9hc191aW50OGFycmF5IiwiSlNPTiIsInN0cmluZ2lmeSIsInJhZGl1cyIsIm5CaXRzIiwiZGVsZXRlIiwiZSIsImNvbnNvbGUiLCJlcnJvciIsInB1c2giLCJkaXYiLCJzdHlsZSIsIndpZHRoIiwiaDIiLCJociIsInNwYW4iLCJiciIsImlucHV0IiwiY2hlY2tlZCIsInR5cGUiLCJpZCIsIm9uQ2hhbmdlIiwibGFiZWwiLCJodG1sRm9yIiwiZGV0YWlscyIsIm9wZW4iLCJzdW1tYXJ5IiwiY2xhc3NOYW1lIiwidmFsdWUiLCJ0YXJnZXQiLCJidXR0b24iLCJvbkNsaWNrIiwic2V0VGltZW91dCIsInAiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/DataPreProcessToolKit.js\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DataPreProcessToolKit)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_LigandContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/LigandContext */ \"./context/LigandContext.js\");\n/* harmony import */ var _utils_rdkit_loader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/rdkit_loader */ \"./components/utils/rdkit_loader.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Loader */ \"./components/Loader.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! next/router */ \"./node_modules/next/router.js\");\n/* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(next_router__WEBPACK_IMPORTED_MODULE_6__);\n\n\n\n\n\n\n\nfunction DataPreProcessToolKit() {\n const router = (0,next_router__WEBPACK_IMPORTED_MODULE_6__.useRouter)();\n const { ligand, setLigand } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_context_LigandContext__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n const [dataDeduplication, setDataDeduplication] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [fingerprinting, setFingerprinting] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [pkistate, setpkistate] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [fpRadius, setFpRadius] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(2);\n const [fpSize, setFpSize] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(2048);\n const [RDKit, setRDKit] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [stateOfRDKit, setStateOfRDKit] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [fpProcessing, setFPProcessing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [fploading, setFPloading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [totalComps, setTotalComps] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(0);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n async function loadRDKit() {\n const RDK = await (0,_utils_rdkit_loader__WEBPACK_IMPORTED_MODULE_3__.initRDKit)();\n setRDKit(RDK);\n setStateOfRDKit(true);\n }\n loadRDKit();\n });\n function dataDeuplicater() {\n if (dataDeduplication) {\n let de_dup_lig = ligand.map(({ molecule_chembl_id, canonical_smiles, standard_value })=>{\n const newKey = \"pKi\";\n const newValue = -Math.log10(standard_value * 10e-9);\n return {\n molecule_chembl_id,\n canonical_smiles,\n standard_value,\n [newKey]: newValue\n };\n }).filter((ligand, index, self)=>index === self.findIndex((t)=>t.molecule_chembl_id === ligand.molecule_chembl_id && t.canonical_smiles === ligand.canonical_smiles && ligand.standard_value));\n setTotalComps(de_dup_lig.length);\n if (fingerprinting) {\n de_dup_lig.forEach(async (lig, i)=>{\n try {\n const mol = RDKit.get_mol(lig.canonical_smiles);\n const mol_fp = mol.get_morgan_fp_as_uint8array(JSON.stringify({\n radius: fpRadius,\n nBits: fpSize\n }));\n de_dup_lig[i][\"fingerprint\"] = mol_fp;\n mol?.delete();\n } catch (e) {\n console.error(e);\n }\n // Use functional form of setFPProgress to ensure correct update\n if (i === de_dup_lig.length - 1) {\n // Update the state with the final ligand array\n setLigand(de_dup_lig);\n }\n });\n setFPloading(false);\n router.push(\"/tools/data-distribution\");\n } else {\n // Update the state without fingerprinting\n setLigand(de_dup_lig);\n }\n }\n }\n if (fpProcessing) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: fploading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Loader__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 86,\n columnNumber: 22\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {}, void 0, false)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 85,\n columnNumber: 7\n }, this);\n } else {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n width: \"100%\"\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n children: \"Data Processing\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 92,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"hr\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 93,\n columnNumber: 9\n }, this),\n stateOfRDKit ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"RDKit is Loaded ✅\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 94,\n columnNumber: 26\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Loading RDKit\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 94,\n columnNumber: 61\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 95,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n checked: dataDeduplication,\n type: \"checkbox\",\n id: \"data-dedup-check\",\n onChange: ()=>setDataDeduplication(!dataDeduplication)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 96,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"data-dedup-check\",\n children: \"Data De-Duplication\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 102,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 103,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n checked: fingerprinting,\n type: \"checkbox\",\n id: \"fingerprint-check\",\n onChange: ()=>setFingerprinting(!fingerprinting)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 104,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fingerprint-check\",\n children: \"Fingerprinting\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 110,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 111,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n checked: pkistate,\n type: \"checkbox\",\n id: \"pki-check\",\n onChange: ()=>setpkistate(!pkistate)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 112,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"pki-check\",\n children: \"Convert to pKi\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 118,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 120,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 120,\n columnNumber: 18\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"details\", {\n open: false,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"summary\", {\n children: \"Fingerprint Settings\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 122,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fp-radius\",\n children: \"Radius: \"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 123,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n className: \"input\",\n id: \"fp-radius\",\n type: \"number\",\n value: fpRadius,\n onChange: (e)=>setFpRadius(e.target.value)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 124,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 131,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n htmlFor: \"fp-size\",\n children: \"Bit Size: \"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 132,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n className: \"input\",\n id: \"fp-size\",\n type: \"number\",\n value: fpSize,\n onChange: (e)=>setFpSize(e.target.value)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 133,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 121,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 142,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n className: \"button\",\n onClick: ()=>{\n setFPProcessing(true);\n setFPloading(true);\n setTimeout(function() {\n dataDeuplicater();\n }, 500);\n },\n children: \"Pre-Process Data\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 143,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 150,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n children: [\n \"Filtered Ligands: \",\n totalComps\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 151,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/DataPreProcessToolKit.js\",\n lineNumber: 91,\n columnNumber: 7\n }, this);\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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RCw4REFBQ007NEJBQU1DLFNBQVE7c0NBQVU7Ozs7OztzQ0FDekIsOERBQUNOOzRCQUNDVSxXQUFVOzRCQUNWUCxJQUFHOzRCQUNIRCxNQUFLOzRCQUNMUyxPQUFPaEU7NEJBQ1B5RCxVQUFVLENBQUNmLElBQU16QyxVQUFVeUMsRUFBRXVCLE1BQU0sQ0FBQ0QsS0FBSzs7Ozs7Ozs7Ozs7OzhCQUk3Qyw4REFBQ1o7Ozs7OzhCQUNELDhEQUFDYztvQkFBT0gsV0FBVTtvQkFBU0ksU0FBUzt3QkFDbEM1RCxnQkFBZ0I7d0JBQ2hCRSxhQUFhO3dCQUNiMkQsV0FBVzs0QkFDVHREO3dCQUNGLEdBQUc7b0JBQ0w7OEJBQUc7Ozs7Ozs4QkFDSCw4REFBQ3NDOzs7Ozs4QkFDRCw4REFBQ2lCOzt3QkFBRTt3QkFBbUIzRDs7Ozs7Ozs7Ozs7OztJQUc1QjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL0RhdGFQcmVQcm9jZXNzVG9vbEtpdC5qcz8zZmYxIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBMaWdhbmRDb250ZXh0IGZyb20gXCIuLi9jb250ZXh0L0xpZ2FuZENvbnRleHRcIjtcbmltcG9ydCB7IGluaXRSREtpdCB9IGZyb20gJy4vdXRpbHMvcmRraXRfbG9hZGVyJ1xuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IExvYWRlciBmcm9tICcuL0xvYWRlcic7XG5pbXBvcnQgeyB1c2VSb3V0ZXIgfSBmcm9tICduZXh0L3JvdXRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFQcmVQcm9jZXNzVG9vbEtpdCgpIHtcbiAgY29uc3Qgcm91dGVyID0gdXNlUm91dGVyKCk7XG4gIGNvbnN0IHsgbGlnYW5kLCBzZXRMaWdhbmQgfSA9IHVzZUNvbnRleHQoTGlnYW5kQ29udGV4dCk7XG4gIGNvbnN0IFtkYXRhRGVkdXBsaWNhdGlvbiwgc2V0RGF0YURlZHVwbGljYXRpb25dID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtmaW5nZXJwcmludGluZywgc2V0RmluZ2VycHJpbnRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtwa2lzdGF0ZSwgc2V0cGtpc3RhdGVdID0gdXNlU3RhdGUodHJ1ZSk7XG4gIGNvbnN0IFtmcFJhZGl1cywgc2V0RnBSYWRpdXNdID0gdXNlU3RhdGUoMik7XG4gIGNvbnN0IFtmcFNpemUsIHNldEZwU2l6ZV0gPSB1c2VTdGF0ZSgyMDQ4KTtcblxuICBjb25zdCBbUkRLaXQsIHNldFJES2l0XSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbc3RhdGVPZlJES2l0LCBzZXRTdGF0ZU9mUkRLaXRdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IFtmcFByb2Nlc3NpbmcsIHNldEZQUHJvY2Vzc2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmcGxvYWRpbmcsIHNldEZQbG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgW3RvdGFsQ29tcHMsIHNldFRvdGFsQ29tcHNdID0gdXNlU3RhdGUoMCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBhc3luYyBmdW5jdGlvbiBsb2FkUkRLaXQoKSB7XG4gICAgICBjb25zdCBSREsgPSBhd2FpdCBpbml0UkRLaXQoKVxuICAgICAgc2V0UkRLaXQoUkRLKTtcbiAgICAgIHNldFN0YXRlT2ZSREtpdCh0cnVlKTtcbiAgICB9XG4gICAgbG9hZFJES2l0KCk7XG4gIH0pXG5cbiAgZnVuY3Rpb24gZGF0YURldXBsaWNhdGVyKCkge1xuICAgIGlmIChkYXRhRGVkdXBsaWNhdGlvbikge1xuICAgICAgbGV0IGRlX2R1cF9saWcgPSBsaWdhbmQubWFwKCh7IG1vbGVjdWxlX2NoZW1ibF9pZCwgY2Fub25pY2FsX3NtaWxlcywgc3RhbmRhcmRfdmFsdWUgfSkgPT4ge1xuICAgICAgICBjb25zdCBuZXdLZXkgPSAncEtpJztcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSAtTWF0aC5sb2cxMChzdGFuZGFyZF92YWx1ZSAqIDEwZS05KTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBtb2xlY3VsZV9jaGVtYmxfaWQsXG4gICAgICAgICAgY2Fub25pY2FsX3NtaWxlcyxcbiAgICAgICAgICBzdGFuZGFyZF92YWx1ZSxcbiAgICAgICAgICBbbmV3S2V5XTogbmV3VmFsdWUsXG4gICAgICAgIH07XG4gICAgICB9KS5maWx0ZXIoKGxpZ2FuZCwgaW5kZXgsIHNlbGYpID0+XG4gICAgICAgIGluZGV4ID09PSBzZWxmLmZpbmRJbmRleCgodCkgPT4gKFxuICAgICAgICAgIHQubW9sZWN1bGVfY2hlbWJsX2lkID09PSBsaWdhbmQubW9sZWN1bGVfY2hlbWJsX2lkICYmXG4gICAgICAgICAgdC5jYW5vbmljYWxfc21pbGVzID09PSBsaWdhbmQuY2Fub25pY2FsX3NtaWxlcyAmJlxuICAgICAgICAgIGxpZ2FuZC5zdGFuZGFyZF92YWx1ZVxuICAgICAgICApKSk7XG5cbiAgICAgIHNldFRvdGFsQ29tcHMoZGVfZHVwX2xpZy5sZW5ndGgpO1xuXG4gICAgICBpZiAoZmluZ2VycHJpbnRpbmcpIHtcbiAgICAgICAgZGVfZHVwX2xpZy5mb3JFYWNoKGFzeW5jIChsaWcsIGkpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgbW9sID0gUkRLaXQuZ2V0X21vbChsaWcuY2Fub25pY2FsX3NtaWxlcyk7XG4gICAgICAgICAgICBjb25zdCBtb2xfZnAgPSBtb2wuZ2V0X21vcmdhbl9mcF9hc191aW50OGFycmF5KEpTT04uc3RyaW5naWZ5KHsgcmFkaXVzOiBmcFJhZGl1cywgbkJpdHM6IGZwU2l6ZSB9KSk7XG4gICAgICAgICAgICBkZV9kdXBfbGlnW2ldWydmaW5nZXJwcmludCddID0gbW9sX2ZwO1xuICAgICAgICAgICAgbW9sPy5kZWxldGUoKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIFVzZSBmdW5jdGlvbmFsIGZvcm0gb2Ygc2V0RlBQcm9ncmVzcyB0byBlbnN1cmUgY29ycmVjdCB1cGRhdGVcblxuICAgICAgICAgIGlmIChpID09PSBkZV9kdXBfbGlnLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgc3RhdGUgd2l0aCB0aGUgZmluYWwgbGlnYW5kIGFycmF5XG4gICAgICAgICAgICBzZXRMaWdhbmQoZGVfZHVwX2xpZyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0RlBsb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgcm91dGVyLnB1c2goJy90b29scy9kYXRhLWRpc3RyaWJ1dGlvbicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gVXBkYXRlIHRoZSBzdGF0ZSB3aXRob3V0IGZpbmdlcnByaW50aW5nXG4gICAgICAgIHNldExpZ2FuZChkZV9kdXBfbGlnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuXG5cbiAgaWYgKGZwUHJvY2Vzc2luZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2PlxuICAgICAgICB7ZnBsb2FkaW5nID8gPExvYWRlciAvPiA6IDw+PC8+fVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAnMTAwJScgfX0+XG4gICAgICAgIDxoMj5EYXRhIFByb2Nlc3Npbmc8L2gyPlxuICAgICAgICA8aHI+PC9ocj5cbiAgICAgICAge3N0YXRlT2ZSREtpdCA/ICg8c3Bhbj5SREtpdCBpcyBMb2FkZWQg4pyFPC9zcGFuPikgOiAoPHNwYW4+TG9hZGluZyBSREtpdDwvc3Bhbj4pfVxuICAgICAgICA8YnI+PC9icj5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgY2hlY2tlZD17ZGF0YURlZHVwbGljYXRpb259XG4gICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICBpZD0nZGF0YS1kZWR1cC1jaGVjaydcbiAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0RGF0YURlZHVwbGljYXRpb24oIWRhdGFEZWR1cGxpY2F0aW9uKX1cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJkYXRhLWRlZHVwLWNoZWNrXCI+RGF0YSBEZS1EdXBsaWNhdGlvbjwvbGFiZWw+XG4gICAgICAgIDxicj48L2JyPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjaGVja2VkPXtmaW5nZXJwcmludGluZ31cbiAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgIGlkPSdmaW5nZXJwcmludC1jaGVjaydcbiAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0RmluZ2VycHJpbnRpbmcoIWZpbmdlcnByaW50aW5nKX1cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJmaW5nZXJwcmludC1jaGVja1wiPkZpbmdlcnByaW50aW5nPC9sYWJlbD5cbiAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIGNoZWNrZWQ9e3BraXN0YXRlfVxuICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgaWQ9J3BraS1jaGVjaydcbiAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gc2V0cGtpc3RhdGUoIXBraXN0YXRlKX1cbiAgICAgICAgLz5cbiAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJwa2ktY2hlY2tcIj5Db252ZXJ0IHRvIHBLaTwvbGFiZWw+XG5cbiAgICAgICAgPGJyPjwvYnI+PGJyPjwvYnI+XG4gICAgICAgIDxkZXRhaWxzIG9wZW49e2ZhbHNlfT5cbiAgICAgICAgICA8c3VtbWFyeT5GaW5nZXJwcmludCBTZXR0aW5nczwvc3VtbWFyeT5cbiAgICAgICAgICA8bGFiZWwgaHRtbEZvcj1cImZwLXJhZGl1c1wiPlJhZGl1czogPC9sYWJlbD5cbiAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlucHV0XCJcbiAgICAgICAgICAgIGlkPSdmcC1yYWRpdXMnXG4gICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgIHZhbHVlPXtmcFJhZGl1c31cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RnBSYWRpdXMoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgICAgPGxhYmVsIGh0bWxGb3I9XCJmcC1zaXplXCI+Qml0IFNpemU6IDwvbGFiZWw+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpbnB1dFwiXG4gICAgICAgICAgICBpZD0nZnAtc2l6ZSdcbiAgICAgICAgICAgIHR5cGU9XCJudW1iZXJcIlxuICAgICAgICAgICAgdmFsdWU9e2ZwU2l6ZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0RnBTaXplKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2RldGFpbHM+XG5cbiAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgIHNldEZQUHJvY2Vzc2luZyh0cnVlKTtcbiAgICAgICAgICBzZXRGUGxvYWRpbmcodHJ1ZSlcbiAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGRhdGFEZXVwbGljYXRlcigpO1xuICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH19PlByZS1Qcm9jZXNzIERhdGE8L2J1dHRvbj5cbiAgICAgICAgPGJyPjwvYnI+XG4gICAgICAgIDxwPkZpbHRlcmVkIExpZ2FuZHM6IHt0b3RhbENvbXBzfTwvcD5cbiAgICAgIDwvZGl2PlxuICAgIClcbiAgfVxufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkxpZ2FuZENvbnRleHQiLCJpbml0UkRLaXQiLCJMaW5rIiwiTG9hZGVyIiwidXNlUm91dGVyIiwiRGF0YVByZVByb2Nlc3NUb29sS2l0Iiwicm91dGVyIiwibGlnYW5kIiwic2V0TGlnYW5kIiwiZGF0YURlZHVwbGljYXRpb24iLCJzZXREYXRhRGVkdXBsaWNhdGlvbiIsImZpbmdlcnByaW50aW5nIiwic2V0RmluZ2VycHJpbnRpbmciLCJwa2lzdGF0ZSIsInNldHBraXN0YXRlIiwiZnBSYWRpdXMiLCJzZXRGcFJhZGl1cyIsImZwU2l6ZSIsInNldEZwU2l6ZSIsIlJES2l0Iiwic2V0UkRLaXQiLCJzdGF0ZU9mUkRLaXQiLCJzZXRTdGF0ZU9mUkRLaXQiLCJmcFByb2Nlc3NpbmciLCJzZXRGUFByb2Nlc3NpbmciLCJmcGxvYWRpbmciLCJzZXRGUGxvYWRpbmciLCJ0b3RhbENvbXBzIiwic2V0VG90YWxDb21wcyIsImxvYWRSREtpdCIsIlJESyIsImRhdGFEZXVwbGljYXRlciIsImRlX2R1cF9saWciLCJtYXAiLCJtb2xlY3VsZV9jaGVtYmxfaWQiLCJjYW5vbmljYWxfc21pbGVzIiwic3RhbmRhcmRfdmFsdWUiLCJuZXdLZXkiLCJuZXdWYWx1ZSIsIk1hdGgiLCJsb2cxMCIsImZpbHRlciIsImluZGV4Iiwic2VsZiIsImZpbmRJbmRleCIsInQiLCJsZW5ndGgiLCJmb3JFYWNoIiwibGlnIiwiaSIsIm1vbCIsImdldF9tb2wiLCJtb2xfZnAiLCJnZXRfbW9yZ2FuX2ZwX2FzX3VpbnQ4YXJyYXkiLCJKU09OIiwic3RyaW5naWZ5IiwicmFkaXVzIiwibkJpdHMiLCJkZWxldGUiLCJlIiwiY29uc29sZSIsImVycm9yIiwicHVzaCIsImRpdiIsInN0eWxlIiwid2lkdGgiLCJoMiIsImhyIiwic3BhbiIsImJyIiwiaW5wdXQiLCJjaGVja2VkIiwidHlwZSIsImlkIiwib25DaGFuZ2UiLCJsYWJlbCIsImh0bWxGb3IiLCJkZXRhaWxzIiwib3BlbiIsInN1bW1hcnkiLCJjbGFzc05hbWUiLCJ2YWx1ZSIsInRhcmdldCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJzZXRUaW1lb3V0IiwicCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/DataPreProcessToolKit.js\n"); /***/ }), diff --git a/.next/server/components_tSNE_Plot_js.js b/.next/server/components_tSNE_Plot_js.js new file mode 100644 index 0000000..db78bb5 --- /dev/null +++ b/.next/server/components_tSNE_Plot_js.js @@ -0,0 +1,65 @@ +"use strict"; +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +exports.id = "components_tSNE_Plot_js"; +exports.ids = ["components_tSNE_Plot_js"]; +exports.modules = { + +/***/ "./components/D3ColorLegend.js": +/*!*************************************!*\ + !*** ./components/D3ColorLegend.js ***! + \*************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! d3-scale-chromatic */ \"d3-scale-chromatic\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([d3__WEBPACK_IMPORTED_MODULE_2__, d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_3__]);\n([d3__WEBPACK_IMPORTED_MODULE_2__, d3_scale_chromatic__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\nconst D3ColorLegend = ()=>{\n const chartRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)();\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n var colorScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleSequential(d3__WEBPACK_IMPORTED_MODULE_2__.interpolateSinebow).domain([\n 0,\n 10\n ]);\n continuous(chartRef, colorScale);\n function continuous(selector_id, colorscale) {\n var legendheight = 50, legendwidth = 500, margin = {\n top: 10,\n right: 2,\n bottom: 20,\n left: 60\n }; // Adjust margins for a horizontal legend\n var canvas = d3__WEBPACK_IMPORTED_MODULE_2__.select(selector_id.current).style(\"height\", legendheight + \"px\").style(\"width\", legendwidth + \"px\").style(\"position\", \"relative\").append(\"canvas\").attr(\"height\", 1) // Set height to 1 for a horizontal legend\n .attr(\"width\", legendwidth - margin.left - margin.right) // Adjust width based on legendwidth and margins\n .style(\"height\", legendheight - margin.top - margin.bottom + \"px\").style(\"width\", legendwidth - margin.left - margin.right + \"px\").style(\"border\", \"1px solid #000\").style(\"position\", \"absolute\").style(\"top\", margin.top + \"px\").style(\"left\", margin.left + \"px\").node();\n var ctx = canvas.getContext(\"2d\");\n var legendscale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleLinear().range([\n 0,\n legendwidth - margin.left - margin.right\n ]) // Adjust the range for a horizontal legend\n .domain(colorscale.domain());\n // image data hackery based on http://bl.ocks.org/mbostock/048d21cf747371b11884f75ad896e5a5\n var image = ctx.createImageData(legendwidth - margin.left - margin.right, 1); // Create a horizontal image\n d3__WEBPACK_IMPORTED_MODULE_2__.range(legendwidth - margin.left - margin.right).forEach(function(i) {\n var c = d3__WEBPACK_IMPORTED_MODULE_2__.rgb(colorscale(legendscale.invert(i)));\n image.data[4 * i] = c.r;\n image.data[4 * i + 1] = c.g;\n image.data[4 * i + 2] = c.b;\n image.data[4 * i + 3] = 255;\n });\n ctx.putImageData(image, 0, 0);\n var legendaxis = d3__WEBPACK_IMPORTED_MODULE_2__.axisBottom() // Use axisBottom for a horizontal legend\n .scale(legendscale).tickSize(6).ticks(8);\n var svg = d3__WEBPACK_IMPORTED_MODULE_2__.select(selector_id.current).append(\"svg\").attr(\"height\", legendheight + \"px\").attr(\"width\", legendwidth + \"px\").style(\"position\", \"absolute\").style(\"left\", \"0px\").style(\"top\", \"0px\");\n svg.append(\"g\").attr(\"class\", \"axis\").attr(\"transform\", \"translate(\" + margin.left + \",\" + (legendheight - margin.bottom) + \")\") // Adjust transform for a horizontal legend\n .call(legendaxis);\n }\n ;\n }, []); // Empty dependency array to ensure useEffect runs only once\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: chartRef,\n id: \"color-legend\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/D3ColorLegend.js\",\n lineNumber: 73,\n columnNumber: 12\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (D3ColorLegend);\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxPQUFPO1lBRWxCMEIsSUFDS3pCLE1BQU0sQ0FBQyxLQUNQQyxJQUFJLENBQUMsU0FBUyxRQUNkQSxJQUFJLENBQUMsYUFBYSxlQUFnQlYsT0FBT0ksSUFBSSxHQUFJLE1BQU9OLENBQUFBLGVBQWVFLE9BQU9HLE1BQU0sSUFBSSxLQUFLLDJDQUEyQzthQUN4SWdDLElBQUksQ0FBQ047UUFDZDs7SUFFSixHQUFHLEVBQUUsR0FBRyw0REFBNEQ7SUFFcEUscUJBQU8sOERBQUNPO1FBQUlDLEtBQUsvQztRQUFVZ0QsSUFBRzs7Ozs7O0FBQ2xDO0FBRUEsaUVBQWVqRCxhQUFhQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL0QzQ29sb3JMZWdlbmQuanM/Mjc3MyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgKiBhcyBkM3NjYWxlIGZyb20gJ2QzLXNjYWxlLWNocm9tYXRpYyc7XG5cbmNvbnN0IEQzQ29sb3JMZWdlbmQgPSAoKSA9PiB7XG4gICAgY29uc3QgY2hhcnRSZWYgPSB1c2VSZWYoKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBjb2xvclNjYWxlID0gZDMuc2NhbGVTZXF1ZW50aWFsKGQzLmludGVycG9sYXRlU2luZWJvdylcbiAgICAgICAgICAgIC5kb21haW4oWzAsIDEwXSk7XG5cbiAgICAgICAgY29udGludW91cyhjaGFydFJlZiwgY29sb3JTY2FsZSk7XG5cbiAgICAgICAgZnVuY3Rpb24gY29udGludW91cyhzZWxlY3Rvcl9pZCwgY29sb3JzY2FsZSkge1xuICAgICAgICAgICAgdmFyIGxlZ2VuZGhlaWdodCA9IDUwLCAvLyBSZWR1Y2UgdGhlIGhlaWdodCBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIGxlZ2VuZHdpZHRoID0gNTAwLCAvLyBJbmNyZWFzZSB0aGUgd2lkdGggZm9yIGEgaG9yaXpvbnRhbCBsZWdlbmRcbiAgICAgICAgICAgICAgICBtYXJnaW4gPSB7IHRvcDogMTAsIHJpZ2h0OiAyLCBib3R0b206IDIwLCBsZWZ0OiA2MCB9OyAvLyBBZGp1c3QgbWFyZ2lucyBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuXG4gICAgICAgICAgICB2YXIgY2FudmFzID0gZDMuc2VsZWN0KHNlbGVjdG9yX2lkLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwiaGVpZ2h0XCIsIGxlZ2VuZGhlaWdodCArIFwicHhcIilcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJ3aWR0aFwiLCBsZWdlbmR3aWR0aCArIFwicHhcIilcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJwb3NpdGlvblwiLCBcInJlbGF0aXZlXCIpXG4gICAgICAgICAgICAgICAgLmFwcGVuZChcImNhbnZhc1wiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIDEpIC8vIFNldCBoZWlnaHQgdG8gMSBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgbGVnZW5kd2lkdGggLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodCkgLy8gQWRqdXN0IHdpZHRoIGJhc2VkIG9uIGxlZ2VuZHdpZHRoIGFuZCBtYXJnaW5zXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwiaGVpZ2h0XCIsIChsZWdlbmRoZWlnaHQgLSBtYXJnaW4udG9wIC0gbWFyZ2luLmJvdHRvbSkgKyBcInB4XCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwid2lkdGhcIiwgKGxlZ2VuZHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQpICsgXCJweFwiKVxuICAgICAgICAgICAgICAgIC5zdHlsZShcImJvcmRlclwiLCBcIjFweCBzb2xpZCAjMDAwXCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwicG9zaXRpb25cIiwgXCJhYnNvbHV0ZVwiKVxuICAgICAgICAgICAgICAgIC5zdHlsZShcInRvcFwiLCAobWFyZ2luLnRvcCkgKyBcInB4XCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwibGVmdFwiLCAobWFyZ2luLmxlZnQpICsgXCJweFwiKVxuICAgICAgICAgICAgICAgIC5ub2RlKCk7XG5cbiAgICAgICAgICAgIHZhciBjdHggPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuXG4gICAgICAgICAgICB2YXIgbGVnZW5kc2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgICAgICAgICAgICAgLnJhbmdlKFswLCBsZWdlbmR3aWR0aCAtIG1hcmdpbi5sZWZ0IC0gbWFyZ2luLnJpZ2h0XSkgLy8gQWRqdXN0IHRoZSByYW5nZSBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIC5kb21haW4oY29sb3JzY2FsZS5kb21haW4oKSk7XG5cbiAgICAgICAgICAgIC8vIGltYWdlIGRhdGEgaGFja2VyeSBiYXNlZCBvbiBodHRwOi8vYmwub2Nrcy5vcmcvbWJvc3RvY2svMDQ4ZDIxY2Y3NDczNzFiMTE4ODRmNzVhZDg5NmU1YTVcbiAgICAgICAgICAgIHZhciBpbWFnZSA9IGN0eC5jcmVhdGVJbWFnZURhdGEobGVnZW5kd2lkdGggLSBtYXJnaW4ubGVmdCAtIG1hcmdpbi5yaWdodCwgMSk7IC8vIENyZWF0ZSBhIGhvcml6b250YWwgaW1hZ2VcbiAgICAgICAgICAgIGQzLnJhbmdlKGxlZ2VuZHdpZHRoIC0gbWFyZ2luLmxlZnQgLSBtYXJnaW4ucmlnaHQpLmZvckVhY2goZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgICAgICAgICB2YXIgYyA9IGQzLnJnYihjb2xvcnNjYWxlKGxlZ2VuZHNjYWxlLmludmVydChpKSkpO1xuICAgICAgICAgICAgICAgIGltYWdlLmRhdGFbNCAqIGldID0gYy5yO1xuICAgICAgICAgICAgICAgIGltYWdlLmRhdGFbNCAqIGkgKyAxXSA9IGMuZztcbiAgICAgICAgICAgICAgICBpbWFnZS5kYXRhWzQgKiBpICsgMl0gPSBjLmI7XG4gICAgICAgICAgICAgICAgaW1hZ2UuZGF0YVs0ICogaSArIDNdID0gMjU1O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjdHgucHV0SW1hZ2VEYXRhKGltYWdlLCAwLCAwKTtcblxuICAgICAgICAgICAgdmFyIGxlZ2VuZGF4aXMgPSBkMy5heGlzQm90dG9tKCkgLy8gVXNlIGF4aXNCb3R0b20gZm9yIGEgaG9yaXpvbnRhbCBsZWdlbmRcbiAgICAgICAgICAgICAgICAuc2NhbGUobGVnZW5kc2NhbGUpXG4gICAgICAgICAgICAgICAgLnRpY2tTaXplKDYpXG4gICAgICAgICAgICAgICAgLnRpY2tzKDgpO1xuXG4gICAgICAgICAgICB2YXIgc3ZnID0gZDMuc2VsZWN0KHNlbGVjdG9yX2lkLmN1cnJlbnQpXG4gICAgICAgICAgICAgICAgLmFwcGVuZChcInN2Z1wiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwiaGVpZ2h0XCIsIChsZWdlbmRoZWlnaHQpICsgXCJweFwiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwid2lkdGhcIiwgKGxlZ2VuZHdpZHRoKSArIFwicHhcIilcbiAgICAgICAgICAgICAgICAuc3R5bGUoXCJwb3NpdGlvblwiLCBcImFic29sdXRlXCIpXG4gICAgICAgICAgICAgICAgLnN0eWxlKFwibGVmdFwiLCBcIjBweFwiKVxuICAgICAgICAgICAgICAgIC5zdHlsZShcInRvcFwiLCBcIjBweFwiKVxuXG4gICAgICAgICAgICBzdmdcbiAgICAgICAgICAgICAgICAuYXBwZW5kKFwiZ1wiKVxuICAgICAgICAgICAgICAgIC5hdHRyKFwiY2xhc3NcIiwgXCJheGlzXCIpXG4gICAgICAgICAgICAgICAgLmF0dHIoXCJ0cmFuc2Zvcm1cIiwgXCJ0cmFuc2xhdGUoXCIgKyAobWFyZ2luLmxlZnQpICsgXCIsXCIgKyAobGVnZW5kaGVpZ2h0IC0gbWFyZ2luLmJvdHRvbSkgKyBcIilcIikgLy8gQWRqdXN0IHRyYW5zZm9ybSBmb3IgYSBob3Jpem9udGFsIGxlZ2VuZFxuICAgICAgICAgICAgICAgIC5jYWxsKGxlZ2VuZGF4aXMpO1xuICAgICAgICB9O1xuICAgICAgICBcbiAgICB9LCBbXSk7IC8vIEVtcHR5IGRlcGVuZGVuY3kgYXJyYXkgdG8gZW5zdXJlIHVzZUVmZmVjdCBydW5zIG9ubHkgb25jZVxuXG4gICAgcmV0dXJuIDxkaXYgcmVmPXtjaGFydFJlZn0gaWQ9XCJjb2xvci1sZWdlbmRcIj48L2Rpdj47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBEM0NvbG9yTGVnZW5kO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwidXNlUmVmIiwiZDMiLCJkM3NjYWxlIiwiRDNDb2xvckxlZ2VuZCIsImNoYXJ0UmVmIiwiY29sb3JTY2FsZSIsInNjYWxlU2VxdWVudGlhbCIsImludGVycG9sYXRlU2luZWJvdyIsImRvbWFpbiIsImNvbnRpbnVvdXMiLCJzZWxlY3Rvcl9pZCIsImNvbG9yc2NhbGUiLCJsZWdlbmRoZWlnaHQiLCJsZWdlbmR3aWR0aCIsIm1hcmdpbiIsInRvcCIsInJpZ2h0IiwiYm90dG9tIiwibGVmdCIsImNhbnZhcyIsInNlbGVjdCIsImN1cnJlbnQiLCJzdHlsZSIsImFwcGVuZCIsImF0dHIiLCJub2RlIiwiY3R4IiwiZ2V0Q29udGV4dCIsImxlZ2VuZHNjYWxlIiwic2NhbGVMaW5lYXIiLCJyYW5nZSIsImltYWdlIiwiY3JlYXRlSW1hZ2VEYXRhIiwiZm9yRWFjaCIsImkiLCJjIiwicmdiIiwiaW52ZXJ0IiwiZGF0YSIsInIiLCJnIiwiYiIsInB1dEltYWdlRGF0YSIsImxlZ2VuZGF4aXMiLCJheGlzQm90dG9tIiwic2NhbGUiLCJ0aWNrU2l6ZSIsInRpY2tzIiwic3ZnIiwiY2FsbCIsImRpdiIsInJlZiIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/D3ColorLegend.js\n"); + +/***/ }), + +/***/ "./components/Loader.js": +/*!******************************!*\ + !*** ./components/Loader.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Loader)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n\nfunction Loader({ loadingText = \"Processsing\" }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n textAlign: \"center\"\n },\n children: [\n loadingText,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"loader\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Loader.js\",\n lineNumber: 5,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Loader.js\",\n lineNumber: 3,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL0xvYWRlci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQWUsU0FBU0EsT0FBTyxFQUFFQyxjQUFjLGFBQWEsRUFBQztJQUN6RCxxQkFDSSw4REFBQ0M7UUFBSUMsT0FBTztZQUFDQyxXQUFVO1FBQVE7O1lBQzFCSDswQkFDRCw4REFBQ0M7Z0JBQUlHLFdBQVU7Ozs7Ozs7Ozs7OztBQUkzQiIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vY29tcG9uZW50cy9Mb2FkZXIuanM/YTE1MSJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMb2FkZXIoeyBsb2FkaW5nVGV4dCA9ICdQcm9jZXNzc2luZyd9KXtcbiAgICByZXR1cm4oXG4gICAgICAgIDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246XCJjZW50ZXJcIn19PlxuICAgICAgICAgICAge2xvYWRpbmdUZXh0fVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2FkZXJcIj48L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIFxuICAgIClcbn0iXSwibmFtZXMiOlsiTG9hZGVyIiwibG9hZGluZ1RleHQiLCJkaXYiLCJzdHlsZSIsInRleHRBbGlnbiIsImNsYXNzTmFtZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Loader.js\n"); + +/***/ }), + +/***/ "./components/ScatterPlot.js": +/*!***********************************!*\ + !*** ./components/ScatterPlot.js ***! + \***********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AxisBottom: () => (/* binding */ AxisBottom),\n/* harmony export */ AxisLeft: () => (/* binding */ AxisLeft),\n/* harmony export */ \"default\": () => (/* binding */ Scatterplot)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! d3 */ \"d3\");\n/* harmony import */ var _D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./D3ColorLegend */ \"./components/D3ColorLegend.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([d3__WEBPACK_IMPORTED_MODULE_2__, _D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__]);\n([d3__WEBPACK_IMPORTED_MODULE_2__, _D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__] = __webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__);\n\n\n\n\n// tick length\nconst TICK_LENGTH = 20;\nconst AxisBottom = ({ xScale, pixelsPerTick, height })=>{\n const range = xScale.range();\n const ticks = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const width = range[1] - range[0];\n const numberOfTicksTarget = Math.floor(width / pixelsPerTick);\n return xScale.ticks(numberOfTicksTarget).map((value)=>({\n value,\n xOffset: xScale(value)\n }));\n }, [\n xScale,\n height\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: ticks.map(({ value, xOffset })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(${xOffset}, 0)`,\n shapeRendering: \"crispEdges\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n y1: TICK_LENGTH,\n y2: -height - TICK_LENGTH,\n stroke: \"var(--text-color)\",\n strokeWidth: 0.5\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 34,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n style: {\n fontSize: \"10px\",\n textAnchor: \"middle\",\n transform: \"translateY(20px)\",\n fill: \"var(--text-color)\"\n },\n children: value\n }, value, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 40,\n columnNumber: 11\n }, undefined)\n ]\n }, value, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 29,\n columnNumber: 9\n }, undefined))\n }, void 0, false);\n};\nconst AxisLeft = ({ yScale, pixelsPerTick, width })=>{\n const range = yScale.range();\n const ticks = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const height = range[0] - range[1];\n const numberOfTicksTarget = Math.floor(height / pixelsPerTick);\n return yScale.ticks(numberOfTicksTarget).map((value)=>({\n value,\n yOffset: yScale(value)\n }));\n }, [\n yScale\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: ticks.map(({ value, yOffset })=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(0, ${yOffset})`,\n shapeRendering: \"crispEdges\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: -TICK_LENGTH,\n x2: width + TICK_LENGTH,\n stroke: \"var(--text-color)\",\n strokeWidth: 0.5\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 78,\n columnNumber: 11\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n style: {\n fontSize: \"10px\",\n textAnchor: \"middle\",\n transform: \"translateX(-20px)\",\n fill: \"var(--text-color)\"\n },\n children: value\n }, value, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 84,\n columnNumber: 11\n }, undefined)\n ]\n }, value, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 73,\n columnNumber: 9\n }, undefined))\n }, void 0, false);\n};\nconst MARGIN = {\n top: 60,\n right: 60,\n bottom: 60,\n left: 60\n};\nfunction Scatterplot({ width, height, data, xAxisTitle = \"Principal Component 1\", yAxisTitle = \"Principal Component 2\", colorProperty = null }) {\n // Layout. The div size is set by the given props.\n // The bounds (=area inside the axis) is calculated by subtracting the margins\n const boundsWidth = width - MARGIN.right - MARGIN.left;\n const boundsHeight = height - MARGIN.top - MARGIN.bottom;\n const padding = 4;\n const xDomain = [\n d3__WEBPACK_IMPORTED_MODULE_2__.min(data, (d)=>d.y) - padding,\n d3__WEBPACK_IMPORTED_MODULE_2__.max(data, (d)=>d.y) + padding\n ];\n const yDomain = [\n d3__WEBPACK_IMPORTED_MODULE_2__.min(data, (d)=>d.x) - padding,\n d3__WEBPACK_IMPORTED_MODULE_2__.max(data, (d)=>d.x) + padding\n ];\n const xScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleLinear().domain(xDomain).range([\n 0,\n boundsWidth\n ]);\n const yScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleLinear().domain(yDomain).range([\n boundsHeight,\n 0\n ]);\n const colorScale = d3__WEBPACK_IMPORTED_MODULE_2__.scaleSequential().domain([\n 1,\n 10\n ]).interpolator(d3__WEBPACK_IMPORTED_MODULE_2__.interpolateSinebow);\n console.log(colorProperty);\n // Build the shapes\n const allShapes = data.map((d, i)=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n r: 4,\n cx: xScale(d.y),\n cy: yScale(d.x),\n opacity: 1,\n stroke: colorProperty == null ? \"var(--accent-color)\" : colorScale(colorProperty[i]),\n fill: colorProperty == null ? \"var(--accent-color)\" : colorScale(colorProperty[i]),\n fillOpacity: 0.2,\n strokeWidth: 1\n }, i, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 130,\n columnNumber: 7\n }, this);\n });\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_D3ColorLegend__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 148,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: width,\n height: height,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n width: boundsWidth,\n height: boundsHeight,\n transform: `translate(${[\n MARGIN.left,\n MARGIN.top\n ].join(\",\")})`,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AxisLeft, {\n yScale: yScale,\n pixelsPerTick: 40,\n width: boundsWidth\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 157,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"g\", {\n transform: `translate(0, ${boundsHeight})`,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AxisBottom, {\n xScale: xScale,\n pixelsPerTick: 40,\n height: boundsHeight\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 162,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 159,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n x: boundsWidth / 2,\n y: boundsHeight + MARGIN.top - 10,\n textAnchor: \"middle\",\n style: {\n fontSize: \"14px\",\n fill: \"var(--text-color)\"\n },\n children: xAxisTitle\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 170,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"text\", {\n transform: `translate(${-MARGIN.left + 20},${boundsHeight / 2}) rotate(-90)`,\n textAnchor: \"middle\",\n style: {\n fontSize: \"14px\",\n fill: \"var(--text-color)\"\n },\n children: yAxisTitle\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 178,\n columnNumber: 11\n }, this),\n allShapes\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 151,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 149,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ScatterPlot.js\",\n lineNumber: 147,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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OzswQkFDZCw4REFBQ3NFO2dCQUFJOUQsT0FBT0E7Z0JBQU9ILFFBQVFBOzBCQUV6Qiw0RUFBQ1U7b0JBQ0NQLE9BQU9tQztvQkFDUHRDLFFBQVF1QztvQkFDUjVCLFdBQVcsQ0FBQyxVQUFVLEVBQUU7d0JBQUNpQixPQUFPSSxJQUFJO3dCQUFFSixPQUFPQyxHQUFHO3FCQUFDLENBQUNxQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7O3NDQUc5RCw4REFBQzNDOzRCQUFTQyxRQUFRQTs0QkFBUXpCLGVBQWU7NEJBQUlJLE9BQU9tQzs7Ozs7O3NDQUVwRCw4REFBQzVCOzRCQUNDQyxXQUFXLENBQUMsYUFBYSxFQUFFNEIsYUFBYSxDQUFDLENBQUM7c0NBRTFDLDRFQUFDMUM7Z0NBQ0NDLFFBQVFBO2dDQUNSQyxlQUFlO2dDQUNmQyxRQUFRdUM7Ozs7Ozs7Ozs7O3NDQUtaLDhEQUFDckI7NEJBQ0M2QixHQUFHVCxjQUFjOzRCQUNqQk0sR0FBR0wsZUFBZVgsT0FBT0MsR0FBRyxHQUFHOzRCQUMvQlIsWUFBVzs0QkFDWEYsT0FBTztnQ0FBRUMsVUFBVTtnQ0FBUUUsTUFBTTs0QkFBb0I7c0NBRXBEYTs7Ozs7O3NDQUVILDhEQUFDakI7NEJBQ0NQLFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQ2lCLE9BQU9JLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRU8sZUFBZSxFQUFFLGFBQWEsQ0FBQzs0QkFDNUVsQixZQUFXOzRCQUNYRixPQUFPO2dDQUFFQyxVQUFVO2dDQUFRRSxNQUFNOzRCQUFvQjtzQ0FFcERjOzs7Ozs7d0JBSUZvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTVgiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbXBvbmVudHMvU2NhdHRlclBsb3QuanM/YzNiNiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XG5pbXBvcnQgRDNDb2xvckxlZ2VuZCBmcm9tICcuL0QzQ29sb3JMZWdlbmQnO1xuXG4vLyB0aWNrIGxlbmd0aFxuY29uc3QgVElDS19MRU5HVEggPSAyMDtcblxuZXhwb3J0IGNvbnN0IEF4aXNCb3R0b20gPSAoe1xuICB4U2NhbGUsXG4gIHBpeGVsc1BlclRpY2ssXG4gIGhlaWdodCxcbn0pID0+IHtcbiAgY29uc3QgcmFuZ2UgPSB4U2NhbGUucmFuZ2UoKTtcblxuICBjb25zdCB0aWNrcyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHdpZHRoID0gcmFuZ2VbMV0gLSByYW5nZVswXTtcbiAgICBjb25zdCBudW1iZXJPZlRpY2tzVGFyZ2V0ID0gTWF0aC5mbG9vcih3aWR0aCAvIHBpeGVsc1BlclRpY2spO1xuXG4gICAgcmV0dXJuIHhTY2FsZS50aWNrcyhudW1iZXJPZlRpY2tzVGFyZ2V0KS5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgdmFsdWUsXG4gICAgICB4T2Zmc2V0OiB4U2NhbGUodmFsdWUpLFxuICAgIH0pKTtcbiAgfSwgW3hTY2FsZSwgaGVpZ2h0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgey8qIFRpY2tzIGFuZCBsYWJlbHMgKi99XG4gICAgICB7dGlja3MubWFwKCh7IHZhbHVlLCB4T2Zmc2V0IH0pID0+IChcbiAgICAgICAgPGdcbiAgICAgICAgICBrZXk9e3ZhbHVlfVxuICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke3hPZmZzZXR9LCAwKWB9XG4gICAgICAgICAgc2hhcGVSZW5kZXJpbmc9e1wiY3Jpc3BFZGdlc1wifVxuICAgICAgICA+XG4gICAgICAgICAgPGxpbmVcbiAgICAgICAgICAgIHkxPXtUSUNLX0xFTkdUSH1cbiAgICAgICAgICAgIHkyPXstaGVpZ2h0IC0gVElDS19MRU5HVEh9XG4gICAgICAgICAgICBzdHJva2U9XCJ2YXIoLS10ZXh0LWNvbG9yKVwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17MC41fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBmb250U2l6ZTogXCIxMHB4XCIsXG4gICAgICAgICAgICAgIHRleHRBbmNob3I6IFwibWlkZGxlXCIsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVZKDIwcHgpXCIsXG4gICAgICAgICAgICAgIGZpbGw6IFwidmFyKC0tdGV4dC1jb2xvcilcIixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3ZhbHVlfVxuICAgICAgICAgIDwvdGV4dD5cbiAgICAgICAgPC9nPlxuICAgICAgKSl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgQXhpc0xlZnQgPSAoeyB5U2NhbGUsIHBpeGVsc1BlclRpY2ssIHdpZHRoIH0pID0+IHtcbiAgY29uc3QgcmFuZ2UgPSB5U2NhbGUucmFuZ2UoKTtcbiAgY29uc3QgdGlja3MgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBoZWlnaHQgPSByYW5nZVswXSAtIHJhbmdlWzFdO1xuICAgIGNvbnN0IG51bWJlck9mVGlja3NUYXJnZXQgPSBNYXRoLmZsb29yKGhlaWdodCAvIHBpeGVsc1BlclRpY2spO1xuXG4gICAgcmV0dXJuIHlTY2FsZS50aWNrcyhudW1iZXJPZlRpY2tzVGFyZ2V0KS5tYXAoKHZhbHVlKSA9PiAoe1xuICAgICAgdmFsdWUsXG4gICAgICB5T2Zmc2V0OiB5U2NhbGUodmFsdWUpLFxuICAgIH0pKTtcbiAgfSwgW3lTY2FsZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHsvKiBUaWNrcyBhbmQgbGFiZWxzICovfVxuICAgICAge3RpY2tzLm1hcCgoeyB2YWx1ZSwgeU9mZnNldCB9KSA9PiAoXG4gICAgICAgIDxnXG4gICAgICAgICAga2V5PXt2YWx1ZX1cbiAgICAgICAgICB0cmFuc2Zvcm09e2B0cmFuc2xhdGUoMCwgJHt5T2Zmc2V0fSlgfVxuICAgICAgICAgIHNoYXBlUmVuZGVyaW5nPXtcImNyaXNwRWRnZXNcIn1cbiAgICAgICAgPlxuICAgICAgICAgIDxsaW5lXG4gICAgICAgICAgICB4MT17LVRJQ0tfTEVOR1RIfVxuICAgICAgICAgICAgeDI9e3dpZHRoICsgVElDS19MRU5HVEh9XG4gICAgICAgICAgICBzdHJva2U9XCJ2YXIoLS10ZXh0LWNvbG9yKVwiXG4gICAgICAgICAgICBzdHJva2VXaWR0aD17MC41fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIGtleT17dmFsdWV9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBmb250U2l6ZTogXCIxMHB4XCIsXG4gICAgICAgICAgICAgIHRleHRBbmNob3I6IFwibWlkZGxlXCIsXG4gICAgICAgICAgICAgIHRyYW5zZm9ybTogXCJ0cmFuc2xhdGVYKC0yMHB4KVwiLFxuICAgICAgICAgICAgICBmaWxsOiBcInZhcigtLXRleHQtY29sb3IpXCIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt2YWx1ZX1cbiAgICAgICAgICA8L3RleHQ+XG4gICAgICAgIDwvZz5cbiAgICAgICkpfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgTUFSR0lOID0geyB0b3A6IDYwLCByaWdodDogNjAsIGJvdHRvbTogNjAsIGxlZnQ6IDYwIH07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjYXR0ZXJwbG90KHsgd2lkdGgsIGhlaWdodCwgZGF0YSwgXG4gIHhBeGlzVGl0bGUgPSAnUHJpbmNpcGFsIENvbXBvbmVudCAxJywgeUF4aXNUaXRsZSA9ICdQcmluY2lwYWwgQ29tcG9uZW50IDInLFxuICBjb2xvclByb3BlcnR5ID0gbnVsbCB9KSB7XG4gIC8vIExheW91dC4gVGhlIGRpdiBzaXplIGlzIHNldCBieSB0aGUgZ2l2ZW4gcHJvcHMuXG4gIC8vIFRoZSBib3VuZHMgKD1hcmVhIGluc2lkZSB0aGUgYXhpcykgaXMgY2FsY3VsYXRlZCBieSBzdWJ0cmFjdGluZyB0aGUgbWFyZ2luc1xuICBjb25zdCBib3VuZHNXaWR0aCA9IHdpZHRoIC0gTUFSR0lOLnJpZ2h0IC0gTUFSR0lOLmxlZnQ7XG4gIGNvbnN0IGJvdW5kc0hlaWdodCA9IGhlaWdodCAtIE1BUkdJTi50b3AgLSBNQVJHSU4uYm90dG9tO1xuICBjb25zdCBwYWRkaW5nID0gNDtcblxuICBjb25zdCB4RG9tYWluID0gW2QzLm1pbihkYXRhLCBkID0+IGQueSkgLSBwYWRkaW5nLCBkMy5tYXgoZGF0YSwgZCA9PiBkLnkpICsgcGFkZGluZ107XG4gIGNvbnN0IHlEb21haW4gPSBbZDMubWluKGRhdGEsIGQgPT4gZC54KSAtIHBhZGRpbmcsIGQzLm1heChkYXRhLCBkID0+IGQueCkgKyBwYWRkaW5nXTtcblxuICBjb25zdCB4U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgLmRvbWFpbih4RG9tYWluKVxuICAgIC5yYW5nZShbMCwgYm91bmRzV2lkdGhdKTtcblxuICBjb25zdCB5U2NhbGUgPSBkMy5zY2FsZUxpbmVhcigpXG4gICAgLmRvbWFpbih5RG9tYWluKVxuICAgIC5yYW5nZShbYm91bmRzSGVpZ2h0LCAwXSk7XG5cblxuICBjb25zdCBjb2xvclNjYWxlID0gZDMuc2NhbGVTZXF1ZW50aWFsKCkuZG9tYWluKFsxLDEwXSlcbiAgLmludGVycG9sYXRvcihkMy5pbnRlcnBvbGF0ZVNpbmVib3cpO1xuICAgIGNvbnNvbGUubG9nKGNvbG9yUHJvcGVydHkpXG4gIC8vIEJ1aWxkIHRoZSBzaGFwZXNcbiAgY29uc3QgYWxsU2hhcGVzID0gZGF0YS5tYXAoKGQsIGkpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgPGNpcmNsZVxuICAgICAgICBrZXk9e2l9XG4gICAgICAgIHI9ezR9XG4gICAgICAgIGN4PXt4U2NhbGUoZC55KX1cbiAgICAgICAgY3k9e3lTY2FsZShkLngpfVxuICAgICAgICBvcGFjaXR5PXsxfVxuICAgICAgICBzdHJva2U9IHtjb2xvclByb3BlcnR5ID09IG51bGwgPyBcInZhcigtLWFjY2VudC1jb2xvcilcIiA6IGNvbG9yU2NhbGUoY29sb3JQcm9wZXJ0eVtpXSl9XG4gICAgICAgIGZpbGw9e2NvbG9yUHJvcGVydHkgPT0gbnVsbCA/IFwidmFyKC0tYWNjZW50LWNvbG9yKVwiIDogY29sb3JTY2FsZShjb2xvclByb3BlcnR5W2ldKX1cbiAgICAgICAgZmlsbE9wYWNpdHk9ezAuMn1cbiAgICAgICAgc3Ryb2tlV2lkdGg9ezF9XG4gICAgICAvPlxuICAgICk7XG4gIH0pO1xuXG5cblxuICByZXR1cm4gKFxuICAgIDxkaXY+XG4gICAgICA8RDNDb2xvckxlZ2VuZCAvPlxuICAgICAgPHN2ZyB3aWR0aD17d2lkdGh9IGhlaWdodD17aGVpZ2h0fT5cbiAgICAgICAgXG4gICAgICAgIDxnXG4gICAgICAgICAgd2lkdGg9e2JvdW5kc1dpZHRofVxuICAgICAgICAgIGhlaWdodD17Ym91bmRzSGVpZ2h0fVxuICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgke1tNQVJHSU4ubGVmdCwgTUFSR0lOLnRvcF0uam9pbignLCcpfSlgfVxuICAgICAgICA+XG4gICAgICAgICAgey8qIFkgYXhpcyAqL31cbiAgICAgICAgICA8QXhpc0xlZnQgeVNjYWxlPXt5U2NhbGV9IHBpeGVsc1BlclRpY2s9ezQwfSB3aWR0aD17Ym91bmRzV2lkdGh9IC8+XG4gICAgICAgICAgey8qIFggYXhpcywgdXNlIGFuIGFkZGl0aW9uYWwgdHJhbnNsYXRpb24gdG8gYXBwZWFyIGF0IHRoZSBib3R0b20gKi99XG4gICAgICAgICAgPGdcbiAgICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgwLCAke2JvdW5kc0hlaWdodH0pYH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8QXhpc0JvdHRvbVxuICAgICAgICAgICAgICB4U2NhbGU9e3hTY2FsZX1cbiAgICAgICAgICAgICAgcGl4ZWxzUGVyVGljaz17NDB9XG4gICAgICAgICAgICAgIGhlaWdodD17Ym91bmRzSGVpZ2h0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2c+XG5cbiAgICAgICAgICB7LyogQXhpcyBUaXRsZXMgKi99XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIHg9e2JvdW5kc1dpZHRoIC8gMn1cbiAgICAgICAgICAgIHk9e2JvdW5kc0hlaWdodCArIE1BUkdJTi50b3AgLSAxMH1cbiAgICAgICAgICAgIHRleHRBbmNob3I9XCJtaWRkbGVcIlxuICAgICAgICAgICAgc3R5bGU9e3sgZm9udFNpemU6IFwiMTRweFwiLCBmaWxsOiBcInZhcigtLXRleHQtY29sb3IpXCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eEF4aXNUaXRsZX1cbiAgICAgICAgICA8L3RleHQ+XG4gICAgICAgICAgPHRleHRcbiAgICAgICAgICAgIHRyYW5zZm9ybT17YHRyYW5zbGF0ZSgkey1NQVJHSU4ubGVmdCArIDIwfSwke2JvdW5kc0hlaWdodCAvIDJ9KSByb3RhdGUoLTkwKWB9XG4gICAgICAgICAgICB0ZXh0QW5jaG9yPVwibWlkZGxlXCJcbiAgICAgICAgICAgIHN0eWxlPXt7IGZvbnRTaXplOiBcIjE0cHhcIiwgZmlsbDogXCJ2YXIoLS10ZXh0LWNvbG9yKVwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3lBeGlzVGl0bGV9XG4gICAgICAgICAgPC90ZXh0PlxuXG4gICAgICAgICAgey8qIENpcmNsZXMgKi99XG4gICAgICAgICAge2FsbFNoYXBlc31cbiAgICAgICAgPC9nPlxuICAgICAgPC9zdmc+XG4gICAgICBcbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VNZW1vIiwiZDMiLCJEM0NvbG9yTGVnZW5kIiwiVElDS19MRU5HVEgiLCJBeGlzQm90dG9tIiwieFNjYWxlIiwicGl4ZWxzUGVyVGljayIsImhlaWdodCIsInJhbmdlIiwidGlja3MiLCJ3aWR0aCIsIm51bWJlck9mVGlja3NUYXJnZXQiLCJNYXRoIiwiZmxvb3IiLCJtYXAiLCJ2YWx1ZSIsInhPZmZzZXQiLCJnIiwidHJhbnNmb3JtIiwic2hhcGVSZW5kZXJpbmciLCJsaW5lIiwieTEiLCJ5MiIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwidGV4dCIsInN0eWxlIiwiZm9udFNpemUiLCJ0ZXh0QW5jaG9yIiwiZmlsbCIsIkF4aXNMZWZ0IiwieVNjYWxlIiwieU9mZnNldCIsIngxIiwieDIiLCJNQVJHSU4iLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJTY2F0dGVycGxvdCIsImRhdGEiLCJ4QXhpc1RpdGxlIiwieUF4aXNUaXRsZSIsImNvbG9yUHJvcGVydHkiLCJib3VuZHNXaWR0aCIsImJvdW5kc0hlaWdodCIsInBhZGRpbmciLCJ4RG9tYWluIiwibWluIiwiZCIsInkiLCJtYXgiLCJ5RG9tYWluIiwieCIsInNjYWxlTGluZWFyIiwiZG9tYWluIiwiY29sb3JTY2FsZSIsInNjYWxlU2VxdWVudGlhbCIsImludGVycG9sYXRvciIsImludGVycG9sYXRlU2luZWJvdyIsImNvbnNvbGUiLCJsb2ciLCJhbGxTaGFwZXMiLCJpIiwiY2lyY2xlIiwiciIsImN4IiwiY3kiLCJvcGFjaXR5IiwiZmlsbE9wYWNpdHkiLCJkaXYiLCJzdmciLCJqb2luIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/ScatterPlot.js\n"); + +/***/ }), + +/***/ "./components/tSNE_Plot.js": +/*!*********************************!*\ + !*** ./components/tSNE_Plot.js ***! + \*********************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +eval("__webpack_require__.a(module, async (__webpack_handle_async_dependencies__, __webpack_async_result__) => { try {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ TSNEPlot)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_LigandContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/LigandContext */ \"./context/LigandContext.js\");\n/* harmony import */ var _ScatterPlot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./ScatterPlot */ \"./components/ScatterPlot.js\");\n/* harmony import */ var _utils_tsne__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/tsne */ \"./components/utils/tsne.js\");\n/* harmony import */ var _utils_tsne__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_utils_tsne__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _Loader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./Loader */ \"./components/Loader.js\");\nvar __webpack_async_dependencies__ = __webpack_handle_async_dependencies__([_ScatterPlot__WEBPACK_IMPORTED_MODULE_3__]);\n_ScatterPlot__WEBPACK_IMPORTED_MODULE_3__ = (__webpack_async_dependencies__.then ? (await __webpack_async_dependencies__)() : __webpack_async_dependencies__)[0];\n\n\n\n\n\n\nfunction TSNEPlot() {\n const { ligand } = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(_context_LigandContext__WEBPACK_IMPORTED_MODULE_2__[\"default\"]);\n const [tsneData, setTSNEData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n var opt = {};\n opt.epsilon = 10;\n opt.perplexity = 30;\n opt.dim = 2;\n var tsne = new _utils_tsne__WEBPACK_IMPORTED_MODULE_4__.tSNE(opt);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n setTimeout(()=>{\n processCompounds();\n }, 500);\n }, []);\n const processCompounds = async ()=>{\n var fp_storer = ligand.map((obj)=>obj.fingerprint);\n try {\n tsne.initDataRaw(fp_storer);\n for(var k = 0; k < 1000; k++){\n tsne.step(); // every time you call this, solution gets better\n }\n var tsne_data = tsne.getSolution();\n const tsne_data_in = await tsne_data.map(([x, y])=>({\n x,\n y\n }));\n setTSNEData(tsne_data_in);\n } catch (error) {\n console.error(\"Error:\", error);\n }\n };\n if (tsneData === null) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Loader__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/tSNE_Plot.js\",\n lineNumber: 41,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/tSNE_Plot.js\",\n lineNumber: 40,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"container\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ScatterPlot__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n data: tsneData,\n width: 600,\n height: 600,\n colorProperty: ligand.map((obj)=>obj.pKi)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/tSNE_Plot.js\",\n lineNumber: 47,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/tSNE_Plot.js\",\n lineNumber: 46,\n columnNumber: 5\n }, this);\n}\n\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } });//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL3RTTkVfUGxvdC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUF3RDtBQUNIO0FBQ2I7QUFDRDtBQUNUO0FBRWYsU0FBU087SUFDdEIsTUFBTSxFQUFFQyxNQUFNLEVBQUUsR0FBR1IsaURBQVVBLENBQUNHLDhEQUFhQTtJQUMzQyxNQUFNLENBQUNNLFVBQVVDLFlBQVksR0FBR1IsK0NBQVFBLENBQUM7SUFHekMsSUFBSVMsTUFBTSxDQUFDO0lBQ1hBLElBQUlDLE9BQU8sR0FBRztJQUNkRCxJQUFJRSxVQUFVLEdBQUc7SUFDakJGLElBQUlHLEdBQUcsR0FBRztJQUNWLElBQUlDLE9BQU8sSUFBSVYsNkNBQVcsQ0FBQ007SUFDM0JWLGdEQUFTQSxDQUFDO1FBQ1JnQixXQUFXO1lBQ1RDO1FBQ0YsR0FBRztJQUNMLEdBQUcsRUFBRTtJQUVILE1BQU1BLG1CQUFtQjtRQUN2QixJQUFJQyxZQUFZWCxPQUFPWSxHQUFHLENBQUMsQ0FBQ0MsTUFBUUEsSUFBSUMsV0FBVztRQUNuRCxJQUFJO1lBQ0ZQLEtBQUtRLFdBQVcsQ0FBQ0o7WUFDakIsSUFBSyxJQUFJSyxJQUFJLEdBQUdBLElBQUksTUFBTUEsSUFBSztnQkFDN0JULEtBQUtVLElBQUksSUFBSSxpREFBaUQ7WUFDaEU7WUFDQSxJQUFJQyxZQUFZWCxLQUFLWSxXQUFXO1lBQ2hDLE1BQU1DLGVBQWUsTUFBTUYsVUFBVU4sR0FBRyxDQUFDLENBQUMsQ0FBQ1MsR0FBR0MsRUFBRSxHQUFNO29CQUFFRDtvQkFBR0M7Z0JBQUU7WUFDN0RwQixZQUFZa0I7UUFDZCxFQUFFLE9BQU9HLE9BQU87WUFDZEMsUUFBUUQsS0FBSyxDQUFDLFVBQVVBO1FBQzFCO0lBQ0Y7SUFFRixJQUFJdEIsYUFBYSxNQUFNO1FBQ3JCLHFCQUNFLDhEQUFDd0I7WUFBSUMsV0FBVTtzQkFDZiw0RUFBQzVCLCtDQUFNQTs7Ozs7Ozs7OztJQUdYO0lBQ0EscUJBQ0UsOERBQUMyQjtRQUFJQyxXQUFVO2tCQUNiLDRFQUFDOUIsb0RBQVdBO1lBQUMrQixNQUFNMUI7WUFBVTJCLE9BQU87WUFBS0MsUUFBUTtZQUFLQyxlQUFlOUIsT0FBT1ksR0FBRyxDQUFDLENBQUNDLE1BQVFBLElBQUlrQixHQUFHOzs7Ozs7Ozs7OztBQUd0RyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vY29tcG9uZW50cy90U05FX1Bsb3QuanM/ODcwOCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgTGlnYW5kQ29udGV4dCBmcm9tIFwiLi4vY29udGV4dC9MaWdhbmRDb250ZXh0XCI7XG5pbXBvcnQgU2NhdHRlclBsb3QgZnJvbSAnLi9TY2F0dGVyUGxvdCc7XG5pbXBvcnQgKiBhcyB0c25lanMgZnJvbSAnLi91dGlscy90c25lJztcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4vTG9hZGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRTTkVQbG90KCkge1xuICBjb25zdCB7IGxpZ2FuZCB9ID0gdXNlQ29udGV4dChMaWdhbmRDb250ZXh0KTtcbiAgY29uc3QgW3RzbmVEYXRhLCBzZXRUU05FRGF0YV0gPSB1c2VTdGF0ZShudWxsKVxuXG4gIFxuICB2YXIgb3B0ID0ge31cbiAgb3B0LmVwc2lsb24gPSAxMDtcbiAgb3B0LnBlcnBsZXhpdHkgPSAzMDtcbiAgb3B0LmRpbSA9IDI7IFxuICB2YXIgdHNuZSA9IG5ldyB0c25lanMudFNORShvcHQpO1xuICB1c2VFZmZlY3QoKCkgPT4geyAgICBcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHByb2Nlc3NDb21wb3VuZHMoKTtcbiAgICB9LCA1MDApXG4gIH0sIFtdKTtcblxuICAgIGNvbnN0IHByb2Nlc3NDb21wb3VuZHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICB2YXIgZnBfc3RvcmVyID0gbGlnYW5kLm1hcCgob2JqKSA9PiBvYmouZmluZ2VycHJpbnQpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgdHNuZS5pbml0RGF0YVJhdyhmcF9zdG9yZXIpO1xuICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IDEwMDA7IGsrKykge1xuICAgICAgICAgIHRzbmUuc3RlcCgpOyAvLyBldmVyeSB0aW1lIHlvdSBjYWxsIHRoaXMsIHNvbHV0aW9uIGdldHMgYmV0dGVyXG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRzbmVfZGF0YSA9IHRzbmUuZ2V0U29sdXRpb24oKTtcbiAgICAgICAgY29uc3QgdHNuZV9kYXRhX2luID0gYXdhaXQgdHNuZV9kYXRhLm1hcCgoW3gsIHldKSA9PiAoeyB4LCB5IH0pKTsgXG4gICAgICAgIHNldFRTTkVEYXRhKHRzbmVfZGF0YV9pbilcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvcjpcIiwgZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG5cbiAgaWYgKHRzbmVEYXRhID09PSBudWxsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiY29udGFpbmVyXCI+XG4gICAgICA8TG9hZGVyIC8+XG4gICAgICA8L2Rpdj5cbiAgICApXG4gIH1cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgPFNjYXR0ZXJQbG90IGRhdGE9e3RzbmVEYXRhfSB3aWR0aD17NjAwfSBoZWlnaHQ9ezYwMH0gY29sb3JQcm9wZXJ0eT17bGlnYW5kLm1hcCgob2JqKSA9PiBvYmoucEtpKX0vPlxuICAgIDwvZGl2PlxuICApXG59XG4iXSwibmFtZXMiOlsidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiTGlnYW5kQ29udGV4dCIsIlNjYXR0ZXJQbG90IiwidHNuZWpzIiwiTG9hZGVyIiwiVFNORVBsb3QiLCJsaWdhbmQiLCJ0c25lRGF0YSIsInNldFRTTkVEYXRhIiwib3B0IiwiZXBzaWxvbiIsInBlcnBsZXhpdHkiLCJkaW0iLCJ0c25lIiwidFNORSIsInNldFRpbWVvdXQiLCJwcm9jZXNzQ29tcG91bmRzIiwiZnBfc3RvcmVyIiwibWFwIiwib2JqIiwiZmluZ2VycHJpbnQiLCJpbml0RGF0YVJhdyIsImsiLCJzdGVwIiwidHNuZV9kYXRhIiwiZ2V0U29sdXRpb24iLCJ0c25lX2RhdGFfaW4iLCJ4IiwieSIsImVycm9yIiwiY29uc29sZSIsImRpdiIsImNsYXNzTmFtZSIsImRhdGEiLCJ3aWR0aCIsImhlaWdodCIsImNvbG9yUHJvcGVydHkiLCJwS2kiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/tSNE_Plot.js\n"); + +/***/ }), + +/***/ "./components/utils/tsne.js": +/*!**********************************!*\ + !*** ./components/utils/tsne.js ***! + \**********************************/ +/***/ ((module) => { + +eval("// create main global object\n\nvar tsnejs = tsnejs || {\n REVISION: \"ALPHA\"\n};\n(function(global) {\n \"use strict\";\n // utility function\n var assert = function(condition, message) {\n if (!condition) {\n throw message || \"Assertion failed\";\n }\n };\n // syntax sugar\n var getopt = function(opt, field, defaultval) {\n if (opt.hasOwnProperty(field)) {\n return opt[field];\n } else {\n return defaultval;\n }\n };\n // return 0 mean unit standard deviation random number\n var return_v = false;\n var v_val = 0.0;\n var gaussRandom = function() {\n if (return_v) {\n return_v = false;\n return v_val;\n }\n var u = 2 * Math.random() - 1;\n var v = 2 * Math.random() - 1;\n var r = u * u + v * v;\n if (r == 0 || r > 1) return gaussRandom();\n var c = Math.sqrt(-2 * Math.log(r) / r);\n v_val = v * c; // cache this for next function call for efficiency\n return_v = true;\n return u * c;\n };\n // return random normal number\n var randn = function(mu, std) {\n return mu + gaussRandom() * std;\n };\n // utilitity that creates contiguous vector of zeros of size n\n var zeros = function(n) {\n if (typeof n === \"undefined\" || isNaN(n)) {\n return [];\n }\n if (typeof ArrayBuffer === \"undefined\") {\n // lacking browser support\n var arr = new Array(n);\n for(var i = 0; i < n; i++){\n arr[i] = 0;\n }\n return arr;\n } else {\n return new Float64Array(n); // typed arrays are faster\n }\n };\n // utility that returns 2d array filled with random numbers\n // or with value s, if provided\n var randn2d = function(n, d, s) {\n var uses = typeof s !== \"undefined\";\n var x = [];\n for(var i = 0; i < n; i++){\n var xhere = [];\n for(var j = 0; j < d; j++){\n if (uses) {\n xhere.push(s);\n } else {\n xhere.push(randn(0.0, 1e-4));\n }\n }\n x.push(xhere);\n }\n return x;\n };\n // compute L2 distance between two vectors\n var L2 = function(x1, x2) {\n var D = x1.length;\n var d = 0;\n for(var i = 0; i < D; i++){\n var x1i = x1[i];\n var x2i = x2[i];\n d += (x1i - x2i) * (x1i - x2i);\n }\n return d;\n };\n // compute pairwise distance in all vectors in X\n var xtod = function(X) {\n var N = X.length;\n var dist = zeros(N * N); // allocate contiguous array\n for(var i = 0; i < N; i++){\n for(var j = i + 1; j < N; j++){\n var d = L2(X[i], X[j]);\n dist[i * N + j] = d;\n dist[j * N + i] = d;\n }\n }\n return dist;\n };\n // compute (p_{i|j} + p_{j|i})/(2n)\n var d2p = function(D, perplexity, tol) {\n var Nf = Math.sqrt(D.length); // this better be an integer\n var N = Math.floor(Nf);\n assert(N === Nf, \"D should have square number of elements.\");\n var Htarget = Math.log(perplexity); // target entropy of distribution\n var P = zeros(N * N); // temporary probability matrix\n var prow = zeros(N); // a temporary storage compartment\n for(var i = 0; i < N; i++){\n var betamin = -Infinity;\n var betamax = Infinity;\n var beta = 1; // initial value of precision\n var done = false;\n var maxtries = 50;\n // perform binary search to find a suitable precision beta\n // so that the entropy of the distribution is appropriate\n var num = 0;\n while(!done){\n //debugger;\n // compute entropy and kernel row with beta precision\n var psum = 0.0;\n for(var j = 0; j < N; j++){\n var pj = Math.exp(-D[i * N + j] * beta);\n if (i === j) {\n pj = 0;\n } // we dont care about diagonals\n prow[j] = pj;\n psum += pj;\n }\n // normalize p and compute entropy\n var Hhere = 0.0;\n for(var j = 0; j < N; j++){\n if (psum == 0) {\n var pj = 0;\n } else {\n var pj = prow[j] / psum;\n }\n prow[j] = pj;\n if (pj > 1e-7) Hhere -= pj * Math.log(pj);\n }\n // adjust beta based on result\n if (Hhere > Htarget) {\n // entropy was too high (distribution too diffuse)\n // so we need to increase the precision for more peaky distribution\n betamin = beta; // move up the bounds\n if (betamax === Infinity) {\n beta = beta * 2;\n } else {\n beta = (beta + betamax) / 2;\n }\n } else {\n // converse case. make distrubtion less peaky\n betamax = beta;\n if (betamin === -Infinity) {\n beta = beta / 2;\n } else {\n beta = (beta + betamin) / 2;\n }\n }\n // stopping conditions: too many tries or got a good precision\n num++;\n if (Math.abs(Hhere - Htarget) < tol) {\n done = true;\n }\n if (num >= maxtries) {\n done = true;\n }\n }\n // console.log('data point ' + i + ' gets precision ' + beta + ' after ' + num + ' binary search steps.');\n // copy over the final prow to P at row i\n for(var j = 0; j < N; j++){\n P[i * N + j] = prow[j];\n }\n } // end loop over examples i\n // symmetrize P and normalize it to sum to 1 over all ij\n var Pout = zeros(N * N);\n var N2 = N * 2;\n for(var i = 0; i < N; i++){\n for(var j = 0; j < N; j++){\n Pout[i * N + j] = Math.max((P[i * N + j] + P[j * N + i]) / N2, 1e-100);\n }\n }\n return Pout;\n };\n // helper function\n function sign(x) {\n return x > 0 ? 1 : x < 0 ? -1 : 0;\n }\n var tSNE = function(opt) {\n var opt = opt || {};\n this.perplexity = getopt(opt, \"perplexity\", 30); // effective number of nearest neighbors\n this.dim = getopt(opt, \"dim\", 2); // by default 2-D tSNE\n this.epsilon = getopt(opt, \"epsilon\", 10); // learning rate\n this.iter = 0;\n };\n tSNE.prototype = {\n // this function takes a set of high-dimensional points\n // and creates matrix P from them using gaussian kernel\n initDataRaw: function(X) {\n var N = X.length;\n var D = X[0].length;\n assert(N > 0, \" X is empty? You must have some data!\");\n assert(D > 0, \" X[0] is empty? Where is the data?\");\n var dists = xtod(X); // convert X to distances using gaussian kernel\n this.P = d2p(dists, this.perplexity, 1e-4); // attach to object\n this.N = N; // back up the size of the dataset\n this.initSolution(); // refresh this\n },\n // this function takes a given distance matrix and creates\n // matrix P from them.\n // D is assumed to be provided as a list of lists, and should be symmetric\n initDataDist: function(D) {\n var N = D.length;\n assert(N > 0, \" X is empty? You must have some data!\");\n // convert D to a (fast) typed array version\n var dists = zeros(N * N); // allocate contiguous array\n for(var i = 0; i < N; i++){\n for(var j = i + 1; j < N; j++){\n var d = D[i][j];\n dists[i * N + j] = d;\n dists[j * N + i] = d;\n }\n }\n this.P = d2p(dists, this.perplexity, 1e-4);\n this.N = N;\n this.initSolution(); // refresh this\n },\n // (re)initializes the solution to random\n initSolution: function() {\n // generate random solution to t-SNE\n this.Y = randn2d(this.N, this.dim); // the solution\n this.gains = randn2d(this.N, this.dim, 1.0); // step gains to accelerate progress in unchanging directions\n this.ystep = randn2d(this.N, this.dim, 0.0); // momentum accumulator\n this.iter = 0;\n },\n // return pointer to current solution\n getSolution: function() {\n return this.Y;\n },\n // perform a single step of optimization to improve the embedding\n step: function() {\n this.iter += 1;\n var N = this.N;\n var cg = this.costGrad(this.Y); // evaluate gradient\n var cost = cg.cost;\n var grad = cg.grad;\n // perform gradient step\n var ymean = zeros(this.dim);\n for(var i = 0; i < N; i++){\n for(var d = 0; d < this.dim; d++){\n var gid = grad[i][d];\n var sid = this.ystep[i][d];\n var gainid = this.gains[i][d];\n // compute gain update\n var newgain = sign(gid) === sign(sid) ? gainid * 0.8 : gainid + 0.2;\n if (newgain < 0.01) newgain = 0.01; // clamp\n this.gains[i][d] = newgain; // store for next turn\n // compute momentum step direction\n var momval = this.iter < 250 ? 0.5 : 0.8;\n var newsid = momval * sid - this.epsilon * newgain * grad[i][d];\n this.ystep[i][d] = newsid; // remember the step we took\n // step!\n this.Y[i][d] += newsid;\n ymean[d] += this.Y[i][d]; // accumulate mean so that we can center later\n }\n }\n // reproject Y to be zero mean\n for(var i = 0; i < N; i++){\n for(var d = 0; d < this.dim; d++){\n this.Y[i][d] -= ymean[d] / N;\n }\n }\n //if(this.iter%100===0) console.log('iter ' + this.iter + ', cost: ' + cost);\n return cost; // return current cost\n },\n // for debugging: gradient check\n debugGrad: function() {\n var N = this.N;\n var cg = this.costGrad(this.Y); // evaluate gradient\n var cost = cg.cost;\n var grad = cg.grad;\n var e = 1e-5;\n for(var i = 0; i < N; i++){\n for(var d = 0; d < this.dim; d++){\n var yold = this.Y[i][d];\n this.Y[i][d] = yold + e;\n var cg0 = this.costGrad(this.Y);\n this.Y[i][d] = yold - e;\n var cg1 = this.costGrad(this.Y);\n var analytic = grad[i][d];\n var numerical = (cg0.cost - cg1.cost) / (2 * e);\n console.log(i + \",\" + d + \": gradcheck analytic: \" + analytic + \" vs. numerical: \" + numerical);\n this.Y[i][d] = yold;\n }\n }\n },\n // return cost and gradient, given an arrangement\n costGrad: function(Y) {\n var N = this.N;\n var dim = this.dim; // dim of output space\n var P = this.P;\n var pmul = this.iter < 100 ? 4 : 1; // trick that helps with local optima\n // compute current Q distribution, unnormalized first\n var Qu = zeros(N * N);\n var qsum = 0.0;\n for(var i = 0; i < N; i++){\n for(var j = i + 1; j < N; j++){\n var dsum = 0.0;\n for(var d = 0; d < dim; d++){\n var dhere = Y[i][d] - Y[j][d];\n dsum += dhere * dhere;\n }\n var qu = 1.0 / (1.0 + dsum); // Student t-distribution\n Qu[i * N + j] = qu;\n Qu[j * N + i] = qu;\n qsum += 2 * qu;\n }\n }\n // normalize Q distribution to sum to 1\n var NN = N * N;\n var Q = zeros(NN);\n for(var q = 0; q < NN; q++){\n Q[q] = Math.max(Qu[q] / qsum, 1e-100);\n }\n var cost = 0.0;\n var grad = [];\n for(var i = 0; i < N; i++){\n var gsum = new Array(dim); // init grad for point i\n for(var d = 0; d < dim; d++){\n gsum[d] = 0.0;\n }\n for(var j = 0; j < N; j++){\n cost += -P[i * N + j] * Math.log(Q[i * N + j]); // accumulate cost (the non-constant portion at least...)\n var premult = 4 * (pmul * P[i * N + j] - Q[i * N + j]) * Qu[i * N + j];\n for(var d = 0; d < dim; d++){\n gsum[d] += premult * (Y[i][d] - Y[j][d]);\n }\n }\n grad.push(gsum);\n }\n return {\n cost: cost,\n grad: grad\n };\n }\n };\n global.tSNE = tSNE; // export tSNE class\n})(tsnejs);\n// export the library to window, or to module in nodejs\n(function(lib) {\n \"use strict\";\n if ( false || typeof module.exports === \"undefined\") {\n window.tsnejs = lib; // in ordinary browser attach library to window\n } else {\n module.exports = lib; // in nodejs\n }\n})(tsnejs);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFJLE1BQTZCLElBQUksT0FBT0MsT0FBT0MsT0FBTyxLQUFLLGFBQWE7UUFDMUVDLE9BQU8zSCxNQUFNLEdBQUd3SCxLQUFLLCtDQUErQztJQUN0RSxPQUFPO1FBQ0xDLE9BQU9DLE9BQU8sR0FBR0YsS0FBSyxZQUFZO0lBQ3BDO0FBQ0YsR0FBR3hIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL3V0aWxzL3RzbmUuanM/M2FmNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjcmVhdGUgbWFpbiBnbG9iYWwgb2JqZWN0XG52YXIgdHNuZWpzID0gdHNuZWpzIHx8IHsgUkVWSVNJT046ICdBTFBIQScgfTtcblxuKGZ1bmN0aW9uKGdsb2JhbCkge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICAvLyB1dGlsaXR5IGZ1bmN0aW9uXG4gIHZhciBhc3NlcnQgPSBmdW5jdGlvbihjb25kaXRpb24sIG1lc3NhZ2UpIHtcbiAgICBpZiAoIWNvbmRpdGlvbikgeyB0aHJvdyBtZXNzYWdlIHx8IFwiQXNzZXJ0aW9uIGZhaWxlZFwiOyB9XG4gIH1cblxuICAvLyBzeW50YXggc3VnYXJcbiAgdmFyIGdldG9wdCA9IGZ1bmN0aW9uKG9wdCwgZmllbGQsIGRlZmF1bHR2YWwpIHtcbiAgICBpZihvcHQuaGFzT3duUHJvcGVydHkoZmllbGQpKSB7XG4gICAgICByZXR1cm4gb3B0W2ZpZWxkXTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRlZmF1bHR2YWw7XG4gICAgfVxuICB9XG5cbiAgLy8gcmV0dXJuIDAgbWVhbiB1bml0IHN0YW5kYXJkIGRldmlhdGlvbiByYW5kb20gbnVtYmVyXG4gIHZhciByZXR1cm5fdiA9IGZhbHNlO1xuICB2YXIgdl92YWwgPSAwLjA7XG4gIHZhciBnYXVzc1JhbmRvbSA9IGZ1bmN0aW9uKCkge1xuICAgIGlmKHJldHVybl92KSB7IFxuICAgICAgcmV0dXJuX3YgPSBmYWxzZTtcbiAgICAgIHJldHVybiB2X3ZhbDsgXG4gICAgfVxuICAgIHZhciB1ID0gMipNYXRoLnJhbmRvbSgpLTE7XG4gICAgdmFyIHYgPSAyKk1hdGgucmFuZG9tKCktMTtcbiAgICB2YXIgciA9IHUqdSArIHYqdjtcbiAgICBpZihyID09IDAgfHwgciA+IDEpIHJldHVybiBnYXVzc1JhbmRvbSgpO1xuICAgIHZhciBjID0gTWF0aC5zcXJ0KC0yKk1hdGgubG9nKHIpL3IpO1xuICAgIHZfdmFsID0gdipjOyAvLyBjYWNoZSB0aGlzIGZvciBuZXh0IGZ1bmN0aW9uIGNhbGwgZm9yIGVmZmljaWVuY3lcbiAgICByZXR1cm5fdiA9IHRydWU7XG4gICAgcmV0dXJuIHUqYztcbiAgfVxuXG4gIC8vIHJldHVybiByYW5kb20gbm9ybWFsIG51bWJlclxuICB2YXIgcmFuZG4gPSBmdW5jdGlvbihtdSwgc3RkKXsgcmV0dXJuIG11K2dhdXNzUmFuZG9tKCkqc3RkOyB9XG5cbiAgLy8gdXRpbGl0aXR5IHRoYXQgY3JlYXRlcyBjb250aWd1b3VzIHZlY3RvciBvZiB6ZXJvcyBvZiBzaXplIG5cbiAgdmFyIHplcm9zID0gZnVuY3Rpb24obikge1xuICAgIGlmKHR5cGVvZihuKT09PSd1bmRlZmluZWQnIHx8IGlzTmFOKG4pKSB7IHJldHVybiBbXTsgfVxuICAgIGlmKHR5cGVvZiBBcnJheUJ1ZmZlciA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIGxhY2tpbmcgYnJvd3NlciBzdXBwb3J0XG4gICAgICB2YXIgYXJyID0gbmV3IEFycmF5KG4pO1xuICAgICAgZm9yKHZhciBpPTA7aTxuO2krKykgeyBhcnJbaV09IDA7IH1cbiAgICAgIHJldHVybiBhcnI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRmxvYXQ2NEFycmF5KG4pOyAvLyB0eXBlZCBhcnJheXMgYXJlIGZhc3RlclxuICAgIH1cbiAgfVxuXG4gIC8vIHV0aWxpdHkgdGhhdCByZXR1cm5zIDJkIGFycmF5IGZpbGxlZCB3aXRoIHJhbmRvbSBudW1iZXJzXG4gIC8vIG9yIHdpdGggdmFsdWUgcywgaWYgcHJvdmlkZWRcbiAgdmFyIHJhbmRuMmQgPSBmdW5jdGlvbihuLGQscykge1xuICAgIHZhciB1c2VzID0gdHlwZW9mIHMgIT09ICd1bmRlZmluZWQnO1xuICAgIHZhciB4ID0gW107XG4gICAgZm9yKHZhciBpPTA7aTxuO2krKykge1xuICAgICAgdmFyIHhoZXJlID0gW107XG4gICAgICBmb3IodmFyIGo9MDtqPGQ7aisrKSB7IFxuICAgICAgICBpZih1c2VzKSB7XG4gICAgICAgICAgeGhlcmUucHVzaChzKTsgXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgeGhlcmUucHVzaChyYW5kbigwLjAsIDFlLTQpKTsgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHgucHVzaCh4aGVyZSk7XG4gICAgfVxuICAgIHJldHVybiB4O1xuICB9XG5cbiAgLy8gY29tcHV0ZSBMMiBkaXN0YW5jZSBiZXR3ZWVuIHR3byB2ZWN0b3JzXG4gIHZhciBMMiA9IGZ1bmN0aW9uKHgxLCB4Mikge1xuICAgIHZhciBEID0geDEubGVuZ3RoO1xuICAgIHZhciBkID0gMDtcbiAgICBmb3IodmFyIGk9MDtpPEQ7aSsrKSB7IFxuICAgICAgdmFyIHgxaSA9IHgxW2ldO1xuICAgICAgdmFyIHgyaSA9IHgyW2ldO1xuICAgICAgZCArPSAoeDFpLXgyaSkqKHgxaS14MmkpO1xuICAgIH1cbiAgICByZXR1cm4gZDtcbiAgfVxuXG4gIC8vIGNvbXB1dGUgcGFpcndpc2UgZGlzdGFuY2UgaW4gYWxsIHZlY3RvcnMgaW4gWFxuICB2YXIgeHRvZCA9IGZ1bmN0aW9uKFgpIHtcbiAgICB2YXIgTiA9IFgubGVuZ3RoO1xuICAgIHZhciBkaXN0ID0gemVyb3MoTiAqIE4pOyAvLyBhbGxvY2F0ZSBjb250aWd1b3VzIGFycmF5XG4gICAgZm9yKHZhciBpPTA7aTxOO2krKykge1xuICAgICAgZm9yKHZhciBqPWkrMTtqPE47aisrKSB7XG4gICAgICAgIHZhciBkID0gTDIoWFtpXSwgWFtqXSk7XG4gICAgICAgIGRpc3RbaSpOK2pdID0gZDtcbiAgICAgICAgZGlzdFtqKk4raV0gPSBkO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGlzdDtcbiAgfVxuXG4gIC8vIGNvbXB1dGUgKHBfe2l8an0gKyBwX3tqfGl9KS8oMm4pXG4gIHZhciBkMnAgPSBmdW5jdGlvbihELCBwZXJwbGV4aXR5LCB0b2wpIHtcbiAgICB2YXIgTmYgPSBNYXRoLnNxcnQoRC5sZW5ndGgpOyAvLyB0aGlzIGJldHRlciBiZSBhbiBpbnRlZ2VyXG4gICAgdmFyIE4gPSBNYXRoLmZsb29yKE5mKTtcbiAgICBhc3NlcnQoTiA9PT0gTmYsIFwiRCBzaG91bGQgaGF2ZSBzcXVhcmUgbnVtYmVyIG9mIGVsZW1lbnRzLlwiKTtcbiAgICB2YXIgSHRhcmdldCA9IE1hdGgubG9nKHBlcnBsZXhpdHkpOyAvLyB0YXJnZXQgZW50cm9weSBvZiBkaXN0cmlidXRpb25cbiAgICB2YXIgUCA9IHplcm9zKE4gKiBOKTsgLy8gdGVtcG9yYXJ5IHByb2JhYmlsaXR5IG1hdHJpeFxuXG4gICAgdmFyIHByb3cgPSB6ZXJvcyhOKTsgLy8gYSB0ZW1wb3Jhcnkgc3RvcmFnZSBjb21wYXJ0bWVudFxuICAgIGZvcih2YXIgaT0wO2k8TjtpKyspIHtcbiAgICAgIHZhciBiZXRhbWluID0gLUluZmluaXR5O1xuICAgICAgdmFyIGJldGFtYXggPSBJbmZpbml0eTtcbiAgICAgIHZhciBiZXRhID0gMTsgLy8gaW5pdGlhbCB2YWx1ZSBvZiBwcmVjaXNpb25cbiAgICAgIHZhciBkb25lID0gZmFsc2U7XG4gICAgICB2YXIgbWF4dHJpZXMgPSA1MDtcblxuICAgICAgLy8gcGVyZm9ybSBiaW5hcnkgc2VhcmNoIHRvIGZpbmQgYSBzdWl0YWJsZSBwcmVjaXNpb24gYmV0YVxuICAgICAgLy8gc28gdGhhdCB0aGUgZW50cm9weSBvZiB0aGUgZGlzdHJpYnV0aW9uIGlzIGFwcHJvcHJpYXRlXG4gICAgICB2YXIgbnVtID0gMDtcbiAgICAgIHdoaWxlKCFkb25lKSB7XG4gICAgICAgIC8vZGVidWdnZXI7XG5cbiAgICAgICAgLy8gY29tcHV0ZSBlbnRyb3B5IGFuZCBrZXJuZWwgcm93IHdpdGggYmV0YSBwcmVjaXNpb25cbiAgICAgICAgdmFyIHBzdW0gPSAwLjA7XG4gICAgICAgIGZvcih2YXIgaj0wO2o8TjtqKyspIHtcbiAgICAgICAgICB2YXIgcGogPSBNYXRoLmV4cCgtIERbaSpOK2pdICogYmV0YSk7XG4gICAgICAgICAgaWYoaT09PWopIHsgcGogPSAwOyB9IC8vIHdlIGRvbnQgY2FyZSBhYm91dCBkaWFnb25hbHNcbiAgICAgICAgICBwcm93W2pdID0gcGo7XG4gICAgICAgICAgcHN1bSArPSBwajtcbiAgICAgICAgfVxuICAgICAgICAvLyBub3JtYWxpemUgcCBhbmQgY29tcHV0ZSBlbnRyb3B5XG4gICAgICAgIHZhciBIaGVyZSA9IDAuMDtcbiAgICAgICAgZm9yKHZhciBqPTA7ajxOO2orKykge1xuICAgICAgICAgIGlmKHBzdW0gPT0gMCkge1xuICAgICAgICAgICAgIHZhciBwaiA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICB2YXIgcGogPSBwcm93W2pdIC8gcHN1bTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvd1tqXSA9IHBqO1xuICAgICAgICAgIGlmKHBqID4gMWUtNykgSGhlcmUgLT0gcGogKiBNYXRoLmxvZyhwaik7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBhZGp1c3QgYmV0YSBiYXNlZCBvbiByZXN1bHRcbiAgICAgICAgaWYoSGhlcmUgPiBIdGFyZ2V0KSB7XG4gICAgICAgICAgLy8gZW50cm9weSB3YXMgdG9vIGhpZ2ggKGRpc3RyaWJ1dGlvbiB0b28gZGlmZnVzZSlcbiAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGluY3JlYXNlIHRoZSBwcmVjaXNpb24gZm9yIG1vcmUgcGVha3kgZGlzdHJpYnV0aW9uXG4gICAgICAgICAgYmV0YW1pbiA9IGJldGE7IC8vIG1vdmUgdXAgdGhlIGJvdW5kc1xuICAgICAgICAgIGlmKGJldGFtYXggPT09IEluZmluaXR5KSB7IGJldGEgPSBiZXRhICogMjsgfVxuICAgICAgICAgIGVsc2UgeyBiZXRhID0gKGJldGEgKyBiZXRhbWF4KSAvIDI7IH1cblxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGNvbnZlcnNlIGNhc2UuIG1ha2UgZGlzdHJ1YnRpb24gbGVzcyBwZWFreVxuICAgICAgICAgIGJldGFtYXggPSBiZXRhO1xuICAgICAgICAgIGlmKGJldGFtaW4gPT09IC1JbmZpbml0eSkgeyBiZXRhID0gYmV0YSAvIDI7IH1cbiAgICAgICAgICBlbHNlIHsgYmV0YSA9IChiZXRhICsgYmV0YW1pbikgLyAyOyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBzdG9wcGluZyBjb25kaXRpb25zOiB0b28gbWFueSB0cmllcyBvciBnb3QgYSBnb29kIHByZWNpc2lvblxuICAgICAgICBudW0rKztcbiAgICAgICAgaWYoTWF0aC5hYnMoSGhlcmUgLSBIdGFyZ2V0KSA8IHRvbCkgeyBkb25lID0gdHJ1ZTsgfVxuICAgICAgICBpZihudW0gPj0gbWF4dHJpZXMpIHsgZG9uZSA9IHRydWU7IH1cbiAgICAgIH1cblxuICAgICAgLy8gY29uc29sZS5sb2coJ2RhdGEgcG9pbnQgJyArIGkgKyAnIGdldHMgcHJlY2lzaW9uICcgKyBiZXRhICsgJyBhZnRlciAnICsgbnVtICsgJyBiaW5hcnkgc2VhcmNoIHN0ZXBzLicpO1xuICAgICAgLy8gY29weSBvdmVyIHRoZSBmaW5hbCBwcm93IHRvIFAgYXQgcm93IGlcbiAgICAgIGZvcih2YXIgaj0wO2o8TjtqKyspIHsgUFtpKk4ral0gPSBwcm93W2pdOyB9XG5cbiAgICB9IC8vIGVuZCBsb29wIG92ZXIgZXhhbXBsZXMgaVxuXG4gICAgLy8gc3ltbWV0cml6ZSBQIGFuZCBub3JtYWxpemUgaXQgdG8gc3VtIHRvIDEgb3ZlciBhbGwgaWpcbiAgICB2YXIgUG91dCA9IHplcm9zKE4gKiBOKTtcbiAgICB2YXIgTjIgPSBOKjI7XG4gICAgZm9yKHZhciBpPTA7aTxOO2krKykge1xuICAgICAgZm9yKHZhciBqPTA7ajxOO2orKykge1xuICAgICAgICBQb3V0W2kqTitqXSA9IE1hdGgubWF4KChQW2kqTitqXSArIFBbaipOK2ldKS9OMiwgMWUtMTAwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gUG91dDtcbiAgfVxuXG4gIC8vIGhlbHBlciBmdW5jdGlvblxuICBmdW5jdGlvbiBzaWduKHgpIHsgcmV0dXJuIHggPiAwID8gMSA6IHggPCAwID8gLTEgOiAwOyB9XG5cbiAgdmFyIHRTTkUgPSBmdW5jdGlvbihvcHQpIHtcbiAgICB2YXIgb3B0ID0gb3B0IHx8IHt9O1xuICAgIHRoaXMucGVycGxleGl0eSA9IGdldG9wdChvcHQsIFwicGVycGxleGl0eVwiLCAzMCk7IC8vIGVmZmVjdGl2ZSBudW1iZXIgb2YgbmVhcmVzdCBuZWlnaGJvcnNcbiAgICB0aGlzLmRpbSA9IGdldG9wdChvcHQsIFwiZGltXCIsIDIpOyAvLyBieSBkZWZhdWx0IDItRCB0U05FXG4gICAgdGhpcy5lcHNpbG9uID0gZ2V0b3B0KG9wdCwgXCJlcHNpbG9uXCIsIDEwKTsgLy8gbGVhcm5pbmcgcmF0ZVxuXG4gICAgdGhpcy5pdGVyID0gMDtcbiAgfVxuXG4gIHRTTkUucHJvdG90eXBlID0ge1xuXG4gICAgLy8gdGhpcyBmdW5jdGlvbiB0YWtlcyBhIHNldCBvZiBoaWdoLWRpbWVuc2lvbmFsIHBvaW50c1xuICAgIC8vIGFuZCBjcmVhdGVzIG1hdHJpeCBQIGZyb20gdGhlbSB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICBpbml0RGF0YVJhdzogZnVuY3Rpb24oWCkge1xuICAgICAgdmFyIE4gPSBYLmxlbmd0aDtcbiAgICAgIHZhciBEID0gWFswXS5sZW5ndGg7XG4gICAgICBhc3NlcnQoTiA+IDAsIFwiIFggaXMgZW1wdHk/IFlvdSBtdXN0IGhhdmUgc29tZSBkYXRhIVwiKTtcbiAgICAgIGFzc2VydChEID4gMCwgXCIgWFswXSBpcyBlbXB0eT8gV2hlcmUgaXMgdGhlIGRhdGE/XCIpO1xuICAgICAgdmFyIGRpc3RzID0geHRvZChYKTsgLy8gY29udmVydCBYIHRvIGRpc3RhbmNlcyB1c2luZyBnYXVzc2lhbiBrZXJuZWxcbiAgICAgIHRoaXMuUCA9IGQycChkaXN0cywgdGhpcy5wZXJwbGV4aXR5LCAxZS00KTsgLy8gYXR0YWNoIHRvIG9iamVjdFxuICAgICAgdGhpcy5OID0gTjsgLy8gYmFjayB1cCB0aGUgc2l6ZSBvZiB0aGUgZGF0YXNldFxuICAgICAgdGhpcy5pbml0U29sdXRpb24oKTsgLy8gcmVmcmVzaCB0aGlzXG4gICAgfSxcblxuICAgIC8vIHRoaXMgZnVuY3Rpb24gdGFrZXMgYSBnaXZlbiBkaXN0YW5jZSBtYXRyaXggYW5kIGNyZWF0ZXNcbiAgICAvLyBtYXRyaXggUCBmcm9tIHRoZW0uXG4gICAgLy8gRCBpcyBhc3N1bWVkIHRvIGJlIHByb3ZpZGVkIGFzIGEgbGlzdCBvZiBsaXN0cywgYW5kIHNob3VsZCBiZSBzeW1tZXRyaWNcbiAgICBpbml0RGF0YURpc3Q6IGZ1bmN0aW9uKEQpIHtcbiAgICAgIHZhciBOID0gRC5sZW5ndGg7XG4gICAgICBhc3NlcnQoTiA+IDAsIFwiIFggaXMgZW1wdHk/IFlvdSBtdXN0IGhhdmUgc29tZSBkYXRhIVwiKTtcbiAgICAgIC8vIGNvbnZlcnQgRCB0byBhIChmYXN0KSB0eXBlZCBhcnJheSB2ZXJzaW9uXG4gICAgICB2YXIgZGlzdHMgPSB6ZXJvcyhOICogTik7IC8vIGFsbG9jYXRlIGNvbnRpZ3VvdXMgYXJyYXlcbiAgICAgIGZvcih2YXIgaT0wO2k8TjtpKyspIHtcbiAgICAgICAgZm9yKHZhciBqPWkrMTtqPE47aisrKSB7XG4gICAgICAgICAgdmFyIGQgPSBEW2ldW2pdO1xuICAgICAgICAgIGRpc3RzW2kqTitqXSA9IGQ7XG4gICAgICAgICAgZGlzdHNbaipOK2ldID0gZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5QID0gZDJwKGRpc3RzLCB0aGlzLnBlcnBsZXhpdHksIDFlLTQpO1xuICAgICAgdGhpcy5OID0gTjtcbiAgICAgIHRoaXMuaW5pdFNvbHV0aW9uKCk7IC8vIHJlZnJlc2ggdGhpc1xuICAgIH0sXG5cbiAgICAvLyAocmUpaW5pdGlhbGl6ZXMgdGhlIHNvbHV0aW9uIHRvIHJhbmRvbVxuICAgIGluaXRTb2x1dGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICAvLyBnZW5lcmF0ZSByYW5kb20gc29sdXRpb24gdG8gdC1TTkVcbiAgICAgIHRoaXMuWSA9IHJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSk7IC8vIHRoZSBzb2x1dGlvblxuICAgICAgdGhpcy5nYWlucyA9IHJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMS4wKTsgLy8gc3RlcCBnYWlucyB0byBhY2NlbGVyYXRlIHByb2dyZXNzIGluIHVuY2hhbmdpbmcgZGlyZWN0aW9uc1xuICAgICAgdGhpcy55c3RlcCA9IHJhbmRuMmQodGhpcy5OLCB0aGlzLmRpbSwgMC4wKTsgLy8gbW9tZW50dW0gYWNjdW11bGF0b3JcbiAgICAgIHRoaXMuaXRlciA9IDA7XG4gICAgfSxcblxuICAgIC8vIHJldHVybiBwb2ludGVyIHRvIGN1cnJlbnQgc29sdXRpb25cbiAgICBnZXRTb2x1dGlvbjogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5ZO1xuICAgIH0sXG5cbiAgICAvLyBwZXJmb3JtIGEgc2luZ2xlIHN0ZXAgb2Ygb3B0aW1pemF0aW9uIHRvIGltcHJvdmUgdGhlIGVtYmVkZGluZ1xuICAgIHN0ZXA6IGZ1bmN0aW9uKCkge1xuICAgICAgdGhpcy5pdGVyICs9IDE7XG4gICAgICB2YXIgTiA9IHRoaXMuTjtcblxuICAgICAgdmFyIGNnID0gdGhpcy5jb3N0R3JhZCh0aGlzLlkpOyAvLyBldmFsdWF0ZSBncmFkaWVudFxuICAgICAgdmFyIGNvc3QgPSBjZy5jb3N0O1xuICAgICAgdmFyIGdyYWQgPSBjZy5ncmFkO1xuXG4gICAgICAvLyBwZXJmb3JtIGdyYWRpZW50IHN0ZXBcbiAgICAgIHZhciB5bWVhbiA9IHplcm9zKHRoaXMuZGltKTtcbiAgICAgIGZvcih2YXIgaT0wO2k8TjtpKyspIHtcbiAgICAgICAgZm9yKHZhciBkPTA7ZDx0aGlzLmRpbTtkKyspIHtcbiAgICAgICAgICB2YXIgZ2lkID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICB2YXIgc2lkID0gdGhpcy55c3RlcFtpXVtkXTtcbiAgICAgICAgICB2YXIgZ2FpbmlkID0gdGhpcy5nYWluc1tpXVtkXTtcblxuICAgICAgICAgIC8vIGNvbXB1dGUgZ2FpbiB1cGRhdGVcbiAgICAgICAgICB2YXIgbmV3Z2FpbiA9IHNpZ24oZ2lkKSA9PT0gc2lnbihzaWQpID8gZ2FpbmlkICogMC44IDogZ2FpbmlkICsgMC4yO1xuICAgICAgICAgIGlmKG5ld2dhaW4gPCAwLjAxKSBuZXdnYWluID0gMC4wMTsgLy8gY2xhbXBcbiAgICAgICAgICB0aGlzLmdhaW5zW2ldW2RdID0gbmV3Z2FpbjsgLy8gc3RvcmUgZm9yIG5leHQgdHVyblxuXG4gICAgICAgICAgLy8gY29tcHV0ZSBtb21lbnR1bSBzdGVwIGRpcmVjdGlvblxuICAgICAgICAgIHZhciBtb212YWwgPSB0aGlzLml0ZXIgPCAyNTAgPyAwLjUgOiAwLjg7XG4gICAgICAgICAgdmFyIG5ld3NpZCA9IG1vbXZhbCAqIHNpZCAtIHRoaXMuZXBzaWxvbiAqIG5ld2dhaW4gKiBncmFkW2ldW2RdO1xuICAgICAgICAgIHRoaXMueXN0ZXBbaV1bZF0gPSBuZXdzaWQ7IC8vIHJlbWVtYmVyIHRoZSBzdGVwIHdlIHRvb2tcblxuICAgICAgICAgIC8vIHN0ZXAhXG4gICAgICAgICAgdGhpcy5ZW2ldW2RdICs9IG5ld3NpZDsgXG5cbiAgICAgICAgICB5bWVhbltkXSArPSB0aGlzLllbaV1bZF07IC8vIGFjY3VtdWxhdGUgbWVhbiBzbyB0aGF0IHdlIGNhbiBjZW50ZXIgbGF0ZXJcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyByZXByb2plY3QgWSB0byBiZSB6ZXJvIG1lYW5cbiAgICAgIGZvcih2YXIgaT0wO2k8TjtpKyspIHtcbiAgICAgICAgZm9yKHZhciBkPTA7ZDx0aGlzLmRpbTtkKyspIHtcbiAgICAgICAgICB0aGlzLllbaV1bZF0gLT0geW1lYW5bZF0vTjtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvL2lmKHRoaXMuaXRlciUxMDA9PT0wKSBjb25zb2xlLmxvZygnaXRlciAnICsgdGhpcy5pdGVyICsgJywgY29zdDogJyArIGNvc3QpO1xuICAgICAgcmV0dXJuIGNvc3Q7IC8vIHJldHVybiBjdXJyZW50IGNvc3RcbiAgICB9LFxuXG4gICAgLy8gZm9yIGRlYnVnZ2luZzogZ3JhZGllbnQgY2hlY2tcbiAgICBkZWJ1Z0dyYWQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIE4gPSB0aGlzLk47XG5cbiAgICAgIHZhciBjZyA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTsgLy8gZXZhbHVhdGUgZ3JhZGllbnRcbiAgICAgIHZhciBjb3N0ID0gY2cuY29zdDtcbiAgICAgIHZhciBncmFkID0gY2cuZ3JhZDtcblxuICAgICAgdmFyIGUgPSAxZS01O1xuICAgICAgZm9yKHZhciBpPTA7aTxOO2krKykge1xuICAgICAgICBmb3IodmFyIGQ9MDtkPHRoaXMuZGltO2QrKykge1xuICAgICAgICAgIHZhciB5b2xkID0gdGhpcy5ZW2ldW2RdO1xuXG4gICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZCArIGU7XG4gICAgICAgICAgdmFyIGNnMCA9IHRoaXMuY29zdEdyYWQodGhpcy5ZKTtcblxuICAgICAgICAgIHRoaXMuWVtpXVtkXSA9IHlvbGQgLSBlO1xuICAgICAgICAgIHZhciBjZzEgPSB0aGlzLmNvc3RHcmFkKHRoaXMuWSk7XG4gICAgICAgICAgXG4gICAgICAgICAgdmFyIGFuYWx5dGljID0gZ3JhZFtpXVtkXTtcbiAgICAgICAgICB2YXIgbnVtZXJpY2FsID0gKGNnMC5jb3N0IC0gY2cxLmNvc3QpIC8gKCAyICogZSApO1xuICAgICAgICAgIGNvbnNvbGUubG9nKGkgKyAnLCcgKyBkICsgJzogZ3JhZGNoZWNrIGFuYWx5dGljOiAnICsgYW5hbHl0aWMgKyAnIHZzLiBudW1lcmljYWw6ICcgKyBudW1lcmljYWwpO1xuXG4gICAgICAgICAgdGhpcy5ZW2ldW2RdID0geW9sZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICAvLyByZXR1cm4gY29zdCBhbmQgZ3JhZGllbnQsIGdpdmVuIGFuIGFycmFuZ2VtZW50XG4gICAgY29zdEdyYWQ6IGZ1bmN0aW9uKFkpIHtcbiAgICAgIHZhciBOID0gdGhpcy5OO1xuICAgICAgdmFyIGRpbSA9IHRoaXMuZGltOyAvLyBkaW0gb2Ygb3V0cHV0IHNwYWNlXG4gICAgICB2YXIgUCA9IHRoaXMuUDtcblxuICAgICAgdmFyIHBtdWwgPSB0aGlzLml0ZXIgPCAxMDAgPyA0IDogMTsgLy8gdHJpY2sgdGhhdCBoZWxwcyB3aXRoIGxvY2FsIG9wdGltYVxuXG4gICAgICAvLyBjb21wdXRlIGN1cnJlbnQgUSBkaXN0cmlidXRpb24sIHVubm9ybWFsaXplZCBmaXJzdFxuICAgICAgdmFyIFF1ID0gemVyb3MoTiAqIE4pO1xuICAgICAgdmFyIHFzdW0gPSAwLjA7XG4gICAgICBmb3IodmFyIGk9MDtpPE47aSsrKSB7XG4gICAgICAgIGZvcih2YXIgaj1pKzE7ajxOO2orKykge1xuICAgICAgICAgIHZhciBkc3VtID0gMC4wO1xuICAgICAgICAgIGZvcih2YXIgZD0wO2Q8ZGltO2QrKykge1xuICAgICAgICAgICAgdmFyIGRoZXJlID0gWVtpXVtkXSAtIFlbal1bZF07XG4gICAgICAgICAgICBkc3VtICs9IGRoZXJlICogZGhlcmU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBxdSA9IDEuMCAvICgxLjAgKyBkc3VtKTsgLy8gU3R1ZGVudCB0LWRpc3RyaWJ1dGlvblxuICAgICAgICAgIFF1W2kqTitqXSA9IHF1O1xuICAgICAgICAgIFF1W2oqTitpXSA9IHF1O1xuICAgICAgICAgIHFzdW0gKz0gMiAqIHF1O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBub3JtYWxpemUgUSBkaXN0cmlidXRpb24gdG8gc3VtIHRvIDFcbiAgICAgIHZhciBOTiA9IE4qTjtcbiAgICAgIHZhciBRID0gemVyb3MoTk4pO1xuICAgICAgZm9yKHZhciBxPTA7cTxOTjtxKyspIHsgUVtxXSA9IE1hdGgubWF4KFF1W3FdIC8gcXN1bSwgMWUtMTAwKTsgfVxuXG4gICAgICB2YXIgY29zdCA9IDAuMDtcbiAgICAgIHZhciBncmFkID0gW107XG4gICAgICBmb3IodmFyIGk9MDtpPE47aSsrKSB7XG4gICAgICAgIHZhciBnc3VtID0gbmV3IEFycmF5KGRpbSk7IC8vIGluaXQgZ3JhZCBmb3IgcG9pbnQgaVxuICAgICAgICBmb3IodmFyIGQ9MDtkPGRpbTtkKyspIHsgZ3N1bVtkXSA9IDAuMDsgfVxuICAgICAgICBmb3IodmFyIGo9MDtqPE47aisrKSB7XG4gICAgICAgICAgY29zdCArPSAtIFBbaSpOK2pdICogTWF0aC5sb2coUVtpKk4ral0pOyAvLyBhY2N1bXVsYXRlIGNvc3QgKHRoZSBub24tY29uc3RhbnQgcG9ydGlvbiBhdCBsZWFzdC4uLilcbiAgICAgICAgICB2YXIgcHJlbXVsdCA9IDQgKiAocG11bCAqIFBbaSpOK2pdIC0gUVtpKk4ral0pICogUXVbaSpOK2pdO1xuICAgICAgICAgIGZvcih2YXIgZD0wO2Q8ZGltO2QrKykge1xuICAgICAgICAgICAgZ3N1bVtkXSArPSBwcmVtdWx0ICogKFlbaV1bZF0gLSBZW2pdW2RdKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZ3JhZC5wdXNoKGdzdW0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4ge2Nvc3Q6IGNvc3QsIGdyYWQ6IGdyYWR9O1xuICAgIH1cbiAgfVxuXG4gIGdsb2JhbC50U05FID0gdFNORTsgLy8gZXhwb3J0IHRTTkUgY2xhc3Ncbn0pKHRzbmVqcyk7XG5cblxuLy8gZXhwb3J0IHRoZSBsaWJyYXJ5IHRvIHdpbmRvdywgb3IgdG8gbW9kdWxlIGluIG5vZGVqc1xuKGZ1bmN0aW9uKGxpYikge1xuICBcInVzZSBzdHJpY3RcIjtcbiAgaWYgKHR5cGVvZiBtb2R1bGUgPT09IFwidW5kZWZpbmVkXCIgfHwgdHlwZW9mIG1vZHVsZS5leHBvcnRzID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgd2luZG93LnRzbmVqcyA9IGxpYjsgLy8gaW4gb3JkaW5hcnkgYnJvd3NlciBhdHRhY2ggbGlicmFyeSB0byB3aW5kb3dcbiAgfSBlbHNlIHtcbiAgICBtb2R1bGUuZXhwb3J0cyA9IGxpYjsgLy8gaW4gbm9kZWpzXG4gIH1cbn0pKHRzbmVqcyk7Il0sIm5hbWVzIjpbInRzbmVqcyIsIlJFVklTSU9OIiwiZ2xvYmFsIiwiYXNzZXJ0IiwiY29uZGl0aW9uIiwibWVzc2FnZSIsImdldG9wdCIsIm9wdCIsImZpZWxkIiwiZGVmYXVsdHZhbCIsImhhc093blByb3BlcnR5IiwicmV0dXJuX3YiLCJ2X3ZhbCIsImdhdXNzUmFuZG9tIiwidSIsIk1hdGgiLCJyYW5kb20iLCJ2IiwiciIsImMiLCJzcXJ0IiwibG9nIiwicmFuZG4iLCJtdSIsInN0ZCIsInplcm9zIiwibiIsImlzTmFOIiwiQXJyYXlCdWZmZXIiLCJhcnIiLCJBcnJheSIsImkiLCJGbG9hdDY0QXJyYXkiLCJyYW5kbjJkIiwiZCIsInMiLCJ1c2VzIiwieCIsInhoZXJlIiwiaiIsInB1c2giLCJMMiIsIngxIiwieDIiLCJEIiwibGVuZ3RoIiwieDFpIiwieDJpIiwieHRvZCIsIlgiLCJOIiwiZGlzdCIsImQycCIsInBlcnBsZXhpdHkiLCJ0b2wiLCJOZiIsImZsb29yIiwiSHRhcmdldCIsIlAiLCJwcm93IiwiYmV0YW1pbiIsIkluZmluaXR5IiwiYmV0YW1heCIsImJldGEiLCJkb25lIiwibWF4dHJpZXMiLCJudW0iLCJwc3VtIiwicGoiLCJleHAiLCJIaGVyZSIsImFicyIsIlBvdXQiLCJOMiIsIm1heCIsInNpZ24iLCJ0U05FIiwiZGltIiwiZXBzaWxvbiIsIml0ZXIiLCJwcm90b3R5cGUiLCJpbml0RGF0YVJhdyIsImRpc3RzIiwiaW5pdFNvbHV0aW9uIiwiaW5pdERhdGFEaXN0IiwiWSIsImdhaW5zIiwieXN0ZXAiLCJnZXRTb2x1dGlvbiIsInN0ZXAiLCJjZyIsImNvc3RHcmFkIiwiY29zdCIsImdyYWQiLCJ5bWVhbiIsImdpZCIsInNpZCIsImdhaW5pZCIsIm5ld2dhaW4iLCJtb212YWwiLCJuZXdzaWQiLCJkZWJ1Z0dyYWQiLCJlIiwieW9sZCIsImNnMCIsImNnMSIsImFuYWx5dGljIiwibnVtZXJpY2FsIiwiY29uc29sZSIsInBtdWwiLCJRdSIsInFzdW0iLCJkc3VtIiwiZGhlcmUiLCJxdSIsIk5OIiwiUSIsInEiLCJnc3VtIiwicHJlbXVsdCIsImxpYiIsIm1vZHVsZSIsImV4cG9ydHMiLCJ3aW5kb3ciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/utils/tsne.js\n"); + +/***/ }) + +}; +; \ No newline at end of file diff --git a/.next/server/middleware-build-manifest.js b/.next/server/middleware-build-manifest.js index b59d59b..c258b89 100644 --- a/.next/server/middleware-build-manifest.js +++ b/.next/server/middleware-build-manifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":["static/chunks/react-refresh.js"],"ampDevFiles":[],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js"],"rootMainFiles":[],"pages":{"/":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/index.js"],"/_app":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_app.js"],"/_error":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_error.js"],"/tools/ml/rf":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/tools/ml/rf.js"]},"ampFirstPages":[]} \ No newline at end of file +self.__BUILD_MANIFEST={"polyfillFiles":["static/chunks/polyfills.js"],"devFiles":["static/chunks/react-refresh.js"],"ampDevFiles":[],"lowPriorityFiles":["static/development/_buildManifest.js","static/development/_ssgManifest.js"],"rootMainFiles":[],"pages":{"/_app":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_app.js"],"/_error":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/_error.js"],"/tools/dimension-reduction/pca":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/tools/dimension-reduction/pca.js"],"/tools/dimension-reduction/tsne":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/tools/dimension-reduction/tsne.js"],"/tools/ml/rf":["static/chunks/webpack.js","static/chunks/main.js","static/chunks/pages/tools/ml/rf.js"]},"ampFirstPages":[]} \ No newline at end of file diff --git a/.next/server/middleware-react-loadable-manifest.js b/.next/server/middleware-react-loadable-manifest.js index 2669ac5..5a0741e 100644 --- a/.next/server/middleware-react-loadable-manifest.js +++ b/.next/server/middleware-react-loadable-manifest.js @@ -1 +1 @@ -self.__REACT_LOADABLE_MANIFEST="{\"../node_modules/scikitjs/dist/esm/simpleSerializer.js -> ./index\":{\"id\":\"../node_modules/scikitjs/dist/esm/simpleSerializer.js -> ./index\",\"files\":[]},\"index.js -> ../components/TargetGetter\":{\"id\":\"index.js -> ../components/TargetGetter\",\"files\":[\"static/chunks/components_TargetGetter_js.js\"]},\"tools/ml/rf.js -> ../../../components/RandomForest\":{\"id\":\"tools/ml/rf.js -> ../../../components/RandomForest\",\"files\":[\"static/chunks/components_RandomForest_js.js\"]}}" \ No newline at end of file +self.__REACT_LOADABLE_MANIFEST="{\"../node_modules/scikitjs/dist/esm/simpleSerializer.js -> ./index\":{\"id\":\"../node_modules/scikitjs/dist/esm/simpleSerializer.js -> ./index\",\"files\":[]},\"tools/dimension-reduction/pca.js -> ../../../components/PCA_Plot\":{\"id\":\"tools/dimension-reduction/pca.js -> ../../../components/PCA_Plot\",\"files\":[\"static/chunks/components_PCA_Plot_js.js\"]},\"tools/dimension-reduction/tsne.js -> ../../../components/tSNE_Plot\":{\"id\":\"tools/dimension-reduction/tsne.js -> ../../../components/tSNE_Plot\",\"files\":[\"static/chunks/components_tSNE_Plot_js.js\"]},\"tools/ml/rf.js -> ../../../components/RandomForest\":{\"id\":\"tools/ml/rf.js -> ../../../components/RandomForest\",\"files\":[\"static/chunks/components_RandomForest_js.js\"]}}" \ No newline at end of file diff --git a/.next/server/pages-manifest.json b/.next/server/pages-manifest.json index 35a3145..eaf71c9 100644 --- a/.next/server/pages-manifest.json +++ b/.next/server/pages-manifest.json @@ -2,7 +2,8 @@ "/_app": "pages/_app.js", "/_error": "pages/_error.js", "/_document": "pages/_document.js", - "/": "pages/index.js", + "/tools/dimension-reduction/tsne": "pages/tools/dimension-reduction/tsne.js", + "/tools/dimension-reduction/pca": "pages/tools/dimension-reduction/pca.js", "/tools/ml/rf": "pages/tools/ml/rf.js", "/tools/data-distribution": "pages/tools/data-distribution.js" } \ No newline at end of file diff --git a/.next/server/pages/tools/dimension-reduction/pca.js b/.next/server/pages/tools/dimension-reduction/pca.js new file mode 100644 index 0000000..bef119a --- /dev/null +++ b/.next/server/pages/tools/dimension-reduction/pca.js @@ -0,0 +1,222 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(() => { +var exports = {}; +exports.id = "pages/tools/dimension-reduction/pca"; +exports.ids = ["pages/tools/dimension-reduction/pca"]; +exports.modules = { + +/***/ "./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Fpca&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Fpca.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Fpca&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Fpca.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D! ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ config: () => (/* binding */ config),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getServerSideProps: () => (/* binding */ getServerSideProps),\n/* harmony export */ getStaticPaths: () => (/* binding */ getStaticPaths),\n/* harmony export */ getStaticProps: () => (/* binding */ getStaticProps),\n/* harmony export */ reportWebVitals: () => (/* binding */ reportWebVitals),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ unstable_getServerProps: () => (/* binding */ unstable_getServerProps),\n/* harmony export */ unstable_getServerSideProps: () => (/* binding */ unstable_getServerSideProps),\n/* harmony export */ unstable_getStaticParams: () => (/* binding */ unstable_getStaticParams),\n/* harmony export */ unstable_getStaticPaths: () => (/* binding */ unstable_getStaticPaths),\n/* harmony export */ unstable_getStaticProps: () => (/* binding */ unstable_getStaticProps)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/pages/module.compiled */ \"./node_modules/next/dist/server/future/route-modules/pages/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/build/templates/helpers */ \"./node_modules/next/dist/build/templates/helpers.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! private-next-pages/_document */ \"./node_modules/next/dist/pages/_document.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(private_next_pages_document__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! private-next-pages/_app */ \"./pages/_app.js\");\n/* harmony import */ var _pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pages/tools/dimension-reduction/pca.js */ \"./pages/tools/dimension-reduction/pca.js\");\n// @ts-ignore this need to be imported from next/dist to be external\n\n\n\n// Import the app and document modules.\n// @ts-expect-error - replaced by webpack/turbopack loader\n\n// @ts-expect-error - replaced by webpack/turbopack loader\n\n// Import the userland code.\n// @ts-expect-error - replaced by webpack/turbopack loader\n\nconst PagesRouteModule = next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__.PagesRouteModule;\n// Re-export the component (should be the default export).\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"default\"));\n// Re-export methods.\nconst getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"getStaticProps\");\nconst getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"getStaticPaths\");\nconst getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"getServerSideProps\");\nconst config = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"config\");\nconst reportWebVitals = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"reportWebVitals\");\n// Re-export legacy methods.\nconst unstable_getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getStaticProps\");\nconst unstable_getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getStaticPaths\");\nconst unstable_getStaticParams = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getStaticParams\");\nconst unstable_getServerProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getServerProps\");\nconst unstable_getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getServerSideProps\");\n// Create and export the route module that will be consumed.\nconst routeModule = new PagesRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES,\n page: \"/tools/dimension-reduction/pca\",\n pathname: \"/tools/dimension-reduction/pca\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\"\n },\n components: {\n App: private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Document: (private_next_pages_document__WEBPACK_IMPORTED_MODULE_3___default())\n },\n userland: _pages_tools_dimension_reduction_pca_js__WEBPACK_IMPORTED_MODULE_5__\n});\n\n//# sourceMappingURL=pages.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LXJvdXRlLWxvYWRlci9pbmRleC5qcz9raW5kPVBBR0VTJnBhZ2U9JTJGdG9vbHMlMkZkaW1lbnNpb24tcmVkdWN0aW9uJTJGcGNhJnByZWZlcnJlZFJlZ2lvbj0mYWJzb2x1dGVQYWdlUGF0aD0uJTJGcGFnZXMlMkZ0b29scyUyRmRpbWVuc2lvbi1yZWR1Y3Rpb24lMkZwY2EuanMmYWJzb2x1dGVBcHBQYXRoPXByaXZhdGUtbmV4dC1wYWdlcyUyRl9hcHAmYWJzb2x1dGVEb2N1bWVudFBhdGg9cHJpdmF0ZS1uZXh0LXBhZ2VzJTJGX2RvY3VtZW50Jm1pZGRsZXdhcmVDb25maWdCYXNlNjQ9ZTMwJTNEISIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQ3NGO0FBQ3ZCO0FBQ0w7QUFDMUQ7QUFDQTtBQUNvRDtBQUNwRDtBQUMwQztBQUMxQztBQUNBO0FBQ3FFO0FBQ3JFLHlCQUF5Qix5R0FBdUI7QUFDaEQ7QUFDQSxpRUFBZSx3RUFBSyxDQUFDLG9FQUFRLFlBQVksRUFBQztBQUMxQztBQUNPLHVCQUF1Qix3RUFBSyxDQUFDLG9FQUFRO0FBQ3JDLHVCQUF1Qix3RUFBSyxDQUFDLG9FQUFRO0FBQ3JDLDJCQUEyQix3RUFBSyxDQUFDLG9FQUFRO0FBQ3pDLGVBQWUsd0VBQUssQ0FBQyxvRUFBUTtBQUM3Qix3QkFBd0Isd0VBQUssQ0FBQyxvRUFBUTtBQUM3QztBQUNPLGdDQUFnQyx3RUFBSyxDQUFDLG9FQUFRO0FBQzlDLGdDQUFnQyx3RUFBSyxDQUFDLG9FQUFRO0FBQzlDLGlDQUFpQyx3RUFBSyxDQUFDLG9FQUFRO0FBQy9DLGdDQUFnQyx3RUFBSyxDQUFDLG9FQUFRO0FBQzlDLG9DQUFvQyx3RUFBSyxDQUFDLG9FQUFRO0FBQ3pEO0FBQ087QUFDUDtBQUNBLGNBQWMseUVBQVM7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBLFdBQVc7QUFDWCxnQkFBZ0I7QUFDaEIsS0FBSztBQUNMLFlBQVk7QUFDWixDQUFDOztBQUVEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvPzE2NDEiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZSB0aGlzIG5lZWQgdG8gYmUgaW1wb3J0ZWQgZnJvbSBuZXh0L2Rpc3QgdG8gYmUgZXh0ZXJuYWxcbmltcG9ydCAqIGFzIG1vZHVsZSBmcm9tIFwibmV4dC9kaXN0L3NlcnZlci9mdXR1cmUvcm91dGUtbW9kdWxlcy9wYWdlcy9tb2R1bGUuY29tcGlsZWRcIjtcbmltcG9ydCB7IFJvdXRlS2luZCB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1raW5kXCI7XG5pbXBvcnQgeyBob2lzdCB9IGZyb20gXCJuZXh0L2Rpc3QvYnVpbGQvdGVtcGxhdGVzL2hlbHBlcnNcIjtcbi8vIEltcG9ydCB0aGUgYXBwIGFuZCBkb2N1bWVudCBtb2R1bGVzLlxuLy8gQHRzLWV4cGVjdC1lcnJvciAtIHJlcGxhY2VkIGJ5IHdlYnBhY2svdHVyYm9wYWNrIGxvYWRlclxuaW1wb3J0IERvY3VtZW50IGZyb20gXCJwcml2YXRlLW5leHQtcGFnZXMvX2RvY3VtZW50XCI7XG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gcmVwbGFjZWQgYnkgd2VicGFjay90dXJib3BhY2sgbG9hZGVyXG5pbXBvcnQgQXBwIGZyb20gXCJwcml2YXRlLW5leHQtcGFnZXMvX2FwcFwiO1xuLy8gSW1wb3J0IHRoZSB1c2VybGFuZCBjb2RlLlxuLy8gQHRzLWV4cGVjdC1lcnJvciAtIHJlcGxhY2VkIGJ5IHdlYnBhY2svdHVyYm9wYWNrIGxvYWRlclxuaW1wb3J0ICogYXMgdXNlcmxhbmQgZnJvbSBcIi4vcGFnZXMvdG9vbHMvZGltZW5zaW9uLXJlZHVjdGlvbi9wY2EuanNcIjtcbmNvbnN0IFBhZ2VzUm91dGVNb2R1bGUgPSBtb2R1bGUuUGFnZXNSb3V0ZU1vZHVsZTtcbi8vIFJlLWV4cG9ydCB0aGUgY29tcG9uZW50IChzaG91bGQgYmUgdGhlIGRlZmF1bHQgZXhwb3J0KS5cbmV4cG9ydCBkZWZhdWx0IGhvaXN0KHVzZXJsYW5kLCBcImRlZmF1bHRcIik7XG4vLyBSZS1leHBvcnQgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBnZXRTdGF0aWNQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCBcImdldFN0YXRpY1Byb3BzXCIpO1xuZXhwb3J0IGNvbnN0IGdldFN0YXRpY1BhdGhzID0gaG9pc3QodXNlcmxhbmQsIFwiZ2V0U3RhdGljUGF0aHNcIik7XG5leHBvcnQgY29uc3QgZ2V0U2VydmVyU2lkZVByb3BzID0gaG9pc3QodXNlcmxhbmQsIFwiZ2V0U2VydmVyU2lkZVByb3BzXCIpO1xuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGhvaXN0KHVzZXJsYW5kLCBcImNvbmZpZ1wiKTtcbmV4cG9ydCBjb25zdCByZXBvcnRXZWJWaXRhbHMgPSBob2lzdCh1c2VybGFuZCwgXCJyZXBvcnRXZWJWaXRhbHNcIik7XG4vLyBSZS1leHBvcnQgbGVnYWN5IG1ldGhvZHMuXG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgXCJ1bnN0YWJsZV9nZXRTdGF0aWNQcm9wc1wiKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTdGF0aWNQYXRocyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFN0YXRpY1BhdGhzXCIpO1xuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX2dldFN0YXRpY1BhcmFtcyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFN0YXRpY1BhcmFtc1wiKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTZXJ2ZXJQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFNlcnZlclByb3BzXCIpO1xuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX2dldFNlcnZlclNpZGVQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFNlcnZlclNpZGVQcm9wc1wiKTtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IFBhZ2VzUm91dGVNb2R1bGUoe1xuICAgIGRlZmluaXRpb246IHtcbiAgICAgICAga2luZDogUm91dGVLaW5kLlBBR0VTLFxuICAgICAgICBwYWdlOiBcIi90b29scy9kaW1lbnNpb24tcmVkdWN0aW9uL3BjYVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvdG9vbHMvZGltZW5zaW9uLXJlZHVjdGlvbi9wY2FcIixcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBhcmVuJ3QgdXNlZCBpbiBwcm9kdWN0aW9uLlxuICAgICAgICBidW5kbGVQYXRoOiBcIlwiLFxuICAgICAgICBmaWxlbmFtZTogXCJcIlxuICAgIH0sXG4gICAgY29tcG9uZW50czoge1xuICAgICAgICBBcHAsXG4gICAgICAgIERvY3VtZW50XG4gICAgfSxcbiAgICB1c2VybGFuZFxufSk7XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXBhZ2VzLmpzLm1hcCJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Fpca&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Fpca.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!\n"); + +/***/ }), + +/***/ "./components/Navbar.js": +/*!******************************!*\ + !*** ./components/Navbar.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ThemeSwitcher__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ThemeSwitcher */ \"./components/ThemeSwitcher.js\");\n\n\n\nconst Navbar = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"navbar\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"logo\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/\",\n children: \"SAR IN BROWSER\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 7,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 6,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"navLinks\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ThemeSwitcher__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 13,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 12,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/about\",\n children: \"About\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 16,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 15,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/contact\",\n children: \"Donate\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 21,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 20,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 11,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 5,\n columnNumber: 9\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Navbar);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL05hdmJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQTZCO0FBQ2M7QUFDM0MsTUFBTUUsU0FBUztJQUNYLHFCQUNJLDhEQUFDQztRQUFJQyxXQUFVOzswQkFDWCw4REFBQ0M7Z0JBQUlELFdBQVU7MEJBQ1gsNEVBQUNKLGtEQUFJQTtvQkFBQ00sTUFBSzs4QkFBSTs7Ozs7Ozs7Ozs7MEJBSW5CLDhEQUFDQztnQkFBR0gsV0FBVTs7a0NBQ1YsOERBQUNJO2tDQUNHLDRFQUFDUCxzREFBYUE7Ozs7Ozs7Ozs7a0NBRWxCLDhEQUFDTztrQ0FDRyw0RUFBQ1Isa0RBQUlBOzRCQUFDTSxNQUFLO3NDQUFTOzs7Ozs7Ozs7OztrQ0FJeEIsOERBQUNFO2tDQUNHLDRFQUFDUixrREFBSUE7NEJBQUNNLE1BQUs7c0NBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzFDO0FBRUEsaUVBQWVKLE1BQU1BLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbXBvbmVudHMvTmF2YmFyLmpzP2ZiY2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4vVGhlbWVTd2l0Y2hlcidcbmNvbnN0IE5hdmJhciA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8bmF2IGNsYXNzTmFtZT1cIm5hdmJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dvXCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgU0FSIElOIEJST1dTRVJcbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJuYXZMaW5rc1wiPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXRcbiAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2NvbnRhY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERvbmF0ZVxuICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmF2PlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOYXZiYXI7XG4iXSwibmFtZXMiOlsiTGluayIsIlRoZW1lU3dpdGNoZXIiLCJOYXZiYXIiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJocmVmIiwidWwiLCJsaSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Navbar.js\n"); + +/***/ }), + +/***/ "./components/Tabbed.js": +/*!******************************!*\ + !*** ./components/Tabbed.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n// components/TabbedComponent.js\n\n\n\nconst containerStyle = {\n margin: 0,\n display: \"flex\",\n width: \"100%\",\n fontSize: \"1.5em\",\n justifyContent: \"center\",\n backgroundColor: \"var(--background-color)\"\n};\nconst tabStyle = {\n all: \"unset\",\n flexGrow: 1,\n zIndex: 100,\n display: \"flex\",\n cursor: \"pointer\",\n position: \"relative\",\n borderRadius: \"6pt 6pt 0 0\",\n alignItems: \"center\",\n willChange: \"transform\",\n justifyContent: \"center\",\n padding: \"10px 20px\",\n transition: \"color var(--timeOut, var(--duration))\",\n color: \"hsl(232deg 18% 8%)\",\n position: \"relative\"\n};\nconst activeTabStyle = {\n color: \"hsl(232deg 16% 15%)\"\n};\nconst tabBeforeStyle = {\n content: '\"\"',\n zIndex: -1,\n width: \"100%\",\n height: \"5px\",\n borderRadius: \"6pt 6pt 0 0\",\n position: \"absolute\",\n transform: \"scale(0)\",\n transition: \"background-color var(--duration), transform var(--duration)\",\n bottom: 0,\n left: 0\n};\nconst activeTabBeforeStyle = {\n transform: \"scale(1)\",\n backgroundColor: \"var(--accent-color)\"\n};\nconst TabbedComponent = ({ activeTab })=>{\n const [activeIndex, setActiveIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(activeTab);\n const tabs = [\n \"Data Distribution\",\n \"PCA\",\n \"tSNE\",\n \"Random Forest\"\n ];\n const tabLinks = [\n \"data-distribution\",\n \"dimension-reduction/pca\",\n \"dimension-reduction/tsne\",\n \"ml/rf\"\n ];\n const handleTabClick = (index)=>{\n setActiveIndex(index);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: containerStyle,\n children: tabs.map((tab, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n style: {\n textDecoration: \"none\"\n },\n href: `/tools/${tabLinks[index]}`,\n passHref: true,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n onClick: ()=>handleTabClick(index),\n style: {\n ...tabStyle,\n ...index === activeIndex ? activeTabStyle : {}\n },\n children: [\n tab,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n ...tabBeforeStyle,\n ...index === activeIndex ? activeTabBeforeStyle : {}\n }\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 75,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 67,\n columnNumber: 11\n }, undefined)\n }, index, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 66,\n columnNumber: 9\n }, undefined))\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 64,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TabbedComponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RhYmJlZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsZ0NBQWdDOztBQUNDO0FBQ0o7QUFFN0IsTUFBTUUsaUJBQWlCO0lBQ3JCQyxRQUFRO0lBQ1JDLFNBQVM7SUFDVEMsT0FBTztJQUNQQyxVQUFVO0lBQ1ZDLGdCQUFnQjtJQUNoQkMsaUJBQWlCO0FBQ25CO0FBRUEsTUFBTUMsV0FBVztJQUNmQyxLQUFLO0lBQ0xDLFVBQVU7SUFDVkMsUUFBUTtJQUNSUixTQUFTO0lBQ1RTLFFBQVE7SUFDUkMsVUFBVTtJQUNWQyxjQUFjO0lBQ2RDLFlBQVk7SUFDWkMsWUFBWTtJQUNaVixnQkFBZ0I7SUFDaEJXLFNBQVM7SUFDVEMsWUFBWTtJQUNaQyxPQUFPO0lBQ1BOLFVBQVU7QUFDWjtBQUVBLE1BQU1PLGlCQUFpQjtJQUNyQkQsT0FBTztBQUNUO0FBRUEsTUFBTUUsaUJBQWlCO0lBQ3JCQyxTQUFTO0lBQ1RYLFFBQVEsQ0FBQztJQUNUUCxPQUFPO0lBQ1BtQixRQUFRO0lBQ1JULGNBQWM7SUFDZEQsVUFBVTtJQUNWVyxXQUFXO0lBQ1hOLFlBQVk7SUFDWk8sUUFBUTtJQUNSQyxNQUFNO0FBQ1I7QUFFQSxNQUFNQyx1QkFBdUI7SUFDM0JILFdBQVc7SUFDWGpCLGlCQUFpQjtBQUNuQjtBQUVBLE1BQU1xQixrQkFBa0IsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7SUFDcEMsTUFBTSxDQUFDQyxhQUFhQyxlQUFlLEdBQUdoQywrQ0FBUUEsQ0FBQzhCO0lBQy9DLE1BQU1HLE9BQU87UUFBQztRQUFxQjtRQUFPO1FBQVE7S0FBZ0I7SUFDbEUsTUFBTUMsV0FBVztRQUFDO1FBQ2xCO1FBQ0E7UUFBNEI7S0FBUTtJQUNwQyxNQUFNQyxpQkFBaUIsQ0FBQ0M7UUFDdEJKLGVBQWVJO0lBQ2pCO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlDLE9BQU9wQztrQkFDVCtCLEtBQUtNLEdBQUcsQ0FBQyxDQUFDQyxLQUFLSixzQkFDZCw4REFBQ25DLGtEQUFJQTtnQkFBQ3FDLE9BQU87b0JBQUVHLGdCQUFnQjtnQkFBTztnQkFBR0MsTUFBTSxDQUFDLE9BQU8sRUFBRVIsUUFBUSxDQUFDRSxNQUFNLENBQUMsQ0FBQztnQkFBY08sUUFBUTswQkFDOUYsNEVBQUNOO29CQUNDTyxTQUFTLElBQU1ULGVBQWVDO29CQUM5QkUsT0FBTzt3QkFDTCxHQUFHN0IsUUFBUTt3QkFDWCxHQUFJMkIsVUFBVUwsY0FBY1YsaUJBQWlCLENBQUMsQ0FBQztvQkFDakQ7O3dCQUVDbUI7c0NBQ0QsOERBQUNIOzRCQUNDQyxPQUFPO2dDQUNMLEdBQUdoQixjQUFjO2dDQUNqQixHQUFJYyxVQUFVTCxjQUFjSCx1QkFBdUIsQ0FBQyxDQUFDOzRCQUN2RDs7Ozs7Ozs7Ozs7O2VBYjJFUTs7Ozs7Ozs7OztBQW9CekY7QUFFQSxpRUFBZVAsZUFBZUEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vY29tcG9uZW50cy9UYWJiZWQuanM/ZTNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RhYmJlZENvbXBvbmVudC5qc1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnO1xuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgbWFyZ2luOiAwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHdpZHRoOiAnMTAwJScsIC8vIFRha2UgdGhlIGZ1bGwgd2lkdGhcbiAgZm9udFNpemU6ICcxLjVlbScsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJywgLy8gQ2VudGVyIGhvcml6b250YWxseVxuICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKScsXG59O1xuXG5jb25zdCB0YWJTdHlsZSA9IHtcbiAgYWxsOiAndW5zZXQnLFxuICBmbGV4R3JvdzogMSxcbiAgekluZGV4OiAxMDAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBib3JkZXJSYWRpdXM6ICc2cHQgNnB0IDAgMCcsIC8vIEFkanVzdGVkIGJvcmRlci1yYWRpdXNcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIHBhZGRpbmc6ICcxMHB4IDIwcHgnLCAvLyBBZGp1c3RlZCBwYWRkaW5nXG4gIHRyYW5zaXRpb246ICdjb2xvciB2YXIoLS10aW1lT3V0LCB2YXIoLS1kdXJhdGlvbikpJyxcbiAgY29sb3I6ICdoc2woMjMyZGVnIDE4JSA4JSknLCAvLyBVc2UgeW91ciBjdXN0b20gY29sb3IgaGVyZVxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJywgLy8gQWRkZWQgcG9zaXRpb24gcmVsYXRpdmVcbn07XG5cbmNvbnN0IGFjdGl2ZVRhYlN0eWxlID0ge1xuICBjb2xvcjogJ2hzbCgyMzJkZWcgMTYlIDE1JSknLCAvLyBBZGp1c3RlZCBjb2xvciBmb3IgYWN0aXZlIHRhYlxufTtcblxuY29uc3QgdGFiQmVmb3JlU3R5bGUgPSB7XG4gIGNvbnRlbnQ6ICdcIlwiJyxcbiAgekluZGV4OiAtMSxcbiAgd2lkdGg6ICcxMDAlJywgLy8gQWRqdXN0ZWQgd2lkdGggdG8gY292ZXIgdGhlIHdob2xlIHRhYlxuICBoZWlnaHQ6ICc1cHgnLCAvLyBBZGp1c3RlZCBoZWlnaHRcbiAgYm9yZGVyUmFkaXVzOiAnNnB0IDZwdCAwIDAnLCAvLyBBZGp1c3RlZCBib3JkZXItcmFkaXVzXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWR1cmF0aW9uKSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKScsXG4gIGJvdHRvbTogMCwgLy8gQWxpZ24gdG8gdGhlIGJvdHRvbVxuICBsZWZ0OiAwLCAvLyBBbGlnbiB0byB0aGUgbGVmdFxufTtcblxuY29uc3QgYWN0aXZlVGFiQmVmb3JlU3R5bGUgPSB7XG4gIHRyYW5zZm9ybTogJ3NjYWxlKDEpJyxcbiAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYWNjZW50LWNvbG9yKScsXG59O1xuXG5jb25zdCBUYWJiZWRDb21wb25lbnQgPSAoeyBhY3RpdmVUYWIgfSkgPT4ge1xuICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKGFjdGl2ZVRhYik7XG4gIGNvbnN0IHRhYnMgPSBbJ0RhdGEgRGlzdHJpYnV0aW9uJywgJ1BDQScsICd0U05FJywgJ1JhbmRvbSBGb3Jlc3QnXTtcbiAgY29uc3QgdGFiTGlua3MgPSBbJ2RhdGEtZGlzdHJpYnV0aW9uJywgXG4gICdkaW1lbnNpb24tcmVkdWN0aW9uL3BjYScsIFxuICAnZGltZW5zaW9uLXJlZHVjdGlvbi90c25lJywgJ21sL3JmJ107XG4gIGNvbnN0IGhhbmRsZVRhYkNsaWNrID0gKGluZGV4KSA9PiB7XG4gICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAge3RhYnMubWFwKCh0YWIsIGluZGV4KSA9PiAoXG4gICAgICAgIDxMaW5rIHN0eWxlPXt7IHRleHREZWNvcmF0aW9uOiAnbm9uZScgfX0gaHJlZj17YC90b29scy8ke3RhYkxpbmtzW2luZGV4XX1gfSBrZXk9e2luZGV4fSBwYXNzSHJlZj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVUYWJDbGljayhpbmRleCl9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi50YWJTdHlsZSxcbiAgICAgICAgICAgICAgLi4uKGluZGV4ID09PSBhY3RpdmVJbmRleCA/IGFjdGl2ZVRhYlN0eWxlIDoge30pLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGFifVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIC4uLnRhYkJlZm9yZVN0eWxlLFxuICAgICAgICAgICAgICAgIC4uLihpbmRleCA9PT0gYWN0aXZlSW5kZXggPyBhY3RpdmVUYWJCZWZvcmVTdHlsZSA6IHt9KSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJiZWRDb21wb25lbnQ7XG4iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJMaW5rIiwiY29udGFpbmVyU3R5bGUiLCJtYXJnaW4iLCJkaXNwbGF5Iiwid2lkdGgiLCJmb250U2l6ZSIsImp1c3RpZnlDb250ZW50IiwiYmFja2dyb3VuZENvbG9yIiwidGFiU3R5bGUiLCJhbGwiLCJmbGV4R3JvdyIsInpJbmRleCIsImN1cnNvciIsInBvc2l0aW9uIiwiYm9yZGVyUmFkaXVzIiwiYWxpZ25JdGVtcyIsIndpbGxDaGFuZ2UiLCJwYWRkaW5nIiwidHJhbnNpdGlvbiIsImNvbG9yIiwiYWN0aXZlVGFiU3R5bGUiLCJ0YWJCZWZvcmVTdHlsZSIsImNvbnRlbnQiLCJoZWlnaHQiLCJ0cmFuc2Zvcm0iLCJib3R0b20iLCJsZWZ0IiwiYWN0aXZlVGFiQmVmb3JlU3R5bGUiLCJUYWJiZWRDb21wb25lbnQiLCJhY3RpdmVUYWIiLCJhY3RpdmVJbmRleCIsInNldEFjdGl2ZUluZGV4IiwidGFicyIsInRhYkxpbmtzIiwiaGFuZGxlVGFiQ2xpY2siLCJpbmRleCIsImRpdiIsInN0eWxlIiwibWFwIiwidGFiIiwidGV4dERlY29yYXRpb24iLCJocmVmIiwicGFzc0hyZWYiLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/Tabbed.js\n"); + +/***/ }), + +/***/ "./components/ThemeSwitcher.js": +/*!*************************************!*\ + !*** ./components/ThemeSwitcher.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ThemeSwitcher)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Themes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Themes */ \"./components/Themes.js\");\n\n\n\nfunction ThemeSwitcher() {\n const [theme, setTheme] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"light\");\n const [checked, setChecked] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const savedTheme = localStorage.getItem(\"theme\");\n if (savedTheme) {\n setTheme(savedTheme);\n setChecked((theme)=>theme === \"dark\");\n }\n }, []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"theme-switcher\",\n htmlFor: \"themeswitch\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"background\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 19,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n id: \"themeswitch\",\n checked: checked,\n onChange: ()=>{\n setChecked((prevCheck)=>!prevCheck);\n setTheme((theme)=>theme === \"dark\" ? \"light\" : \"dark\");\n localStorage.setItem(\"theme\", (theme)=>theme === \"dark\" ? \"light\" : \"dark\");\n }\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 20,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"switch\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n alt: \"theme switch to dark\",\n className: \"moon\",\n src: \"/sar-in-browser/moon.png\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 32,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n alt: \"theme switch to light\",\n className: \"sun\",\n src: \"/sar-in-browser/sun.png\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 33,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 31,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Themes__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n theme: theme\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 36,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 17,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RoZW1lU3dpdGNoZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUE0QztBQUNkO0FBRWYsU0FBU0c7SUFDcEIsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdKLCtDQUFRQSxDQUFDO0lBQ25DLE1BQU0sQ0FBQ0ssU0FBU0MsV0FBVyxHQUFHTiwrQ0FBUUEsQ0FBQztJQUV2Q0QsZ0RBQVNBLENBQUM7UUFDTixNQUFNUSxhQUFhQyxhQUFhQyxPQUFPLENBQUM7UUFDeEMsSUFBSUYsWUFBWTtZQUNaSCxTQUFTRztZQUNURCxXQUFXLENBQUNILFFBQVdBLFVBQVU7UUFDckM7SUFDSixHQUFHLEVBQUU7SUFFTCxxQkFDSSw4REFBQ087OzBCQUNHLDhEQUFDQztnQkFBTUMsV0FBVTtnQkFBaUJDLFNBQVE7O2tDQUN0Qyw4REFBQ0g7d0JBQUlFLFdBQVU7Ozs7OztrQ0FDZiw4REFBQ0U7d0JBQ0dDLE1BQUs7d0JBQ0xDLElBQUc7d0JBQ0hYLFNBQVNBO3dCQUNUWSxVQUFVOzRCQUNOWCxXQUFXLENBQUNZLFlBQWMsQ0FBQ0E7NEJBQzNCZCxTQUFTLENBQUNELFFBQVdBLFVBQVUsU0FBUyxVQUFVOzRCQUNsREssYUFBYVcsT0FBTyxDQUFDLFNBQVMsQ0FBQ2hCLFFBQVdBLFVBQVUsU0FBUyxVQUFVO3dCQUMzRTs7Ozs7O2tDQUdKLDhEQUFDTzt3QkFBSUUsV0FBVTs7MENBQ1gsOERBQUNRO2dDQUFJQyxLQUFJO2dDQUF1QlQsV0FBVTtnQ0FBT1UsS0FBSTs7Ozs7OzBDQUNyRCw4REFBQ0Y7Z0NBQUlDLEtBQUk7Z0NBQXdCVCxXQUFVO2dDQUFNVSxLQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBRzdELDhEQUFDckIsK0NBQU1BO2dCQUFDRSxPQUFTQTs7Ozs7Ozs7Ozs7O0FBRzdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL1RoZW1lU3dpdGNoZXIuanM/YzgxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVGhlbWVzIGZyb20gJy4vVGhlbWVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGhlbWVTd2l0Y2hlcigpIHtcbiAgICBjb25zdCBbdGhlbWUsIHNldFRoZW1lXSA9IHVzZVN0YXRlKCdsaWdodCcpO1xuICAgIGNvbnN0IFtjaGVja2VkLCBzZXRDaGVja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkVGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWUnKTtcbiAgICAgICAgaWYgKHNhdmVkVGhlbWUpIHtcbiAgICAgICAgICAgIHNldFRoZW1lKHNhdmVkVGhlbWUpXG4gICAgICAgICAgICBzZXRDaGVja2VkKCh0aGVtZSkgPT4gKHRoZW1lID09PSAnZGFyaycpKVxuICAgICAgICB9IFxuICAgIH0sIFtdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0aGVtZS1zd2l0Y2hlclwiIGh0bWxGb3I9XCJ0aGVtZXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmFja2dyb3VuZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cInRoZW1lc3dpdGNoXCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENoZWNrZWQoKHByZXZDaGVjaykgPT4gIXByZXZDaGVjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaGVtZSgodGhlbWUpID0+ICh0aGVtZSA9PT0gJ2RhcmsnID8gJ2xpZ2h0JyA6ICdkYXJrJykpXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWUnLCAodGhlbWUpID0+ICh0aGVtZSA9PT0gJ2RhcmsnID8gJ2xpZ2h0JyA6ICdkYXJrJykpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwidGhlbWUgc3dpdGNoIHRvIGRhcmtcIiBjbGFzc05hbWU9XCJtb29uXCIgc3JjPVwiL3Nhci1pbi1icm93c2VyL21vb24ucG5nXCI+PC9pbWc+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwidGhlbWUgc3dpdGNoIHRvIGxpZ2h0XCIgY2xhc3NOYW1lPVwic3VuXCIgc3JjPVwiL3Nhci1pbi1icm93c2VyL3N1bi5wbmdcIj48L2ltZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8VGhlbWVzIHRoZW1lID0ge3RoZW1lfS8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJUaGVtZXMiLCJUaGVtZVN3aXRjaGVyIiwidGhlbWUiLCJzZXRUaGVtZSIsImNoZWNrZWQiLCJzZXRDaGVja2VkIiwic2F2ZWRUaGVtZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJkaXYiLCJsYWJlbCIsImNsYXNzTmFtZSIsImh0bWxGb3IiLCJpbnB1dCIsInR5cGUiLCJpZCIsIm9uQ2hhbmdlIiwicHJldkNoZWNrIiwic2V0SXRlbSIsImltZyIsImFsdCIsInNyYyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ThemeSwitcher.js\n"); + +/***/ }), + +/***/ "./components/Themes.js": +/*!******************************!*\ + !*** ./components/Themes.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Theme)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var styled_jsx_style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-jsx/style */ \"styled-jsx/style\");\n/* harmony import */ var styled_jsx_style__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(styled_jsx_style__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst DarkTheme = ()=>{\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((styled_jsx_style__WEBPACK_IMPORTED_MODULE_1___default()), {\n id: \"1871ac38d507d240\",\n children: \":root{--background-color:#34495e;--secondary-color:#2c3e50;--text-color:#ecf0f1;--accent-color:#3498db;--box-shadow-color:rgba(0, 0, 0, 0.1);--border-color:#95a5a6;--input-back:#555;--input-color:#fbec48;--darker-secondary-accent-color:#004080}}\\n \"\n }, void 0, false, void 0, undefined);\n};\nconst LightTheme = ()=>{\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((styled_jsx_style__WEBPACK_IMPORTED_MODULE_1___default()), {\n id: \"a681064a64782189\",\n children: \":root{--background-color:#f0f0f0;--secondary-color:#fff;--text-color:#333;--accent-color:#3498db;--box-shadow-color:rgba(0, 0, 0, 0.1);--border-color:#ccc;--input-back:#4b4a4a;--input-color:#294797;--darker-secondary-accent-color:#004080}\"\n }, void 0, false, void 0, undefined);\n};\nfunction Theme({ theme }) {\n if (theme == \"dark\") {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DarkTheme, {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Themes.js\",\n lineNumber: 50,\n columnNumber: 16\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(LightTheme, {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Themes.js\",\n lineNumber: 52,\n columnNumber: 12\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RoZW1lcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsTUFBTUEsWUFBWTtJQUNkLE9BQU8sOERBQUM7Ozs7QUFxQlo7QUFFQSxNQUFNQyxhQUFhO0lBQ2YsT0FBTyw4REFBQzs7OztBQW1CWjtBQUVlLFNBQVNDLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0lBQ25DLElBQUlBLFNBQVMsUUFBUTtRQUNqQixxQkFBTyw4REFBQ0g7Ozs7O0lBQ1o7SUFDQSxxQkFBTyw4REFBQ0M7Ozs7O0FBQ1oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbXBvbmVudHMvVGhlbWVzLmpzPzNmYjkiXSwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBEYXJrVGhlbWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPHN0eWxlIGpzeCBnbG9iYWw+XG4gICAgICAgICAgICB7YFxuOnJvb3Qge1xuICAgIC0tYmFja2dyb3VuZC1jb2xvcjogIzM0NDk1ZTsgLyogU2xpZ2h0bHkgbGlnaHRlciBkYXJrIGJhY2tncm91bmQgY29sb3IgKi9cbiAgICAtLXNlY29uZGFyeS1jb2xvcjogIzJjM2U1MDsgLyogRGFyayBzZWNvbmRhcnkgY29sb3IsIHNsaWdodGx5IGRhcmtlciB0aGFuIGJhY2tncm91bmQgKi9cbiAgICAtLXRleHQtY29sb3I6ICNlY2YwZjE7IC8qIExpZ2h0IHRleHQgY29sb3IgKi9cbiAgICAtLWFjY2VudC1jb2xvcjogIzM0OThkYjsgLyogQmx1ZSBhY2NlbnQgY29sb3IgKi9cbiAgICAtLWJveC1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAtLWJvcmRlci1jb2xvcjogIzk1YTVhNjsgLyogTGlnaHQgYm9yZGVyIGNvbG9yICovXG5cbiAgICAtLWlucHV0LWJhY2s6ICM1NTU7IC8qIERhcmtlciBncmF5IGZvciBpbnB1dCBiYWNrZ3JvdW5kICovXG4gICAgLS1pbnB1dC1jb2xvcjogI2ZiZWM0ODsgLyogWWVsbG93IGZvciBpbnB1dCB0ZXh0ICovXG5cbiAgICAtLWRhcmtlci1zZWNvbmRhcnktYWNjZW50LWNvbG9yOiAjMDA0MDgwO1xufVxuXG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgICA8L3N0eWxlPlxuICAgICk7XG59O1xuXG5jb25zdCBMaWdodFRoZW1lID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxzdHlsZSBqc3ggZ2xvYmFsPlxuICAgICAgICAgICAge2BcbiAgICAgICAgIDpyb290IHtcbiAgICAgICAgICAgIC0tYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICAgICAgICAgIC0tc2Vjb25kYXJ5LWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgLS10ZXh0LWNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgLS1hY2NlbnQtY29sb3I6ICMzNDk4ZGI7XG4gICAgICAgICAgICAtLWJveC1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgIC0tYm9yZGVyLWNvbG9yOiAjY2NjO1xuICAgICAgICBcbiAgICAgICAgICAgIC0taW5wdXQtYmFjazogIzRiNGE0YTtcbiAgICAgICAgICAgIC0taW5wdXQtY29sb3I6ICMyOTQ3OTc7XG5cbiAgICAgICAgICAgIC0tZGFya2VyLXNlY29uZGFyeS1hY2NlbnQtY29sb3I6ICMwMDQwODA7XG4gICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgICAgPC9zdHlsZT5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGhlbWUoeyB0aGVtZSB9KSB7XG4gICAgaWYgKHRoZW1lID09IFwiZGFya1wiKSB7XG4gICAgICAgIHJldHVybiA8RGFya1RoZW1lIC8+O1xuICAgIH1cbiAgICByZXR1cm4gPExpZ2h0VGhlbWUgLz47XG59XG4iXSwibmFtZXMiOlsiRGFya1RoZW1lIiwiTGlnaHRUaGVtZSIsIlRoZW1lIiwidGhlbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/Themes.js\n"); + +/***/ }), + +/***/ "./context/LigandContext.js": +/*!**********************************!*\ + !*** ./context/LigandContext.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LigandProvider: () => (/* binding */ LigandProvider),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst LigandContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)({\n ligand: [],\n setLigand: ()=>{}\n});\nfunction LigandProvider({ children }) {\n const [ligand, setLigand] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(LigandContext.Provider, {\n value: {\n ligand: ligand,\n setLigand: setLigand\n },\n children: children\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/context/LigandContext.js\",\n lineNumber: 13,\n columnNumber: 9\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LigandContext);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb250ZXh0L0xpZ2FuZENvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFrRTtBQUVsRSxNQUFNSSw4QkFBZ0JILG9EQUFhQSxDQUFDO0lBQ2hDSSxRQUFRLEVBQUU7SUFDVkMsV0FBVyxLQUFPO0FBQ3RCO0FBRU8sU0FBU0MsZUFBZSxFQUFFQyxRQUFRLEVBQUU7SUFDdkMsTUFBTSxDQUFDSCxRQUFRQyxVQUFVLEdBQUdILCtDQUFRQSxDQUFDLEVBQUU7SUFHdkMscUJBQ0ksOERBQUNDLGNBQWNLLFFBQVE7UUFBQ0MsT0FBTztZQUFFTCxRQUFRQTtZQUFRQyxXQUFXQTtRQUFVO2tCQUNqRUU7Ozs7OztBQUdiO0FBRUEsaUVBQWVKLGFBQWFBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbnRleHQvTGlnYW5kQ29udGV4dC5qcz8wMTAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBMaWdhbmRDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gICAgbGlnYW5kOiBbXSxcbiAgICBzZXRMaWdhbmQ6ICgpID0+IHt9LFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBMaWdhbmRQcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgICBjb25zdCBbbGlnYW5kLCBzZXRMaWdhbmRdID0gdXNlU3RhdGUoW10pO1xuXG4gICAgXG4gICAgcmV0dXJuIChcbiAgICAgICAgPExpZ2FuZENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgbGlnYW5kOiBsaWdhbmQsIHNldExpZ2FuZDogc2V0TGlnYW5kIH19PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0xpZ2FuZENvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlnYW5kQ29udGV4dDtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkxpZ2FuZENvbnRleHQiLCJsaWdhbmQiLCJzZXRMaWdhbmQiLCJMaWdhbmRQcm92aWRlciIsImNoaWxkcmVuIiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./context/LigandContext.js\n"); + +/***/ }), + +/***/ "./pages/_app.js": +/*!***********************!*\ + !*** ./pages/_app.js ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _styles_index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles/index.css */ \"./styles/index.css\");\n/* harmony import */ var _styles_index_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_index_css__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_LigandContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/LigandContext */ \"./context/LigandContext.js\");\n/* harmony import */ var _components_Navbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Navbar */ \"./components/Navbar.js\");\n\n\n\n\nfunction MyApp({ Component, pageProps }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_LigandContext__WEBPACK_IMPORTED_MODULE_2__.LigandProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navbar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/_app.js\",\n lineNumber: 10,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/_app.js\",\n lineNumber: 11,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/_app.js\",\n lineNumber: 9,\n columnNumber: 5\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyApp);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9fYXBwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTZCO0FBQzRCO0FBQ2hCO0FBRXpDLFNBQVNFLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUU7SUFHckMscUJBQ0UsOERBQUNKLGtFQUFjQTs7MEJBQ1gsOERBQUNDLDBEQUFNQTs7Ozs7MEJBQ1AsOERBQUNFO2dCQUFXLEdBQUdDLFNBQVM7Ozs7Ozs7Ozs7OztBQUdoQztBQUVBLGlFQUFlRixLQUFLQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9wYWdlcy9fYXBwLmpzP2UwYWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi9zdHlsZXMvaW5kZXguY3NzJztcbmltcG9ydCB7IExpZ2FuZFByb3ZpZGVyIH0gZnJvbSAnLi4vY29udGV4dC9MaWdhbmRDb250ZXh0J1xuaW1wb3J0IE5hdmJhciBmcm9tICcuLi9jb21wb25lbnRzL05hdmJhcidcblxuZnVuY3Rpb24gTXlBcHAoeyBDb21wb25lbnQsIHBhZ2VQcm9wcyB9KSB7XG5cblxuICByZXR1cm4gKFxuICAgIDxMaWdhbmRQcm92aWRlcj5cbiAgICAgICAgPE5hdmJhciAvPlxuICAgICAgICA8Q29tcG9uZW50IHsuLi5wYWdlUHJvcHN9IC8+XG4gICAgPC9MaWdhbmRQcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlBcHA7XG4iXSwibmFtZXMiOlsiTGlnYW5kUHJvdmlkZXIiLCJOYXZiYXIiLCJNeUFwcCIsIkNvbXBvbmVudCIsInBhZ2VQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/_app.js\n"); + +/***/ }), + +/***/ "./pages/tools/dimension-reduction/pca.js": +/*!************************************************!*\ + !*** ./pages/tools/dimension-reduction/pca.js ***! + \************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DataDistribution)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dynamic */ \"./node_modules/next/dynamic.js\");\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_dynamic__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Tabbed__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../components/Tabbed */ \"./components/Tabbed.js\");\n\n\n\n\nconst PCAPlot = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(()=>__webpack_require__.e(/*! import() */ \"components_PCA_Plot_js\").then(__webpack_require__.bind(__webpack_require__, /*! ../../../components/PCA_Plot */ \"./components/PCA_Plot.js\")), {\n loadableGenerated: {\n modules: [\n \"tools/dimension-reduction/pca.js -> \" + \"../../../components/PCA_Plot\"\n ]\n },\n ssr: false\n});\nfunction DataDistribution() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_2___default()), {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: \"Data Distribution\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/pca.js\",\n lineNumber: 14,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/pca.js\",\n lineNumber: 13,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Tabbed__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n activeTab: 1\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/pca.js\",\n lineNumber: 16,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(PCAPlot, {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/pca.js\",\n lineNumber: 17,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/pca.js\",\n lineNumber: 12,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy90b29scy9kaW1lbnNpb24tcmVkdWN0aW9uL3BjYS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBbUM7QUFDUDtBQUM2QjtBQUV6RCxNQUFNRyxVQUFVSCxtREFBT0EsQ0FDbkIsSUFBTSxtTEFBTzs7Ozs7O0lBQ1hJLEtBQUs7O0FBR0ksU0FBU0M7SUFDcEIscUJBQ0ksOERBQUNDOzswQkFDRyw4REFBQ0wsa0RBQUlBOzBCQUNELDRFQUFDTTs4QkFBTTs7Ozs7Ozs7Ozs7MEJBRVgsOERBQUNMLDBEQUFlQTtnQkFBQ00sV0FBVzs7Ozs7OzBCQUM1Qiw4REFBQ0w7Ozs7Ozs7Ozs7O0FBR2IiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL3BhZ2VzL3Rvb2xzL2RpbWVuc2lvbi1yZWR1Y3Rpb24vcGNhLmpzPzY3NDIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGR5bmFtaWMgZnJvbSAnbmV4dC9keW5hbWljJztcbmltcG9ydCBIZWFkIGZyb20gJ25leHQvaGVhZCdcbmltcG9ydCBUYWJiZWRDb21wb25lbnQgZnJvbSAnLi4vLi4vLi4vY29tcG9uZW50cy9UYWJiZWQnO1xuXG5jb25zdCBQQ0FQbG90ID0gZHluYW1pYyhcbiAgICAoKSA9PiBpbXBvcnQoJy4uLy4uLy4uL2NvbXBvbmVudHMvUENBX1Bsb3QnKSxcbiAgICB7IHNzcjogZmFsc2UgfVxuKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGF0YURpc3RyaWJ1dGlvbigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPEhlYWQ+XG4gICAgICAgICAgICAgICAgPHRpdGxlPkRhdGEgRGlzdHJpYnV0aW9uPC90aXRsZT5cbiAgICAgICAgICAgIDwvSGVhZD5cbiAgICAgICAgICAgIDxUYWJiZWRDb21wb25lbnQgYWN0aXZlVGFiPXsxfS8+XG4gICAgICAgICAgICA8UENBUGxvdCAvPlxuICAgICAgICA8L2Rpdj5cbiAgICApXG59Il0sIm5hbWVzIjpbImR5bmFtaWMiLCJIZWFkIiwiVGFiYmVkQ29tcG9uZW50IiwiUENBUGxvdCIsInNzciIsIkRhdGFEaXN0cmlidXRpb24iLCJkaXYiLCJ0aXRsZSIsImFjdGl2ZVRhYiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/tools/dimension-reduction/pca.js\n"); + +/***/ }), + +/***/ "./styles/index.css": +/*!**************************!*\ + !*** ./styles/index.css ***! + \**************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "ml-pca": +/*!*************************!*\ + !*** external "ml-pca" ***! + \*************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("ml-pca"); + +/***/ }), + +/***/ "next/dist/compiled/next-server/pages.runtime.dev.js": +/*!**********************************************************************!*\ + !*** external "next/dist/compiled/next-server/pages.runtime.dev.js" ***! + \**********************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/compiled/next-server/pages.runtime.dev.js"); + +/***/ }), + +/***/ "next/head": +/*!****************************!*\ + !*** external "next/head" ***! + \****************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/head"); + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "react" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("react"); + +/***/ }), + +/***/ "react/jsx-dev-runtime": +/*!****************************************!*\ + !*** external "react/jsx-dev-runtime" ***! + \****************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("react/jsx-dev-runtime"); + +/***/ }), + +/***/ "styled-jsx/style": +/*!***********************************!*\ + !*** external "styled-jsx/style" ***! + \***********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("styled-jsx/style"); + +/***/ }), + +/***/ "d3": +/*!*********************!*\ + !*** external "d3" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = import("d3");; + +/***/ }), + +/***/ "d3-scale-chromatic": +/*!*************************************!*\ + !*** external "d3-scale-chromatic" ***! + \*************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = import("d3-scale-chromatic");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }) + +}; +; + +// load runtime +var __webpack_require__ = require("../../../webpack-runtime.js"); +__webpack_require__.C(exports); +var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc"], () => (__webpack_exec__("./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Fpca&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Fpca.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/pages/tools/dimension-reduction/tsne.js b/.next/server/pages/tools/dimension-reduction/tsne.js new file mode 100644 index 0000000..3e0d9c3 --- /dev/null +++ b/.next/server/pages/tools/dimension-reduction/tsne.js @@ -0,0 +1,211 @@ +/* + * ATTENTION: An "eval-source-map" devtool has been used. + * This devtool is neither made for production nor for readable output files. + * It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools. + * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) + * or disable the default devtool with "devtool: false". + * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). + */ +(() => { +var exports = {}; +exports.id = "pages/tools/dimension-reduction/tsne"; +exports.ids = ["pages/tools/dimension-reduction/tsne"]; +exports.modules = { + +/***/ "./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Ftsne&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Ftsne.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!": +/*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Ftsne&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Ftsne.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D! ***! + \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ config: () => (/* binding */ config),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__),\n/* harmony export */ getServerSideProps: () => (/* binding */ getServerSideProps),\n/* harmony export */ getStaticPaths: () => (/* binding */ getStaticPaths),\n/* harmony export */ getStaticProps: () => (/* binding */ getStaticProps),\n/* harmony export */ reportWebVitals: () => (/* binding */ reportWebVitals),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ unstable_getServerProps: () => (/* binding */ unstable_getServerProps),\n/* harmony export */ unstable_getServerSideProps: () => (/* binding */ unstable_getServerSideProps),\n/* harmony export */ unstable_getStaticParams: () => (/* binding */ unstable_getStaticParams),\n/* harmony export */ unstable_getStaticPaths: () => (/* binding */ unstable_getStaticPaths),\n/* harmony export */ unstable_getStaticProps: () => (/* binding */ unstable_getStaticProps)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/pages/module.compiled */ \"./node_modules/next/dist/server/future/route-modules/pages/module.compiled.js\");\n/* harmony import */ var next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/build/templates/helpers */ \"./node_modules/next/dist/build/templates/helpers.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! private-next-pages/_document */ \"./node_modules/next/dist/pages/_document.js\");\n/* harmony import */ var private_next_pages_document__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(private_next_pages_document__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! private-next-pages/_app */ \"./pages/_app.js\");\n/* harmony import */ var _pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./pages/tools/dimension-reduction/tsne.js */ \"./pages/tools/dimension-reduction/tsne.js\");\n// @ts-ignore this need to be imported from next/dist to be external\n\n\n\n// Import the app and document modules.\n// @ts-expect-error - replaced by webpack/turbopack loader\n\n// @ts-expect-error - replaced by webpack/turbopack loader\n\n// Import the userland code.\n// @ts-expect-error - replaced by webpack/turbopack loader\n\nconst PagesRouteModule = next_dist_server_future_route_modules_pages_module_compiled__WEBPACK_IMPORTED_MODULE_0__.PagesRouteModule;\n// Re-export the component (should be the default export).\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"default\"));\n// Re-export methods.\nconst getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"getStaticProps\");\nconst getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"getStaticPaths\");\nconst getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"getServerSideProps\");\nconst config = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"config\");\nconst reportWebVitals = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"reportWebVitals\");\n// Re-export legacy methods.\nconst unstable_getStaticProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getStaticProps\");\nconst unstable_getStaticPaths = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getStaticPaths\");\nconst unstable_getStaticParams = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getStaticParams\");\nconst unstable_getServerProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getServerProps\");\nconst unstable_getServerSideProps = (0,next_dist_build_templates_helpers__WEBPACK_IMPORTED_MODULE_2__.hoist)(_pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__, \"unstable_getServerSideProps\");\n// Create and export the route module that will be consumed.\nconst routeModule = new PagesRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.PAGES,\n page: \"/tools/dimension-reduction/tsne\",\n pathname: \"/tools/dimension-reduction/tsne\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\"\n },\n components: {\n App: private_next_pages_app__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n Document: (private_next_pages_document__WEBPACK_IMPORTED_MODULE_3___default())\n },\n userland: _pages_tools_dimension_reduction_tsne_js__WEBPACK_IMPORTED_MODULE_5__\n});\n\n//# sourceMappingURL=pages.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LXJvdXRlLWxvYWRlci9pbmRleC5qcz9raW5kPVBBR0VTJnBhZ2U9JTJGdG9vbHMlMkZkaW1lbnNpb24tcmVkdWN0aW9uJTJGdHNuZSZwcmVmZXJyZWRSZWdpb249JmFic29sdXRlUGFnZVBhdGg9LiUyRnBhZ2VzJTJGdG9vbHMlMkZkaW1lbnNpb24tcmVkdWN0aW9uJTJGdHNuZS5qcyZhYnNvbHV0ZUFwcFBhdGg9cHJpdmF0ZS1uZXh0LXBhZ2VzJTJGX2FwcCZhYnNvbHV0ZURvY3VtZW50UGF0aD1wcml2YXRlLW5leHQtcGFnZXMlMkZfZG9jdW1lbnQmbWlkZGxld2FyZUNvbmZpZ0Jhc2U2ND1lMzAlM0QhIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDc0Y7QUFDdkI7QUFDTDtBQUMxRDtBQUNBO0FBQ29EO0FBQ3BEO0FBQzBDO0FBQzFDO0FBQ0E7QUFDc0U7QUFDdEUseUJBQXlCLHlHQUF1QjtBQUNoRDtBQUNBLGlFQUFlLHdFQUFLLENBQUMscUVBQVEsWUFBWSxFQUFDO0FBQzFDO0FBQ08sdUJBQXVCLHdFQUFLLENBQUMscUVBQVE7QUFDckMsdUJBQXVCLHdFQUFLLENBQUMscUVBQVE7QUFDckMsMkJBQTJCLHdFQUFLLENBQUMscUVBQVE7QUFDekMsZUFBZSx3RUFBSyxDQUFDLHFFQUFRO0FBQzdCLHdCQUF3Qix3RUFBSyxDQUFDLHFFQUFRO0FBQzdDO0FBQ08sZ0NBQWdDLHdFQUFLLENBQUMscUVBQVE7QUFDOUMsZ0NBQWdDLHdFQUFLLENBQUMscUVBQVE7QUFDOUMsaUNBQWlDLHdFQUFLLENBQUMscUVBQVE7QUFDL0MsZ0NBQWdDLHdFQUFLLENBQUMscUVBQVE7QUFDOUMsb0NBQW9DLHdFQUFLLENBQUMscUVBQVE7QUFDekQ7QUFDTztBQUNQO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0EsV0FBVztBQUNYLGdCQUFnQjtBQUNoQixLQUFLO0FBQ0wsWUFBWTtBQUNaLENBQUM7O0FBRUQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8/OGI0OSJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlIHRoaXMgbmVlZCB0byBiZSBpbXBvcnRlZCBmcm9tIG5leHQvZGlzdCB0byBiZSBleHRlcm5hbFxuaW1wb3J0ICogYXMgbW9kdWxlIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL3BhZ2VzL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLWtpbmRcIjtcbmltcG9ydCB7IGhvaXN0IH0gZnJvbSBcIm5leHQvZGlzdC9idWlsZC90ZW1wbGF0ZXMvaGVscGVyc1wiO1xuLy8gSW1wb3J0IHRoZSBhcHAgYW5kIGRvY3VtZW50IG1vZHVsZXMuXG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gcmVwbGFjZWQgYnkgd2VicGFjay90dXJib3BhY2sgbG9hZGVyXG5pbXBvcnQgRG9jdW1lbnQgZnJvbSBcInByaXZhdGUtbmV4dC1wYWdlcy9fZG9jdW1lbnRcIjtcbi8vIEB0cy1leHBlY3QtZXJyb3IgLSByZXBsYWNlZCBieSB3ZWJwYWNrL3R1cmJvcGFjayBsb2FkZXJcbmltcG9ydCBBcHAgZnJvbSBcInByaXZhdGUtbmV4dC1wYWdlcy9fYXBwXCI7XG4vLyBJbXBvcnQgdGhlIHVzZXJsYW5kIGNvZGUuXG4vLyBAdHMtZXhwZWN0LWVycm9yIC0gcmVwbGFjZWQgYnkgd2VicGFjay90dXJib3BhY2sgbG9hZGVyXG5pbXBvcnQgKiBhcyB1c2VybGFuZCBmcm9tIFwiLi9wYWdlcy90b29scy9kaW1lbnNpb24tcmVkdWN0aW9uL3RzbmUuanNcIjtcbmNvbnN0IFBhZ2VzUm91dGVNb2R1bGUgPSBtb2R1bGUuUGFnZXNSb3V0ZU1vZHVsZTtcbi8vIFJlLWV4cG9ydCB0aGUgY29tcG9uZW50IChzaG91bGQgYmUgdGhlIGRlZmF1bHQgZXhwb3J0KS5cbmV4cG9ydCBkZWZhdWx0IGhvaXN0KHVzZXJsYW5kLCBcImRlZmF1bHRcIik7XG4vLyBSZS1leHBvcnQgbWV0aG9kcy5cbmV4cG9ydCBjb25zdCBnZXRTdGF0aWNQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCBcImdldFN0YXRpY1Byb3BzXCIpO1xuZXhwb3J0IGNvbnN0IGdldFN0YXRpY1BhdGhzID0gaG9pc3QodXNlcmxhbmQsIFwiZ2V0U3RhdGljUGF0aHNcIik7XG5leHBvcnQgY29uc3QgZ2V0U2VydmVyU2lkZVByb3BzID0gaG9pc3QodXNlcmxhbmQsIFwiZ2V0U2VydmVyU2lkZVByb3BzXCIpO1xuZXhwb3J0IGNvbnN0IGNvbmZpZyA9IGhvaXN0KHVzZXJsYW5kLCBcImNvbmZpZ1wiKTtcbmV4cG9ydCBjb25zdCByZXBvcnRXZWJWaXRhbHMgPSBob2lzdCh1c2VybGFuZCwgXCJyZXBvcnRXZWJWaXRhbHNcIik7XG4vLyBSZS1leHBvcnQgbGVnYWN5IG1ldGhvZHMuXG5leHBvcnQgY29uc3QgdW5zdGFibGVfZ2V0U3RhdGljUHJvcHMgPSBob2lzdCh1c2VybGFuZCwgXCJ1bnN0YWJsZV9nZXRTdGF0aWNQcm9wc1wiKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTdGF0aWNQYXRocyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFN0YXRpY1BhdGhzXCIpO1xuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX2dldFN0YXRpY1BhcmFtcyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFN0YXRpY1BhcmFtc1wiKTtcbmV4cG9ydCBjb25zdCB1bnN0YWJsZV9nZXRTZXJ2ZXJQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFNlcnZlclByb3BzXCIpO1xuZXhwb3J0IGNvbnN0IHVuc3RhYmxlX2dldFNlcnZlclNpZGVQcm9wcyA9IGhvaXN0KHVzZXJsYW5kLCBcInVuc3RhYmxlX2dldFNlcnZlclNpZGVQcm9wc1wiKTtcbi8vIENyZWF0ZSBhbmQgZXhwb3J0IHRoZSByb3V0ZSBtb2R1bGUgdGhhdCB3aWxsIGJlIGNvbnN1bWVkLlxuZXhwb3J0IGNvbnN0IHJvdXRlTW9kdWxlID0gbmV3IFBhZ2VzUm91dGVNb2R1bGUoe1xuICAgIGRlZmluaXRpb246IHtcbiAgICAgICAga2luZDogUm91dGVLaW5kLlBBR0VTLFxuICAgICAgICBwYWdlOiBcIi90b29scy9kaW1lbnNpb24tcmVkdWN0aW9uL3RzbmVcIixcbiAgICAgICAgcGF0aG5hbWU6IFwiL3Rvb2xzL2RpbWVuc2lvbi1yZWR1Y3Rpb24vdHNuZVwiLFxuICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGFyZW4ndCB1c2VkIGluIHByb2R1Y3Rpb24uXG4gICAgICAgIGJ1bmRsZVBhdGg6IFwiXCIsXG4gICAgICAgIGZpbGVuYW1lOiBcIlwiXG4gICAgfSxcbiAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIEFwcCxcbiAgICAgICAgRG9jdW1lbnRcbiAgICB9LFxuICAgIHVzZXJsYW5kXG59KTtcblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cGFnZXMuanMubWFwIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Ftsne&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Ftsne.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!\n"); + +/***/ }), + +/***/ "./components/Navbar.js": +/*!******************************!*\ + !*** ./components/Navbar.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _ThemeSwitcher__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ThemeSwitcher */ \"./components/ThemeSwitcher.js\");\n\n\n\nconst Navbar = ()=>{\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"navbar\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"logo\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/\",\n children: \"SAR IN BROWSER\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 7,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 6,\n columnNumber: 13\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n className: \"navLinks\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ThemeSwitcher__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 13,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 12,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/about\",\n children: \"About\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 16,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 15,\n columnNumber: 17\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_1___default()), {\n href: \"/contact\",\n children: \"Donate\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 21,\n columnNumber: 21\n }, undefined)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 20,\n columnNumber: 17\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 11,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Navbar.js\",\n lineNumber: 5,\n columnNumber: 9\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (Navbar);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL05hdmJhci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQTZCO0FBQ2M7QUFDM0MsTUFBTUUsU0FBUztJQUNYLHFCQUNJLDhEQUFDQztRQUFJQyxXQUFVOzswQkFDWCw4REFBQ0M7Z0JBQUlELFdBQVU7MEJBQ1gsNEVBQUNKLGtEQUFJQTtvQkFBQ00sTUFBSzs4QkFBSTs7Ozs7Ozs7Ozs7MEJBSW5CLDhEQUFDQztnQkFBR0gsV0FBVTs7a0NBQ1YsOERBQUNJO2tDQUNHLDRFQUFDUCxzREFBYUE7Ozs7Ozs7Ozs7a0NBRWxCLDhEQUFDTztrQ0FDRyw0RUFBQ1Isa0RBQUlBOzRCQUFDTSxNQUFLO3NDQUFTOzs7Ozs7Ozs7OztrQ0FJeEIsOERBQUNFO2tDQUNHLDRFQUFDUixrREFBSUE7NEJBQUNNLE1BQUs7c0NBQVc7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTzFDO0FBRUEsaUVBQWVKLE1BQU1BLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbXBvbmVudHMvTmF2YmFyLmpzP2ZiY2EiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExpbmsgZnJvbSAnbmV4dC9saW5rJztcbmltcG9ydCBUaGVtZVN3aXRjaGVyIGZyb20gJy4vVGhlbWVTd2l0Y2hlcidcbmNvbnN0IE5hdmJhciA9ICgpID0+IHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8bmF2IGNsYXNzTmFtZT1cIm5hdmJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJsb2dvXCI+XG4gICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9cIj5cbiAgICAgICAgICAgICAgICAgICAgU0FSIElOIEJST1dTRVJcbiAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx1bCBjbGFzc05hbWU9XCJuYXZMaW5rc1wiPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPFRoZW1lU3dpdGNoZXIgLz5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPExpbmsgaHJlZj1cIi9hYm91dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWJvdXRcbiAgICAgICAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgPGxpPlxuICAgICAgICAgICAgICAgICAgICA8TGluayBocmVmPVwiL2NvbnRhY3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERvbmF0ZVxuICAgICAgICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIDwvdWw+XG4gICAgICAgIDwvbmF2PlxuICAgICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOYXZiYXI7XG4iXSwibmFtZXMiOlsiTGluayIsIlRoZW1lU3dpdGNoZXIiLCJOYXZiYXIiLCJuYXYiLCJjbGFzc05hbWUiLCJkaXYiLCJocmVmIiwidWwiLCJsaSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/Navbar.js\n"); + +/***/ }), + +/***/ "./components/Tabbed.js": +/*!******************************!*\ + !*** ./components/Tabbed.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/link */ \"./node_modules/next/link.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_link__WEBPACK_IMPORTED_MODULE_2__);\n// components/TabbedComponent.js\n\n\n\nconst containerStyle = {\n margin: 0,\n display: \"flex\",\n width: \"100%\",\n fontSize: \"1.5em\",\n justifyContent: \"center\",\n backgroundColor: \"var(--background-color)\"\n};\nconst tabStyle = {\n all: \"unset\",\n flexGrow: 1,\n zIndex: 100,\n display: \"flex\",\n cursor: \"pointer\",\n position: \"relative\",\n borderRadius: \"6pt 6pt 0 0\",\n alignItems: \"center\",\n willChange: \"transform\",\n justifyContent: \"center\",\n padding: \"10px 20px\",\n transition: \"color var(--timeOut, var(--duration))\",\n color: \"hsl(232deg 18% 8%)\",\n position: \"relative\"\n};\nconst activeTabStyle = {\n color: \"hsl(232deg 16% 15%)\"\n};\nconst tabBeforeStyle = {\n content: '\"\"',\n zIndex: -1,\n width: \"100%\",\n height: \"5px\",\n borderRadius: \"6pt 6pt 0 0\",\n position: \"absolute\",\n transform: \"scale(0)\",\n transition: \"background-color var(--duration), transform var(--duration)\",\n bottom: 0,\n left: 0\n};\nconst activeTabBeforeStyle = {\n transform: \"scale(1)\",\n backgroundColor: \"var(--accent-color)\"\n};\nconst TabbedComponent = ({ activeTab })=>{\n const [activeIndex, setActiveIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(activeTab);\n const tabs = [\n \"Data Distribution\",\n \"PCA\",\n \"tSNE\",\n \"Random Forest\"\n ];\n const tabLinks = [\n \"data-distribution\",\n \"dimension-reduction/pca\",\n \"dimension-reduction/tsne\",\n \"ml/rf\"\n ];\n const handleTabClick = (index)=>{\n setActiveIndex(index);\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: containerStyle,\n children: tabs.map((tab, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_link__WEBPACK_IMPORTED_MODULE_2___default()), {\n style: {\n textDecoration: \"none\"\n },\n href: `/tools/${tabLinks[index]}`,\n passHref: true,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n onClick: ()=>handleTabClick(index),\n style: {\n ...tabStyle,\n ...index === activeIndex ? activeTabStyle : {}\n },\n children: [\n tab,\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n style: {\n ...tabBeforeStyle,\n ...index === activeIndex ? activeTabBeforeStyle : {}\n }\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 75,\n columnNumber: 13\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 67,\n columnNumber: 11\n }, undefined)\n }, index, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 66,\n columnNumber: 9\n }, undefined))\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Tabbed.js\",\n lineNumber: 64,\n columnNumber: 5\n }, undefined);\n};\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TabbedComponent);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RhYmJlZC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsZ0NBQWdDOztBQUNDO0FBQ0o7QUFFN0IsTUFBTUUsaUJBQWlCO0lBQ3JCQyxRQUFRO0lBQ1JDLFNBQVM7SUFDVEMsT0FBTztJQUNQQyxVQUFVO0lBQ1ZDLGdCQUFnQjtJQUNoQkMsaUJBQWlCO0FBQ25CO0FBRUEsTUFBTUMsV0FBVztJQUNmQyxLQUFLO0lBQ0xDLFVBQVU7SUFDVkMsUUFBUTtJQUNSUixTQUFTO0lBQ1RTLFFBQVE7SUFDUkMsVUFBVTtJQUNWQyxjQUFjO0lBQ2RDLFlBQVk7SUFDWkMsWUFBWTtJQUNaVixnQkFBZ0I7SUFDaEJXLFNBQVM7SUFDVEMsWUFBWTtJQUNaQyxPQUFPO0lBQ1BOLFVBQVU7QUFDWjtBQUVBLE1BQU1PLGlCQUFpQjtJQUNyQkQsT0FBTztBQUNUO0FBRUEsTUFBTUUsaUJBQWlCO0lBQ3JCQyxTQUFTO0lBQ1RYLFFBQVEsQ0FBQztJQUNUUCxPQUFPO0lBQ1BtQixRQUFRO0lBQ1JULGNBQWM7SUFDZEQsVUFBVTtJQUNWVyxXQUFXO0lBQ1hOLFlBQVk7SUFDWk8sUUFBUTtJQUNSQyxNQUFNO0FBQ1I7QUFFQSxNQUFNQyx1QkFBdUI7SUFDM0JILFdBQVc7SUFDWGpCLGlCQUFpQjtBQUNuQjtBQUVBLE1BQU1xQixrQkFBa0IsQ0FBQyxFQUFFQyxTQUFTLEVBQUU7SUFDcEMsTUFBTSxDQUFDQyxhQUFhQyxlQUFlLEdBQUdoQywrQ0FBUUEsQ0FBQzhCO0lBQy9DLE1BQU1HLE9BQU87UUFBQztRQUFxQjtRQUFPO1FBQVE7S0FBZ0I7SUFDbEUsTUFBTUMsV0FBVztRQUFDO1FBQ2xCO1FBQ0E7UUFBNEI7S0FBUTtJQUNwQyxNQUFNQyxpQkFBaUIsQ0FBQ0M7UUFDdEJKLGVBQWVJO0lBQ2pCO0lBRUEscUJBQ0UsOERBQUNDO1FBQUlDLE9BQU9wQztrQkFDVCtCLEtBQUtNLEdBQUcsQ0FBQyxDQUFDQyxLQUFLSixzQkFDZCw4REFBQ25DLGtEQUFJQTtnQkFBQ3FDLE9BQU87b0JBQUVHLGdCQUFnQjtnQkFBTztnQkFBR0MsTUFBTSxDQUFDLE9BQU8sRUFBRVIsUUFBUSxDQUFDRSxNQUFNLENBQUMsQ0FBQztnQkFBY08sUUFBUTswQkFDOUYsNEVBQUNOO29CQUNDTyxTQUFTLElBQU1ULGVBQWVDO29CQUM5QkUsT0FBTzt3QkFDTCxHQUFHN0IsUUFBUTt3QkFDWCxHQUFJMkIsVUFBVUwsY0FBY1YsaUJBQWlCLENBQUMsQ0FBQztvQkFDakQ7O3dCQUVDbUI7c0NBQ0QsOERBQUNIOzRCQUNDQyxPQUFPO2dDQUNMLEdBQUdoQixjQUFjO2dDQUNqQixHQUFJYyxVQUFVTCxjQUFjSCx1QkFBdUIsQ0FBQyxDQUFDOzRCQUN2RDs7Ozs7Ozs7Ozs7O2VBYjJFUTs7Ozs7Ozs7OztBQW9CekY7QUFFQSxpRUFBZVAsZUFBZUEsRUFBQyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vY29tcG9uZW50cy9UYWJiZWQuanM/ZTNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RhYmJlZENvbXBvbmVudC5qc1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTGluayBmcm9tICduZXh0L2xpbmsnO1xuXG5jb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgbWFyZ2luOiAwLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIHdpZHRoOiAnMTAwJScsIC8vIFRha2UgdGhlIGZ1bGwgd2lkdGhcbiAgZm9udFNpemU6ICcxLjVlbScsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJywgLy8gQ2VudGVyIGhvcml6b250YWxseVxuICBiYWNrZ3JvdW5kQ29sb3I6ICd2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKScsXG59O1xuXG5jb25zdCB0YWJTdHlsZSA9IHtcbiAgYWxsOiAndW5zZXQnLFxuICBmbGV4R3JvdzogMSxcbiAgekluZGV4OiAxMDAsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAgY3Vyc29yOiAncG9pbnRlcicsXG4gIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICBib3JkZXJSYWRpdXM6ICc2cHQgNnB0IDAgMCcsIC8vIEFkanVzdGVkIGJvcmRlci1yYWRpdXNcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIHdpbGxDaGFuZ2U6ICd0cmFuc2Zvcm0nLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIHBhZGRpbmc6ICcxMHB4IDIwcHgnLCAvLyBBZGp1c3RlZCBwYWRkaW5nXG4gIHRyYW5zaXRpb246ICdjb2xvciB2YXIoLS10aW1lT3V0LCB2YXIoLS1kdXJhdGlvbikpJyxcbiAgY29sb3I6ICdoc2woMjMyZGVnIDE4JSA4JSknLCAvLyBVc2UgeW91ciBjdXN0b20gY29sb3IgaGVyZVxuICBwb3NpdGlvbjogJ3JlbGF0aXZlJywgLy8gQWRkZWQgcG9zaXRpb24gcmVsYXRpdmVcbn07XG5cbmNvbnN0IGFjdGl2ZVRhYlN0eWxlID0ge1xuICBjb2xvcjogJ2hzbCgyMzJkZWcgMTYlIDE1JSknLCAvLyBBZGp1c3RlZCBjb2xvciBmb3IgYWN0aXZlIHRhYlxufTtcblxuY29uc3QgdGFiQmVmb3JlU3R5bGUgPSB7XG4gIGNvbnRlbnQ6ICdcIlwiJyxcbiAgekluZGV4OiAtMSxcbiAgd2lkdGg6ICcxMDAlJywgLy8gQWRqdXN0ZWQgd2lkdGggdG8gY292ZXIgdGhlIHdob2xlIHRhYlxuICBoZWlnaHQ6ICc1cHgnLCAvLyBBZGp1c3RlZCBoZWlnaHRcbiAgYm9yZGVyUmFkaXVzOiAnNnB0IDZwdCAwIDAnLCAvLyBBZGp1c3RlZCBib3JkZXItcmFkaXVzXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB0cmFuc2Zvcm06ICdzY2FsZSgwKScsXG4gIHRyYW5zaXRpb246ICdiYWNrZ3JvdW5kLWNvbG9yIHZhcigtLWR1cmF0aW9uKSwgdHJhbnNmb3JtIHZhcigtLWR1cmF0aW9uKScsXG4gIGJvdHRvbTogMCwgLy8gQWxpZ24gdG8gdGhlIGJvdHRvbVxuICBsZWZ0OiAwLCAvLyBBbGlnbiB0byB0aGUgbGVmdFxufTtcblxuY29uc3QgYWN0aXZlVGFiQmVmb3JlU3R5bGUgPSB7XG4gIHRyYW5zZm9ybTogJ3NjYWxlKDEpJyxcbiAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tYWNjZW50LWNvbG9yKScsXG59O1xuXG5jb25zdCBUYWJiZWRDb21wb25lbnQgPSAoeyBhY3RpdmVUYWIgfSkgPT4ge1xuICBjb25zdCBbYWN0aXZlSW5kZXgsIHNldEFjdGl2ZUluZGV4XSA9IHVzZVN0YXRlKGFjdGl2ZVRhYik7XG4gIGNvbnN0IHRhYnMgPSBbJ0RhdGEgRGlzdHJpYnV0aW9uJywgJ1BDQScsICd0U05FJywgJ1JhbmRvbSBGb3Jlc3QnXTtcbiAgY29uc3QgdGFiTGlua3MgPSBbJ2RhdGEtZGlzdHJpYnV0aW9uJywgXG4gICdkaW1lbnNpb24tcmVkdWN0aW9uL3BjYScsIFxuICAnZGltZW5zaW9uLXJlZHVjdGlvbi90c25lJywgJ21sL3JmJ107XG4gIGNvbnN0IGhhbmRsZVRhYkNsaWNrID0gKGluZGV4KSA9PiB7XG4gICAgc2V0QWN0aXZlSW5kZXgoaW5kZXgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBzdHlsZT17Y29udGFpbmVyU3R5bGV9PlxuICAgICAge3RhYnMubWFwKCh0YWIsIGluZGV4KSA9PiAoXG4gICAgICAgIDxMaW5rIHN0eWxlPXt7IHRleHREZWNvcmF0aW9uOiAnbm9uZScgfX0gaHJlZj17YC90b29scy8ke3RhYkxpbmtzW2luZGV4XX1gfSBrZXk9e2luZGV4fSBwYXNzSHJlZj5cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVUYWJDbGljayhpbmRleCl9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi50YWJTdHlsZSxcbiAgICAgICAgICAgICAgLi4uKGluZGV4ID09PSBhY3RpdmVJbmRleCA/IGFjdGl2ZVRhYlN0eWxlIDoge30pLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGFifVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIC4uLnRhYkJlZm9yZVN0eWxlLFxuICAgICAgICAgICAgICAgIC4uLihpbmRleCA9PT0gYWN0aXZlSW5kZXggPyBhY3RpdmVUYWJCZWZvcmVTdHlsZSA6IHt9KSxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9MaW5rPlxuICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJiZWRDb21wb25lbnQ7XG4iXSwibmFtZXMiOlsidXNlU3RhdGUiLCJMaW5rIiwiY29udGFpbmVyU3R5bGUiLCJtYXJnaW4iLCJkaXNwbGF5Iiwid2lkdGgiLCJmb250U2l6ZSIsImp1c3RpZnlDb250ZW50IiwiYmFja2dyb3VuZENvbG9yIiwidGFiU3R5bGUiLCJhbGwiLCJmbGV4R3JvdyIsInpJbmRleCIsImN1cnNvciIsInBvc2l0aW9uIiwiYm9yZGVyUmFkaXVzIiwiYWxpZ25JdGVtcyIsIndpbGxDaGFuZ2UiLCJwYWRkaW5nIiwidHJhbnNpdGlvbiIsImNvbG9yIiwiYWN0aXZlVGFiU3R5bGUiLCJ0YWJCZWZvcmVTdHlsZSIsImNvbnRlbnQiLCJoZWlnaHQiLCJ0cmFuc2Zvcm0iLCJib3R0b20iLCJsZWZ0IiwiYWN0aXZlVGFiQmVmb3JlU3R5bGUiLCJUYWJiZWRDb21wb25lbnQiLCJhY3RpdmVUYWIiLCJhY3RpdmVJbmRleCIsInNldEFjdGl2ZUluZGV4IiwidGFicyIsInRhYkxpbmtzIiwiaGFuZGxlVGFiQ2xpY2siLCJpbmRleCIsImRpdiIsInN0eWxlIiwibWFwIiwidGFiIiwidGV4dERlY29yYXRpb24iLCJocmVmIiwicGFzc0hyZWYiLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./components/Tabbed.js\n"); + +/***/ }), + +/***/ "./components/ThemeSwitcher.js": +/*!*************************************!*\ + !*** ./components/ThemeSwitcher.js ***! + \*************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ ThemeSwitcher)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Themes__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Themes */ \"./components/Themes.js\");\n\n\n\nfunction ThemeSwitcher() {\n const [theme, setTheme] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"light\");\n const [checked, setChecked] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const savedTheme = localStorage.getItem(\"theme\");\n if (savedTheme) {\n setTheme(savedTheme);\n setChecked((theme)=>theme === \"dark\");\n }\n }, []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"label\", {\n className: \"theme-switcher\",\n htmlFor: \"themeswitch\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"background\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 19,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n type: \"checkbox\",\n id: \"themeswitch\",\n checked: checked,\n onChange: ()=>{\n setChecked((prevCheck)=>!prevCheck);\n setTheme((theme)=>theme === \"dark\" ? \"light\" : \"dark\");\n localStorage.setItem(\"theme\", (theme)=>theme === \"dark\" ? \"light\" : \"dark\");\n }\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 20,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"switch\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n alt: \"theme switch to dark\",\n className: \"moon\",\n src: \"/sar-in-browser/moon.png\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 32,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n alt: \"theme switch to light\",\n className: \"sun\",\n src: \"/sar-in-browser/sun.png\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 33,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 31,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_Themes__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n theme: theme\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 36,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/ThemeSwitcher.js\",\n lineNumber: 17,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RoZW1lU3dpdGNoZXIuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUE0QztBQUNkO0FBRWYsU0FBU0c7SUFDcEIsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdKLCtDQUFRQSxDQUFDO0lBQ25DLE1BQU0sQ0FBQ0ssU0FBU0MsV0FBVyxHQUFHTiwrQ0FBUUEsQ0FBQztJQUV2Q0QsZ0RBQVNBLENBQUM7UUFDTixNQUFNUSxhQUFhQyxhQUFhQyxPQUFPLENBQUM7UUFDeEMsSUFBSUYsWUFBWTtZQUNaSCxTQUFTRztZQUNURCxXQUFXLENBQUNILFFBQVdBLFVBQVU7UUFDckM7SUFDSixHQUFHLEVBQUU7SUFFTCxxQkFDSSw4REFBQ087OzBCQUNHLDhEQUFDQztnQkFBTUMsV0FBVTtnQkFBaUJDLFNBQVE7O2tDQUN0Qyw4REFBQ0g7d0JBQUlFLFdBQVU7Ozs7OztrQ0FDZiw4REFBQ0U7d0JBQ0dDLE1BQUs7d0JBQ0xDLElBQUc7d0JBQ0hYLFNBQVNBO3dCQUNUWSxVQUFVOzRCQUNOWCxXQUFXLENBQUNZLFlBQWMsQ0FBQ0E7NEJBQzNCZCxTQUFTLENBQUNELFFBQVdBLFVBQVUsU0FBUyxVQUFVOzRCQUNsREssYUFBYVcsT0FBTyxDQUFDLFNBQVMsQ0FBQ2hCLFFBQVdBLFVBQVUsU0FBUyxVQUFVO3dCQUMzRTs7Ozs7O2tDQUdKLDhEQUFDTzt3QkFBSUUsV0FBVTs7MENBQ1gsOERBQUNRO2dDQUFJQyxLQUFJO2dDQUF1QlQsV0FBVTtnQ0FBT1UsS0FBSTs7Ozs7OzBDQUNyRCw4REFBQ0Y7Z0NBQUlDLEtBQUk7Z0NBQXdCVCxXQUFVO2dDQUFNVSxLQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBRzdELDhEQUFDckIsK0NBQU1BO2dCQUFDRSxPQUFTQTs7Ozs7Ozs7Ozs7O0FBRzdCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9jb21wb25lbnRzL1RoZW1lU3dpdGNoZXIuanM/YzgxYSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVGhlbWVzIGZyb20gJy4vVGhlbWVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGhlbWVTd2l0Y2hlcigpIHtcbiAgICBjb25zdCBbdGhlbWUsIHNldFRoZW1lXSA9IHVzZVN0YXRlKCdsaWdodCcpO1xuICAgIGNvbnN0IFtjaGVja2VkLCBzZXRDaGVja2VkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHNhdmVkVGhlbWUgPSBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgndGhlbWUnKTtcbiAgICAgICAgaWYgKHNhdmVkVGhlbWUpIHtcbiAgICAgICAgICAgIHNldFRoZW1lKHNhdmVkVGhlbWUpXG4gICAgICAgICAgICBzZXRDaGVja2VkKCh0aGVtZSkgPT4gKHRoZW1lID09PSAnZGFyaycpKVxuICAgICAgICB9IFxuICAgIH0sIFtdKVxuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzc05hbWU9XCJ0aGVtZS1zd2l0Y2hlclwiIGh0bWxGb3I9XCJ0aGVtZXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmFja2dyb3VuZFwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICBpZD1cInRoZW1lc3dpdGNoXCJcbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENoZWNrZWQoKHByZXZDaGVjaykgPT4gIXByZXZDaGVjayk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUaGVtZSgodGhlbWUpID0+ICh0aGVtZSA9PT0gJ2RhcmsnID8gJ2xpZ2h0JyA6ICdkYXJrJykpXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgndGhlbWUnLCAodGhlbWUpID0+ICh0aGVtZSA9PT0gJ2RhcmsnID8gJ2xpZ2h0JyA6ICdkYXJrJykpXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwidGhlbWUgc3dpdGNoIHRvIGRhcmtcIiBjbGFzc05hbWU9XCJtb29uXCIgc3JjPVwiL3Nhci1pbi1icm93c2VyL21vb24ucG5nXCI+PC9pbWc+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgYWx0PVwidGhlbWUgc3dpdGNoIHRvIGxpZ2h0XCIgY2xhc3NOYW1lPVwic3VuXCIgc3JjPVwiL3Nhci1pbi1icm93c2VyL3N1bi5wbmdcIj48L2ltZz5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8VGhlbWVzIHRoZW1lID0ge3RoZW1lfS8+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJUaGVtZXMiLCJUaGVtZVN3aXRjaGVyIiwidGhlbWUiLCJzZXRUaGVtZSIsImNoZWNrZWQiLCJzZXRDaGVja2VkIiwic2F2ZWRUaGVtZSIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJkaXYiLCJsYWJlbCIsImNsYXNzTmFtZSIsImh0bWxGb3IiLCJpbnB1dCIsInR5cGUiLCJpZCIsIm9uQ2hhbmdlIiwicHJldkNoZWNrIiwic2V0SXRlbSIsImltZyIsImFsdCIsInNyYyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./components/ThemeSwitcher.js\n"); + +/***/ }), + +/***/ "./components/Themes.js": +/*!******************************!*\ + !*** ./components/Themes.js ***! + \******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ Theme)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var styled_jsx_style__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-jsx/style */ \"styled-jsx/style\");\n/* harmony import */ var styled_jsx_style__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(styled_jsx_style__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst DarkTheme = ()=>{\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((styled_jsx_style__WEBPACK_IMPORTED_MODULE_1___default()), {\n id: \"1871ac38d507d240\",\n children: \":root{--background-color:#34495e;--secondary-color:#2c3e50;--text-color:#ecf0f1;--accent-color:#3498db;--box-shadow-color:rgba(0, 0, 0, 0.1);--border-color:#95a5a6;--input-back:#555;--input-color:#fbec48;--darker-secondary-accent-color:#004080}}\\n \"\n }, void 0, false, void 0, undefined);\n};\nconst LightTheme = ()=>{\n return (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((styled_jsx_style__WEBPACK_IMPORTED_MODULE_1___default()), {\n id: \"a681064a64782189\",\n children: \":root{--background-color:#f0f0f0;--secondary-color:#fff;--text-color:#333;--accent-color:#3498db;--box-shadow-color:rgba(0, 0, 0, 0.1);--border-color:#ccc;--input-back:#4b4a4a;--input-color:#294797;--darker-secondary-accent-color:#004080}\"\n }, void 0, false, void 0, undefined);\n};\nfunction Theme({ theme }) {\n if (theme == \"dark\") {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DarkTheme, {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Themes.js\",\n lineNumber: 50,\n columnNumber: 16\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(LightTheme, {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/components/Themes.js\",\n lineNumber: 52,\n columnNumber: 12\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb21wb25lbnRzL1RoZW1lcy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQ0EsTUFBTUEsWUFBWTtJQUNkLE9BQU8sOERBQUM7Ozs7QUFxQlo7QUFFQSxNQUFNQyxhQUFhO0lBQ2YsT0FBTyw4REFBQzs7OztBQW1CWjtBQUVlLFNBQVNDLE1BQU0sRUFBRUMsS0FBSyxFQUFFO0lBQ25DLElBQUlBLFNBQVMsUUFBUTtRQUNqQixxQkFBTyw4REFBQ0g7Ozs7O0lBQ1o7SUFDQSxxQkFBTyw4REFBQ0M7Ozs7O0FBQ1oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbXBvbmVudHMvVGhlbWVzLmpzPzNmYjkiXSwic291cmNlc0NvbnRlbnQiOlsiXG5jb25zdCBEYXJrVGhlbWUgPSAoKSA9PiB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPHN0eWxlIGpzeCBnbG9iYWw+XG4gICAgICAgICAgICB7YFxuOnJvb3Qge1xuICAgIC0tYmFja2dyb3VuZC1jb2xvcjogIzM0NDk1ZTsgLyogU2xpZ2h0bHkgbGlnaHRlciBkYXJrIGJhY2tncm91bmQgY29sb3IgKi9cbiAgICAtLXNlY29uZGFyeS1jb2xvcjogIzJjM2U1MDsgLyogRGFyayBzZWNvbmRhcnkgY29sb3IsIHNsaWdodGx5IGRhcmtlciB0aGFuIGJhY2tncm91bmQgKi9cbiAgICAtLXRleHQtY29sb3I6ICNlY2YwZjE7IC8qIExpZ2h0IHRleHQgY29sb3IgKi9cbiAgICAtLWFjY2VudC1jb2xvcjogIzM0OThkYjsgLyogQmx1ZSBhY2NlbnQgY29sb3IgKi9cbiAgICAtLWJveC1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAtLWJvcmRlci1jb2xvcjogIzk1YTVhNjsgLyogTGlnaHQgYm9yZGVyIGNvbG9yICovXG5cbiAgICAtLWlucHV0LWJhY2s6ICM1NTU7IC8qIERhcmtlciBncmF5IGZvciBpbnB1dCBiYWNrZ3JvdW5kICovXG4gICAgLS1pbnB1dC1jb2xvcjogI2ZiZWM0ODsgLyogWWVsbG93IGZvciBpbnB1dCB0ZXh0ICovXG5cbiAgICAtLWRhcmtlci1zZWNvbmRhcnktYWNjZW50LWNvbG9yOiAjMDA0MDgwO1xufVxuXG4gICAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgICA8L3N0eWxlPlxuICAgICk7XG59O1xuXG5jb25zdCBMaWdodFRoZW1lID0gKCkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxzdHlsZSBqc3ggZ2xvYmFsPlxuICAgICAgICAgICAge2BcbiAgICAgICAgIDpyb290IHtcbiAgICAgICAgICAgIC0tYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbiAgICAgICAgICAgIC0tc2Vjb25kYXJ5LWNvbG9yOiAjZmZmO1xuICAgICAgICAgICAgLS10ZXh0LWNvbG9yOiAjMzMzO1xuICAgICAgICAgICAgLS1hY2NlbnQtY29sb3I6ICMzNDk4ZGI7XG4gICAgICAgICAgICAtLWJveC1zaGFkb3ctY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICAgICAgICAgIC0tYm9yZGVyLWNvbG9yOiAjY2NjO1xuICAgICAgICBcbiAgICAgICAgICAgIC0taW5wdXQtYmFjazogIzRiNGE0YTtcbiAgICAgICAgICAgIC0taW5wdXQtY29sb3I6ICMyOTQ3OTc7XG5cbiAgICAgICAgICAgIC0tZGFya2VyLXNlY29uZGFyeS1hY2NlbnQtY29sb3I6ICMwMDQwODA7XG4gICAgICAgIH1cbiAgICAgICAgYH1cbiAgICAgICAgPC9zdHlsZT5cbiAgICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gVGhlbWUoeyB0aGVtZSB9KSB7XG4gICAgaWYgKHRoZW1lID09IFwiZGFya1wiKSB7XG4gICAgICAgIHJldHVybiA8RGFya1RoZW1lIC8+O1xuICAgIH1cbiAgICByZXR1cm4gPExpZ2h0VGhlbWUgLz47XG59XG4iXSwibmFtZXMiOlsiRGFya1RoZW1lIiwiTGlnaHRUaGVtZSIsIlRoZW1lIiwidGhlbWUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./components/Themes.js\n"); + +/***/ }), + +/***/ "./context/LigandContext.js": +/*!**********************************!*\ + !*** ./context/LigandContext.js ***! + \**********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ LigandProvider: () => (/* binding */ LigandProvider),\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\nconst LigandContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)({\n ligand: [],\n setLigand: ()=>{}\n});\nfunction LigandProvider({ children }) {\n const [ligand, setLigand] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(LigandContext.Provider, {\n value: {\n ligand: ligand,\n setLigand: setLigand\n },\n children: children\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/context/LigandContext.js\",\n lineNumber: 13,\n columnNumber: 9\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LigandContext);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9jb250ZXh0L0xpZ2FuZENvbnRleHQuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFrRTtBQUVsRSxNQUFNSSw4QkFBZ0JILG9EQUFhQSxDQUFDO0lBQ2hDSSxRQUFRLEVBQUU7SUFDVkMsV0FBVyxLQUFPO0FBQ3RCO0FBRU8sU0FBU0MsZUFBZSxFQUFFQyxRQUFRLEVBQUU7SUFDdkMsTUFBTSxDQUFDSCxRQUFRQyxVQUFVLEdBQUdILCtDQUFRQSxDQUFDLEVBQUU7SUFHdkMscUJBQ0ksOERBQUNDLGNBQWNLLFFBQVE7UUFBQ0MsT0FBTztZQUFFTCxRQUFRQTtZQUFRQyxXQUFXQTtRQUFVO2tCQUNqRUU7Ozs7OztBQUdiO0FBRUEsaUVBQWVKLGFBQWFBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL2NvbnRleHQvTGlnYW5kQ29udGV4dC5qcz8wMTAwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuXG5jb25zdCBMaWdhbmRDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gICAgbGlnYW5kOiBbXSxcbiAgICBzZXRMaWdhbmQ6ICgpID0+IHt9LFxufSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBMaWdhbmRQcm92aWRlcih7IGNoaWxkcmVuIH0pIHtcbiAgICBjb25zdCBbbGlnYW5kLCBzZXRMaWdhbmRdID0gdXNlU3RhdGUoW10pO1xuXG4gICAgXG4gICAgcmV0dXJuIChcbiAgICAgICAgPExpZ2FuZENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3sgbGlnYW5kOiBsaWdhbmQsIHNldExpZ2FuZDogc2V0TGlnYW5kIH19PlxuICAgICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L0xpZ2FuZENvbnRleHQuUHJvdmlkZXI+XG4gICAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTGlnYW5kQ29udGV4dDtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsImNyZWF0ZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkxpZ2FuZENvbnRleHQiLCJsaWdhbmQiLCJzZXRMaWdhbmQiLCJMaWdhbmRQcm92aWRlciIsImNoaWxkcmVuIiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./context/LigandContext.js\n"); + +/***/ }), + +/***/ "./pages/_app.js": +/*!***********************!*\ + !*** ./pages/_app.js ***! + \***********************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _styles_index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../styles/index.css */ \"./styles/index.css\");\n/* harmony import */ var _styles_index_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_styles_index_css__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _context_LigandContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../context/LigandContext */ \"./context/LigandContext.js\");\n/* harmony import */ var _components_Navbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../components/Navbar */ \"./components/Navbar.js\");\n\n\n\n\nfunction MyApp({ Component, pageProps }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_LigandContext__WEBPACK_IMPORTED_MODULE_2__.LigandProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Navbar__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/_app.js\",\n lineNumber: 10,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Component, {\n ...pageProps\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/_app.js\",\n lineNumber: 11,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/_app.js\",\n lineNumber: 9,\n columnNumber: 5\n }, this);\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyApp);\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy9fYXBwLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQTZCO0FBQzRCO0FBQ2hCO0FBRXpDLFNBQVNFLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxTQUFTLEVBQUU7SUFHckMscUJBQ0UsOERBQUNKLGtFQUFjQTs7MEJBQ1gsOERBQUNDLDBEQUFNQTs7Ozs7MEJBQ1AsOERBQUNFO2dCQUFXLEdBQUdDLFNBQVM7Ozs7Ozs7Ozs7OztBQUdoQztBQUVBLGlFQUFlRixLQUFLQSxFQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9wYWdlcy9fYXBwLmpzP2UwYWQiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICcuLi9zdHlsZXMvaW5kZXguY3NzJztcbmltcG9ydCB7IExpZ2FuZFByb3ZpZGVyIH0gZnJvbSAnLi4vY29udGV4dC9MaWdhbmRDb250ZXh0J1xuaW1wb3J0IE5hdmJhciBmcm9tICcuLi9jb21wb25lbnRzL05hdmJhcidcblxuZnVuY3Rpb24gTXlBcHAoeyBDb21wb25lbnQsIHBhZ2VQcm9wcyB9KSB7XG5cblxuICByZXR1cm4gKFxuICAgIDxMaWdhbmRQcm92aWRlcj5cbiAgICAgICAgPE5hdmJhciAvPlxuICAgICAgICA8Q29tcG9uZW50IHsuLi5wYWdlUHJvcHN9IC8+XG4gICAgPC9MaWdhbmRQcm92aWRlcj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTXlBcHA7XG4iXSwibmFtZXMiOlsiTGlnYW5kUHJvdmlkZXIiLCJOYXZiYXIiLCJNeUFwcCIsIkNvbXBvbmVudCIsInBhZ2VQcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/_app.js\n"); + +/***/ }), + +/***/ "./pages/tools/dimension-reduction/tsne.js": +/*!*************************************************!*\ + !*** ./pages/tools/dimension-reduction/tsne.js ***! + \*************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DataDistribution)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"react/jsx-dev-runtime\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dynamic */ \"./node_modules/next/dynamic.js\");\n/* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(next_dynamic__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/head */ \"next/head\");\n/* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_head__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _components_Tabbed__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../components/Tabbed */ \"./components/Tabbed.js\");\n\n\n\n\nconst TSNEPlot = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(()=>__webpack_require__.e(/*! import() */ \"components_tSNE_Plot_js\").then(__webpack_require__.bind(__webpack_require__, /*! ../../../components/tSNE_Plot */ \"./components/tSNE_Plot.js\")), {\n loadableGenerated: {\n modules: [\n \"tools/dimension-reduction/tsne.js -> \" + \"../../../components/tSNE_Plot\"\n ]\n },\n ssr: false\n});\nfunction DataDistribution() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)((next_head__WEBPACK_IMPORTED_MODULE_2___default()), {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"title\", {\n children: \"Data Distribution\"\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/tsne.js\",\n lineNumber: 14,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/tsne.js\",\n lineNumber: 13,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_Tabbed__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n activeTab: 2\n }, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/tsne.js\",\n lineNumber: 16,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(TSNEPlot, {}, void 0, false, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/tsne.js\",\n lineNumber: 17,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/syedzayyanmasud/Desktop/prog/qsar_js/pages/tools/dimension-reduction/tsne.js\",\n lineNumber: 12,\n columnNumber: 9\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9wYWdlcy90b29scy9kaW1lbnNpb24tcmVkdWN0aW9uL3RzbmUuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQW1DO0FBQ1A7QUFDNkI7QUFFekQsTUFBTUcsV0FBV0gsbURBQU9BLENBQ3BCLElBQU0sc0xBQU87Ozs7OztJQUNYSSxLQUFLOztBQUdJLFNBQVNDO0lBQ3BCLHFCQUNJLDhEQUFDQzs7MEJBQ0csOERBQUNMLGtEQUFJQTswQkFDRCw0RUFBQ007OEJBQU07Ozs7Ozs7Ozs7OzBCQUVYLDhEQUFDTCwwREFBZUE7Z0JBQUNNLFdBQVc7Ozs7OzswQkFDNUIsOERBQUNMOzs7Ozs7Ozs7OztBQUdiIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9wYWdlcy90b29scy9kaW1lbnNpb24tcmVkdWN0aW9uL3RzbmUuanM/ZWZhZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZHluYW1pYyBmcm9tICduZXh0L2R5bmFtaWMnO1xuaW1wb3J0IEhlYWQgZnJvbSAnbmV4dC9oZWFkJ1xuaW1wb3J0IFRhYmJlZENvbXBvbmVudCBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL1RhYmJlZCc7XG5cbmNvbnN0IFRTTkVQbG90ID0gZHluYW1pYyhcbiAgICAoKSA9PiBpbXBvcnQoJy4uLy4uLy4uL2NvbXBvbmVudHMvdFNORV9QbG90JyksXG4gICAgeyBzc3I6IGZhbHNlIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERhdGFEaXN0cmlidXRpb24oKSB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxIZWFkPlxuICAgICAgICAgICAgICAgIDx0aXRsZT5EYXRhIERpc3RyaWJ1dGlvbjwvdGl0bGU+XG4gICAgICAgICAgICA8L0hlYWQ+XG4gICAgICAgICAgICA8VGFiYmVkQ29tcG9uZW50IGFjdGl2ZVRhYj17Mn0vPlxuICAgICAgICAgICAgPFRTTkVQbG90IC8+XG4gICAgICAgIDwvZGl2PlxuICAgIClcbn0iXSwibmFtZXMiOlsiZHluYW1pYyIsIkhlYWQiLCJUYWJiZWRDb21wb25lbnQiLCJUU05FUGxvdCIsInNzciIsIkRhdGFEaXN0cmlidXRpb24iLCJkaXYiLCJ0aXRsZSIsImFjdGl2ZVRhYiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./pages/tools/dimension-reduction/tsne.js\n"); + +/***/ }), + +/***/ "./styles/index.css": +/*!**************************!*\ + !*** ./styles/index.css ***! + \**************************/ +/***/ (() => { + + + +/***/ }), + +/***/ "next/dist/compiled/next-server/pages.runtime.dev.js": +/*!**********************************************************************!*\ + !*** external "next/dist/compiled/next-server/pages.runtime.dev.js" ***! + \**********************************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/dist/compiled/next-server/pages.runtime.dev.js"); + +/***/ }), + +/***/ "next/head": +/*!****************************!*\ + !*** external "next/head" ***! + \****************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("next/head"); + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "react" ***! + \************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("react"); + +/***/ }), + +/***/ "react/jsx-dev-runtime": +/*!****************************************!*\ + !*** external "react/jsx-dev-runtime" ***! + \****************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("react/jsx-dev-runtime"); + +/***/ }), + +/***/ "styled-jsx/style": +/*!***********************************!*\ + !*** external "styled-jsx/style" ***! + \***********************************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("styled-jsx/style"); + +/***/ }), + +/***/ "d3": +/*!*********************!*\ + !*** external "d3" ***! + \*********************/ +/***/ ((module) => { + +"use strict"; +module.exports = import("d3");; + +/***/ }), + +/***/ "d3-scale-chromatic": +/*!*************************************!*\ + !*** external "d3-scale-chromatic" ***! + \*************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = import("d3-scale-chromatic");; + +/***/ }), + +/***/ "path": +/*!***********************!*\ + !*** external "path" ***! + \***********************/ +/***/ ((module) => { + +"use strict"; +module.exports = require("path"); + +/***/ }) + +}; +; + +// load runtime +var __webpack_require__ = require("../../../webpack-runtime.js"); +__webpack_require__.C(exports); +var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) +var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc"], () => (__webpack_exec__("./node_modules/next/dist/build/webpack/loaders/next-route-loader/index.js?kind=PAGES&page=%2Ftools%2Fdimension-reduction%2Ftsne&preferredRegion=&absolutePagePath=.%2Fpages%2Ftools%2Fdimension-reduction%2Ftsne.js&absoluteAppPath=private-next-pages%2F_app&absoluteDocumentPath=private-next-pages%2F_document&middlewareConfigBase64=e30%3D!"))); +module.exports = __webpack_exports__; + +})(); \ No newline at end of file diff --git a/.next/server/vendor-chunks/next.js b/.next/server/vendor-chunks/next.js index c50197d..185b198 100644 --- a/.next/server/vendor-chunks/next.js +++ b/.next/server/vendor-chunks/next.js @@ -43,17 +43,6 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), -/***/ "./node_modules/next/dist/client/components/app-router-headers.js": -/*!************************************************************************!*\ - !*** ./node_modules/next/dist/client/components/app-router-headers.js ***! - \************************************************************************/ -/***/ ((module, exports) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n RSC: function() {\n return RSC;\n },\n ACTION: function() {\n return ACTION;\n },\n NEXT_ROUTER_STATE_TREE: function() {\n return NEXT_ROUTER_STATE_TREE;\n },\n NEXT_ROUTER_PREFETCH: function() {\n return NEXT_ROUTER_PREFETCH;\n },\n NEXT_URL: function() {\n return NEXT_URL;\n },\n RSC_CONTENT_TYPE_HEADER: function() {\n return RSC_CONTENT_TYPE_HEADER;\n },\n RSC_VARY_HEADER: function() {\n return RSC_VARY_HEADER;\n },\n FLIGHT_PARAMETERS: function() {\n return FLIGHT_PARAMETERS;\n },\n NEXT_RSC_UNION_QUERY: function() {\n return NEXT_RSC_UNION_QUERY;\n }\n});\nconst RSC = \"RSC\";\nconst ACTION = \"Next-Action\";\nconst NEXT_ROUTER_STATE_TREE = \"Next-Router-State-Tree\";\nconst NEXT_ROUTER_PREFETCH = \"Next-Router-Prefetch\";\nconst NEXT_URL = \"Next-Url\";\nconst RSC_CONTENT_TYPE_HEADER = \"text/x-component\";\nconst RSC_VARY_HEADER = RSC + \", \" + NEXT_ROUTER_STATE_TREE + \", \" + NEXT_ROUTER_PREFETCH + \", \" + NEXT_URL;\nconst FLIGHT_PARAMETERS = [\n [\n RSC\n ],\n [\n NEXT_ROUTER_STATE_TREE\n ],\n [\n NEXT_ROUTER_PREFETCH\n ]\n];\nconst NEXT_RSC_UNION_QUERY = \"_rsc\";\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=app-router-headers.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQVVOO0FBQ0EsU0FBU1UsUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSWhCLE9BQU9DLGNBQWMsQ0FBQ2MsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRWixTQUFTO0lBQ2JHLEtBQUs7UUFDRCxPQUFPQTtJQUNYO0lBQ0FDLFFBQVE7UUFDSixPQUFPQTtJQUNYO0lBQ0FDLHdCQUF3QjtRQUNwQixPQUFPQTtJQUNYO0lBQ0FDLHNCQUFzQjtRQUNsQixPQUFPQTtJQUNYO0lBQ0FDLFVBQVU7UUFDTixPQUFPQTtJQUNYO0lBQ0FDLHlCQUF5QjtRQUNyQixPQUFPQTtJQUNYO0lBQ0FDLGlCQUFpQjtRQUNiLE9BQU9BO0lBQ1g7SUFDQUMsbUJBQW1CO1FBQ2YsT0FBT0E7SUFDWDtJQUNBQyxzQkFBc0I7UUFDbEIsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTVIsTUFBTTtBQUNaLE1BQU1DLFNBQVM7QUFDZixNQUFNQyx5QkFBeUI7QUFDL0IsTUFBTUMsdUJBQXVCO0FBQzdCLE1BQU1DLFdBQVc7QUFDakIsTUFBTUMsMEJBQTBCO0FBQ2hDLE1BQU1DLGtCQUFrQk4sTUFBTSxPQUFPRSx5QkFBeUIsT0FBT0MsdUJBQXVCLE9BQU9DO0FBQ25HLE1BQU1HLG9CQUFvQjtJQUN0QjtRQUNJUDtLQUNIO0lBQ0Q7UUFDSUU7S0FDSDtJQUNEO1FBQ0lDO0tBQ0g7Q0FDSjtBQUNELE1BQU1LLHVCQUF1QjtBQUU3QixJQUFJLENBQUMsT0FBT1gsUUFBUWtCLE9BQU8sS0FBSyxjQUFlLE9BQU9sQixRQUFRa0IsT0FBTyxLQUFLLFlBQVlsQixRQUFRa0IsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPbEIsUUFBUWtCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktyQixPQUFPQyxjQUFjLENBQUNDLFFBQVFrQixPQUFPLEVBQUUsY0FBYztRQUFFakIsT0FBTztJQUFLO0lBQ25FSCxPQUFPc0IsTUFBTSxDQUFDcEIsUUFBUWtCLE9BQU8sRUFBRWxCO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVFrQixPQUFPO0FBQ2xDLEVBRUEsOENBQThDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXItaGVhZGVycy5qcz8zNTZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgUlNDOiBudWxsLFxuICAgIEFDVElPTjogbnVsbCxcbiAgICBORVhUX1JPVVRFUl9TVEFURV9UUkVFOiBudWxsLFxuICAgIE5FWFRfUk9VVEVSX1BSRUZFVENIOiBudWxsLFxuICAgIE5FWFRfVVJMOiBudWxsLFxuICAgIFJTQ19DT05URU5UX1RZUEVfSEVBREVSOiBudWxsLFxuICAgIFJTQ19WQVJZX0hFQURFUjogbnVsbCxcbiAgICBGTElHSFRfUEFSQU1FVEVSUzogbnVsbCxcbiAgICBORVhUX1JTQ19VTklPTl9RVUVSWTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBSU0M6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gUlNDO1xuICAgIH0sXG4gICAgQUNUSU9OOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIEFDVElPTjtcbiAgICB9LFxuICAgIE5FWFRfUk9VVEVSX1NUQVRFX1RSRUU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9ST1VURVJfU1RBVEVfVFJFRTtcbiAgICB9LFxuICAgIE5FWFRfUk9VVEVSX1BSRUZFVENIOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUk9VVEVSX1BSRUZFVENIO1xuICAgIH0sXG4gICAgTkVYVF9VUkw6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gTkVYVF9VUkw7XG4gICAgfSxcbiAgICBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUjtcbiAgICB9LFxuICAgIFJTQ19WQVJZX0hFQURFUjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBSU0NfVkFSWV9IRUFERVI7XG4gICAgfSxcbiAgICBGTElHSFRfUEFSQU1FVEVSUzogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBGTElHSFRfUEFSQU1FVEVSUztcbiAgICB9LFxuICAgIE5FWFRfUlNDX1VOSU9OX1FVRVJZOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfUlNDX1VOSU9OX1FVRVJZO1xuICAgIH1cbn0pO1xuY29uc3QgUlNDID0gXCJSU0NcIjtcbmNvbnN0IEFDVElPTiA9IFwiTmV4dC1BY3Rpb25cIjtcbmNvbnN0IE5FWFRfUk9VVEVSX1NUQVRFX1RSRUUgPSBcIk5leHQtUm91dGVyLVN0YXRlLVRyZWVcIjtcbmNvbnN0IE5FWFRfUk9VVEVSX1BSRUZFVENIID0gXCJOZXh0LVJvdXRlci1QcmVmZXRjaFwiO1xuY29uc3QgTkVYVF9VUkwgPSBcIk5leHQtVXJsXCI7XG5jb25zdCBSU0NfQ09OVEVOVF9UWVBFX0hFQURFUiA9IFwidGV4dC94LWNvbXBvbmVudFwiO1xuY29uc3QgUlNDX1ZBUllfSEVBREVSID0gUlNDICsgXCIsIFwiICsgTkVYVF9ST1VURVJfU1RBVEVfVFJFRSArIFwiLCBcIiArIE5FWFRfUk9VVEVSX1BSRUZFVENIICsgXCIsIFwiICsgTkVYVF9VUkw7XG5jb25zdCBGTElHSFRfUEFSQU1FVEVSUyA9IFtcbiAgICBbXG4gICAgICAgIFJTQ1xuICAgIF0sXG4gICAgW1xuICAgICAgICBORVhUX1JPVVRFUl9TVEFURV9UUkVFXG4gICAgXSxcbiAgICBbXG4gICAgICAgIE5FWFRfUk9VVEVSX1BSRUZFVENIXG4gICAgXVxuXTtcbmNvbnN0IE5FWFRfUlNDX1VOSU9OX1FVRVJZID0gXCJfcnNjXCI7XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWFwcC1yb3V0ZXItaGVhZGVycy5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJSU0MiLCJBQ1RJT04iLCJORVhUX1JPVVRFUl9TVEFURV9UUkVFIiwiTkVYVF9ST1VURVJfUFJFRkVUQ0giLCJORVhUX1VSTCIsIlJTQ19DT05URU5UX1RZUEVfSEVBREVSIiwiUlNDX1ZBUllfSEVBREVSIiwiRkxJR0hUX1BBUkFNRVRFUlMiLCJORVhUX1JTQ19VTklPTl9RVUVSWSIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/components/app-router-headers.js\n"); - -/***/ }), - /***/ "./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js": /*!*****************************************************************************************!*\ !*** ./node_modules/next/dist/client/components/router-reducer/router-reducer-types.js ***! @@ -65,17 +54,6 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), -/***/ "./node_modules/next/dist/client/detect-domain-locale.js": -/*!***************************************************************!*\ - !*** ./node_modules/next/dist/client/detect-domain-locale.js ***! - \***************************************************************/ -/***/ ((module, exports) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"detectDomainLocale\", ({\n enumerable: true,\n get: function() {\n return detectDomainLocale;\n }\n}));\nconst detectDomainLocale = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n if (false) {}\n};\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=detect-domain-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9kZXRlY3QtZG9tYWluLWxvY2FsZS5qcyIsIm1hcHBpbmdzIjoiQUFBYTtBQUNiQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRkgsc0RBQXFEO0lBQ2pESSxZQUFZO0lBQ1pDLEtBQUs7UUFDRCxPQUFPQztJQUNYO0FBQ0osQ0FBQyxFQUFDO0FBQ0YsTUFBTUEscUJBQXFCO0lBQ3ZCLElBQUksSUFBSUMsT0FBT0MsVUFBVUMsTUFBTSxFQUFFQyxPQUFPLElBQUlDLE1BQU1KLE9BQU9LLE9BQU8sR0FBR0EsT0FBT0wsTUFBTUssT0FBTztRQUNuRkYsSUFBSSxDQUFDRSxLQUFLLEdBQUdKLFNBQVMsQ0FBQ0ksS0FBSztJQUNoQztJQUNBLElBQUlDLEtBQStCLEVBQUUsRUFFcEM7QUFDTDtBQUVBLElBQUksQ0FBQyxPQUFPWCxRQUFRZSxPQUFPLEtBQUssY0FBZSxPQUFPZixRQUFRZSxPQUFPLEtBQUssWUFBWWYsUUFBUWUsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPZixRQUFRZSxPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLbEIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRZSxPQUFPLEVBQUUsY0FBYztRQUFFZCxPQUFPO0lBQUs7SUFDbkVILE9BQU9tQixNQUFNLENBQUNqQixRQUFRZSxPQUFPLEVBQUVmO0lBQy9Ca0IsT0FBT2xCLE9BQU8sR0FBR0EsUUFBUWUsT0FBTztBQUNsQyxFQUVBLGdEQUFnRCIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanM/MDNiNSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcImRldGVjdERvbWFpbkxvY2FsZVwiLCB7XG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZGV0ZWN0RG9tYWluTG9jYWxlO1xuICAgIH1cbn0pO1xuY29uc3QgZGV0ZWN0RG9tYWluTG9jYWxlID0gZnVuY3Rpb24oKSB7XG4gICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICByZXR1cm4gcmVxdWlyZShcIi4uL3NoYXJlZC9saWIvaTE4bi9kZXRlY3QtZG9tYWluLWxvY2FsZVwiKS5kZXRlY3REb21haW5Mb2NhbGUoLi4uYXJncyk7XG4gICAgfVxufTtcblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGV0ZWN0LWRvbWFpbi1sb2NhbGUuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwiZW51bWVyYWJsZSIsImdldCIsImRldGVjdERvbWFpbkxvY2FsZSIsIl9sZW4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9JMThOX1NVUFBPUlQiLCJyZXF1aXJlIiwiZGVmYXVsdCIsIl9fZXNNb2R1bGUiLCJhc3NpZ24iLCJtb2R1bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/detect-domain-locale.js\n"); - -/***/ }), - /***/ "./node_modules/next/dist/client/get-domain-locale.js": /*!************************************************************!*\ !*** ./node_modules/next/dist/client/get-domain-locale.js ***! @@ -98,17 +76,6 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), -/***/ "./node_modules/next/dist/client/head-manager.js": -/*!*******************************************************!*\ - !*** ./node_modules/next/dist/client/head-manager.js ***! - \*******************************************************/ -/***/ ((module, exports) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n DOMAttributeNames: function() {\n return DOMAttributeNames;\n },\n isEqualNode: function() {\n return isEqualNode;\n },\n default: function() {\n return initHeadManager;\n }\n});\nconst DOMAttributeNames = {\n acceptCharset: \"accept-charset\",\n className: \"class\",\n htmlFor: \"for\",\n httpEquiv: \"http-equiv\",\n noModule: \"noModule\"\n};\nfunction reactElementToDOM(param) {\n let { type, props } = param;\n const el = document.createElement(type);\n for(const p in props){\n if (!props.hasOwnProperty(p)) continue;\n if (p === \"children\" || p === \"dangerouslySetInnerHTML\") continue;\n // we don't render undefined props to the DOM\n if (props[p] === undefined) continue;\n const attr = DOMAttributeNames[p] || p.toLowerCase();\n if (type === \"script\" && (attr === \"async\" || attr === \"defer\" || attr === \"noModule\")) {\n el[attr] = !!props[p];\n } else {\n el.setAttribute(attr, props[p]);\n }\n }\n const { children, dangerouslySetInnerHTML } = props;\n if (dangerouslySetInnerHTML) {\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n return el;\n}\nfunction isEqualNode(oldTag, newTag) {\n if (oldTag instanceof HTMLElement && newTag instanceof HTMLElement) {\n const nonce = newTag.getAttribute(\"nonce\");\n // Only strip the nonce if `oldTag` has had it stripped. An element's nonce attribute will not\n // be stripped if there is no content security policy response header that includes a nonce.\n if (nonce && !oldTag.getAttribute(\"nonce\")) {\n const cloneTag = newTag.cloneNode(true);\n cloneTag.setAttribute(\"nonce\", \"\");\n cloneTag.nonce = nonce;\n return nonce === oldTag.nonce && oldTag.isEqualNode(cloneTag);\n }\n }\n return oldTag.isEqualNode(newTag);\n}\nlet updateElements;\nif (false) {} else {\n updateElements = (type, components)=>{\n const headEl = document.getElementsByTagName(\"head\")[0];\n const headCountEl = headEl.querySelector(\"meta[name=next-head-count]\");\n if (true) {\n if (!headCountEl) {\n console.error(\"Warning: next-head-count is missing. https://nextjs.org/docs/messages/next-head-count-missing\");\n return;\n }\n }\n const headCount = Number(headCountEl.content);\n const oldTags = [];\n for(let i = 0, j = headCountEl.previousElementSibling; i < headCount; i++, j = (j == null ? void 0 : j.previousElementSibling) || null){\n var _j_tagName;\n if ((j == null ? void 0 : (_j_tagName = j.tagName) == null ? void 0 : _j_tagName.toLowerCase()) === type) {\n oldTags.push(j);\n }\n }\n const newTags = components.map(reactElementToDOM).filter((newTag)=>{\n for(let k = 0, len = oldTags.length; k < len; k++){\n const oldTag = oldTags[k];\n if (isEqualNode(oldTag, newTag)) {\n oldTags.splice(k, 1);\n return false;\n }\n }\n return true;\n });\n oldTags.forEach((t)=>{\n var _t_parentNode;\n return (_t_parentNode = t.parentNode) == null ? void 0 : _t_parentNode.removeChild(t);\n });\n newTags.forEach((t)=>headEl.insertBefore(t, headCountEl));\n headCountEl.content = (headCount - oldTags.length + newTags.length).toString();\n };\n}\nfunction initHeadManager() {\n return {\n mountedInstances: new Set(),\n updateHead: (head)=>{\n const tags = {};\n head.forEach((h)=>{\n if (// it won't be inlined. In this case revert to the original behavior\n h.type === \"link\" && h.props[\"data-optimized-fonts\"]) {\n if (document.querySelector('style[data-href=\"' + h.props[\"data-href\"] + '\"]')) {\n return;\n } else {\n h.props.href = h.props[\"data-href\"];\n h.props[\"data-href\"] = undefined;\n }\n }\n const components = tags[h.type] || [];\n components.push(h);\n tags[h.type] = components;\n });\n const titleComponent = tags.title ? tags.title[0] : null;\n let title = \"\";\n if (titleComponent) {\n const { children } = titleComponent.props;\n title = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n }\n if (title !== document.title) document.title = title;\n [\n \"meta\",\n \"base\",\n \"link\",\n \"style\",\n \"script\"\n ].forEach((type)=>{\n updateElements(type, tags[type] || []);\n });\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=head-manager.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9oZWFkLW1hbmFnZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FJTjtBQUNBLFNBQVNJLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlWLE9BQU9DLGNBQWMsQ0FBQ1EsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRTixTQUFTO0lBQ2JHLG1CQUFtQjtRQUNmLE9BQU9BO0lBQ1g7SUFDQUMsYUFBYTtRQUNULE9BQU9BO0lBQ1g7SUFDQUMsU0FBUztRQUNMLE9BQU9PO0lBQ1g7QUFDSjtBQUNBLE1BQU1ULG9CQUFvQjtJQUN0QlUsZUFBZTtJQUNmQyxXQUFXO0lBQ1hDLFNBQVM7SUFDVEMsV0FBVztJQUNYQyxVQUFVO0FBQ2Q7QUFDQSxTQUFTQyxrQkFBa0JDLEtBQUs7SUFDNUIsSUFBSSxFQUFFQyxJQUFJLEVBQUVDLEtBQUssRUFBRSxHQUFHRjtJQUN0QixNQUFNRyxLQUFLQyxTQUFTQyxhQUFhLENBQUNKO0lBQ2xDLElBQUksTUFBTUssS0FBS0osTUFBTTtRQUNqQixJQUFJLENBQUNBLE1BQU1LLGNBQWMsQ0FBQ0QsSUFBSTtRQUM5QixJQUFJQSxNQUFNLGNBQWNBLE1BQU0sMkJBQTJCO1FBQ3pELDZDQUE2QztRQUM3QyxJQUFJSixLQUFLLENBQUNJLEVBQUUsS0FBS0UsV0FBVztRQUM1QixNQUFNQyxPQUFPekIsaUJBQWlCLENBQUNzQixFQUFFLElBQUlBLEVBQUVJLFdBQVc7UUFDbEQsSUFBSVQsU0FBUyxZQUFhUSxDQUFBQSxTQUFTLFdBQVdBLFNBQVMsV0FBV0EsU0FBUyxVQUFTLEdBQUk7WUFDcEZOLEVBQUUsQ0FBQ00sS0FBSyxHQUFHLENBQUMsQ0FBQ1AsS0FBSyxDQUFD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LE1BQU02RSxJQUFJLENBQUM3RSxLQUFLLElBQUksRUFBRTtZQUN6QztRQUNKO0lBQ0o7QUFDSjtBQUVBLElBQUksQ0FBQyxPQUFPcEIsUUFBUUssT0FBTyxLQUFLLGNBQWUsT0FBT0wsUUFBUUssT0FBTyxLQUFLLFlBQVlMLFFBQVFLLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT0wsUUFBUUssT0FBTyxDQUFDaUcsVUFBVSxLQUFLLGFBQWE7SUFDckt4RyxPQUFPQyxjQUFjLENBQUNDLFFBQVFLLE9BQU8sRUFBRSxjQUFjO1FBQUVKLE9BQU87SUFBSztJQUNuRUgsT0FBT3lHLE1BQU0sQ0FBQ3ZHLFFBQVFLLE9BQU8sRUFBRUw7SUFDL0JFLE9BQU9GLE9BQU8sR0FBR0EsUUFBUUssT0FBTztBQUNsQyxFQUVBLHdDQUF3QyIsInNvdXJjZXMiOlsid2VicGFjazovL25leHQtYXBwLy4vbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvaGVhZC1tYW5hZ2VyLmpzP2NhNGEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG4wICYmIChtb2R1bGUuZXhwb3J0cyA9IHtcbiAgICBET01BdHRyaWJ1dGVOYW1lczogbnVsbCxcbiAgICBpc0VxdWFsTm9kZTogbnVsbCxcbiAgICBkZWZhdWx0OiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIERPTUF0dHJpYnV0ZU5hbWVzOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIERPTUF0dHJpYnV0ZU5hbWVzO1xuICAgIH0sXG4gICAgaXNFcXVhbE5vZGU6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gaXNFcXVhbE5vZGU7XG4gICAgfSxcbiAgICBkZWZhdWx0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGluaXRIZWFkTWFuYWdlcjtcbiAgICB9XG59KTtcbmNvbnN0IERPTUF0dHJpYnV0ZU5hbWVzID0ge1xuICAgIGFjY2VwdENoYXJzZXQ6IFwiYWNjZXB0LWNoYXJzZXRcIixcbiAgICBjbGFzc05hbWU6IFwiY2xhc3NcIixcbiAgICBodG1sRm9yOiBcImZvclwiLFxuICAgIGh0dHBFcXVpdjogXCJodHRwLWVxdWl2XCIsXG4gICAgbm9Nb2R1bGU6IFwibm9Nb2R1bGVcIlxufTtcbmZ1bmN0aW9uIHJlYWN0RWxlbWVudFRvRE9NKHBhcmFtKSB7XG4gICAgbGV0IHsgdHlwZSwgcHJvcHMgfSA9IHBhcmFtO1xuICAgIGNvbnN0IGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0eXBlKTtcbiAgICBmb3IoY29uc3QgcCBpbiBwcm9wcyl7XG4gICAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocCkpIGNvbnRpbnVlO1xuICAgICAgICBpZiAocCA9PT0gXCJjaGlsZHJlblwiIHx8IHAgPT09IFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIikgY29udGludWU7XG4gICAgICAgIC8vIHdlIGRvbid0IHJlbmRlciB1bmRlZmluZWQgcHJvcHMgdG8gdGhlIERPTVxuICAgICAgICBpZiAocHJvcHNbcF0gPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGF0dHIgPSBET01BdHRyaWJ1dGVOYW1lc1twXSB8fCBwLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGlmICh0eXBlID09PSBcInNjcmlwdFwiICYmIChhdHRyID09PSBcImFzeW5jXCIgfHwgYXR0ciA9PT0gXCJkZWZlclwiIHx8IGF0dHIgPT09IFwibm9Nb2R1bGVcIikpIHtcbiAgICAgICAgICAgIGVsW2F0dHJdID0gISFwcm9wc1twXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGVsLnNldEF0dHJpYnV0ZShhdHRyLCBwcm9wc1twXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgeyBjaGlsZHJlbiwgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgfSA9IHByb3BzO1xuICAgIGlmIChkYW5nZXJvdXNseVNldElubmVySFRNTCkge1xuICAgICAgICBlbC5pbm5lckhUTUwgPSBkYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwgfHwgXCJcIjtcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XG4gICAgICAgIGVsLnRleHRDb250ZW50ID0gdHlwZW9mIGNoaWxkcmVuID09PSBcInN0cmluZ1wiID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oXCJcIikgOiBcIlwiO1xuICAgIH1cbiAgICByZXR1cm4gZWw7XG59XG5mdW5jdGlvbiBpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykge1xuICAgIGlmIChvbGRUYWcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCAmJiBuZXdUYWcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBjb25zdCBub25jZSA9IG5ld1RhZy5nZXRBdHRyaWJ1dGUoXCJub25jZVwiKTtcbiAgICAgICAgLy8gT25seSBzdHJpcCB0aGUgbm9uY2UgaWYgYG9sZFRhZ2AgaGFzIGhhZCBpdCBzdHJpcHBlZC4gQW4gZWxlbWVudCdzIG5vbmNlIGF0dHJpYnV0ZSB3aWxsIG5vdFxuICAgICAgICAvLyBiZSBzdHJpcHBlZCBpZiB0aGVyZSBpcyBubyBjb250ZW50IHNlY3VyaXR5IHBvbGljeSByZXNwb25zZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBhIG5vbmNlLlxuICAgICAgICBpZiAobm9uY2UgJiYgIW9sZFRhZy5nZXRBdHRyaWJ1dGUoXCJub25jZVwiKSkge1xuICAgICAgICAgICAgY29uc3QgY2xvbmVUYWcgPSBuZXdUYWcuY2xvbmVOb2RlKHRydWUpO1xuICAgICAgICAgICAgY2xvbmVUYWcuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgXCJcIik7XG4gICAgICAgICAgICBjbG9uZVRhZy5ub25jZSA9IG5vbmNlO1xuICAgICAgICAgICAgcmV0dXJuIG5vbmNlID09PSBvbGRUYWcubm9uY2UgJiYgb2xkVGFnLmlzRXF1YWxOb2RlKGNsb25lVGFnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gb2xkVGFnLmlzRXF1YWxOb2RlKG5ld1RhZyk7XG59XG5sZXQgdXBkYXRlRWxlbWVudHM7XG5pZiAocHJvY2Vzcy5lbnYuX19ORVhUX1NUUklDVF9ORVhUX0hFQUQpIHtcbiAgICB1cGRhdGVFbGVtZW50cyA9ICh0eXBlLCBjb21wb25lbnRzKT0+e1xuICAgICAgICBjb25zdCBoZWFkRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiaGVhZFwiKTtcbiAgICAgICAgaWYgKCFoZWFkRWwpIHJldHVybjtcbiAgICAgICAgY29uc3QgaGVhZE1ldGFUYWdzID0gaGVhZEVsLnF1ZXJ5U2VsZWN0b3JBbGwoJ21ldGFbbmFtZT1cIm5leHQtaGVhZFwiXScpIHx8IFtdO1xuICAgICAgICBjb25zdCBvbGRUYWdzID0gW107XG4gICAgICAgIGlmICh0eXBlID09PSBcIm1ldGFcIikge1xuICAgICAgICAgICAgY29uc3QgbWV0YUNoYXJzZXQgPSBoZWFkRWwucXVlcnlTZWxlY3RvcihcIm1ldGFbY2hhcnNldF1cIik7XG4gICAgICAgICAgICBpZiAobWV0YUNoYXJzZXQpIHtcbiAgICAgICAgICAgICAgICBvbGRUYWdzLnB1c2gobWV0YUNoYXJzZXQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZvcihsZXQgaSA9IDA7IGkgPCBoZWFkTWV0YVRhZ3MubGVuZ3RoOyBpKyspe1xuICAgICAgICAgICAgdmFyIF9oZWFkVGFnX3RhZ05hbWU7XG4gICAgICAgICAgICBjb25zdCBtZXRhVGFnID0gaGVhZE1ldGFUYWdzW2ldO1xuICAgICAgICAgICAgY29uc3QgaGVhZFRhZyA9IG1ldGFUYWcubmV4dFNpYmxpbmc7XG4gICAgICAgICAgICBpZiAoKGhlYWRUYWcgPT0gbnVsbCA/IHZvaWQgMCA6IChfaGVhZFRhZ190YWdOYW1lID0gaGVhZFRhZy50YWdOYW1lKSA9PSBudWxsID8gdm9pZCAwIDogX2hlYWRUYWdfdGFnTmFtZS50b0xvd2VyQ2FzZSgpKSA9PT0gdHlwZSkge1xuICAgICAgICAgICAgICAgIG9sZFRhZ3MucHVzaChoZWFkVGFnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdUYWdzID0gY29tcG9uZW50cy5tYXAocmVhY3RFbGVtZW50VG9ET00pLmZpbHRlcigobmV3VGFnKT0+e1xuICAgICAgICAgICAgZm9yKGxldCBrID0gMCwgbGVuID0gb2xkVGFncy5sZW5ndGg7IGsgPCBsZW47IGsrKyl7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkVGFnID0gb2xkVGFnc1trXTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFcXVhbE5vZGUob2xkVGFnLCBuZXdUYWcpKSB7XG4gICAgICAgICAgICAgICAgICAgIG9sZFRhZ3Muc3BsaWNlKGssIDEpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBvbGRUYWdzLmZvckVhY2goKHQpPT57XG4gICAgICAgICAgICB2YXIgX3RfcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIGNvbnN0IG1ldGFUYWcgPSB0LnByZXZpb3VzU2libGluZztcbiAgICAgICAgICAgIGlmIChtZXRhVGFnICYmIG1ldGFUYWcuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSA9PT0gXCJuZXh0LWhlYWRcIikge1xuICAgICAgICAgICAgICAgIHZhciBfdF9wYXJlbnROb2RlMTtcbiAgICAgICAgICAgICAgICAoX3RfcGFyZW50Tm9kZTEgPSB0LnBhcmVudE5vZGUpID09IG51bGwgPyB2b2lkIDAgOiBfdF9wYXJlbnROb2RlMS5yZW1vdmVDaGlsZChtZXRhVGFnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIChfdF9wYXJlbnROb2RlID0gdC5wYXJlbnROb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX3RfcGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld1RhZ3MuZm9yRWFjaCgodCk9PntcbiAgICAgICAgICAgIHZhciBfdF90YWdOYW1lO1xuICAgICAgICAgICAgY29uc3QgbWV0YSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJtZXRhXCIpO1xuICAgICAgICAgICAgbWV0YS5uYW1lID0gXCJuZXh0LWhlYWRcIjtcbiAgICAgICAgICAgIG1ldGEuY29udGVudCA9IFwiMVwiO1xuICAgICAgICAgICAgLy8gbWV0YVtjaGFyc2V0XSBtdXN0IGJlIGZpcnN0IGVsZW1lbnQgc28gc3BlY2lhbCBjYXNlXG4gICAgICAgICAgICBpZiAoISgoKF90X3RhZ05hbWUgPSB0LnRhZ05hbWUpID09IG51bGwgPyB2b2lkIDAgOiBfdF90YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSBcIm1ldGFcIiAmJiB0LmdldEF0dHJpYnV0ZShcImNoYXJzZXRcIikpKSB7XG4gICAgICAgICAgICAgICAgaGVhZEVsLmFwcGVuZENoaWxkKG1ldGEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGVhZEVsLmFwcGVuZENoaWxkKHQpO1xuICAgICAgICB9KTtcbiAgICB9O1xufSBlbHNlIHtcbiAgICB1cGRhdGVFbGVtZW50cyA9ICh0eXBlLCBjb21wb25lbnRzKT0+e1xuICAgICAgICBjb25zdCBoZWFkRWwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07XG4gICAgICAgIGNvbnN0IGhlYWRDb3VudEVsID0gaGVhZEVsLnF1ZXJ5U2VsZWN0b3IoXCJtZXRhW25hbWU9bmV4dC1oZWFkLWNvdW50XVwiKTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xuICAgICAgICAgICAgaWYgKCFoZWFkQ291bnRFbCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJXYXJuaW5nOiBuZXh0LWhlYWQtY291bnQgaXMgbWlzc2luZy4gaHR0cHM6Ly9uZXh0anMub3JnL2RvY3MvbWVzc2FnZXMvbmV4dC1oZWFkLWNvdW50LW1pc3NpbmdcIik7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGhlYWRDb3VudCA9IE51bWJlcihoZWFkQ291bnRFbC5jb250ZW50KTtcbiAgICAgICAgY29uc3Qgb2xkVGFncyA9IFtdO1xuICAgICAgICBmb3IobGV0IGkgPSAwLCBqID0gaGVhZENvdW50RWwucHJldmlvdXNFbGVtZW50U2libGluZzsgaSA8IGhlYWRDb3VudDsgaSsrLCBqID0gKGogPT0gbnVsbCA/IHZvaWQgMCA6IGoucHJldmlvdXNFbGVtZW50U2libGluZykgfHwgbnVsbCl7XG4gICAgICAgICAgICB2YXIgX2pfdGFnTmFtZTtcbiAgICAgICAgICAgIGlmICgoaiA9PSBudWxsID8gdm9pZCAwIDogKF9qX3RhZ05hbWUgPSBqLnRhZ05hbWUpID09IG51bGwgPyB2b2lkIDAgOiBfal90YWdOYW1lLnRvTG93ZXJDYXNlKCkpID09PSB0eXBlKSB7XG4gICAgICAgICAgICAgICAgb2xkVGFncy5wdXNoKGopO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld1RhZ3MgPSBjb21wb25lbnRzLm1hcChyZWFjdEVsZW1lbnRUb0RPTSkuZmlsdGVyKChuZXdUYWcpPT57XG4gICAgICAgICAgICBmb3IobGV0IGsgPSAwLCBsZW4gPSBvbGRUYWdzLmxlbmd0aDsgayA8IGxlbjsgaysrKXtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGRUYWcgPSBvbGRUYWdzW2tdO1xuICAgICAgICAgICAgICAgIGlmIChpc0VxdWFsTm9kZShvbGRUYWcsIG5ld1RhZykpIHtcbiAgICAgICAgICAgICAgICAgICAgb2xkVGFncy5zcGxpY2UoaywgMSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIG9sZFRhZ3MuZm9yRWFjaCgodCk9PntcbiAgICAgICAgICAgIHZhciBfdF9wYXJlbnROb2RlO1xuICAgICAgICAgICAgcmV0dXJuIChfdF9wYXJlbnROb2RlID0gdC5wYXJlbnROb2RlKSA9PSBudWxsID8gdm9pZCAwIDogX3RfcGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIG5ld1RhZ3MuZm9yRWFjaCgodCk9PmhlYWRFbC5pbnNlcnRCZWZvcmUodCwgaGVhZENvdW50RWwpKTtcbiAgICAgICAgaGVhZENvdW50RWwuY29udGVudCA9IChoZWFkQ291bnQgLSBvbGRUYWdzLmxlbmd0aCArIG5ld1RhZ3MubGVuZ3RoKS50b1N0cmluZygpO1xuICAgIH07XG59XG5mdW5jdGlvbiBpbml0SGVhZE1hbmFnZXIoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgbW91bnRlZEluc3RhbmNlczogbmV3IFNldCgpLFxuICAgICAgICB1cGRhdGVIZWFkOiAoaGVhZCk9PntcbiAgICAgICAgICAgIGNvbnN0IHRhZ3MgPSB7fTtcbiAgICAgICAgICAgIGhlYWQuZm9yRWFjaCgoaCk9PntcbiAgICAgICAgICAgICAgICBpZiAoLy8gSWYgdGhlIGZvbnQgdGFnIGlzIGxvYWRlZCBvbmx5IG9uIGNsaWVudCBuYXZpZ2F0aW9uXG4gICAgICAgICAgICAgICAgLy8gaXQgd29uJ3QgYmUgaW5saW5lZC4gSW4gdGhpcyBjYXNlIHJldmVydCB0byB0aGUgb3JpZ2luYWwgYmVoYXZpb3JcbiAgICAgICAgICAgICAgICBoLnR5cGUgPT09IFwibGlua1wiICYmIGgucHJvcHNbXCJkYXRhLW9wdGltaXplZC1mb250c1wiXSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc3R5bGVbZGF0YS1ocmVmPVwiJyArIGgucHJvcHNbXCJkYXRhLWhyZWZcIl0gKyAnXCJdJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGgucHJvcHMuaHJlZiA9IGgucHJvcHNbXCJkYXRhLWhyZWZcIl07XG4gICAgICAgICAgICAgICAgICAgICAgICBoLnByb3BzW1wiZGF0YS1ocmVmXCJdID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudHMgPSB0YWdzW2gudHlwZV0gfHwgW107XG4gICAgICAgICAgICAgICAgY29tcG9uZW50cy5wdXNoKGgpO1xuICAgICAgICAgICAgICAgIHRhZ3NbaC50eXBlXSA9IGNvbXBvbmVudHM7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHRpdGxlQ29tcG9uZW50ID0gdGFncy50aXRsZSA/IHRhZ3MudGl0bGVbMF0gOiBudWxsO1xuICAgICAgICAgICAgbGV0IHRpdGxlID0gXCJcIjtcbiAgICAgICAgICAgIGlmICh0aXRsZUNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHRpdGxlQ29tcG9uZW50LnByb3BzO1xuICAgICAgICAgICAgICAgIHRpdGxlID0gdHlwZW9mIGNoaWxkcmVuID09PSBcInN0cmluZ1wiID8gY2hpbGRyZW4gOiBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oXCJcIikgOiBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHRpdGxlICE9PSBkb2N1bWVudC50aXRsZSkgZG9jdW1lbnQudGl0bGUgPSB0aXRsZTtcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBcIm1ldGFcIixcbiAgICAgICAgICAgICAgICBcImJhc2VcIixcbiAgICAgICAgICAgICAgICBcImxpbmtcIixcbiAgICAgICAgICAgICAgICBcInN0eWxlXCIsXG4gICAgICAgICAgICAgICAgXCJzY3JpcHRcIlxuICAgICAgICAgICAgXS5mb3JFYWNoKCh0eXBlKT0+e1xuICAgICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRzKHR5cGUsIHRhZ3NbdHlwZV0gfHwgW10pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1oZWFkLW1hbmFnZXIuanMubWFwIl0sIm5hbWVzIjpbIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZXhwb3J0cyIsInZhbHVlIiwibW9kdWxlIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJpc0VxdWFsTm9kZSIsImRlZmF1bHQiLCJfZXhwb3J0IiwidGFyZ2V0IiwiYWxsIiwibmFtZSIsImVudW1lcmFibGUiLCJnZXQiLCJpbml0SGVhZE1hbmFnZXIiLCJhY2NlcHRDaGFyc2V0IiwiY2xhc3NOYW1lIiwiaHRtbEZvciIsImh0dHBFcXVpdiIsIm5vTW9kdWxlIiwicmVhY3RFbGVtZW50VG9ET00iLCJwYXJhbSIsInR5cGUiLCJwcm9wcyIsImVsIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwicCIsImhhc093blByb3BlcnR5IiwidW5kZWZpbmVkIiwiYXR0ciIsInRvTG93ZXJDYXNlIiwic2V0QXR0cmlidXRlIiwiY2hpbGRyZW4iLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsImlubmVySFRNTCIsIl9faHRtbCIsInRleHRDb250ZW50IiwiQXJyYXkiLCJpc0FycmF5Iiwiam9pbiIsIm9sZFRhZyIsIm5ld1RhZyIsIkhUTUxFbGVtZW50Iiwibm9uY2UiLCJnZXRBdHRyaWJ1dGUiLCJjbG9uZVRhZyIsImNsb25lTm9kZSIsInVwZGF0ZUVsZW1lbnRzIiwicHJvY2VzcyIsImVudiIsIl9fTkVYVF9TVFJJQ1RfTkVYVF9IRUFEIiwiY29tcG9uZW50cyIsImhlYWRFbCIsInF1ZXJ5U2VsZWN0b3IiLCJoZWFkTWV0YVRhZ3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwib2xkVGFncyIsIm1ldGFDaGFyc2V0IiwicHVzaCIsImkiLCJsZW5ndGgiLCJfaGVhZFRhZ190YWdOYW1lIiwibWV0YVRhZyIsImhlYWRUYWciLCJuZXh0U2libGluZyIsInRhZ05hbWUiLCJuZXdUYWdzIiwibWFwIiwiZmlsdGVyIiwiayIsImxlbiIsInNwbGljZSIsImZvckVhY2giLCJ0IiwiX3RfcGFyZW50Tm9kZSIsInByZXZpb3VzU2libGluZyIsIl90X3BhcmVudE5vZGUxIiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwiX3RfdGFnTmFtZSIsIm1ldGEiLCJjb250ZW50IiwiYXBwZW5kQ2hpbGQiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImhlYWRDb3VudEVsIiwiY29uc29sZSIsImVycm9yIiwiaGVhZENvdW50IiwiTnVtYmVyIiwiaiIsInByZXZpb3VzRWxlbWVudFNpYmxpbmciLCJfal90YWdOYW1lIiwiaW5zZXJ0QmVmb3JlIiwidG9TdHJpbmciLCJtb3VudGVkSW5zdGFuY2VzIiwiU2V0IiwidXBkYXRlSGVhZCIsImhlYWQiLCJ0YWdzIiwiaCIsImhyZWYiLCJ0aXRsZUNvbXBvbmVudCIsInRpdGxlIiwiX19lc01vZHVsZSIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/head-manager.js\n"); - -/***/ }), - /***/ "./node_modules/next/dist/client/link.js": /*!***********************************************!*\ !*** ./node_modules/next/dist/client/link.js ***! @@ -131,28 +98,6 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), -/***/ "./node_modules/next/dist/client/remove-base-path.js": -/*!***********************************************************!*\ - !*** ./node_modules/next/dist/client/remove-base-path.js ***! - \***********************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeBasePath\", ({\n enumerable: true,\n get: function() {\n return removeBasePath;\n }\n}));\nconst _hasbasepath = __webpack_require__(/*! ./has-base-path */ \"./node_modules/next/dist/client/has-base-path.js\");\nconst basePath = \"/sar-in-browser\" || 0;\nfunction removeBasePath(path) {\n if (false) {}\n // Can't trim the basePath if it has zero length!\n if (basePath.length === 0) return path;\n path = path.slice(basePath.length);\n if (!path.startsWith(\"/\")) path = \"/\" + path;\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-base-path.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtYmFzZS1wYXRoLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCxrREFBaUQ7SUFDN0NJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxlQUFlQyxtQkFBT0EsQ0FBQyx5RUFBaUI7QUFDOUMsTUFBTUMsV0FBV0MsaUJBQWtDLElBQUksQ0FBRTtBQUN6RCxTQUFTSixlQUFlTyxJQUFJO0lBQ3hCLElBQUlILEtBQTBDLEVBQUUsRUFJL0M7SUFDRCxpREFBaUQ7SUFDakQsSUFBSUQsU0FBU08sTUFBTSxLQUFLLEdBQUcsT0FBT0g7SUFDbENBLE9BQU9BLEtBQUtJLEtBQUssQ0FBQ1IsU0FBU08sTUFBTTtJQUNqQyxJQUFJLENBQUNILEtBQUtLLFVBQVUsQ0FBQyxNQUFNTCxPQUFPLE1BQU1BO0lBQ3hDLE9BQU9BO0FBQ1g7QUFFQSxJQUFJLENBQUMsT0FBT1gsUUFBUWlCLE9BQU8sS0FBSyxjQUFlLE9BQU9qQixRQUFRaUIsT0FBTyxLQUFLLFlBQVlqQixRQUFRaUIsT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPakIsUUFBUWlCLE9BQU8sQ0FBQ0MsVUFBVSxLQUFLLGFBQWE7SUFDcktwQixPQUFPQyxjQUFjLENBQUNDLFFBQVFpQixPQUFPLEVBQUUsY0FBYztRQUFFaEIsT0FBTztJQUFLO0lBQ25FSCxPQUFPcUIsTUFBTSxDQUFDbkIsUUFBUWlCLE9BQU8sRUFBRWpCO0lBQy9Cb0IsT0FBT3BCLE9BQU8sR0FBR0EsUUFBUWlCLE9BQU87QUFDbEMsRUFFQSw0Q0FBNEMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0LWFwcC8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L3JlbW92ZS1iYXNlLXBhdGguanM/YjRmMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcInJlbW92ZUJhc2VQYXRoXCIsIHtcbiAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiByZW1vdmVCYXNlUGF0aDtcbiAgICB9XG59KTtcbmNvbnN0IF9oYXNiYXNlcGF0aCA9IHJlcXVpcmUoXCIuL2hhcy1iYXNlLXBhdGhcIik7XG5jb25zdCBiYXNlUGF0aCA9IHByb2Nlc3MuZW52Ll9fTkVYVF9ST1VURVJfQkFTRVBBVEggfHwgXCJcIjtcbmZ1bmN0aW9uIHJlbW92ZUJhc2VQYXRoKHBhdGgpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX01BTlVBTF9DTElFTlRfQkFTRV9QQVRIKSB7XG4gICAgICAgIGlmICghKDAsIF9oYXNiYXNlcGF0aC5oYXNCYXNlUGF0aCkocGF0aCkpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXRoO1xuICAgICAgICB9XG4gICAgfVxuICAgIC8vIENhbid0IHRyaW0gdGhlIGJhc2VQYXRoIGlmIGl0IGhhcyB6ZXJvIGxlbmd0aCFcbiAgICBpZiAoYmFzZVBhdGgubGVuZ3RoID09PSAwKSByZXR1cm4gcGF0aDtcbiAgICBwYXRoID0gcGF0aC5zbGljZShiYXNlUGF0aC5sZW5ndGgpO1xuICAgIGlmICghcGF0aC5zdGFydHNXaXRoKFwiL1wiKSkgcGF0aCA9IFwiL1wiICsgcGF0aDtcbiAgICByZXR1cm4gcGF0aDtcbn1cblxuaWYgKCh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnZnVuY3Rpb24nIHx8ICh0eXBlb2YgZXhwb3J0cy5kZWZhdWx0ID09PSAnb2JqZWN0JyAmJiBleHBvcnRzLmRlZmF1bHQgIT09IG51bGwpKSAmJiB0eXBlb2YgZXhwb3J0cy5kZWZhdWx0Ll9fZXNNb2R1bGUgPT09ICd1bmRlZmluZWQnKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLmRlZmF1bHQsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiAgT2JqZWN0LmFzc2lnbihleHBvcnRzLmRlZmF1bHQsIGV4cG9ydHMpO1xuICBtb2R1bGUuZXhwb3J0cyA9IGV4cG9ydHMuZGVmYXVsdDtcbn1cblxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9cmVtb3ZlLWJhc2UtcGF0aC5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJlbnVtZXJhYmxlIiwiZ2V0IiwicmVtb3ZlQmFzZVBhdGgiLCJfaGFzYmFzZXBhdGgiLCJyZXF1aXJlIiwiYmFzZVBhdGgiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX1JPVVRFUl9CQVNFUEFUSCIsInBhdGgiLCJfX05FWFRfTUFOVUFMX0NMSUVOVF9CQVNFX1BBVEgiLCJoYXNCYXNlUGF0aCIsImxlbmd0aCIsInNsaWNlIiwic3RhcnRzV2l0aCIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-base-path.js\n"); - -/***/ }), - -/***/ "./node_modules/next/dist/client/remove-locale.js": -/*!********************************************************!*\ - !*** ./node_modules/next/dist/client/remove-locale.js ***! - \********************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nObject.defineProperty(exports, \"removeLocale\", ({\n enumerable: true,\n get: function() {\n return removeLocale;\n }\n}));\nconst _parsepath = __webpack_require__(/*! ../shared/lib/router/utils/parse-path */ \"./node_modules/next/dist/shared/lib/router/utils/parse-path.js\");\nfunction removeLocale(path, locale) {\n if (false) {}\n return path;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=remove-locale.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2JBLDhDQUE2QztJQUN6Q0csT0FBTztBQUNYLENBQUMsRUFBQztBQUNGSCxnREFBK0M7SUFDM0NJLFlBQVk7SUFDWkMsS0FBSztRQUNELE9BQU9DO0lBQ1g7QUFDSixDQUFDLEVBQUM7QUFDRixNQUFNQyxhQUFhQyxtQkFBT0EsQ0FBQyw2R0FBdUM7QUFDbEUsU0FBU0YsYUFBYUcsSUFBSSxFQUFFQyxNQUFNO0lBQzlCLElBQUlDLEtBQStCLEVBQUUsRUFLcEM7SUFDRCxPQUFPRjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU9QLFFBQVFvQixPQUFPLEtBQUssY0FBZSxPQUFPcEIsUUFBUW9CLE9BQU8sS0FBSyxZQUFZcEIsUUFBUW9CLE9BQU8sS0FBSyxJQUFJLEtBQU0sT0FBT3BCLFFBQVFvQixPQUFPLENBQUNDLFVBQVUsS0FBSyxhQUFhO0lBQ3JLdkIsT0FBT0MsY0FBYyxDQUFDQyxRQUFRb0IsT0FBTyxFQUFFLGNBQWM7UUFBRW5CLE9BQU87SUFBSztJQUNuRUgsT0FBT3dCLE1BQU0sQ0FBQ3RCLFFBQVFvQixPQUFPLEVBQUVwQjtJQUMvQnVCLE9BQU92QixPQUFPLEdBQUdBLFFBQVFvQixPQUFPO0FBQ2xDLEVBRUEseUNBQXlDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yZW1vdmUtbG9jYWxlLmpzPzQ3NTMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgICB2YWx1ZTogdHJ1ZVxufSk7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJyZW1vdmVMb2NhbGVcIiwge1xuICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHJlbW92ZUxvY2FsZTtcbiAgICB9XG59KTtcbmNvbnN0IF9wYXJzZXBhdGggPSByZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvdXRpbHMvcGFyc2UtcGF0aFwiKTtcbmZ1bmN0aW9uIHJlbW92ZUxvY2FsZShwYXRoLCBsb2NhbGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuX19ORVhUX0kxOE5fU1VQUE9SVCkge1xuICAgICAgICBjb25zdCB7IHBhdGhuYW1lIH0gPSAoMCwgX3BhcnNlcGF0aC5wYXJzZVBhdGgpKHBhdGgpO1xuICAgICAgICBjb25zdCBwYXRoTG93ZXIgPSBwYXRobmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICBjb25zdCBsb2NhbGVMb3dlciA9IGxvY2FsZSA9PSBudWxsID8gdm9pZCAwIDogbG9jYWxlLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIHJldHVybiBsb2NhbGUgJiYgKHBhdGhMb3dlci5zdGFydHNXaXRoKFwiL1wiICsgbG9jYWxlTG93ZXIgKyBcIi9cIikgfHwgcGF0aExvd2VyID09PSBcIi9cIiArIGxvY2FsZUxvd2VyKSA/IFwiXCIgKyAocGF0aG5hbWUubGVuZ3RoID09PSBsb2NhbGUubGVuZ3RoICsgMSA/IFwiL1wiIDogXCJcIikgKyBwYXRoLnNsaWNlKGxvY2FsZS5sZW5ndGggKyAxKSA6IHBhdGg7XG4gICAgfVxuICAgIHJldHVybiBwYXRoO1xufVxuXG5pZiAoKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdmdW5jdGlvbicgfHwgKHR5cGVvZiBleHBvcnRzLmRlZmF1bHQgPT09ICdvYmplY3QnICYmIGV4cG9ydHMuZGVmYXVsdCAhPT0gbnVsbCkpICYmIHR5cGVvZiBleHBvcnRzLmRlZmF1bHQuX19lc01vZHVsZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMuZGVmYXVsdCwgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuICBPYmplY3QuYXNzaWduKGV4cG9ydHMuZGVmYXVsdCwgZXhwb3J0cyk7XG4gIG1vZHVsZS5leHBvcnRzID0gZXhwb3J0cy5kZWZhdWx0O1xufVxuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1yZW1vdmUtbG9jYWxlLmpzLm1hcCJdLCJuYW1lcyI6WyJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImV4cG9ydHMiLCJ2YWx1ZSIsImVudW1lcmFibGUiLCJnZXQiLCJyZW1vdmVMb2NhbGUiLCJfcGFyc2VwYXRoIiwicmVxdWlyZSIsInBhdGgiLCJsb2NhbGUiLCJwcm9jZXNzIiwiZW52IiwiX19ORVhUX0kxOE5fU1VQUE9SVCIsInBhdGhuYW1lIiwicGFyc2VQYXRoIiwicGF0aExvd2VyIiwidG9Mb3dlckNhc2UiLCJsb2NhbGVMb3dlciIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJzbGljZSIsImRlZmF1bHQiLCJfX2VzTW9kdWxlIiwiYXNzaWduIiwibW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/remove-locale.js\n"); - -/***/ }), - /***/ "./node_modules/next/dist/client/request-idle-callback.js": /*!****************************************************************!*\ !*** ./node_modules/next/dist/client/request-idle-callback.js ***! @@ -175,50 +120,6 @@ eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n})); /***/ }), -/***/ "./node_modules/next/dist/client/route-loader.js": -/*!*******************************************************!*\ - !*** ./node_modules/next/dist/client/route-loader.js ***! - \*******************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -eval("\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n markAssetError: function() {\n return markAssetError;\n },\n isAssetError: function() {\n return isAssetError;\n },\n getClientBuildManifest: function() {\n return getClientBuildManifest;\n },\n createRouteLoader: function() {\n return createRouteLoader;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/cjs/_interop_require_default.cjs\");\nconst _getassetpathfromroute = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/utils/get-asset-path-from-route */ \"./node_modules/next/dist/shared/lib/router/utils/get-asset-path-from-route.js\"));\nconst _trustedtypes = __webpack_require__(/*! ./trusted-types */ \"./node_modules/next/dist/client/trusted-types.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\n// 3.8s was arbitrarily chosen as it's what https://web.dev/interactive\n// considers as \"Good\" time-to-interactive. We must assume something went\n// wrong beyond this point, and then fall-back to a full page transition to\n// show the user something of value.\nconst MS_MAX_IDLE_DELAY = 3800;\nfunction withFuture(key, map, generator) {\n let entry = map.get(key);\n if (entry) {\n if (\"future\" in entry) {\n return entry.future;\n }\n return Promise.resolve(entry);\n }\n let resolver;\n const prom = new Promise((resolve)=>{\n resolver = resolve;\n });\n map.set(key, entry = {\n resolve: resolver,\n future: prom\n });\n return generator ? generator() // eslint-disable-next-line no-sequences\n .then((value)=>(resolver(value), value)).catch((err)=>{\n map.delete(key);\n throw err;\n }) : prom;\n}\nconst ASSET_LOAD_ERROR = Symbol(\"ASSET_LOAD_ERROR\");\nfunction markAssetError(err) {\n return Object.defineProperty(err, ASSET_LOAD_ERROR, {});\n}\nfunction isAssetError(err) {\n return err && ASSET_LOAD_ERROR in err;\n}\nfunction hasPrefetch(link) {\n try {\n link = document.createElement(\"link\");\n return(// with relList.support\n !!window.MSInputMethodContext && !!document.documentMode || link.relList.supports(\"prefetch\"));\n } catch (e) {\n return false;\n }\n}\nconst canPrefetch = hasPrefetch();\nconst getAssetQueryString = ()=>{\n return false ? 0 : \"\";\n};\nfunction prefetchViaDom(href, as, link) {\n return new Promise((resolve, reject)=>{\n const selector = '\\n link[rel=\"prefetch\"][href^=\"' + href + '\"],\\n link[rel=\"preload\"][href^=\"' + href + '\"],\\n script[src^=\"' + href + '\"]';\n if (document.querySelector(selector)) {\n return resolve();\n }\n link = document.createElement(\"link\");\n // The order of property assignment here is intentional:\n if (as) link.as = as;\n link.rel = \"prefetch\";\n link.crossOrigin = undefined;\n link.onload = resolve;\n link.onerror = ()=>reject(markAssetError(new Error(\"Failed to prefetch: \" + href)));\n // `href` should always be last:\n link.href = href;\n document.head.appendChild(link);\n });\n}\nfunction appendScript(src, script) {\n return new Promise((resolve, reject)=>{\n script = document.createElement(\"script\");\n // The order of property assignment here is intentional.\n // 1. Setup success/failure hooks in case the browser synchronously\n // executes when `src` is set.\n script.onload = resolve;\n script.onerror = ()=>reject(markAssetError(new Error(\"Failed to load script: \" + src)));\n // 2. Configure the cross-origin attribute before setting `src` in case the\n // browser begins to fetch.\n script.crossOrigin = undefined;\n // 3. Finally, set the source and inject into the DOM in case the child\n // must be appended for fetching to start.\n script.src = src;\n document.body.appendChild(script);\n });\n}\n// We wait for pages to be built in dev before we start the route transition\n// timeout to prevent an un-necessary hard navigation in development.\nlet devBuildPromise;\n// Resolve a promise that times out after given amount of milliseconds.\nfunction resolvePromiseWithTimeout(p, ms, err) {\n return new Promise((resolve, reject)=>{\n let cancelled = false;\n p.then((r)=>{\n // Resolved, cancel the timeout\n cancelled = true;\n resolve(r);\n }).catch(reject);\n // We wrap these checks separately for better dead-code elimination in\n // production bundles.\n if (true) {\n (devBuildPromise || Promise.resolve()).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>setTimeout(()=>{\n if (!cancelled) {\n reject(err);\n }\n }, ms));\n });\n }\n if (false) {}\n });\n}\nfunction getClientBuildManifest() {\n if (self.__BUILD_MANIFEST) {\n return Promise.resolve(self.__BUILD_MANIFEST);\n }\n const onBuildManifest = new Promise((resolve)=>{\n // Mandatory because this is not concurrent safe:\n const cb = self.__BUILD_MANIFEST_CB;\n self.__BUILD_MANIFEST_CB = ()=>{\n resolve(self.__BUILD_MANIFEST);\n cb && cb();\n };\n });\n return resolvePromiseWithTimeout(onBuildManifest, MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Failed to load client build manifest\")));\n}\nfunction getFilesForRoute(assetPrefix, route) {\n if (true) {\n const scriptUrl = assetPrefix + \"/_next/static/chunks/pages\" + encodeURI((0, _getassetpathfromroute.default)(route, \".js\")) + getAssetQueryString();\n return Promise.resolve({\n scripts: [\n (0, _trustedtypes.__unsafeCreateTrustedScriptURL)(scriptUrl)\n ],\n // Styles are handled by `style-loader` in development:\n css: []\n });\n }\n return getClientBuildManifest().then((manifest)=>{\n if (!(route in manifest)) {\n throw markAssetError(new Error(\"Failed to lookup route: \" + route));\n }\n const allFiles = manifest[route].map((entry)=>assetPrefix + \"/_next/\" + encodeURI(entry));\n return {\n scripts: allFiles.filter((v)=>v.endsWith(\".js\")).map((v)=>(0, _trustedtypes.__unsafeCreateTrustedScriptURL)(v) + getAssetQueryString()),\n css: allFiles.filter((v)=>v.endsWith(\".css\")).map((v)=>v + getAssetQueryString())\n };\n });\n}\nfunction createRouteLoader(assetPrefix) {\n const entrypoints = new Map();\n const loadedScripts = new Map();\n const styleSheets = new Map();\n const routes = new Map();\n function maybeExecuteScript(src) {\n // With HMR we might need to \"reload\" scripts when they are\n // disposed and readded. Executing scripts twice has no functional\n // differences\n if (false) {} else {\n return appendScript(src);\n }\n }\n function fetchStyleSheet(href) {\n let prom = styleSheets.get(href);\n if (prom) {\n return prom;\n }\n styleSheets.set(href, prom = fetch(href).then((res)=>{\n if (!res.ok) {\n throw new Error(\"Failed to load stylesheet: \" + href);\n }\n return res.text().then((text)=>({\n href: href,\n content: text\n }));\n }).catch((err)=>{\n throw markAssetError(err);\n }));\n return prom;\n }\n return {\n whenEntrypoint (route) {\n return withFuture(route, entrypoints);\n },\n onEntrypoint (route, execute) {\n (execute ? Promise.resolve().then(()=>execute()).then((exports1)=>({\n component: exports1 && exports1.default || exports1,\n exports: exports1\n }), (err)=>({\n error: err\n })) : Promise.resolve(undefined)).then((input)=>{\n const old = entrypoints.get(route);\n if (old && \"resolve\" in old) {\n if (input) {\n entrypoints.set(route, input);\n old.resolve(input);\n }\n } else {\n if (input) {\n entrypoints.set(route, input);\n } else {\n entrypoints.delete(route);\n }\n // when this entrypoint has been resolved before\n // the route is outdated and we want to invalidate\n // this cache entry\n routes.delete(route);\n }\n });\n },\n loadRoute (route, prefetch) {\n return withFuture(route, routes, ()=>{\n let devBuildPromiseResolve;\n if (true) {\n devBuildPromise = new Promise((resolve)=>{\n devBuildPromiseResolve = resolve;\n });\n }\n return resolvePromiseWithTimeout(getFilesForRoute(assetPrefix, route).then((param)=>{\n let { scripts, css } = param;\n return Promise.all([\n entrypoints.has(route) ? [] : Promise.all(scripts.map(maybeExecuteScript)),\n Promise.all(css.map(fetchStyleSheet))\n ]);\n }).then((res)=>{\n return this.whenEntrypoint(route).then((entrypoint)=>({\n entrypoint,\n styles: res[1]\n }));\n }), MS_MAX_IDLE_DELAY, markAssetError(new Error(\"Route did not complete loading: \" + route))).then((param)=>{\n let { entrypoint, styles } = param;\n const res = Object.assign({\n styles: styles\n }, entrypoint);\n return \"error\" in entrypoint ? entrypoint : res;\n }).catch((err)=>{\n if (prefetch) {\n // we don't want to cache errors during prefetch\n throw err;\n }\n return {\n error: err\n };\n }).finally(()=>devBuildPromiseResolve == null ? void 0 : devBuildPromiseResolve());\n });\n },\n prefetch (route) {\n // https://github.com/GoogleChromeLabs/quicklink/blob/453a661fa1fa940e2d2e044452398e38c67a98fb/src/index.mjs#L115-L118\n // License: Apache 2.0\n let cn;\n if (cn = navigator.connection) {\n // Don't prefetch if using 2G or if Save-Data is enabled.\n if (cn.saveData || /2g/.test(cn.effectiveType)) return Promise.resolve();\n }\n return getFilesForRoute(assetPrefix, route).then((output)=>Promise.all(canPrefetch ? output.scripts.map((script)=>prefetchViaDom(script.toString(), \"script\")) : [])).then(()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>this.loadRoute(route, true).catch(()=>{}));\n }).catch(()=>{});\n }\n };\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=route-loader.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanMiLCJtYXBwaW5ncyI6IkFBQWE7QUFDYkEsOENBQTZDO0lBQ3pDRyxPQUFPO0FBQ1gsQ0FBQyxFQUFDO0FBQ0YsS0FBTUMsQ0FBQUEsQ0FLTjtBQUNBLFNBQVNLLFFBQVFDLE1BQU0sRUFBRUMsR0FBRztJQUN4QixJQUFJLElBQUlDLFFBQVFELElBQUlYLE9BQU9DLGNBQWMsQ0FBQ1MsUUFBUUUsTUFBTTtRQUNwREMsWUFBWTtRQUNaQyxLQUFLSCxHQUFHLENBQUNDLEtBQUs7SUFDbEI7QUFDSjtBQUNBSCxRQUFRUCxTQUFTO0lBQ2JHLGdCQUFnQjtRQUNaLE9BQU9BO0lBQ1g7SUFDQUMsY0FBYztRQUNWLE9BQU9BO0lBQ1g7SUFDQUMsd0JBQXdCO1FBQ3BCLE9BQU9BO0lBQ1g7SUFDQUMsbUJBQW1CO1FBQ2YsT0FBT0E7SUFDWDtBQUNKO0FBQ0EsTUFBTU8sMkJBQTJCQyxtQkFBT0EsQ0FBQyw2R0FBeUM7QUFDbEYsTUFBTUMseUJBQXlCLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLDJJQUFzRDtBQUN0SSxNQUFNRyxnQkFBZ0JILG1CQUFPQSxDQUFDLHlFQUFpQjtBQUMvQyxNQUFNSSx1QkFBdUJKLG1CQUFPQSxDQUFDLHlGQUF5QjtBQUM5RCx1RUFBdUU7QUFDdkUseUVBQXlFO0FBQ3pFLDJFQUEyRTtBQUMzRSxvQ0FBb0M7QUFDcEMsTUFBTUssb0JBQW9CO0FBQzFCLFNBQVNDLFdBQVdDLEdBQUcsRUFBRUMsR0FBRyxFQUFFQyxTQUFTO0lBQ25DLElBQUlDLFFBQVFGLElBQUlWLEdBQUcsQ0FBQ1M7SUFDcEIsSUFBSUcsT0FBTztRQUNQLElBQUksWUFBWUEsT0FBTztZQUNuQixPQUFPQSxNQUFNQyxNQUFNO1FBQ3ZCO1FBQ0EsT0FBT0MsUUFBUUMsT0FBTyxDQUFDSDtJQUMzQjtJQUNBLElBQUlJO0lBQ0osTUFBTUMsT0FBTyxJQUFJSCxRQUFR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Q3RILHNCQUFzQjtZQUN0QixJQUFJMkM7WUFDSixJQUFJQSxLQUFLQyxVQUFVQyxVQUFVLEVBQUU7Z0JBQzNCLHlEQUF5RDtnQkFDekQsSUFBSUYsR0FBR0csUUFBUSxJQUFJLEtBQUtDLElBQUksQ0FBQ0osR0FBR0ssYUFBYSxHQUFHLE9BQU8zRyxRQUFRQyxPQUFPO1lBQzFFO1lBQ0EsT0FBT3dELGlCQUFpQkMsYUFBYUMsT0FBT3RELElBQUksQ0FBQyxDQUFDdUcsU0FBUzVHLFFBQVFqQixHQUFHLENBQUNzQyxjQUFjdUYsT0FBTzdDLE9BQU8sQ0FBQ25FLEdBQUcsQ0FBQyxDQUFDOEMsU0FBU2hCLGVBQWVnQixPQUFPbUMsUUFBUSxJQUFJLGFBQWEsRUFBRSxHQUFHeEUsSUFBSSxDQUFDO2dCQUN0SyxJQUFHYixxQkFBcUIwRCxtQkFBbUIsRUFBRSxJQUFJLElBQUksQ0FBQzJDLFNBQVMsQ0FBQ2xDLE9BQU8sTUFBTXJELEtBQUssQ0FBQyxLQUFLO1lBQzdGLEdBQUdBLEtBQUssQ0FDUixLQUFLO1FBQ1Q7SUFDSjtBQUNKO0FBRUEsSUFBSSxDQUFDLE9BQU9oQyxRQUFRd0YsT0FBTyxLQUFLLGNBQWUsT0FBT3hGLFFBQVF3RixPQUFPLEtBQUssWUFBWXhGLFFBQVF3RixPQUFPLEtBQUssSUFBSSxLQUFNLE9BQU94RixRQUFRd0YsT0FBTyxDQUFDK0MsVUFBVSxLQUFLLGFBQWE7SUFDckt6SSxPQUFPQyxjQUFjLENBQUNDLFFBQVF3RixPQUFPLEVBQUUsY0FBYztRQUFFdkYsT0FBTztJQUFLO0lBQ25FSCxPQUFPZ0ksTUFBTSxDQUFDOUgsUUFBUXdGLE9BQU8sRUFBRXhGO0lBQy9CRSxPQUFPRixPQUFPLEdBQUdBLFFBQVF3RixPQUFPO0FBQ2xDLEVBRUEsd0NBQXdDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZS1sb2FkZXIuanM/ZWEzNCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuICAgIHZhbHVlOiB0cnVlXG59KTtcbjAgJiYgKG1vZHVsZS5leHBvcnRzID0ge1xuICAgIG1hcmtBc3NldEVycm9yOiBudWxsLFxuICAgIGlzQXNzZXRFcnJvcjogbnVsbCxcbiAgICBnZXRDbGllbnRCdWlsZE1hbmlmZXN0OiBudWxsLFxuICAgIGNyZWF0ZVJvdXRlTG9hZGVyOiBudWxsXG59KTtcbmZ1bmN0aW9uIF9leHBvcnQodGFyZ2V0LCBhbGwpIHtcbiAgICBmb3IodmFyIG5hbWUgaW4gYWxsKU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIG5hbWUsIHtcbiAgICAgICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICAgICAgZ2V0OiBhbGxbbmFtZV1cbiAgICB9KTtcbn1cbl9leHBvcnQoZXhwb3J0cywge1xuICAgIG1hcmtBc3NldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1hcmtBc3NldEVycm9yO1xuICAgIH0sXG4gICAgaXNBc3NldEVycm9yOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGlzQXNzZXRFcnJvcjtcbiAgICB9LFxuICAgIGdldENsaWVudEJ1aWxkTWFuaWZlc3Q6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdDtcbiAgICB9LFxuICAgIGNyZWF0ZVJvdXRlTG9hZGVyOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJvdXRlTG9hZGVyO1xuICAgIH1cbn0pO1xuY29uc3QgX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0ID0gcmVxdWlyZShcIkBzd2MvaGVscGVycy9fL19pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdFwiKTtcbmNvbnN0IF9nZXRhc3NldHBhdGhmcm9tcm91dGUgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci91dGlscy9nZXQtYXNzZXQtcGF0aC1mcm9tLXJvdXRlXCIpKTtcbmNvbnN0IF90cnVzdGVkdHlwZXMgPSByZXF1aXJlKFwiLi90cnVzdGVkLXR5cGVzXCIpO1xuY29uc3QgX3JlcXVlc3RpZGxlY2FsbGJhY2sgPSByZXF1aXJlKFwiLi9yZXF1ZXN0LWlkbGUtY2FsbGJhY2tcIik7XG4vLyAzLjhzIHdhcyBhcmJpdHJhcmlseSBjaG9zZW4gYXMgaXQncyB3aGF0IGh0dHBzOi8vd2ViLmRldi9pbnRlcmFjdGl2ZVxuLy8gY29uc2lkZXJzIGFzIFwiR29vZFwiIHRpbWUtdG8taW50ZXJhY3RpdmUuIFdlIG11c3QgYXNzdW1lIHNvbWV0aGluZyB3ZW50XG4vLyB3cm9uZyBiZXlvbmQgdGhpcyBwb2ludCwgYW5kIHRoZW4gZmFsbC1iYWNrIHRvIGEgZnVsbCBwYWdlIHRyYW5zaXRpb24gdG9cbi8vIHNob3cgdGhlIHVzZXIgc29tZXRoaW5nIG9mIHZhbHVlLlxuY29uc3QgTVNfTUFYX0lETEVfREVMQVkgPSAzODAwO1xuZnVuY3Rpb24gd2l0aEZ1dHVyZShrZXksIG1hcCwgZ2VuZXJhdG9yKSB7XG4gICAgbGV0IGVudHJ5ID0gbWFwLmdldChrZXkpO1xuICAgIGlmIChlbnRyeSkge1xuICAgICAgICBpZiAoXCJmdXR1cmVcIiBpbiBlbnRyeSkge1xuICAgICAgICAgICAgcmV0dXJuIGVudHJ5LmZ1dHVyZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGVudHJ5KTtcbiAgICB9XG4gICAgbGV0IHJlc29sdmVyO1xuICAgIGNvbnN0IHByb20gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSk9PntcbiAgICAgICAgcmVzb2x2ZXIgPSByZXNvbHZlO1xuICAgIH0pO1xuICAgIG1hcC5zZXQoa2V5LCBlbnRyeSA9IHtcbiAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZXIsXG4gICAgICAgIGZ1dHVyZTogcHJvbVxuICAgIH0pO1xuICAgIHJldHVybiBnZW5lcmF0b3IgPyBnZW5lcmF0b3IoKS8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZXF1ZW5jZXNcbiAgICAudGhlbigodmFsdWUpPT4ocmVzb2x2ZXIodmFsdWUpLCB2YWx1ZSkpLmNhdGNoKChlcnIpPT57XG4gICAgICAgIG1hcC5kZWxldGUoa2V5KTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgIH0pIDogcHJvbTtcbn1cbmNvbnN0IEFTU0VUX0xPQURfRVJST1IgPSBTeW1ib2woXCJBU1NFVF9MT0FEX0VSUk9SXCIpO1xuZnVuY3Rpb24gbWFya0Fzc2V0RXJyb3IoZXJyKSB7XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlcnIsIEFTU0VUX0xPQURfRVJST1IsIHt9KTtcbn1cbmZ1bmN0aW9uIGlzQXNzZXRFcnJvcihlcnIpIHtcbiAgICByZXR1cm4gZXJyICYmIEFTU0VUX0xPQURfRVJST1IgaW4gZXJyO1xufVxuZnVuY3Rpb24gaGFzUHJlZmV0Y2gobGluaykge1xuICAgIHRyeSB7XG4gICAgICAgIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICAgICAgcmV0dXJuKC8vIGRldGVjdCBJRTExIHNpbmNlIGl0IHN1cHBvcnRzIHByZWZldGNoIGJ1dCBpc24ndCBkZXRlY3RlZFxuICAgICAgICAvLyB3aXRoIHJlbExpc3Quc3VwcG9ydFxuICAgICAgICAhIXdpbmRvdy5NU0lucHV0TWV0aG9kQ29udGV4dCAmJiAhIWRvY3VtZW50LmRvY3VtZW50TW9kZSB8fCBsaW5rLnJlbExpc3Quc3VwcG9ydHMoXCJwcmVmZXRjaFwiKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuY29uc3QgY2FuUHJlZmV0Y2ggPSBoYXNQcmVmZXRjaCgpO1xuY29uc3QgZ2V0QXNzZXRRdWVyeVN0cmluZyA9ICgpPT57XG4gICAgcmV0dXJuIHByb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRCA/IFwiP2RwbD1cIiArIHByb2Nlc3MuZW52Lk5FWFRfREVQTE9ZTUVOVF9JRCA6IFwiXCI7XG59O1xuZnVuY3Rpb24gcHJlZmV0Y2hWaWFEb20oaHJlZiwgYXMsIGxpbmspIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSAnXFxuICAgICAgbGlua1tyZWw9XCJwcmVmZXRjaFwiXVtocmVmXj1cIicgKyBocmVmICsgJ1wiXSxcXG4gICAgICBsaW5rW3JlbD1cInByZWxvYWRcIl1baHJlZl49XCInICsgaHJlZiArICdcIl0sXFxuICAgICAgc2NyaXB0W3NyY149XCInICsgaHJlZiArICdcIl0nO1xuICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3RvcikpIHtcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKCk7XG4gICAgICAgIH1cbiAgICAgICAgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuICAgICAgICAvLyBUaGUgb3JkZXIgb2YgcHJvcGVydHkgYXNzaWdubWVudCBoZXJlIGlzIGludGVudGlvbmFsOlxuICAgICAgICBpZiAoYXMpIGxpbmsuYXMgPSBhcztcbiAgICAgICAgbGluay5yZWwgPSBcInByZWZldGNoXCI7XG4gICAgICAgIGxpbmsuY3Jvc3NPcmlnaW4gPSBwcm9jZXNzLmVudi5fX05FWFRfQ1JPU1NfT1JJR0lOO1xuICAgICAgICBsaW5rLm9ubG9hZCA9IHJlc29sdmU7XG4gICAgICAgIGxpbmsub25lcnJvciA9ICgpPT5yZWplY3QobWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKFwiRmFpbGVkIHRvIHByZWZldGNoOiBcIiArIGhyZWYpKSk7XG4gICAgICAgIC8vIGBocmVmYCBzaG91bGQgYWx3YXlzIGJlIGxhc3Q6XG4gICAgICAgIGxpbmsuaHJlZiA9IGhyZWY7XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiBhcHBlbmRTY3JpcHQoc3JjLCBzY3JpcHQpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PntcbiAgICAgICAgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgLy8gVGhlIG9yZGVyIG9mIHByb3BlcnR5IGFzc2lnbm1lbnQgaGVyZSBpcyBpbnRlbnRpb25hbC5cbiAgICAgICAgLy8gMS4gU2V0dXAgc3VjY2Vzcy9mYWlsdXJlIGhvb2tzIGluIGNhc2UgdGhlIGJyb3dzZXIgc3luY2hyb25vdXNseVxuICAgICAgICAvLyAgICBleGVjdXRlcyB3aGVuIGBzcmNgIGlzIHNldC5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IHJlc29sdmU7XG4gICAgICAgIHNjcmlwdC5vbmVycm9yID0gKCk9PnJlamVjdChtYXJrQXNzZXRFcnJvcihuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBzY3JpcHQ6IFwiICsgc3JjKSkpO1xuICAgICAgICAvLyAyLiBDb25maWd1cmUgdGhlIGNyb3NzLW9yaWdpbiBhdHRyaWJ1dGUgYmVmb3JlIHNldHRpbmcgYHNyY2AgaW4gY2FzZSB0aGVcbiAgICAgICAgLy8gICAgYnJvd3NlciBiZWdpbnMgdG8gZmV0Y2guXG4gICAgICAgIHNjcmlwdC5jcm9zc09yaWdpbiA9IHByb2Nlc3MuZW52Ll9fTkVYVF9DUk9TU19PUklHSU47XG4gICAgICAgIC8vIDMuIEZpbmFsbHksIHNldCB0aGUgc291cmNlIGFuZCBpbmplY3QgaW50byB0aGUgRE9NIGluIGNhc2UgdGhlIGNoaWxkXG4gICAgICAgIC8vICAgIG11c3QgYmUgYXBwZW5kZWQgZm9yIGZldGNoaW5nIHRvIHN0YXJ0LlxuICAgICAgICBzY3JpcHQuc3JjID0gc3JjO1xuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSk7XG59XG4vLyBXZSB3YWl0IGZvciBwYWdlcyB0byBiZSBidWlsdCBpbiBkZXYgYmVmb3JlIHdlIHN0YXJ0IHRoZSByb3V0ZSB0cmFuc2l0aW9uXG4vLyB0aW1lb3V0IHRvIHByZXZlbnQgYW4gdW4tbmVjZXNzYXJ5IGhhcmQgbmF2aWdhdGlvbiBpbiBkZXZlbG9wbWVudC5cbmxldCBkZXZCdWlsZFByb21pc2U7XG4vLyBSZXNvbHZlIGEgcHJvbWlzZSB0aGF0IHRpbWVzIG91dCBhZnRlciBnaXZlbiBhbW91bnQgb2YgbWlsbGlzZWNvbmRzLlxuZnVuY3Rpb24gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChwLCBtcywgZXJyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57XG4gICAgICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZTtcbiAgICAgICAgcC50aGVuKChyKT0+e1xuICAgICAgICAgICAgLy8gUmVzb2x2ZWQsIGNhbmNlbCB0aGUgdGltZW91dFxuICAgICAgICAgICAgY2FuY2VsbGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHJlc29sdmUocik7XG4gICAgICAgIH0pLmNhdGNoKHJlamVjdCk7XG4gICAgICAgIC8vIFdlIHdyYXAgdGhlc2UgY2hlY2tzIHNlcGFyYXRlbHkgZm9yIGJldHRlciBkZWFkLWNvZGUgZWxpbWluYXRpb24gaW5cbiAgICAgICAgLy8gcHJvZHVjdGlvbiBidW5kbGVzLlxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICAgICAgKGRldkJ1aWxkUHJvbWlzZSB8fCBQcm9taXNlLnJlc29sdmUoKSkudGhlbigoKT0+e1xuICAgICAgICAgICAgICAgICgwLCBfcmVxdWVzdGlkbGVjYWxsYmFjay5yZXF1ZXN0SWRsZUNhbGxiYWNrKSgoKT0+c2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSwgbXMpKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAoMCwgX3JlcXVlc3RpZGxlY2FsbGJhY2sucmVxdWVzdElkbGVDYWxsYmFjaykoKCk9PnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSwgbXMpKTtcbiAgICAgICAgfVxuICAgIH0pO1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpIHtcbiAgICBpZiAoc2VsZi5fX0JVSUxEX01BTklGRVNUKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoc2VsZi5fX0JVSUxEX01BTklGRVNUKTtcbiAgICB9XG4gICAgY29uc3Qgb25CdWlsZE1hbmlmZXN0ID0gbmV3IFByb21pc2UoKHJlc29sdmUpPT57XG4gICAgICAgIC8vIE1hbmRhdG9yeSBiZWNhdXNlIHRoaXMgaXMgbm90IGNvbmN1cnJlbnQgc2FmZTpcbiAgICAgICAgY29uc3QgY2IgPSBzZWxmLl9fQlVJTERfTUFOSUZFU1RfQ0I7XG4gICAgICAgIHNlbGYuX19CVUlMRF9NQU5JRkVTVF9DQiA9ICgpPT57XG4gICAgICAgICAgICByZXNvbHZlKHNlbGYuX19CVUlMRF9NQU5JRkVTVCk7XG4gICAgICAgICAgICBjYiAmJiBjYigpO1xuICAgICAgICB9O1xuICAgIH0pO1xuICAgIHJldHVybiByZXNvbHZlUHJvbWlzZVdpdGhUaW1lb3V0KG9uQnVpbGRNYW5pZmVzdCwgTVNfTUFYX0lETEVfREVMQVksIG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIkZhaWxlZCB0byBsb2FkIGNsaWVudCBidWlsZCBtYW5pZmVzdFwiKSkpO1xufVxuZnVuY3Rpb24gZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09IFwiZGV2ZWxvcG1lbnRcIikge1xuICAgICAgICBjb25zdCBzY3JpcHRVcmwgPSBhc3NldFByZWZpeCArIFwiL19uZXh0L3N0YXRpYy9jaHVua3MvcGFnZXNcIiArIGVuY29kZVVSSSgoMCwgX2dldGFzc2V0cGF0aGZyb21yb3V0ZS5kZWZhdWx0KShyb3V0ZSwgXCIuanNcIikpICsgZ2V0QXNzZXRRdWVyeVN0cmluZygpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHtcbiAgICAgICAgICAgIHNjcmlwdHM6IFtcbiAgICAgICAgICAgICAgICAoMCwgX3RydXN0ZWR0eXBlcy5fX3Vuc2FmZUNyZWF0ZVRydXN0ZWRTY3JpcHRVUkwpKHNjcmlwdFVybClcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAvLyBTdHlsZXMgYXJlIGhhbmRsZWQgYnkgYHN0eWxlLWxvYWRlcmAgaW4gZGV2ZWxvcG1lbnQ6XG4gICAgICAgICAgICBjc3M6IFtdXG4gICAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0Q2xpZW50QnVpbGRNYW5pZmVzdCgpLnRoZW4oKG1hbmlmZXN0KT0+e1xuICAgICAgICBpZiAoIShyb3V0ZSBpbiBtYW5pZmVzdCkpIHtcbiAgICAgICAgICAgIHRocm93IG1hcmtBc3NldEVycm9yKG5ldyBFcnJvcihcIkZhaWxlZCB0byBsb29rdXAgcm91dGU6IFwiICsgcm91dGUpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhbGxGaWxlcyA9IG1hbmlmZXN0W3JvdXRlXS5tYXAoKGVudHJ5KT0+YXNzZXRQcmVmaXggKyBcIi9fbmV4dC9cIiArIGVuY29kZVVSSShlbnRyeSkpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc2NyaXB0czogYWxsRmlsZXMuZmlsdGVyKCh2KT0+di5lbmRzV2l0aChcIi5qc1wiKSkubWFwKCh2KT0+KDAsIF90cnVzdGVkdHlwZXMuX191bnNhZmVDcmVhdGVUcnVzdGVkU2NyaXB0VVJMKSh2KSArIGdldEFzc2V0UXVlcnlTdHJpbmcoKSksXG4gICAgICAgICAgICBjc3M6IGFsbEZpbGVzLmZpbHRlcigodik9PnYuZW5kc1dpdGgoXCIuY3NzXCIpKS5tYXAoKHYpPT52ICsgZ2V0QXNzZXRRdWVyeVN0cmluZygpKVxuICAgICAgICB9O1xuICAgIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVMb2FkZXIoYXNzZXRQcmVmaXgpIHtcbiAgICBjb25zdCBlbnRyeXBvaW50cyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCBsb2FkZWRTY3JpcHRzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHN0eWxlU2hlZXRzID0gbmV3IE1hcCgpO1xuICAgIGNvbnN0IHJvdXRlcyA9IG5ldyBNYXAoKTtcbiAgICBmdW5jdGlvbiBtYXliZUV4ZWN1dGVTY3JpcHQoc3JjKSB7XG4gICAgICAgIC8vIFdpdGggSE1SIHdlIG1pZ2h0IG5lZWQgdG8gXCJyZWxvYWRcIiBzY3JpcHRzIHdoZW4gdGhleSBhcmVcbiAgICAgICAgLy8gZGlzcG9zZWQgYW5kIHJlYWRkZWQuIEV4ZWN1dGluZyBzY3JpcHRzIHR3aWNlIGhhcyBubyBmdW5jdGlvbmFsXG4gICAgICAgIC8vIGRpZmZlcmVuY2VzXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICBsZXQgcHJvbSA9IGxvYWRlZFNjcmlwdHMuZ2V0KHNyYy50b1N0cmluZygpKTtcbiAgICAgICAgICAgIGlmIChwcm9tKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb207XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAvLyBTa2lwIGV4ZWN1dGluZyBzY3JpcHQgaWYgaXQncyBhbHJlYWR5IGluIHRoZSBET006XG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3Rvcignc2NyaXB0W3NyY149XCInICsgc3JjICsgJ1wiXScpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbG9hZGVkU2NyaXB0cy5zZXQoc3JjLnRvU3RyaW5nKCksIHByb20gPSBhcHBlbmRTY3JpcHQoc3JjKSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvbTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBhcHBlbmRTY3JpcHQoc3JjKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBmdW5jdGlvbiBmZXRjaFN0eWxlU2hlZXQoaHJlZikge1xuICAgICAgICBsZXQgcHJvbSA9IHN0eWxlU2hlZXRzLmdldChocmVmKTtcbiAgICAgICAgaWYgKHByb20pIHtcbiAgICAgICAgICAgIHJldHVybiBwcm9tO1xuICAgICAgICB9XG4gICAgICAgIHN0eWxlU2hlZXRzLnNldChocmVmLCBwcm9tID0gZmV0Y2goaHJlZikudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gbG9hZCBzdHlsZXNoZWV0OiBcIiArIGhyZWYpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlcy50ZXh0KCkudGhlbigodGV4dCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIGhyZWY6IGhyZWYsXG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQ6IHRleHRcbiAgICAgICAgICAgICAgICB9KSk7XG4gICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICB0aHJvdyBtYXJrQXNzZXRFcnJvcihlcnIpO1xuICAgICAgICB9KSk7XG4gICAgICAgIHJldHVybiBwcm9tO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICB3aGVuRW50cnlwb2ludCAocm91dGUpIHtcbiAgICAgICAgICAgIHJldHVybiB3aXRoRnV0dXJlKHJvdXRlLCBlbnRyeXBvaW50cyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRW50cnlwb2ludCAocm91dGUsIGV4ZWN1dGUpIHtcbiAgICAgICAgICAgIChleGVjdXRlID8gUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKT0+ZXhlY3V0ZSgpKS50aGVuKChleHBvcnRzMSk9Pih7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudDogZXhwb3J0czEgJiYgZXhwb3J0czEuZGVmYXVsdCB8fCBleHBvcnRzMSxcbiAgICAgICAgICAgICAgICAgICAgZXhwb3J0czogZXhwb3J0czFcbiAgICAgICAgICAgICAgICB9KSwgKGVycik9Pih7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJcbiAgICAgICAgICAgICAgICB9KSkgOiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKSkudGhlbigoaW5wdXQpPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkID0gZW50cnlwb2ludHMuZ2V0KHJvdXRlKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkICYmIFwicmVzb2x2ZVwiIGluIG9sZCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLnNldChyb3V0ZSwgaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgb2xkLnJlc29sdmUoaW5wdXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5zZXQocm91dGUsIGlucHV0KTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5cG9pbnRzLmRlbGV0ZShyb3V0ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgLy8gd2hlbiB0aGlzIGVudHJ5cG9pbnQgaGFzIGJlZW4gcmVzb2x2ZWQgYmVmb3JlXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSByb3V0ZSBpcyBvdXRkYXRlZCBhbmQgd2Ugd2FudCB0byBpbnZhbGlkYXRlXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgY2FjaGUgZW50cnlcbiAgICAgICAgICAgICAgICAgICAgcm91dGVzLmRlbGV0ZShyb3V0ZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIGxvYWRSb3V0ZSAocm91dGUsIHByZWZldGNoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2l0aEZ1dHVyZShyb3V0ZSwgcm91dGVzLCAoKT0+e1xuICAgICAgICAgICAgICAgIGxldCBkZXZCdWlsZFByb21pc2VSZXNvbHZlO1xuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gXCJkZXZlbG9wbWVudFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGRldkJ1aWxkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlKT0+e1xuICAgICAgICAgICAgICAgICAgICAgICAgZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSA9IHJlc29sdmU7XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZVByb21pc2VXaXRoVGltZW91dChnZXRGaWxlc0ZvclJvdXRlKGFzc2V0UHJlZml4LCByb3V0ZSkudGhlbigocGFyYW0pPT57XG4gICAgICAgICAgICAgICAgICAgIGxldCB7IHNjcmlwdHMsIGNzcyB9ID0gcGFyYW07XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbXG4gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeXBvaW50cy5oYXMocm91dGUpID8gW10gOiBQcm9taXNlLmFsbChzY3JpcHRzLm1hcChtYXliZUV4ZWN1dGVTY3JpcHQpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFByb21pc2UuYWxsKGNzcy5tYXAoZmV0Y2hTdHlsZVNoZWV0KSlcbiAgICAgICAgICAgICAgICAgICAgXSk7XG4gICAgICAgICAgICAgICAgfSkudGhlbigocmVzKT0+e1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy53aGVuRW50cnlwb2ludChyb3V0ZSkudGhlbigoZW50cnlwb2ludCk9Pih7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnlwb2ludCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZXM6IHJlc1sxXVxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgICAgIH0pLCBNU19NQVhfSURMRV9ERUxBWSwgbWFya0Fzc2V0RXJyb3IobmV3IEVycm9yKFwiUm91dGUgZGlkIG5vdCBjb21wbGV0ZSBsb2FkaW5nOiBcIiArIHJvdXRlKSkpLnRoZW4oKHBhcmFtKT0+e1xuICAgICAgICAgICAgICAgICAgICBsZXQgeyBlbnRyeXBvaW50LCBzdHlsZXMgfSA9IHBhcmFtO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCByZXMgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlczogc3R5bGVzXG4gICAgICAgICAgICAgICAgICAgIH0sIGVudHJ5cG9pbnQpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXCJlcnJvclwiIGluIGVudHJ5cG9pbnQgPyBlbnRyeXBvaW50IDogcmVzO1xuICAgICAgICAgICAgICAgIH0pLmNhdGNoKChlcnIpPT57XG4gICAgICAgICAgICAgICAgICAgIGlmIChwcmVmZXRjaCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBjYWNoZSBlcnJvcnMgZHVyaW5nIHByZWZldGNoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOiBlcnJcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KS5maW5hbGx5KCgpPT5kZXZCdWlsZFByb21pc2VSZXNvbHZlID09IG51bGwgPyB2b2lkIDAgOiBkZXZCdWlsZFByb21pc2VSZXNvbHZlKCkpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIHByZWZldGNoIChyb3V0ZSkge1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL0dvb2dsZUNocm9tZUxhYnMvcXVpY2tsaW5rL2Jsb2IvNDUzYTY2MWZhMWZhOTQwZTJkMmUwNDQ0NTIzOThlMzhjNjdhOThmYi9zcmMvaW5kZXgubWpzI0wxMTUtTDExOFxuICAgICAgICAgICAgLy8gTGljZW5zZTogQXBhY2hlIDIuMFxuICAgICAgICAgICAgbGV0IGNuO1xuICAgICAgICAgICAgaWYgKGNuID0gbmF2aWdhdG9yLmNvbm5lY3Rpb24pIHtcbiAgICAgICAgICAgICAgICAvLyBEb24ndCBwcmVmZXRjaCBpZiB1c2luZyAyRyBvciBpZiBTYXZlLURhdGEgaXMgZW5hYmxlZC5cbiAgICAgICAgICAgICAgICBpZiAoY24uc2F2ZURhdGEgfHwgLzJnLy50ZXN0KGNuLmVmZmVjdGl2ZVR5cGUpKSByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZ2V0RmlsZXNGb3JSb3V0ZShhc3NldFByZWZpeCwgcm91dGUpLnRoZW4oKG91dHB1dCk9PlByb21pc2UuYWxsKGNhblByZWZldGNoID8gb3V0cHV0LnNjcmlwdHMubWFwKChzY3JpcHQpPT5wcmVmZXRjaFZpYURvbShzY3JpcHQudG9TdHJpbmcoKSwgXCJzY3JpcHRcIikpIDogW10pKS50aGVuKCgpPT57XG4gICAgICAgICAgICAgICAgKDAsIF9yZXF1ZXN0aWRsZWNhbGxiYWNrLnJlcXVlc3RJZGxlQ2FsbGJhY2spKCgpPT50aGlzLmxvYWRSb3V0ZShyb3V0ZSwgdHJ1ZSkuY2F0Y2goKCk9Pnt9KSk7XG4gICAgICAgICAgICB9KS5jYXRjaCgvLyBzd2FsbG93IHByZWZldGNoIGVycm9yc1xuICAgICAgICAgICAgKCk9Pnt9KTtcbiAgICAgICAgfVxuICAgIH07XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlLWxvYWRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJtYXJrQXNzZXRFcnJvciIsImlzQXNzZXRFcnJvciIsImdldENsaWVudEJ1aWxkTWFuaWZlc3QiLCJjcmVhdGVSb3V0ZUxvYWRlciIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsIl9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCIsInJlcXVpcmUiLCJfZ2V0YXNzZXRwYXRoZnJvbXJvdXRlIiwiXyIsIl90cnVzdGVkdHlwZXMiLCJfcmVxdWVzdGlkbGVjYWxsYmFjayIsIk1TX01BWF9JRExFX0RFTEFZIiwid2l0aEZ1dHVyZSIsImtleSIsIm1hcCIsImdlbmVyYXRvciIsImVudHJ5IiwiZnV0dXJlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXNvbHZlciIsInByb20iLCJzZXQiLCJ0aGVuIiwiY2F0Y2giLCJlcnIiLCJkZWxldGUiLCJBU1NFVF9MT0FEX0VSUk9SIiwiU3ltYm9sIiwiaGFzUHJlZmV0Y2giLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwid2luZG93IiwiTVNJbnB1dE1ldGhvZENvbnRleHQiLCJkb2N1bWVudE1vZGUiLCJyZWxMaXN0Iiwic3VwcG9ydHMiLCJlIiwiY2FuUHJlZmV0Y2giLCJnZXRBc3NldFF1ZXJ5U3RyaW5nIiwicHJvY2VzcyIsImVudiIsIk5FWFRfREVQTE9ZTUVOVF9JRCIsInByZWZldGNoVmlhRG9tIiwiaHJlZiIsImFzIiwicmVqZWN0Iiwic2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yIiwicmVsIiwiY3Jvc3NPcmlnaW4iLCJfX05FWFRfQ1JPU1NfT1JJR0lOIiwib25sb2FkIiwib25lcnJvciIsIkVycm9yIiwiaGVhZCIsImFwcGVuZENoaWxkIiwiYXBwZW5kU2NyaXB0Iiwic3JjIiwic2NyaXB0IiwiYm9keSIsImRldkJ1aWxkUHJvbWlzZSIsInJlc29sdmVQcm9taXNlV2l0aFRpbWVvdXQiLCJwIiwibXMiLCJjYW5jZWxsZWQiLCJyIiwicmVxdWVzdElkbGVDYWxsYmFjayIsInNldFRpbWVvdXQiLCJzZWxmIiwiX19CVUlMRF9NQU5JRkVTVCIsIm9uQnVpbGRNYW5pZmVzdCIsImNiIiwiX19CVUlMRF9NQU5JRkVTVF9DQiIsImdldEZpbGVzRm9yUm91dGUiLCJhc3NldFByZWZpeCIsInJvdXRlIiwic2NyaXB0VXJsIiwiZW5jb2RlVVJJIiwiZGVmYXVsdCIsInNjcmlwdHMiLCJfX3Vuc2FmZUNyZWF0ZVRydXN0ZWRTY3JpcHRVUkwiLCJjc3MiLCJtYW5pZmVzdCIsImFsbEZpbGVzIiwiZmlsdGVyIiwidiIsImVuZHNXaXRoIiwiZW50cnlwb2ludHMiLCJNYXAiLCJsb2FkZWRTY3JpcHRzIiwic3R5bGVTaGVldHMiLCJyb3V0ZXMiLCJtYXliZUV4ZWN1dGVTY3JpcHQiLCJ0b1N0cmluZyIsImZldGNoU3R5bGVTaGVldCIsImZldGNoIiwicmVzIiwib2siLCJ0ZXh0IiwiY29udGVudCIsIndoZW5FbnRyeXBvaW50Iiwib25FbnRyeXBvaW50IiwiZXhlY3V0ZSIsImV4cG9ydHMxIiwiY29tcG9uZW50IiwiZXJyb3IiLCJ1bmRlZmluZWQiLCJpbnB1dCIsIm9sZCIsImxvYWRSb3V0ZSIsInByZWZldGNoIiwiZGV2QnVpbGRQcm9taXNlUmVzb2x2ZSIsInBhcmFtIiwiaGFzIiwiZW50cnlwb2ludCIsInN0eWxlcyIsImFzc2lnbiIsImZpbmFsbHkiLCJjbiIsIm5hdmlnYXRvciIsImNvbm5lY3Rpb24iLCJzYXZlRGF0YSIsInRlc3QiLCJlZmZlY3RpdmVUeXBlIiwib3V0cHV0IiwiX19lc01vZHVsZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/route-loader.js\n"); - -/***/ }), - -/***/ "./node_modules/next/dist/client/router.js": -/*!*************************************************!*\ - !*** ./node_modules/next/dist/client/router.js ***! - \*************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -eval("/* global window */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n Router: function() {\n return _router.default;\n },\n // Export the singletonRouter and this is the public API.\n default: function() {\n return _default;\n },\n withRouter: function() {\n return _withrouter.default;\n },\n useRouter: function() {\n return useRouter;\n },\n createRouter: function() {\n return createRouter;\n },\n makePublicRouterInstance: function() {\n return makePublicRouterInstance;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/cjs/_interop_require_default.cjs\");\nconst _react = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react */ \"react\"));\nconst _router = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../shared/lib/router/router */ \"./node_modules/next/dist/shared/lib/router/router.js\"));\nconst _routercontextsharedruntime = __webpack_require__(/*! ../shared/lib/router-context.shared-runtime */ \"./node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/router-context.js\");\nconst _iserror = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ../lib/is-error */ \"./node_modules/next/dist/lib/is-error.js\"));\nconst _withrouter = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! ./with-router */ \"./node_modules/next/dist/client/with-router.js\"));\nconst singletonRouter = {\n router: null,\n readyCallbacks: [],\n ready (callback) {\n if (this.router) return callback();\n if (false) {}\n }\n};\n// Create public properties and methods of the router in the singletonRouter\nconst urlPropertyFields = [\n \"pathname\",\n \"route\",\n \"query\",\n \"asPath\",\n \"components\",\n \"isFallback\",\n \"basePath\",\n \"locale\",\n \"locales\",\n \"defaultLocale\",\n \"isReady\",\n \"isPreview\",\n \"isLocaleDomain\",\n \"domainLocales\"\n];\nconst routerEvents = [\n \"routeChangeStart\",\n \"beforeHistoryChange\",\n \"routeChangeComplete\",\n \"routeChangeError\",\n \"hashChangeStart\",\n \"hashChangeComplete\"\n];\nconst coreMethodFields = [\n \"push\",\n \"replace\",\n \"reload\",\n \"back\",\n \"prefetch\",\n \"beforePopState\"\n];\n// Events is a static property on the router, the router doesn't have to be initialized to use it\nObject.defineProperty(singletonRouter, \"events\", {\n get () {\n return _router.default.events;\n }\n});\nfunction getRouter() {\n if (!singletonRouter.router) {\n const message = \"No router instance found.\\n\" + 'You should only use \"next/router\" on the client side of your app.\\n';\n throw new Error(message);\n }\n return singletonRouter.router;\n}\nurlPropertyFields.forEach((field)=>{\n // Here we need to use Object.defineProperty because we need to return\n // the property assigned to the actual router\n // The value might get changed as we change routes and this is the\n // proper way to access it\n Object.defineProperty(singletonRouter, field, {\n get () {\n const router = getRouter();\n return router[field];\n }\n });\n});\ncoreMethodFields.forEach((field)=>{\n singletonRouter[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const router = getRouter();\n return router[field](...args);\n };\n});\nrouterEvents.forEach((event)=>{\n singletonRouter.ready(()=>{\n _router.default.events.on(event, function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n const eventField = \"on\" + event.charAt(0).toUpperCase() + event.substring(1);\n const _singletonRouter = singletonRouter;\n if (_singletonRouter[eventField]) {\n try {\n _singletonRouter[eventField](...args);\n } catch (err) {\n console.error(\"Error when running the Router event: \" + eventField);\n console.error((0, _iserror.default)(err) ? err.message + \"\\n\" + err.stack : err + \"\");\n }\n }\n });\n });\n});\nconst _default = singletonRouter;\nfunction useRouter() {\n const router = _react.default.useContext(_routercontextsharedruntime.RouterContext);\n if (!router) {\n throw new Error(\"NextRouter was not mounted. https://nextjs.org/docs/messages/next-router-not-mounted\");\n }\n return router;\n}\nfunction createRouter() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n singletonRouter.router = new _router.default(...args);\n singletonRouter.readyCallbacks.forEach((cb)=>cb());\n singletonRouter.readyCallbacks = [];\n return singletonRouter.router;\n}\nfunction makePublicRouterInstance(router) {\n const scopedRouter = router;\n const instance = {};\n for (const property of urlPropertyFields){\n if (typeof scopedRouter[property] === \"object\") {\n instance[property] = Object.assign(Array.isArray(scopedRouter[property]) ? [] : {}, scopedRouter[property]) // makes sure query is not stateful\n ;\n continue;\n }\n instance[property] = scopedRouter[property];\n }\n // Events is a static property on the router, the router doesn't have to be initialized to use it\n instance.events = _router.default.events;\n coreMethodFields.forEach((field)=>{\n instance[field] = function() {\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n return scopedRouter[field](...args);\n };\n });\n return instance;\n}\nif ((typeof exports.default === \"function\" || typeof exports.default === \"object\" && exports.default !== null) && typeof exports.default.__esModule === \"undefined\") {\n Object.defineProperty(exports.default, \"__esModule\", {\n value: true\n });\n Object.assign(exports.default, exports);\n module.exports = exports.default;\n} //# sourceMappingURL=router.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanMiLCJtYXBwaW5ncyI6IkFBQUEsaUJBQWlCLEdBQWdCO0FBQ2pDQSw4Q0FBNkM7SUFDekNHLE9BQU87QUFDWCxDQUFDLEVBQUM7QUFDRixLQUFNQyxDQUFBQSxDQU9OO0FBQ0EsU0FBU08sUUFBUUMsTUFBTSxFQUFFQyxHQUFHO0lBQ3hCLElBQUksSUFBSUMsUUFBUUQsSUFBSWIsT0FBT0MsY0FBYyxDQUFDVyxRQUFRRSxNQUFNO1FBQ3BEQyxZQUFZO1FBQ1pDLEtBQUtILEdBQUcsQ0FBQ0MsS0FBSztJQUNsQjtBQUNKO0FBQ0FILFFBQVFULFNBQVM7SUFDYkcsUUFBUTtRQUNKLE9BQU9ZLFFBQVFYLE9BQU87SUFDMUI7SUFDQSx5REFBeUQ7SUFDekRBLFNBQVM7UUFDTCxPQUFPWTtJQUNYO0lBQ0FYLFlBQVk7UUFDUixPQUFPWSxZQUFZYixPQUFPO0lBQzlCO0lBQ0FFLFdBQVc7UUFDUCxPQUFPQTtJQUNYO0lBQ0FDLGNBQWM7UUFDVixPQUFPQTtJQUNYO0lBQ0FDLDBCQUEwQjtRQUN0QixPQUFPQTtJQUNYO0FBQ0o7QUFDQSxNQUFNVSwyQkFBMkJDLG1CQUFPQSxDQUFDLDZHQUF5QztBQUNsRixNQUFNQyxTQUFTLFdBQVcsR0FBR0YseUJBQXlCRyxDQUFDLENBQUNGLG1CQUFPQSxDQUFDLG9CQUFPO0FBQ3ZFLE1BQU1KLFVBQVUsV0FBVyxHQUFHRyx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMseUZBQTZCO0FBQzlGLE1BQU1HLDhCQUE4QkgsbUJBQU9BLENBQUMsbUpBQTZDO0FBQ3pGLE1BQU1JLFdBQVcsV0FBVyxHQUFHTCx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMsaUVBQWlCO0FBQ25GLE1BQU1GLGNBQWMsV0FBVyxHQUFHQyx5QkFBeUJHLENBQUMsQ0FBQ0YsbUJBQU9BLENBQUMscUVBQWU7QUFDcEYsTUFBTUssa0JBQWtCO0lBQ3BCQyxRQUFRO0lBQ1JDLGdC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QVksQ0FBQ3JCLE1BQU0sSUFBSUk7UUFDbEM7SUFDSjtJQUNBLE9BQU9rQjtBQUNYO0FBRUEsSUFBSSxDQUFDLE9BQU81RCxRQUFRSSxPQUFPLEtBQUssY0FBZSxPQUFPSixRQUFRSSxPQUFPLEtBQUssWUFBWUosUUFBUUksT0FBTyxLQUFLLElBQUksS0FBTSxPQUFPSixRQUFRSSxPQUFPLENBQUM0RCxVQUFVLEtBQUssYUFBYTtJQUNyS2xFLE9BQU9DLGNBQWMsQ0FBQ0MsUUFBUUksT0FBTyxFQUFFLGNBQWM7UUFBRUgsT0FBTztJQUFLO0lBQ25FSCxPQUFPZ0UsTUFBTSxDQUFDOUQsUUFBUUksT0FBTyxFQUFFSjtJQUMvQkUsT0FBT0YsT0FBTyxHQUFHQSxRQUFRSSxPQUFPO0FBQ2xDLEVBRUEsa0NBQWtDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbmV4dC1hcHAvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9yb3V0ZXIuanM/MzFmYyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBnbG9iYWwgd2luZG93ICovIFwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG4gICAgdmFsdWU6IHRydWVcbn0pO1xuMCAmJiAobW9kdWxlLmV4cG9ydHMgPSB7XG4gICAgUm91dGVyOiBudWxsLFxuICAgIGRlZmF1bHQ6IG51bGwsXG4gICAgd2l0aFJvdXRlcjogbnVsbCxcbiAgICB1c2VSb3V0ZXI6IG51bGwsXG4gICAgY3JlYXRlUm91dGVyOiBudWxsLFxuICAgIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZTogbnVsbFxufSk7XG5mdW5jdGlvbiBfZXhwb3J0KHRhcmdldCwgYWxsKSB7XG4gICAgZm9yKHZhciBuYW1lIGluIGFsbClPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBuYW1lLCB7XG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICAgIGdldDogYWxsW25hbWVdXG4gICAgfSk7XG59XG5fZXhwb3J0KGV4cG9ydHMsIHtcbiAgICBSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3JvdXRlci5kZWZhdWx0O1xuICAgIH0sXG4gICAgLy8gRXhwb3J0IHRoZSBzaW5nbGV0b25Sb3V0ZXIgYW5kIHRoaXMgaXMgdGhlIHB1YmxpYyBBUEkuXG4gICAgZGVmYXVsdDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBfZGVmYXVsdDtcbiAgICB9LFxuICAgIHdpdGhSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gX3dpdGhyb3V0ZXIuZGVmYXVsdDtcbiAgICB9LFxuICAgIHVzZVJvdXRlcjogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB1c2VSb3V0ZXI7XG4gICAgfSxcbiAgICBjcmVhdGVSb3V0ZXI6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gY3JlYXRlUm91dGVyO1xuICAgIH0sXG4gICAgbWFrZVB1YmxpY1JvdXRlckluc3RhbmNlOiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZTtcbiAgICB9XG59KTtcbmNvbnN0IF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdCA9IHJlcXVpcmUoXCJAc3djL2hlbHBlcnMvXy9faW50ZXJvcF9yZXF1aXJlX2RlZmF1bHRcIik7XG5jb25zdCBfcmVhY3QgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCJyZWFjdFwiKSk7XG5jb25zdCBfcm91dGVyID0gLyojX19QVVJFX18qLyBfaW50ZXJvcF9yZXF1aXJlX2RlZmF1bHQuXyhyZXF1aXJlKFwiLi4vc2hhcmVkL2xpYi9yb3V0ZXIvcm91dGVyXCIpKTtcbmNvbnN0IF9yb3V0ZXJjb250ZXh0c2hhcmVkcnVudGltZSA9IHJlcXVpcmUoXCIuLi9zaGFyZWQvbGliL3JvdXRlci1jb250ZXh0LnNoYXJlZC1ydW50aW1lXCIpO1xuY29uc3QgX2lzZXJyb3IgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuLi9saWIvaXMtZXJyb3JcIikpO1xuY29uc3QgX3dpdGhyb3V0ZXIgPSAvKiNfX1BVUkVfXyovIF9pbnRlcm9wX3JlcXVpcmVfZGVmYXVsdC5fKHJlcXVpcmUoXCIuL3dpdGgtcm91dGVyXCIpKTtcbmNvbnN0IHNpbmdsZXRvblJvdXRlciA9IHtcbiAgICByb3V0ZXI6IG51bGwsXG4gICAgcmVhZHlDYWxsYmFja3M6IFtdLFxuICAgIHJlYWR5IChjYWxsYmFjaykge1xuICAgICAgICBpZiAodGhpcy5yb3V0ZXIpIHJldHVybiBjYWxsYmFjaygpO1xuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgdGhpcy5yZWFkeUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbiAgICAgICAgfVxuICAgIH1cbn07XG4vLyBDcmVhdGUgcHVibGljIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgb2YgdGhlIHJvdXRlciBpbiB0aGUgc2luZ2xldG9uUm91dGVyXG5jb25zdCB1cmxQcm9wZXJ0eUZpZWxkcyA9IFtcbiAgICBcInBhdGhuYW1lXCIsXG4gICAgXCJyb3V0ZVwiLFxuICAgIFwicXVlcnlcIixcbiAgICBcImFzUGF0aFwiLFxuICAgIFwiY29tcG9uZW50c1wiLFxuICAgIFwiaXNGYWxsYmFja1wiLFxuICAgIFwiYmFzZVBhdGhcIixcbiAgICBcImxvY2FsZVwiLFxuICAgIFwibG9jYWxlc1wiLFxuICAgIFwiZGVmYXVsdExvY2FsZVwiLFxuICAgIFwiaXNSZWFkeVwiLFxuICAgIFwiaXNQcmV2aWV3XCIsXG4gICAgXCJpc0xvY2FsZURvbWFpblwiLFxuICAgIFwiZG9tYWluTG9jYWxlc1wiXG5dO1xuY29uc3Qgcm91dGVyRXZlbnRzID0gW1xuICAgIFwicm91dGVDaGFuZ2VTdGFydFwiLFxuICAgIFwiYmVmb3JlSGlzdG9yeUNoYW5nZVwiLFxuICAgIFwicm91dGVDaGFuZ2VDb21wbGV0ZVwiLFxuICAgIFwicm91dGVDaGFuZ2VFcnJvclwiLFxuICAgIFwiaGFzaENoYW5nZVN0YXJ0XCIsXG4gICAgXCJoYXNoQ2hhbmdlQ29tcGxldGVcIlxuXTtcbmNvbnN0IGNvcmVNZXRob2RGaWVsZHMgPSBbXG4gICAgXCJwdXNoXCIsXG4gICAgXCJyZXBsYWNlXCIsXG4gICAgXCJyZWxvYWRcIixcbiAgICBcImJhY2tcIixcbiAgICBcInByZWZldGNoXCIsXG4gICAgXCJiZWZvcmVQb3BTdGF0ZVwiXG5dO1xuLy8gRXZlbnRzIGlzIGEgc3RhdGljIHByb3BlcnR5IG9uIHRoZSByb3V0ZXIsIHRoZSByb3V0ZXIgZG9lc24ndCBoYXZlIHRvIGJlIGluaXRpYWxpemVkIHRvIHVzZSBpdFxuT2JqZWN0LmRlZmluZVByb3BlcnR5KHNpbmdsZXRvblJvdXRlciwgXCJldmVudHNcIiwge1xuICAgIGdldCAoKSB7XG4gICAgICAgIHJldHVybiBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIH1cbn0pO1xuZnVuY3Rpb24gZ2V0Um91dGVyKCkge1xuICAgIGlmICghc2luZ2xldG9uUm91dGVyLnJvdXRlcikge1xuICAgICAgICBjb25zdCBtZXNzYWdlID0gXCJObyByb3V0ZXIgaW5zdGFuY2UgZm91bmQuXFxuXCIgKyAnWW91IHNob3VsZCBvbmx5IHVzZSBcIm5leHQvcm91dGVyXCIgb24gdGhlIGNsaWVudCBzaWRlIG9mIHlvdXIgYXBwLlxcbic7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG4gICAgcmV0dXJuIHNpbmdsZXRvblJvdXRlci5yb3V0ZXI7XG59XG51cmxQcm9wZXJ0eUZpZWxkcy5mb3JFYWNoKChmaWVsZCk9PntcbiAgICAvLyBIZXJlIHdlIG5lZWQgdG8gdXNlIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSBiZWNhdXNlIHdlIG5lZWQgdG8gcmV0dXJuXG4gICAgLy8gdGhlIHByb3BlcnR5IGFzc2lnbmVkIHRvIHRoZSBhY3R1YWwgcm91dGVyXG4gICAgLy8gVGhlIHZhbHVlIG1pZ2h0IGdldCBjaGFuZ2VkIGFzIHdlIGNoYW5nZSByb3V0ZXMgYW5kIHRoaXMgaXMgdGhlXG4gICAgLy8gcHJvcGVyIHdheSB0byBhY2Nlc3MgaXRcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoc2luZ2xldG9uUm91dGVyLCBmaWVsZCwge1xuICAgICAgICBnZXQgKCkge1xuICAgICAgICAgICAgY29uc3Qgcm91dGVyID0gZ2V0Um91dGVyKCk7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVyW2ZpZWxkXTtcbiAgICAgICAgfVxuICAgIH0pO1xufSk7XG5jb3JlTWV0aG9kRmllbGRzLmZvckVhY2goKGZpZWxkKT0+e1xuICAgIHNpbmdsZXRvblJvdXRlcltmaWVsZF0gPSBmdW5jdGlvbigpIHtcbiAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByb3V0ZXIgPSBnZXRSb3V0ZXIoKTtcbiAgICAgICAgcmV0dXJuIHJvdXRlcltmaWVsZF0oLi4uYXJncyk7XG4gICAgfTtcbn0pO1xucm91dGVyRXZlbnRzLmZvckVhY2goKGV2ZW50KT0+e1xuICAgIHNpbmdsZXRvblJvdXRlci5yZWFkeSgoKT0+e1xuICAgICAgICBfcm91dGVyLmRlZmF1bHQuZXZlbnRzLm9uKGV2ZW50LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgZXZlbnRGaWVsZCA9IFwib25cIiArIGV2ZW50LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgZXZlbnQuc3Vic3RyaW5nKDEpO1xuICAgICAgICAgICAgY29uc3QgX3NpbmdsZXRvblJvdXRlciA9IHNpbmdsZXRvblJvdXRlcjtcbiAgICAgICAgICAgIGlmIChfc2luZ2xldG9uUm91dGVyW2V2ZW50RmllbGRdKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgX3NpbmdsZXRvblJvdXRlcltldmVudEZpZWxkXSguLi5hcmdzKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIHdoZW4gcnVubmluZyB0aGUgUm91dGVyIGV2ZW50OiBcIiArIGV2ZW50RmllbGQpO1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCgwLCBfaXNlcnJvci5kZWZhdWx0KShlcnIpID8gZXJyLm1lc3NhZ2UgKyBcIlxcblwiICsgZXJyLnN0YWNrIDogZXJyICsgXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn0pO1xuY29uc3QgX2RlZmF1bHQgPSBzaW5nbGV0b25Sb3V0ZXI7XG5mdW5jdGlvbiB1c2VSb3V0ZXIoKSB7XG4gICAgY29uc3Qgcm91dGVyID0gX3JlYWN0LmRlZmF1bHQudXNlQ29udGV4dChfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUuUm91dGVyQ29udGV4dCk7XG4gICAgaWYgKCFyb3V0ZXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTmV4dFJvdXRlciB3YXMgbm90IG1vdW50ZWQuIGh0dHBzOi8vbmV4dGpzLm9yZy9kb2NzL21lc3NhZ2VzL25leHQtcm91dGVyLW5vdC1tb3VudGVkXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcm91dGVyO1xufVxuZnVuY3Rpb24gY3JlYXRlUm91dGVyKCkge1xuICAgIGZvcih2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKXtcbiAgICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG4gICAgc2luZ2xldG9uUm91dGVyLnJvdXRlciA9IG5ldyBfcm91dGVyLmRlZmF1bHQoLi4uYXJncyk7XG4gICAgc2luZ2xldG9uUm91dGVyLnJlYWR5Q2FsbGJhY2tzLmZvckVhY2goKGNiKT0+Y2IoKSk7XG4gICAgc2luZ2xldG9uUm91dGVyLnJlYWR5Q2FsbGJhY2tzID0gW107XG4gICAgcmV0dXJuIHNpbmdsZXRvblJvdXRlci5yb3V0ZXI7XG59XG5mdW5jdGlvbiBtYWtlUHVibGljUm91dGVySW5zdGFuY2Uocm91dGVyKSB7XG4gICAgY29uc3Qgc2NvcGVkUm91dGVyID0gcm91dGVyO1xuICAgIGNvbnN0IGluc3RhbmNlID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiB1cmxQcm9wZXJ0eUZpZWxkcyl7XG4gICAgICAgIGlmICh0eXBlb2Ygc2NvcGVkUm91dGVyW3Byb3BlcnR5XSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaW5zdGFuY2VbcHJvcGVydHldID0gT2JqZWN0LmFzc2lnbihBcnJheS5pc0FycmF5KHNjb3BlZFJvdXRlcltwcm9wZXJ0eV0pID8gW10gOiB7fSwgc2NvcGVkUm91dGVyW3Byb3BlcnR5XSkgLy8gbWFrZXMgc3VyZSBxdWVyeSBpcyBub3Qgc3RhdGVmdWxcbiAgICAgICAgICAgIDtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGluc3RhbmNlW3Byb3BlcnR5XSA9IHNjb3BlZFJvdXRlcltwcm9wZXJ0eV07XG4gICAgfVxuICAgIC8vIEV2ZW50cyBpcyBhIHN0YXRpYyBwcm9wZXJ0eSBvbiB0aGUgcm91dGVyLCB0aGUgcm91dGVyIGRvZXNuJ3QgaGF2ZSB0byBiZSBpbml0aWFsaXplZCB0byB1c2UgaXRcbiAgICBpbnN0YW5jZS5ldmVudHMgPSBfcm91dGVyLmRlZmF1bHQuZXZlbnRzO1xuICAgIGNvcmVNZXRob2RGaWVsZHMuZm9yRWFjaCgoZmllbGQpPT57XG4gICAgICAgIGluc3RhbmNlW2ZpZWxkXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgZm9yKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kyspe1xuICAgICAgICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gc2NvcGVkUm91dGVyW2ZpZWxkXSguLi5hcmdzKTtcbiAgICAgICAgfTtcbiAgICB9KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG59XG5cbmlmICgodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ2Z1bmN0aW9uJyB8fCAodHlwZW9mIGV4cG9ydHMuZGVmYXVsdCA9PT0gJ29iamVjdCcgJiYgZXhwb3J0cy5kZWZhdWx0ICE9PSBudWxsKSkgJiYgdHlwZW9mIGV4cG9ydHMuZGVmYXVsdC5fX2VzTW9kdWxlID09PSAndW5kZWZpbmVkJykge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cy5kZWZhdWx0LCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gIE9iamVjdC5hc3NpZ24oZXhwb3J0cy5kZWZhdWx0LCBleHBvcnRzKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSBleHBvcnRzLmRlZmF1bHQ7XG59XG5cbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXJvdXRlci5qcy5tYXAiXSwibmFtZXMiOlsiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJleHBvcnRzIiwidmFsdWUiLCJtb2R1bGUiLCJSb3V0ZXIiLCJkZWZhdWx0Iiwid2l0aFJvdXRlciIsInVzZVJvdXRlciIsImNyZWF0ZVJvdXRlciIsIm1ha2VQdWJsaWNSb3V0ZXJJbnN0YW5jZSIsIl9leHBvcnQiLCJ0YXJnZXQiLCJhbGwiLCJuYW1lIiwiZW51bWVyYWJsZSIsImdldCIsIl9yb3V0ZXIiLCJfZGVmYXVsdCIsIl93aXRocm91dGVyIiwiX2ludGVyb3BfcmVxdWlyZV9kZWZhdWx0IiwicmVxdWlyZSIsIl9yZWFjdCIsIl8iLCJfcm91dGVyY29udGV4dHNoYXJlZHJ1bnRpbWUiLCJfaXNlcnJvciIsInNpbmdsZXRvblJvdXRlciIsInJvdXRlciIsInJlYWR5Q2FsbGJhY2tzIiwicmVhZHkiLCJjYWxsYmFjayIsInB1c2giLCJ1cmxQcm9wZXJ0eUZpZWxkcyIsInJvdXRlckV2ZW50cyIsImNvcmVNZXRob2RGaWVsZHMiLCJldmVudHMiLCJnZXRSb3V0ZXIiLCJtZXNzYWdlIiwiRXJyb3IiLCJmb3JFYWNoIiwiZmllbGQiLCJfbGVuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImV2ZW50Iiwib24iLCJldmVudEZpZWxkIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzdWJzdHJpbmciLCJfc2luZ2xldG9uUm91dGVyIiwiZXJyIiwiY29uc29sZSIsImVycm9yIiwic3RhY2siLCJ1c2VDb250ZXh0IiwiUm91dGVyQ29udGV4dCIsImNiIiwic2NvcGVkUm91dGVyIiwiaW5zdGFuY2UiLCJwcm9wZXJ0eSIsImFzc2lnbiIsImlzQXJyYXkiLCJfX2VzTW9kdWxlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///./node_modules/next/dist/client/router.js\n"); - -/***/ }), - -/***/ "./node_modules/next/dist/client/script.js": -/*!*************************************************!*\ - !*** ./node_modules/next/dist/client/script.js ***! - \*************************************************/ -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; -eval("/* __next_internal_client_entry_do_not_use__ cjs */ \nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\n0 && (0);\nfunction _export(target, all) {\n for(var name in all)Object.defineProperty(target, name, {\n enumerable: true,\n get: all[name]\n });\n}\n_export(exports, {\n handleClientScriptLoad: function() {\n return handleClientScriptLoad;\n },\n initScriptLoader: function() {\n return initScriptLoader;\n },\n default: function() {\n return _default;\n }\n});\nconst _interop_require_default = __webpack_require__(/*! @swc/helpers/_/_interop_require_default */ \"./node_modules/@swc/helpers/cjs/_interop_require_default.cjs\");\nconst _interop_require_wildcard = __webpack_require__(/*! @swc/helpers/_/_interop_require_wildcard */ \"./node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs\");\nconst _reactdom = /*#__PURE__*/ _interop_require_default._(__webpack_require__(/*! react-dom */ \"react-dom\"));\nconst _react = /*#__PURE__*/ _interop_require_wildcard._(__webpack_require__(/*! react */ \"react\"));\nconst _headmanagercontextsharedruntime = __webpack_require__(/*! ../shared/lib/head-manager-context.shared-runtime */ \"./node_modules/next/dist/server/future/route-modules/pages/vendored/contexts/head-manager-context.js\");\nconst _headmanager = __webpack_require__(/*! ./head-manager */ \"./node_modules/next/dist/client/head-manager.js\");\nconst _requestidlecallback = __webpack_require__(/*! ./request-idle-callback */ \"./node_modules/next/dist/client/request-idle-callback.js\");\nconst ScriptCache = new Map();\nconst LoadCache = new Set();\nconst ignoreProps = [\n \"onLoad\",\n \"onReady\",\n \"dangerouslySetInnerHTML\",\n \"children\",\n \"onError\",\n \"strategy\",\n \"stylesheets\"\n];\nconst insertStylesheets = (stylesheets)=>{\n // Case 1: Styles for afterInteractive/lazyOnload with appDir injected via handleClientScriptLoad\n //\n // Using ReactDOM.preinit to feature detect appDir and inject styles\n // Stylesheets might have already been loaded if initialized with Script component\n // Re-inject styles here to handle scripts loaded via handleClientScriptLoad\n // ReactDOM.preinit handles dedup and ensures the styles are loaded only once\n if (_reactdom.default.preinit) {\n stylesheets.forEach((stylesheet)=>{\n _reactdom.default.preinit(stylesheet, {\n as: \"style\"\n });\n });\n return;\n }\n // Case 2: Styles for afterInteractive/lazyOnload with pages injected via handleClientScriptLoad\n //\n // We use this function to load styles when appdir is not detected\n // TODO: Use React float APIs to load styles once available for pages dir\n if (false) {}\n};\nconst loadScript = (props)=>{\n const { src, id, onLoad = ()=>{}, onReady = null, dangerouslySetInnerHTML, children = \"\", strategy = \"afterInteractive\", onError, stylesheets } = props;\n const cacheKey = id || src;\n // Script has already loaded\n if (cacheKey && LoadCache.has(cacheKey)) {\n return;\n }\n // Contents of this script are already loading/loaded\n if (ScriptCache.has(src)) {\n LoadCache.add(cacheKey);\n // It is possible that multiple `next/script` components all have same \"src\", but has different \"onLoad\"\n // This is to make sure the same remote script will only load once, but \"onLoad\" are executed in order\n ScriptCache.get(src).then(onLoad, onError);\n return;\n }\n /** Execute after the script first loaded */ const afterLoad = ()=>{\n // Run onReady for the first time after load event\n if (onReady) {\n onReady();\n }\n // add cacheKey to LoadCache when load successfully\n LoadCache.add(cacheKey);\n };\n const el = document.createElement(\"script\");\n const loadPromise = new Promise((resolve, reject)=>{\n el.addEventListener(\"load\", function(e) {\n resolve();\n if (onLoad) {\n onLoad.call(this, e);\n }\n afterLoad();\n });\n el.addEventListener(\"error\", function(e) {\n reject(e);\n });\n }).catch(function(e) {\n if (onError) {\n onError(e);\n }\n });\n if (dangerouslySetInnerHTML) {\n // Casting since lib.dom.d.ts doesn't have TrustedHTML yet.\n el.innerHTML = dangerouslySetInnerHTML.__html || \"\";\n afterLoad();\n } else if (children) {\n el.textContent = typeof children === \"string\" ? children : Array.isArray(children) ? children.join(\"\") : \"\";\n afterLoad();\n } else if (src) {\n el.src = src;\n // do not add cacheKey into LoadCache for remote script here\n // cacheKey will be added to LoadCache when it is actually loaded (see loadPromise above)\n ScriptCache.set(src, loadPromise);\n }\n for (const [k, value] of Object.entries(props)){\n if (value === undefined || ignoreProps.includes(k)) {\n continue;\n }\n const attr = _headmanager.DOMAttributeNames[k] || k.toLowerCase();\n el.setAttribute(attr, value);\n }\n if (strategy === \"worker\") {\n el.setAttribute(\"type\", \"text/partytown\");\n }\n el.setAttribute(\"data-nscript\", strategy);\n // Load styles associated with this script\n if (stylesheets) {\n insertStylesheets(stylesheets);\n }\n document.body.appendChild(el);\n};\nfunction handleClientScriptLoad(props) {\n const { strategy = \"afterInteractive\" } = props;\n if (strategy === \"lazyOnload\") {\n window.addEventListener(\"load\", ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n } else {\n loadScript(props);\n }\n}\nfunction loadLazyScript(props) {\n if (document.readyState === \"complete\") {\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n } else {\n window.addEventListener(\"load\", ()=>{\n (0, _requestidlecallback.requestIdleCallback)(()=>loadScript(props));\n });\n }\n}\nfunction addBeforeInteractiveToCache() {\n const scripts = [\n ...document.querySelectorAll('[data-nscript=\"beforeInteractive\"]'),\n ...document.querySelectorAll('[data-nscript=\"beforePageRender\"]')\n ];\n scripts.forEach((script)=>{\n const cacheKey = script.id || script.getAttribute(\"src\");\n LoadCache.add(cacheKey);\n });\n}\nfunction initScriptLoader(scriptLoaderItems) {\n scriptLoaderItems.forEach(handleClientScriptLoad);\n addBeforeInteractiveToCache();\n}\nfunction Script(props) {\n const { id, src = \"\", onLoad = ()=>{}, onReady = null, strategy = \"afterInteractive\", onError, stylesheets, ...restProps } = props;\n // Context is available only during SSR\n const { updateScripts, scripts, getIsSsr, appDir, nonce } = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);\n /**\n * - First mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script hasn't loaded yet (not in LoadCache)\n * onReady is skipped, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. hasLoadScriptEffectCalled.current is false, loadScript executes\n * Once the script is loaded, the onLoad and onReady will be called by then\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n *\n * - Second mount:\n * 1. The useEffect for onReady executes\n * 2. hasOnReadyEffectCalled.current is false, but the script has already loaded (found in LoadCache)\n * onReady is called, set hasOnReadyEffectCalled.current to true\n * 3. The useEffect for loadScript executes\n * 4. The script is already loaded, loadScript bails out\n * [If strict mode is enabled / is wrapped in component]\n * 5. The useEffect for onReady executes again\n * 6. hasOnReadyEffectCalled.current is true, so entire effect is skipped\n * 7. The useEffect for loadScript executes again\n * 8. hasLoadScriptEffectCalled.current is true, so entire effect is skipped\n */ const hasOnReadyEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n const cacheKey = id || src;\n if (!hasOnReadyEffectCalled.current) {\n // Run onReady if script has loaded before but component is re-mounted\n if (onReady && cacheKey && LoadCache.has(cacheKey)) {\n onReady();\n }\n hasOnReadyEffectCalled.current = true;\n }\n }, [\n onReady,\n id,\n src\n ]);\n const hasLoadScriptEffectCalled = (0, _react.useRef)(false);\n (0, _react.useEffect)(()=>{\n if (!hasLoadScriptEffectCalled.current) {\n if (strategy === \"afterInteractive\") {\n loadScript(props);\n } else if (strategy === \"lazyOnload\") {\n loadLazyScript(props);\n }\n hasLoadScriptEffectCalled.current = true;\n }\n }, [\n props,\n strategy\n ]);\n if (strategy === \"beforeInteractive\" || strategy === \"worker\") {\n if (updateScripts) {\n scripts[strategy] = (scripts[strategy] || []).concat([\n {\n id,\n src,\n onLoad,\n onReady,\n onError,\n ...restProps\n }\n ]);\n updateScripts(scripts);\n } else if (getIsSsr && getIsSsr()) {\n // Script has already loaded during SSR\n LoadCache.add(id || src);\n } else if (getIsSsr && !getIsSsr()) {\n loadScript(props);\n }\n }\n // For the app directory, we need React Float to preload these scripts.\n if (appDir) {\n // Injecting stylesheets here handles beforeInteractive and worker scripts correctly\n // For other strategies injecting here ensures correct stylesheet order\n // ReactDOM.preinit handles loading the styles in the correct order,\n // also ensures the stylesheet is loaded only once and in a consistent manner\n //\n // Case 1: Styles for beforeInteractive/worker with appDir - handled here\n // Case 2: Styles for beforeInteractive/worker with pages dir - Not handled yet\n // Case 3: Styles for afterInteractive/lazyOnload with appDir - handled here\n // Case 4: Styles for afterInteractive/lazyOnload with pages dir - handled in insertStylesheets function\n if (stylesheets) {\n stylesheets.forEach((styleSrc)=>{\n _reactdom.default.preinit(styleSrc, {\n as: \"style\"\n });\n });\n }\n // Before interactive scripts need to be loaded by Next.js' runtime instead\n // of native