Sebas012/panel_example
0
1{2 "cells": [3 {4 "cell_type": "markdown",5 "metadata": {6 "cell_id": "6fb318b2878f43ab8901cec87f4a2669",7 "deepnote_cell_type": "text-cell-h1",8 "formattedRanges": [],9 "tags": []10 },11 "source": [12 "# Hacia una Colombia Libre de Violencia Sexual: Análisis y Acción"13 ]14 },15 {16 "cell_type": "markdown",17 "metadata": {18 "cell_id": "741c98929a4e4c06bd06fa56959f68a6",19 "deepnote_cell_type": "text-cell-p",20 "formattedRanges": [21 {22 "fromCodePoint": 423,23 "ranges": [],24 "toCodePoint": 500,25 "type": "link",26 "url": "https://www.datos.gov.co/Seguridad-y-Defensa/Visual-sexuales-PolNal/9dv7-nexx"27 }28 ]29 },30 "source": [31 "Para el desarrollo del proyecto en la materia de gestión de proyectos para analítica, se seleccionó un data frame que relaciona información sobre violaciones sexuales desde el 01 de enero del año 2010 al 31 de Mayo del año 2023. Por lo tanto, este conjunto de datos consta de 290.362 datos recolectados y 9 columnas principales que representan las características de cada delito. Este se puede buscar en la siguiente ruta: https://www.datos.gov.co/Seguridad-y-Defensa/Visual-sexuales-PolNal/9dv7-nexx"32 ]33 },34 {35 "cell_type": "markdown",36 "metadata": {37 "cell_id": "8b1bb24c4e1e4260a27f7e86b5038aeb",38 "deepnote_cell_type": "text-cell-p",39 "formattedRanges": []40 },41 "source": [42 "Por otra parte, es importante utilizar las seis fases de la metodología CRIPS-DM, con el objetivo de planificar y organizar correctamente la elaboración del proyecto."43 ]44 },45 {46 "cell_type": "markdown",47 "metadata": {48 "cell_id": "26218134cc204da08e848a1e96814f0a",49 "deepnote_cell_type": "text-cell-h1",50 "formattedRanges": [],51 "tags": []52 },53 "source": [54 "# FASE 1: COMPRENSION DEL NEGOCIO"55 ]56 },57 {58 "cell_type": "markdown",59 "metadata": {60 "cell_id": "5c18fef2706e4fdb947782c65ccd8896",61 "deepnote_cell_type": "text-cell-p",62 "formattedRanges": []63 },64 "source": [65 "Colombia ha enfrentado históricamente problemas relacionados con las violaciones y la violencia sexual. Estos incidentes no solo tienen un impacto devastador en las víctimas y sus familias, sino que también debilitaban la confianza en las instituciones y perpetúan patrones de discriminación y desigualdad. La necesidad de abordar este problema es crítica en términos de derechos humanos, igualdad de género y seguridad pública."66 ]67 },68 {69 "cell_type": "markdown",70 "metadata": {71 "cell_id": "54ea7108744f4b1b84d977ea50f3d6c6",72 "deepnote_cell_type": "text-cell-p",73 "formattedRanges": [],74 "tags": []75 },76 "source": [77 "El objetivo principal de este proyecto es analizar una base de datos sobre violaciones en Colombia para arrojar luz sobre las tendencias, patrones geográficos y características demográficas de estos incidentes. A través de este análisis, se busca proporcionar una base sólida para la toma de decisiones informadas por parte de las autoridades y los actores involucrados en la prevención y mitigación de la violencia sexual en Colombia."78 ]79 },80 {81 "cell_type": "markdown",82 "metadata": {83 "cell_id": "fc395df335b244e99d4597b885fed802",84 "deepnote_cell_type": "text-cell-p",85 "formattedRanges": []86 },87 "source": [88 "El proyecto agrega valor de diversas maneras:"89 ]90 },91 {92 "cell_type": "markdown",93 "metadata": {94 "cell_id": "be720fb4f75e4e80ab7bcbfa77ae9748",95 "deepnote_cell_type": "text-cell-bullet",96 "formattedRanges": [97 {98 "fromCodePoint": 0,99 "marks": {100 "bold": true101 },102 "toCodePoint": 12,103 "type": "marks"104 }105 ]106 },107 "source": [108 "- Prevención: Al identificar patrones y tendencias, se pueden desarrollar estrategias de prevención más efectivas.\n"109 ]110 },111 {112 "cell_type": "markdown",113 "metadata": {114 "cell_id": "372617b73dc6428784c0b6e9779d06b8",115 "deepnote_cell_type": "text-cell-bullet",116 "formattedRanges": [117 {118 "fromCodePoint": 0,119 "marks": {120 "bold": true121 },122 "toCodePoint": 18,123 "type": "marks"124 }125 ]126 },127 "source": [128 "- Justicia y Apoyo: La creación de programas de apoyo a víctimas y la promoción de la justicia restaurativa contribuyen a la recuperación de las víctimas y a la búsqueda de justicia.\n"129 ]130 },131 {132 "cell_type": "markdown",133 "metadata": {134 "cell_id": "f8380b85e688479a81f87cd154bcb0cf",135 "deepnote_cell_type": "text-cell-bullet",136 "formattedRanges": [137 {138 "fromCodePoint": 0,139 "marks": {140 "bold": true141 },142 "toCodePoint": 15,143 "type": "marks"144 }145 ]146 },147 "source": [148 "- Concienciación: Las estrategias de sensibilización ayudan a cambiar actitudes culturales y a fomentar una sociedad más consciente de la violencia sexual.\n"149 ]150 },151 {152 "cell_type": "markdown",153 "metadata": {154 "cell_id": "05c91057b1014ae4a71ec0e13a427c79",155 "deepnote_cell_type": "text-cell-bullet",156 "formattedRanges": [157 {158 "fromCodePoint": 0,159 "marks": {160 "bold": true161 },162 "toCodePoint": 13,163 "type": "marks"164 }165 ]166 },167 "source": [168 "- Interesados: Las partes interesadas clave incluyen a las autoridades gubernamentales, organizaciones no gubernamentales de derechos humanos, grupos de mujeres, víctimas de violencia sexual, la comunidad en general y agencias internacionales que puedan respaldar y colaborar en el proyecto."169 ]170 },171 {172 "cell_type": "markdown",173 "metadata": {174 "cell_id": "acaff6fad5404159b163f679f19e7fc6",175 "deepnote_cell_type": "text-cell-bullet",176 "formattedRanges": [177 {178 "fromCodePoint": 0,179 "marks": {180 "bold": true181 },182 "toCodePoint": 16,183 "type": "marks"184 }185 ]186 },187 "source": [188 "- Impacto Social: La prevención de la violencia sexual tiene un profundo impacto social. Contribuye a la seguridad y bienestar de la población, promueve la igualdad de género y fortalece la confianza en las instituciones."189 ]190 },191 {192 "cell_type": "markdown",193 "metadata": {194 "cell_id": "c21b204ca7b14da0b1de476486d8b861",195 "deepnote_cell_type": "text-cell-bullet",196 "formattedRanges": [197 {198 "fromCodePoint": 0,199 "marks": {200 "bold": true201 },202 "toCodePoint": 21,203 "type": "marks"204 }205 ]206 },207 "source": [208 "- Resultados Esperados: Se espera que el proyecto proporcione análisis sólidos y recomendaciones basadas en datos para informar políticas y estrategias de prevención más efectivas. Además, se busca generar conciencia pública sobre la violencia sexual y proporcionar apoyo a las víctimas."209 ]210 },211 {212 "cell_type": "markdown",213 "metadata": {214 "cell_id": "9cd275fca70e493dac5dcd33804f7826",215 "deepnote_cell_type": "text-cell-h1",216 "formattedRanges": []217 },218 "source": [219 "# FASE 2: ESTUDIO Y COMPRENSION DE LOS DATOS"220 ]221 },222 {223 "cell_type": "markdown",224 "metadata": {225 "cell_id": "c63dfcb6d0884df6aca134c60e8c6dbd",226 "deepnote_cell_type": "text-cell-p",227 "formattedRanges": []228 },229 "source": [230 "Es importante realizar una comprensión de los datos disponibles en el data frame con el propósito de conocer a profundidad los casos de violaciones que se presentan en Colombia. Por lo tanto, a continuación se expondrán los datos más relevantes que fueron recolectados entre el 01 de enero del año 2010 al 31 de Mayo del año 2023."231 ]232 },233 {234 "cell_type": "markdown",235 "metadata": {236 "cell_id": "715e47f5f9f54e508a0ad560c98178d9",237 "deepnote_cell_type": "text-cell-bullet",238 "formattedRanges": [239 {240 "fromCodePoint": 0,241 "marks": {242 "bold": true243 },244 "toCodePoint": 14,245 "type": "marks"246 }247 ]248 },249 "source": [250 "- Departamento: Esta variable muestra la región o área geográfica donde se realizo el delito."251 ]252 },253 {254 "cell_type": "markdown",255 "metadata": {256 "cell_id": "7f1fca1c3866459d944a1ebcf87e838a",257 "deepnote_cell_type": "text-cell-bullet",258 "formattedRanges": [259 {260 "fromCodePoint": 0,261 "marks": {262 "bold": true263 },264 "toCodePoint": 10,265 "type": "marks"266 }267 ]268 },269 "source": [270 "- Municipio: Esta variable muestra el lugar más específico dentro de un departamento donde ocurrió el delito"271 ]272 },273 {274 "cell_type": "markdown",275 "metadata": {276 "cell_id": "71dbfb5d08b64be698b7de6b769fdd4e",277 "deepnote_cell_type": "text-cell-bullet",278 "formattedRanges": [279 {280 "fromCodePoint": 0,281 "marks": {282 "bold": true283 },284 "toCodePoint": 13,285 "type": "marks"286 }287 ]288 },289 "source": [290 "- Código Dane: Esta variable muestra el código numérico único utilizado para identificar ubicaciones geográficas en Colombia."291 ]292 },293 {294 "cell_type": "markdown",295 "metadata": {296 "cell_id": "08cb4820fea54c4d8769b1b0a3099b6f",297 "deepnote_cell_type": "text-cell-bullet",298 "formattedRanges": [299 {300 "fromCodePoint": 0,301 "marks": {302 "bold": true303 },304 "toCodePoint": 13,305 "type": "marks"306 }307 ]308 },309 "source": [310 "- Tipo de Arma: Esta variable muestra el tipo de arma utilizada en el acto de violación."311 ]312 },313 {314 "cell_type": "markdown",315 "metadata": {316 "cell_id": "c97ed4d0a02d489986a18e83687fe0c0",317 "deepnote_cell_type": "text-cell-bullet",318 "formattedRanges": [319 {320 "fromCodePoint": 0,321 "marks": {322 "bold": true323 },324 "toCodePoint": 7,325 "type": "marks"326 }327 ]328 },329 "source": [330 "- Fecha: Esta variable muestra la fecha en que se cometió la violación."331 ]332 },333 {334 "cell_type": "markdown",335 "metadata": {336 "cell_id": "f9a33299ca3d4123a844ad5d110b8081",337 "deepnote_cell_type": "text-cell-bullet",338 "formattedRanges": [339 {340 "fromCodePoint": 0,341 "marks": {342 "bold": true343 },344 "toCodePoint": 8,345 "type": "marks"346 }347 ]348 },349 "source": [350 "- Genero: Esta variable muestra el sexo de las personas involucradas en la violación."351 ]352 },353 {354 "cell_type": "markdown",355 "metadata": {356 "cell_id": "735ef759d22d416985ca682ad34b84b9",357 "deepnote_cell_type": "text-cell-bullet",358 "formattedRanges": [359 {360 "fromCodePoint": 0,361 "marks": {362 "bold": true363 },364 "toCodePoint": 13,365 "type": "marks"366 }367 ]368 },369 "source": [370 "- Grupo etario: Esta variable muestra la edad de las personas involucradas en la violación."371 ]372 },373 {374 "cell_type": "markdown",375 "metadata": {376 "cell_id": "a5b9a3b8e43441e9842d0d1d969f69be",377 "deepnote_cell_type": "text-cell-bullet",378 "formattedRanges": [379 {380 "fromCodePoint": 0,381 "marks": {382 "bold": true383 },384 "toCodePoint": 9,385 "type": "marks"386 }387 ]388 },389 "source": [390 "- Cantidad: Esta variable muestra el numero de veces que cometieron el delito."391 ]392 },393 {394 "cell_type": "markdown",395 "metadata": {396 "cell_id": "a390814cea8a47de87819f4f29f415b4",397 "deepnote_cell_type": "text-cell-bullet",398 "formattedRanges": [399 {400 "fromCodePoint": 0,401 "marks": {402 "bold": true403 },404 "toCodePoint": 7,405 "type": "marks"406 }407 ]408 },409 "source": [410 "- Delito: Esta variable muestra el tipo de delito que se cometio."411 ]412 },413 {414 "cell_type": "markdown",415 "metadata": {416 "cell_id": "555c513800a447b1b337675461b2f4d7",417 "deepnote_cell_type": "text-cell-p",418 "formattedRanges": []419 },420 "source": [421 "Una vez abordado las características principales del dataset, se procede a examinar y abordar el problema de la violación en Colombia para prevenir y disminuir la violencia sexual en todas sus formas."422 ]423 },424 {425 "cell_type": "code",426 "execution_count": 1,427 "metadata": {428 "cell_id": "acbc280aea484ef7b1e1183e00284249",429 "deepnote_cell_type": "code",430 "deepnote_to_be_reexecuted": false,431 "execution_millis": 2721,432 "execution_start": 1695145243018,433 "source_hash": null434 },435 "outputs": [],436 "source": [437 "# pip install -r requirements.txt"438 ]439 },440 {441 "cell_type": "code",442 "execution_count": 2,443 "metadata": {444 "cell_id": "462723f3d41a469587ecffc576a0b65f",445 "deepnote_cell_type": "code",446 "deepnote_to_be_reexecuted": false,447 "execution_millis": 1127,448 "execution_start": 1695145245717,449 "source_hash": null450 },451 "outputs": [452 {453 "name": "stdout",454 "output_type": "stream",455 "text": [456 "Note: you may need to restart the kernel to use updated packages.\n"457 ]458 }459 ],460 "source": [461 "pip freeze > requirements.txt"462 ]463 },464 {465 "cell_type": "code",466 "execution_count": 3,467 "metadata": {468 "cell_id": "650806e2d3a5475ab35a02de86150b23",469 "deepnote_cell_type": "code",470 "deepnote_to_be_reexecuted": false,471 "execution_millis": 4456,472 "execution_start": 1695145246824,473 "source_hash": null474 },475 "outputs": [476 {477 "data": {478 "application/javascript": [479 "(function(root) {\n",480 " function now() {\n",481 " return new Date();\n",482 " }\n",483 "\n",484 " var force = true;\n",485 " var py_version = '3.2.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n",486 " var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n",487 " var reloading = false;\n",488 " var Bokeh = root.Bokeh;\n",489 " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",490 "\n",491 " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",492 " root._bokeh_timeout = Date.now() + 5000;\n",493 " root._bokeh_failed_load = false;\n",494 " }\n",495 "\n",496 " function run_callbacks() {\n",497 " try {\n",498 " root._bokeh_onload_callbacks.forEach(function(callback) {\n",499 " if (callback != null)\n",500 " callback();\n",501 " });\n",502 " } finally {\n",503 " delete root._bokeh_onload_callbacks;\n",504 " }\n",505 " console.debug(\"Bokeh: all callbacks have finished\");\n",506 " }\n",507 "\n",508 " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",509 " if (css_urls == null) css_urls = [];\n",510 " if (js_urls == null) js_urls = [];\n",511 " if (js_modules == null) js_modules = [];\n",512 " if (js_exports == null) js_exports = {};\n",513 "\n",514 " root._bokeh_onload_callbacks.push(callback);\n",515 "\n",516 " if (root._bokeh_is_loading > 0) {\n",517 " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",518 " return null;\n",519 " }\n",520 " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",521 " run_callbacks();\n",522 " return null;\n",523 " }\n",524 " if (!reloading) {\n",525 " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",526 " }\n",527 "\n",528 " function on_load() {\n",529 " root._bokeh_is_loading--;\n",530 " if (root._bokeh_is_loading === 0) {\n",531 " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",532 " run_callbacks()\n",533 " }\n",534 " }\n",535 " window._bokeh_on_load = on_load\n",536 "\n",537 " function on_error() {\n",538 " console.error(\"failed to load \" + url);\n",539 " }\n",540 "\n",541 " var skip = [];\n",542 " if (window.requirejs) {\n",543 " window.requirejs.config({'packages': {}, 'paths': {'tabulator': 'https://cdn.jsdelivr.net/npm/tabulator-tables@5.5.0/dist/js/tabulator', 'moment': 'https://cdn.jsdelivr.net/npm/luxon/build/global/luxon.min', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n",544 " require([\"tabulator\"], function(Tabulator) {\n",545 "\twindow.Tabulator = Tabulator\n",546 "\ton_load()\n",547 " })\n",548 " require([\"moment\"], function(moment) {\n",549 "\twindow.moment = moment\n",550 "\ton_load()\n",551 " })\n",552 " require([\"jspanel\"], function(jsPanel) {\n",553 "\twindow.jsPanel = jsPanel\n",554 "\ton_load()\n",555 " })\n",556 " require([\"jspanel-modal\"], function() {\n",557 "\ton_load()\n",558 " })\n",559 " require([\"jspanel-tooltip\"], function() {\n",560 "\ton_load()\n",561 " })\n",562 " require([\"jspanel-hint\"], function() {\n",563 "\ton_load()\n",564 " })\n",565 " require([\"jspanel-layout\"], function() {\n",566 "\ton_load()\n",567 " })\n",568 " require([\"jspanel-contextmenu\"], function() {\n",569 "\ton_load()\n",570 " })\n",571 " require([\"jspanel-dock\"], function() {\n",572 "\ton_load()\n",573 " })\n",574 " require([\"gridstack\"], function(GridStack) {\n",575 "\twindow.GridStack = GridStack\n",576 "\ton_load()\n",577 " })\n",578 " require([\"notyf\"], function() {\n",579 "\ton_load()\n",580 " })\n",581 " root._bokeh_is_loading = css_urls.length + 11;\n",582 " } else {\n",583 " root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n",584 " }\n",585 "\n",586 " var existing_stylesheets = []\n",587 " var links = document.getElementsByTagName('link')\n",588 " for (var i = 0; i < links.length; i++) {\n",589 " var link = links[i]\n",590 " if (link.href != null) {\n",591 "\texisting_stylesheets.push(link.href)\n",592 " }\n",593 " }\n",594 " for (var i = 0; i < css_urls.length; i++) {\n",595 " var url = css_urls[i];\n",596 " if (existing_stylesheets.indexOf(url) !== -1) {\n",597 "\ton_load()\n",598 "\tcontinue;\n",599 " }\n",600 " const element = document.createElement(\"link\");\n",601 " element.onload = on_load;\n",602 " element.onerror = on_error;\n",603 " element.rel = \"stylesheet\";\n",604 " element.type = \"text/css\";\n",605 " element.href = url;\n",606 " console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n",607 " document.body.appendChild(element);\n",608 " } if (((window['Tabulator'] !== undefined) && (!(window['Tabulator'] instanceof HTMLElement))) || window.requirejs) {\n",609 " var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js'];\n",610 " for (var i = 0; i < urls.length; i++) {\n",611 " skip.push(urls[i])\n",612 " }\n",613 " } if (((window['moment'] !== undefined) && (!(window['moment'] instanceof HTMLElement))) || window.requirejs) {\n",614 " var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/luxon/build/global/luxon.min.js'];\n",615 " for (var i = 0; i < urls.length; i++) {\n",616 " skip.push(urls[i])\n",617 " }\n",618 " } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n",619 " var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n",620 " for (var i = 0; i < urls.length; i++) {\n",621 " skip.push(urls[i])\n",622 " }\n",623 " } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n",624 " var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n",625 " for (var i = 0; i < urls.length; i++) {\n",626 " skip.push(urls[i])\n",627 " }\n",628 " } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n",629 " var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n",630 " for (var i = 0; i < urls.length; i++) {\n",631 " skip.push(urls[i])\n",632 " }\n",633 " } var existing_scripts = []\n",634 " var scripts = document.getElementsByTagName('script')\n",635 " for (var i = 0; i < scripts.length; i++) {\n",636 " var script = scripts[i]\n",637 " if (script.src != null) {\n",638 "\texisting_scripts.push(script.src)\n",639 " }\n",640 " }\n",641 " for (var i = 0; i < js_urls.length; i++) {\n",642 " var url = js_urls[i];\n",643 " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",644 "\tif (!window.requirejs) {\n",645 "\t on_load();\n",646 "\t}\n",647 "\tcontinue;\n",648 " }\n",649 " var element = document.createElement('script');\n",650 " element.onload = on_load;\n",651 " element.onerror = on_error;\n",652 " element.async = false;\n",653 " element.src = url;\n",654 " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",655 " document.head.appendChild(element);\n",656 " }\n",657 " for (var i = 0; i < js_modules.length; i++) {\n",658 " var url = js_modules[i];\n",659 " if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n",660 "\tif (!window.requirejs) {\n",661 "\t on_load();\n",662 "\t}\n",663 "\tcontinue;\n",664 " }\n",665 " var element = document.createElement('script');\n",666 " element.onload = on_load;\n",667 " element.onerror = on_error;\n",668 " element.async = false;\n",669 " element.src = url;\n",670 " element.type = \"module\";\n",671 " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",672 " document.head.appendChild(element);\n",673 " }\n",674 " for (const name in js_exports) {\n",675 " var url = js_exports[name];\n",676 " if (skip.indexOf(url) >= 0 || root[name] != null) {\n",677 "\tif (!window.requirejs) {\n",678 "\t on_load();\n",679 "\t}\n",680 "\tcontinue;\n",681 " }\n",682 " var element = document.createElement('script');\n",683 " element.onerror = on_error;\n",684 " element.async = false;\n",685 " element.type = \"module\";\n",686 " console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n",687 " element.textContent = `\n",688 " import ${name} from \"${url}\"\n",689 " window.${name} = ${name}\n",690 " window._bokeh_on_load()\n",691 " `\n",692 " document.head.appendChild(element);\n",693 " }\n",694 " if (!js_urls.length && !js_modules.length) {\n",695 " on_load()\n",696 " }\n",697 " };\n",698 "\n",699 " function inject_raw_css(css) {\n",700 " const element = document.createElement(\"style\");\n",701 " element.appendChild(document.createTextNode(css));\n",702 " document.body.appendChild(element);\n",703 " }\n",704 "\n",705 " var js_urls = [\"https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js\", \"https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/luxon/build/global/luxon.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.1.min.js\", \"https://cdn.holoviz.org/panel/1.2.1/dist/panel.min.js\"];\n",706 " var js_modules = [];\n",707 " var js_exports = {};\n",708 " var css_urls = [\"https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/css/tabulator_simple.min.css\"];\n",709 " var inline_js = [ function(Bokeh) {\n",710 " inject_raw_css(\".tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:10}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:\\\"\\\";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}\\n/*# sourceMappingURL=tabulator_simple.min.css.map */\");\n",711 " }, function(Bokeh) {\n",712 " Bokeh.set_log_level(\"info\");\n",713 " },\n",714 "function(Bokeh) {} // ensure no trailing comma for IE\n",715 " ];\n",716 "\n",717 " function run_inline_js() {\n",718 " if ((root.Bokeh !== undefined) || (force === true)) {\n",719 " for (var i = 0; i < inline_js.length; i++) {\n",720 " inline_js[i].call(root, root.Bokeh);\n",721 " }\n",722 " // Cache old bokeh versions\n",723 " if (Bokeh != undefined && !reloading) {\n",724 "\tvar NewBokeh = root.Bokeh;\n",725 "\tif (Bokeh.versions === undefined) {\n",726 "\t Bokeh.versions = new Map();\n",727 "\t}\n",728 "\tif (NewBokeh.version !== Bokeh.version) {\n",729 "\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n",730 "\t}\n",731 "\troot.Bokeh = Bokeh;\n",732 " }} else if (Date.now() < root._bokeh_timeout) {\n",733 " setTimeout(run_inline_js, 100);\n",734 " } else if (!root._bokeh_failed_load) {\n",735 " console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n",736 " root._bokeh_failed_load = true;\n",737 " }\n",738 " root._bokeh_is_initializing = false\n",739 " }\n",740 "\n",741 " function load_or_wait() {\n",742 " // Implement a backoff loop that tries to ensure we do not load multiple\n",743 " // versions of Bokeh and its dependencies at the same time.\n",744 " // In recent versions we use the root._bokeh_is_initializing flag\n",745 " // to determine whether there is an ongoing attempt to initialize\n",746 " // bokeh, however for backward compatibility we also try to ensure\n",747 " // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n",748 " // before older versions are fully initialized.\n",749 " if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n",750 " root._bokeh_is_initializing = false;\n",751 " root._bokeh_onload_callbacks = undefined;\n",752 " console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n",753 " load_or_wait();\n",754 " } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n",755 " setTimeout(load_or_wait, 100);\n",756 " } else {\n",757 " Bokeh = root.Bokeh;\n",758 " bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",759 " root._bokeh_is_initializing = true\n",760 " root._bokeh_onload_callbacks = []\n",761 " if (!reloading && (!bokeh_loaded || is_dev)) {\n",762 "\troot.Bokeh = undefined;\n",763 " }\n",764 " load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n",765 "\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n",766 "\trun_inline_js();\n",767 " });\n",768 " }\n",769 " }\n",770 " // Give older versions of the autoload script a head-start to ensure\n",771 " // they initialize before we start loading newer version.\n",772 " setTimeout(load_or_wait, 100)\n",773 "}(window));"774 ],775 "application/vnd.holoviews_load.v0+json": "(function(root) {\n function now() {\n return new Date();\n }\n\n var force = true;\n var py_version = '3.2.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n var reloading = false;\n var Bokeh = root.Bokeh;\n var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n\n if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n root._bokeh_timeout = Date.now() + 5000;\n root._bokeh_failed_load = false;\n }\n\n function run_callbacks() {\n try {\n root._bokeh_onload_callbacks.forEach(function(callback) {\n if (callback != null)\n callback();\n });\n } finally {\n delete root._bokeh_onload_callbacks;\n }\n console.debug(\"Bokeh: all callbacks have finished\");\n }\n\n function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n if (css_urls == null) css_urls = [];\n if (js_urls == null) js_urls = [];\n if (js_modules == null) js_modules = [];\n if (js_exports == null) js_exports = {};\n\n root._bokeh_onload_callbacks.push(callback);\n\n if (root._bokeh_is_loading > 0) {\n console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n return null;\n }\n if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n run_callbacks();\n return null;\n }\n if (!reloading) {\n console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n }\n\n function on_load() {\n root._bokeh_is_loading--;\n if (root._bokeh_is_loading === 0) {\n console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n run_callbacks()\n }\n }\n window._bokeh_on_load = on_load\n\n function on_error() {\n console.error(\"failed to load \" + url);\n }\n\n var skip = [];\n if (window.requirejs) {\n window.requirejs.config({'packages': {}, 'paths': {'tabulator': 'https://cdn.jsdelivr.net/npm/tabulator-tables@5.5.0/dist/js/tabulator', 'moment': 'https://cdn.jsdelivr.net/npm/luxon/build/global/luxon.min', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n require([\"tabulator\"], function(Tabulator) {\n\twindow.Tabulator = Tabulator\n\ton_load()\n })\n require([\"moment\"], function(moment) {\n\twindow.moment = moment\n\ton_load()\n })\n require([\"jspanel\"], function(jsPanel) {\n\twindow.jsPanel = jsPanel\n\ton_load()\n })\n require([\"jspanel-modal\"], function() {\n\ton_load()\n })\n require([\"jspanel-tooltip\"], function() {\n\ton_load()\n })\n require([\"jspanel-hint\"], function() {\n\ton_load()\n })\n require([\"jspanel-layout\"], function() {\n\ton_load()\n })\n require([\"jspanel-contextmenu\"], function() {\n\ton_load()\n })\n require([\"jspanel-dock\"], function() {\n\ton_load()\n })\n require([\"gridstack\"], function(GridStack) {\n\twindow.GridStack = GridStack\n\ton_load()\n })\n require([\"notyf\"], function() {\n\ton_load()\n })\n root._bokeh_is_loading = css_urls.length + 11;\n } else {\n root._bokeh_is_loading = css_urls.length + js_urls.length + js_modules.length + Object.keys(js_exports).length;\n }\n\n var existing_stylesheets = []\n var links = document.getElementsByTagName('link')\n for (var i = 0; i < links.length; i++) {\n var link = links[i]\n if (link.href != null) {\n\texisting_stylesheets.push(link.href)\n }\n }\n for (var i = 0; i < css_urls.length; i++) {\n var url = css_urls[i];\n if (existing_stylesheets.indexOf(url) !== -1) {\n\ton_load()\n\tcontinue;\n }\n const element = document.createElement(\"link\");\n element.onload = on_load;\n element.onerror = on_error;\n element.rel = \"stylesheet\";\n element.type = \"text/css\";\n element.href = url;\n console.debug(\"Bokeh: injecting link tag for BokehJS stylesheet: \", url);\n document.body.appendChild(element);\n } if (((window['Tabulator'] !== undefined) && (!(window['Tabulator'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['moment'] !== undefined) && (!(window['moment'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/luxon/build/global/luxon.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['jsPanel'] !== undefined) && (!(window['jsPanel'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/jspanel.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu.js', 'https://cdn.holoviz.org/panel/1.2.1/dist/bundled/floatpanel/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['GridStack'] !== undefined) && (!(window['GridStack'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/gridstack/gridstack@7.2.3/dist/gridstack-all.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } if (((window['Notyf'] !== undefined) && (!(window['Notyf'] instanceof HTMLElement))) || window.requirejs) {\n var urls = ['https://cdn.holoviz.org/panel/1.2.1/dist/bundled/notificationarea/notyf@3/notyf.min.js'];\n for (var i = 0; i < urls.length; i++) {\n skip.push(urls[i])\n }\n } var existing_scripts = []\n var scripts = document.getElementsByTagName('script')\n for (var i = 0; i < scripts.length; i++) {\n var script = scripts[i]\n if (script.src != null) {\n\texisting_scripts.push(script.src)\n }\n }\n for (var i = 0; i < js_urls.length; i++) {\n var url = js_urls[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (var i = 0; i < js_modules.length; i++) {\n var url = js_modules[i];\n if (skip.indexOf(url) !== -1 || existing_scripts.indexOf(url) !== -1) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onload = on_load;\n element.onerror = on_error;\n element.async = false;\n element.src = url;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n document.head.appendChild(element);\n }\n for (const name in js_exports) {\n var url = js_exports[name];\n if (skip.indexOf(url) >= 0 || root[name] != null) {\n\tif (!window.requirejs) {\n\t on_load();\n\t}\n\tcontinue;\n }\n var element = document.createElement('script');\n element.onerror = on_error;\n element.async = false;\n element.type = \"module\";\n console.debug(\"Bokeh: injecting script tag for BokehJS library: \", url);\n element.textContent = `\n import ${name} from \"${url}\"\n window.${name} = ${name}\n window._bokeh_on_load()\n `\n document.head.appendChild(element);\n }\n if (!js_urls.length && !js_modules.length) {\n on_load()\n }\n };\n\n function inject_raw_css(css) {\n const element = document.createElement(\"style\");\n element.appendChild(document.createTextNode(css));\n document.body.appendChild(element);\n }\n\n var js_urls = [\"https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/js/tabulator.js\", \"https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/luxon/build/global/luxon.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-gl-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-widgets-3.2.1.min.js\", \"https://cdn.bokeh.org/bokeh/release/bokeh-tables-3.2.1.min.js\", \"https://cdn.holoviz.org/panel/1.2.1/dist/panel.min.js\"];\n var js_modules = [];\n var js_exports = {};\n var css_urls = [\"https://cdn.holoviz.org/panel/1.2.1/dist/bundled/datatabulator/tabulator-tables@5.5.0/dist/css/tabulator_simple.min.css\"];\n var inline_js = [ function(Bokeh) {\n inject_raw_css(\".tabulator{position:relative;border:1px solid #999;font-size:14px;text-align:left;overflow:hidden;-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableholder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitDataTable]{display:inline-block}.tabulator.tabulator-block-select{user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-header-contents{position:relative;overflow:hidden}.tabulator .tabulator-header .tabulator-header-contents .tabulator-headers{display:inline-block}.tabulator .tabulator-header .tabulator-col{display:inline-flex;position:relative;box-sizing:border-box;flex-direction:column;justify-content:flex-start;border-right:1px solid #ddd;background:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button{padding:0 8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-header-popup-button:hover{cursor:pointer;opacity:.6}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title-holder{position:relative}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title.tabulator-col-title-wrap{white-space:normal;text-overflow:clip}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-header-popup-button+.tabulator-title-editor{width:calc(100% - 22px)}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{display:flex;align-items:center;position:absolute;top:0;bottom:0;right:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:flex;border-top:1px solid #ddd;overflow:hidden;margin-right:-1px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable.tabulator-col-sorter-element:hover{cursor:pointer;background-color:#e6e6e6}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter{color:#bbb}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-bottom:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=ascending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter{color:#666}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter.tabulator-col-sorter-element .tabulator-arrow:hover{cursor:pointer;border-top:6px solid #555}}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=descending] .tabulator-col-content .tabulator-col-sorter .tabulator-arrow{border-bottom:none;border-top:6px solid #666;color:#666}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{writing-mode:vertical-rl;text-orientation:mixed;display:flex;align-items:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-sorter{justify-content:center;left:0;right:0;top:4px;bottom:auto}.tabulator .tabulator-header .tabulator-frozen{position:sticky;left:0;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle,.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableholder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableholder:focus{outline:none}.tabulator .tabulator-tableholder .tabulator-placeholder{box-sizing:border-box;display:flex;align-items:center;justify-content:center;width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder[tabulator-render-mode=virtual]{min-height:100%;min-width:100%}.tabulator .tabulator-tableholder .tabulator-placeholder .tabulator-placeholder-contents{display:inline-block;text-align:center;padding:10px;color:#ccc;font-weight:700;font-size:20px;white-space:normal}.tabulator .tabulator-tableholder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-footer{border-top:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-footer-contents{display:flex;flex-direction:row;align-items:center;justify-content:space-between;padding:5px 10px}.tabulator .tabulator-footer .tabulator-footer-contents:empty{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:100%;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{display:inline-block;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer>*+.tabulator-page-counter{margin-left:10px}.tabulator .tabulator-footer .tabulator-page-counter{font-weight:400}.tabulator .tabulator-footer .tabulator-paginator{flex:1;text-align:right;color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}}.tabulator .tabulator-col-resize-handle{position:relative;display:inline-block;width:6px;margin-left:-3px;margin-right:-3px;z-index:10;vertical-align:middle}@media (hover:hover) and (pointer:fine){.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}}.tabulator .tabulator-col-resize-handle:last-of-type{width:3px;margin-right:0}.tabulator .tabulator-alert{position:absolute;display:flex;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-alert .tabulator-alert-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-msg{border:4px solid #333;color:#000}.tabulator .tabulator-alert .tabulator-alert-msg.tabulator-alert-state-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px}.tabulator-row,.tabulator-row.tabulator-row-even{background-color:#fff}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}}.tabulator-row.tabulator-selected{background-color:#9abcea}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-frozen{display:inline-block;position:sticky;left:0;background-color:inherit;z-index:10}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;outline:none;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent;outline:none}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell.tabulator-row-handle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:inline-flex;align-items:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}@media (hover:hover) and (pointer:fine){.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7;cursor:pointer}}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open{display:none}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle svg{stroke:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-group-toggle{display:inline-block}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-popup-container{position:absolute;display:inline-block;box-sizing:border-box;background:#fff;border:1px solid #ddd;box-shadow:0 0 5px 0 rgba(0,0,0,.2);font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-popup{padding:5px;border-radius:3px}.tabulator-tooltip{max-width:Min(500px,100%);padding:3px 5px;border-radius:2px;box-shadow:none;font-size:12px;pointer-events:none}.tabulator-menu .tabulator-menu-item{position:relative;box-sizing:border-box;padding:5px 10px;user-select:none}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-disabled{opacity:.5}@media (hover:hover) and (pointer:fine){.tabulator-menu .tabulator-menu-item:not(.tabulator-menu-item-disabled):hover{cursor:pointer;background:#fff}}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu{padding-right:25px}.tabulator-menu .tabulator-menu-item.tabulator-menu-item-submenu:after{display:inline-block;position:absolute;top:calc(5px + .4em);right:10px;height:7px;width:7px;content:\\\"\\\";border-color:#ddd;border-style:solid;border-width:1px 1px 0 0;vertical-align:top;transform:rotate(45deg)}.tabulator-menu .tabulator-menu-separator{border-top:1px solid #ddd}.tabulator-edit-list{max-height:200px;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch}.tabulator-edit-list .tabulator-edit-list-item{padding:4px;color:#333;outline:none}.tabulator-edit-list .tabulator-edit-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-list .tabulator-edit-list-item.active.focused{outline:1px solid hsla(0,0%,100%,.5)}.tabulator-edit-list .tabulator-edit-list-item.focused{outline:1px solid #1d68cd}@media (hover:hover) and (pointer:fine){.tabulator-edit-list .tabulator-edit-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}}.tabulator-edit-list .tabulator-edit-list-placeholder{padding:4px;color:#333;text-align:center}.tabulator-edit-list .tabulator-edit-list-group{border-bottom:1px solid #ddd;padding:6px 4px 4px;color:#333;font-weight:700}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-2,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-2{padding-left:12px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-3,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-3{padding-left:20px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-4,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-4{padding-left:28px}.tabulator-edit-list .tabulator-edit-list-group.tabulator-edit-list-group-level-5,.tabulator-edit-list .tabulator-edit-list-item.tabulator-edit-list-group-level-5{padding-left:36px}.tabulator.tabulator-ltr{direction:ltr}.tabulator.tabulator-rtl{text-align:initial;direction:rtl}.tabulator.tabulator-rtl .tabulator-header .tabulator-col{text-align:initial;border-left:1px solid #ddd;border-right:initial}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{margin-right:0;margin-left:-1px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:0;padding-left:25px}.tabulator.tabulator-rtl .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-sorter{left:8px;right:auto}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell{border-right:initial;border-left:1px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-branch{margin-right:0;margin-left:5px;border-bottom-left-radius:0;border-bottom-right-radius:1px;border-left:initial;border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell .tabulator-data-tree-control{margin-right:0;margin-left:5px}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-left{border-left:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-cell.tabulator-frozen.tabulator-frozen-right{border-right:2px solid #ddd}.tabulator.tabulator-rtl .tabulator-row .tabulator-col-resize-handle:last-of-type{width:3px;margin-left:0;margin-right:-3px}.tabulator.tabulator-rtl .tabulator-footer .tabulator-calcs-holder{text-align:initial}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}.tabulator-print-table .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-print-table .tabulator-print-table-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px 5px 5px 10px;background:#ccc;font-weight:700;min-width:100%}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-print-table-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}}.tabulator-print-table .tabulator-print-table-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-1 td{padding-left:30px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-2 td{padding-left:50px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-3 td{padding-left:70px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-4 td{padding-left:90px!important}.tabulator-print-table .tabulator-print-table-group.tabulator-group-level-5 td{padding-left:110px!important}.tabulator-print-table .tabulator-print-table-group .tabulator-group-toggle{display:inline-block}.tabulator-print-table .tabulator-print-table-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-print-table .tabulator-print-table-group span{color:#d00}.tabulator-print-table .tabulator-data-tree-control{display:inline-flex;justify-content:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}@media (hover:hover) and (pointer:fine){.tabulator-print-table .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-print-table .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:\\\"\\\";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator{border:none;background-color:#fff}.tabulator .tabulator-header .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #999}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-tableholder .tabulator-placeholder span{color:#000}.tabulator .tabulator-footer .tabulator-calcs-holder{background:#f2f2f2!important;border-bottom:1px solid #fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator-row{border-bottom:1px solid #ddd}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row.tabulator-group span{color:#666}.tabulator-print-table .tabulator-print-table-group span{margin-left:10px;color:#666}\\n/*# sourceMappingURL=tabulator_simple.min.css.map */\");\n }, function(Bokeh) {\n Bokeh.set_log_level(\"info\");\n },\nfunction(Bokeh) {} // ensure no trailing comma for IE\n ];\n\n function run_inline_js() {\n if ((root.Bokeh !== undefined) || (force === true)) {\n for (var i = 0; i < inline_js.length; i++) {\n inline_js[i].call(root, root.Bokeh);\n }\n // Cache old bokeh versions\n if (Bokeh != undefined && !reloading) {\n\tvar NewBokeh = root.Bokeh;\n\tif (Bokeh.versions === undefined) {\n\t Bokeh.versions = new Map();\n\t}\n\tif (NewBokeh.version !== Bokeh.version) {\n\t Bokeh.versions.set(NewBokeh.version, NewBokeh)\n\t}\n\troot.Bokeh = Bokeh;\n }} else if (Date.now() < root._bokeh_timeout) {\n setTimeout(run_inline_js, 100);\n } else if (!root._bokeh_failed_load) {\n console.log(\"Bokeh: BokehJS failed to load within specified timeout.\");\n root._bokeh_failed_load = true;\n }\n root._bokeh_is_initializing = false\n }\n\n function load_or_wait() {\n // Implement a backoff loop that tries to ensure we do not load multiple\n // versions of Bokeh and its dependencies at the same time.\n // In recent versions we use the root._bokeh_is_initializing flag\n // to determine whether there is an ongoing attempt to initialize\n // bokeh, however for backward compatibility we also try to ensure\n // that we do not start loading a newer (Panel>=1.0 and Bokeh>3) version\n // before older versions are fully initialized.\n if (root._bokeh_is_initializing && Date.now() > root._bokeh_timeout) {\n root._bokeh_is_initializing = false;\n root._bokeh_onload_callbacks = undefined;\n console.log(\"Bokeh: BokehJS was loaded multiple times but one version failed to initialize.\");\n load_or_wait();\n } else if (root._bokeh_is_initializing || (typeof root._bokeh_is_initializing === \"undefined\" && root._bokeh_onload_callbacks !== undefined)) {\n setTimeout(load_or_wait, 100);\n } else {\n Bokeh = root.Bokeh;\n bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n root._bokeh_is_initializing = true\n root._bokeh_onload_callbacks = []\n if (!reloading && (!bokeh_loaded || is_dev)) {\n\troot.Bokeh = undefined;\n }\n load_libs(css_urls, js_urls, js_modules, js_exports, function() {\n\tconsole.debug(\"Bokeh: BokehJS plotting callback run at\", now());\n\trun_inline_js();\n });\n }\n }\n // Give older versions of the autoload script a head-start to ensure\n // they initialize before we start loading newer version.\n setTimeout(load_or_wait, 100)\n}(window));"776 },777 "metadata": {},778 "output_type": "display_data"779 },780 {781 "data": {782 "application/javascript": [783 "\n",784 "if ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n",785 " window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n",786 "}\n",787 "\n",788 "\n",789 " function JupyterCommManager() {\n",790 " }\n",791 "\n",792 " JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n",793 " if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",794 " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",795 " comm_manager.register_target(comm_id, function(comm) {\n",796 " comm.on_msg(msg_handler);\n",797 " });\n",798 " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",799 " window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n",800 " comm.onMsg = msg_handler;\n",801 " });\n",802 " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",803 " google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n",804 " var messages = comm.messages[Symbol.asyncIterator]();\n",805 " function processIteratorResult(result) {\n",806 " var message = result.value;\n",807 " console.log(message)\n",808 " var content = {data: message.data, comm_id};\n",809 " var buffers = []\n",810 " for (var buffer of message.buffers || []) {\n",811 " buffers.push(new DataView(buffer))\n",812 " }\n",813 " var metadata = message.metadata || {};\n",814 " var msg = {content, buffers, metadata}\n",815 " msg_handler(msg);\n",816 " return messages.next().then(processIteratorResult);\n",817 " }\n",818 " return messages.next().then(processIteratorResult);\n",819 " })\n",820 " }\n",821 " }\n",822 "\n",823 " JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n",824 " if (comm_id in window.PyViz.comms) {\n",825 " return window.PyViz.comms[comm_id];\n",826 " } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n",827 " var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n",828 " var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n",829 " if (msg_handler) {\n",830 " comm.on_msg(msg_handler);\n",831 " }\n",832 " } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n",833 " var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n",834 " comm.open();\n",835 " if (msg_handler) {\n",836 " comm.onMsg = msg_handler;\n",837 " }\n",838 " } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n",839 " var comm_promise = google.colab.kernel.comms.open(comm_id)\n",840 " comm_promise.then((comm) => {\n",841 " window.PyViz.comms[comm_id] = comm;\n",842 " if (msg_handler) {\n",843 " var messages = comm.messages[Symbol.asyncIterator]();\n",844 " function processIteratorResult(result) {\n",845 " var message = result.value;\n",846 " var content = {data: message.data};\n",847 " var metadata = message.metadata || {comm_id};\n",848 " var msg = {content, metadata}\n",849 " msg_handler(msg);\n",850 " return messages.next().then(processIteratorResult);\n",851 " }\n",852 " return messages.next().then(processIteratorResult);\n",853 " }\n",854 " }) \n",855 " var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n",856 " return comm_promise.then((comm) => {\n",857 " comm.send(data, metadata, buffers, disposeOnDone);\n",858 " });\n",859 " };\n",860 " var comm = {\n",861 " send: sendClosure\n",862 " };\n",863 " }\n",864 " window.PyViz.comms[comm_id] = comm;\n",865 " return comm;\n",866 " }\n",867 " window.PyViz.comm_manager = new JupyterCommManager();\n",868 " \n",869 "\n",870 "\n",871 "var JS_MIME_TYPE = 'application/javascript';\n",872 "var HTML_MIME_TYPE = 'text/html';\n",873 "var EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\n",874 "var CLASS_NAME = 'output';\n",875 "\n",876 "/**\n",877 " * Render data to the DOM node\n",878 " */\n",879 "function render(props, node) {\n",880 " var div = document.createElement(\"div\");\n",881 " var script = document.createElement(\"script\");\n",882 " node.appendChild(div);\n",883 " node.appendChild(script);\n",884 "}\n",885 "\n",886 "/**\n",887 " * Handle when a new output is added\n",888 " */\n",889 "function handle_add_output(event, handle) {\n",890 " var output_area = handle.output_area;\n",891 " var output = handle.output;\n",892 " if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n",893 " return\n",894 " }\n",895 " var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n",896 " var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n",897 " if (id !== undefined) {\n",898 " var nchildren = toinsert.length;\n",899 " var html_node = toinsert[nchildren-1].children[0];\n",900 " html_node.innerHTML = output.data[HTML_MIME_TYPE];\n",901 " var scripts = [];\n",902 " var nodelist = html_node.querySelectorAll(\"script\");\n",903 " for (var i in nodelist) {\n",904 " if (nodelist.hasOwnProperty(i)) {\n",905 " scripts.push(nodelist[i])\n",906 " }\n",907 " }\n",908 "\n",909 " scripts.forEach( function (oldScript) {\n",910 " var newScript = document.createElement(\"script\");\n",911 " var attrs = [];\n",912 " var nodemap = oldScript.attributes;\n",913 " for (var j in nodemap) {\n",914 " if (nodemap.hasOwnProperty(j)) {\n",915 " attrs.push(nodemap[j])\n",916 " }\n",917 " }\n",918 " attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n",919 " newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n",920 " oldScript.parentNode.replaceChild(newScript, oldScript);\n",921 " });\n",922 " if (JS_MIME_TYPE in output.data) {\n",923 " toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n",924 " }\n",925 " output_area._hv_plot_id = id;\n",926 " if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n",927 " window.PyViz.plot_index[id] = Bokeh.index[id];\n",928 " } else {\n",929 " window.PyViz.plot_index[id] = null;\n",930 " }\n",931 " } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n",932 " var bk_div = document.createElement(\"div\");\n",933 " bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n",934 " var script_attrs = bk_div.children[0].attributes;\n",935 " for (var i = 0; i < script_attrs.length; i++) {\n",936 " toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n",937 " }\n",938 " // store reference to server id on output_area\n",939 " output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n",940 " }\n",941 "}\n",942 "\n",943 "/**\n",944 " * Handle when an output is cleared or removed\n",945 " */\n",946 "function handle_clear_output(event, handle) {\n",947 " var id = handle.cell.output_area._hv_plot_id;\n",948 " var server_id = handle.cell.output_area._bokeh_server_id;\n",949 " if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n",950 " var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n",951 " if (server_id !== null) {\n",952 " comm.send({event_type: 'server_delete', 'id': server_id});\n",953 " return;\n",954 " } else if (comm !== null) {\n",955 " comm.send({event_type: 'delete', 'id': id});\n",956 " }\n",957 " delete PyViz.plot_index[id];\n",958 " if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n",959 " var doc = window.Bokeh.index[id].model.document\n",960 " doc.clear();\n",961 " const i = window.Bokeh.documents.indexOf(doc);\n",962 " if (i > -1) {\n",963 " window.Bokeh.documents.splice(i, 1);\n",964 " }\n",965 " }\n",966 "}\n",967 "\n",968 "/**\n",969 " * Handle kernel restart event\n",970 " */\n",971 "function handle_kernel_cleanup(event, handle) {\n",972 " delete PyViz.comms[\"hv-extension-comm\"];\n",973 " window.PyViz.plot_index = {}\n",974 "}\n",975 "\n",976 "/**\n",977 " * Handle update_display_data messages\n",978 " */\n",979 "function handle_update_output(event, handle) {\n",980 " handle_clear_output(event, {cell: {output_area: handle.output_area}})\n",981 " handle_add_output(event, handle)\n",982 "}\n",983 "\n",984 "function register_renderer(events, OutputArea) {\n",985 " function append_mime(data, metadata, element) {\n",986 " // create a DOM node to render to\n",987 " var toinsert = this.create_output_subarea(\n",988 " metadata,\n",989 " CLASS_NAME,\n",990 " EXEC_MIME_TYPE\n",991 " );\n",992 " this.keyboard_manager.register_events(toinsert);\n",993 " // Render to node\n",994 " var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n",995 " render(props, toinsert[0]);\n",996 " element.append(toinsert);\n",997 " return toinsert\n",998 " }\n",999 "\n",1000 " events.on('output_added.OutputArea', handle_add_output);\n",1001 " events.on('output_updated.OutputArea', handle_update_output);\n",1002 " events.on('clear_output.CodeCell', handle_clear_output);\n",1003 " events.on('delete.Cell', handle_clear_output);\n",1004 " events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n",1005 "\n",1006 " OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n",1007 " safe: true,\n",1008 " index: 0\n",1009 " });\n",1010 "}\n",1011 "\n",1012 "if (window.Jupyter !== undefined) {\n",1013 " try {\n",1014 " var events = require('base/js/events');\n",1015 " var OutputArea = require('notebook/js/outputarea').OutputArea;\n",1016 " if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n",1017 " register_renderer(events, OutputArea);\n",1018 " }\n",1019 " } catch(err) {\n",1020 " }\n",1021 "}\n"1022 ],1023 "application/vnd.holoviews_load.v0+json": "\nif ((window.PyViz === undefined) || (window.PyViz instanceof HTMLElement)) {\n window.PyViz = {comms: {}, comm_status:{}, kernels:{}, receivers: {}, plot_index: []}\n}\n\n\n function JupyterCommManager() {\n }\n\n JupyterCommManager.prototype.register_target = function(plot_id, comm_id, msg_handler) {\n if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n comm_manager.register_target(comm_id, function(comm) {\n comm.on_msg(msg_handler);\n });\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n window.PyViz.kernels[plot_id].registerCommTarget(comm_id, function(comm) {\n comm.onMsg = msg_handler;\n });\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n google.colab.kernel.comms.registerTarget(comm_id, (comm) => {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n console.log(message)\n var content = {data: message.data, comm_id};\n var buffers = []\n for (var buffer of message.buffers || []) {\n buffers.push(new DataView(buffer))\n }\n var metadata = message.metadata || {};\n var msg = {content, buffers, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n })\n }\n }\n\n JupyterCommManager.prototype.get_client_comm = function(plot_id, comm_id, msg_handler) {\n if (comm_id in window.PyViz.comms) {\n return window.PyViz.comms[comm_id];\n } else if (window.comm_manager || ((window.Jupyter !== undefined) && (Jupyter.notebook.kernel != null))) {\n var comm_manager = window.comm_manager || Jupyter.notebook.kernel.comm_manager;\n var comm = comm_manager.new_comm(comm_id, {}, {}, {}, comm_id);\n if (msg_handler) {\n comm.on_msg(msg_handler);\n }\n } else if ((plot_id in window.PyViz.kernels) && (window.PyViz.kernels[plot_id])) {\n var comm = window.PyViz.kernels[plot_id].connectToComm(comm_id);\n comm.open();\n if (msg_handler) {\n comm.onMsg = msg_handler;\n }\n } else if (typeof google != 'undefined' && google.colab.kernel != null) {\n var comm_promise = google.colab.kernel.comms.open(comm_id)\n comm_promise.then((comm) => {\n window.PyViz.comms[comm_id] = comm;\n if (msg_handler) {\n var messages = comm.messages[Symbol.asyncIterator]();\n function processIteratorResult(result) {\n var message = result.value;\n var content = {data: message.data};\n var metadata = message.metadata || {comm_id};\n var msg = {content, metadata}\n msg_handler(msg);\n return messages.next().then(processIteratorResult);\n }\n return messages.next().then(processIteratorResult);\n }\n }) \n var sendClosure = (data, metadata, buffers, disposeOnDone) => {\n return comm_promise.then((comm) => {\n comm.send(data, metadata, buffers, disposeOnDone);\n });\n };\n var comm = {\n send: sendClosure\n };\n }\n window.PyViz.comms[comm_id] = comm;\n return comm;\n }\n window.PyViz.comm_manager = new JupyterCommManager();\n \n\n\nvar JS_MIME_TYPE = 'application/javascript';\nvar HTML_MIME_TYPE = 'text/html';\nvar EXEC_MIME_TYPE = 'application/vnd.holoviews_exec.v0+json';\nvar CLASS_NAME = 'output';\n\n/**\n * Render data to the DOM node\n */\nfunction render(props, node) {\n var div = document.createElement(\"div\");\n var script = document.createElement(\"script\");\n node.appendChild(div);\n node.appendChild(script);\n}\n\n/**\n * Handle when a new output is added\n */\nfunction handle_add_output(event, handle) {\n var output_area = handle.output_area;\n var output = handle.output;\n if ((output.data == undefined) || (!output.data.hasOwnProperty(EXEC_MIME_TYPE))) {\n return\n }\n var id = output.metadata[EXEC_MIME_TYPE][\"id\"];\n var toinsert = output_area.element.find(\".\" + CLASS_NAME.split(' ')[0]);\n if (id !== undefined) {\n var nchildren = toinsert.length;\n var html_node = toinsert[nchildren-1].children[0];\n html_node.innerHTML = output.data[HTML_MIME_TYPE];\n var scripts = [];\n var nodelist = html_node.querySelectorAll(\"script\");\n for (var i in nodelist) {\n if (nodelist.hasOwnProperty(i)) {\n scripts.push(nodelist[i])\n }\n }\n\n scripts.forEach( function (oldScript) {\n var newScript = document.createElement(\"script\");\n var attrs = [];\n var nodemap = oldScript.attributes;\n for (var j in nodemap) {\n if (nodemap.hasOwnProperty(j)) {\n attrs.push(nodemap[j])\n }\n }\n attrs.forEach(function(attr) { newScript.setAttribute(attr.name, attr.value) });\n newScript.appendChild(document.createTextNode(oldScript.innerHTML));\n oldScript.parentNode.replaceChild(newScript, oldScript);\n });\n if (JS_MIME_TYPE in output.data) {\n toinsert[nchildren-1].children[1].textContent = output.data[JS_MIME_TYPE];\n }\n output_area._hv_plot_id = id;\n if ((window.Bokeh !== undefined) && (id in Bokeh.index)) {\n window.PyViz.plot_index[id] = Bokeh.index[id];\n } else {\n window.PyViz.plot_index[id] = null;\n }\n } else if (output.metadata[EXEC_MIME_TYPE][\"server_id\"] !== undefined) {\n var bk_div = document.createElement(\"div\");\n bk_div.innerHTML = output.data[HTML_MIME_TYPE];\n var script_attrs = bk_div.children[0].attributes;\n for (var i = 0; i < script_attrs.length; i++) {\n toinsert[toinsert.length - 1].childNodes[1].setAttribute(script_attrs[i].name, script_attrs[i].value);\n }\n // store reference to server id on output_area\n output_area._bokeh_server_id = output.metadata[EXEC_MIME_TYPE][\"server_id\"];\n }\n}\n\n/**\n * Handle when an output is cleared or removed\n */\nfunction handle_clear_output(event, handle) {\n var id = handle.cell.output_area._hv_plot_id;\n var server_id = handle.cell.output_area._bokeh_server_id;\n if (((id === undefined) || !(id in PyViz.plot_index)) && (server_id !== undefined)) { return; }\n var comm = window.PyViz.comm_manager.get_client_comm(\"hv-extension-comm\", \"hv-extension-comm\", function () {});\n if (server_id !== null) {\n comm.send({event_type: 'server_delete', 'id': server_id});\n return;\n } else if (comm !== null) {\n comm.send({event_type: 'delete', 'id': id});\n }\n delete PyViz.plot_index[id];\n if ((window.Bokeh !== undefined) & (id in window.Bokeh.index)) {\n var doc = window.Bokeh.index[id].model.document\n doc.clear();\n const i = window.Bokeh.documents.indexOf(doc);\n if (i > -1) {\n window.Bokeh.documents.splice(i, 1);\n }\n }\n}\n\n/**\n * Handle kernel restart event\n */\nfunction handle_kernel_cleanup(event, handle) {\n delete PyViz.comms[\"hv-extension-comm\"];\n window.PyViz.plot_index = {}\n}\n\n/**\n * Handle update_display_data messages\n */\nfunction handle_update_output(event, handle) {\n handle_clear_output(event, {cell: {output_area: handle.output_area}})\n handle_add_output(event, handle)\n}\n\nfunction register_renderer(events, OutputArea) {\n function append_mime(data, metadata, element) {\n // create a DOM node to render to\n var toinsert = this.create_output_subarea(\n metadata,\n CLASS_NAME,\n EXEC_MIME_TYPE\n );\n this.keyboard_manager.register_events(toinsert);\n // Render to node\n var props = {data: data, metadata: metadata[EXEC_MIME_TYPE]};\n render(props, toinsert[0]);\n element.append(toinsert);\n return toinsert\n }\n\n events.on('output_added.OutputArea', handle_add_output);\n events.on('output_updated.OutputArea', handle_update_output);\n events.on('clear_output.CodeCell', handle_clear_output);\n events.on('delete.Cell', handle_clear_output);\n events.on('kernel_ready.Kernel', handle_kernel_cleanup);\n\n OutputArea.prototype.register_mime_type(EXEC_MIME_TYPE, append_mime, {\n safe: true,\n index: 0\n });\n}\n\nif (window.Jupyter !== undefined) {\n try {\n var events = require('base/js/events');\n var OutputArea = require('notebook/js/outputarea').OutputArea;\n if (OutputArea.prototype.mime_types().indexOf(EXEC_MIME_TYPE) == -1) {\n register_renderer(events, OutputArea);\n }\n } catch(err) {\n }\n}\n"1024 },1025 "metadata": {},1026 "output_type": "display_data"1027 },1028 {1029 "data": {1030 "text/html": [1031 "<style>*[data-root-id],\n",1032 "*[data-root-id] > * {\n",1033 " box-sizing: border-box;\n",1034 " font-family: var(--jp-ui-font-family);\n",1035 " font-size: var(--jp-ui-font-size1);\n",1036 " color: var(--vscode-editor-foreground, var(--jp-ui-font-color1));\n",1037 "}\n",1038 "\n",1039 "/* Override VSCode background color */\n",1040 ".cell-output-ipywidget-background:has(\n",1041 " > .cell-output-ipywidget-background > .lm-Widget > *[data-root-id]\n",1042 " ),\n",1043 ".cell-output-ipywidget-background:has(> .lm-Widget > *[data-root-id]) {\n",1044 " background-color: transparent !important;\n",1045 "}\n",1046 "</style>"1047 ]1048 },1049 "metadata": {},1050 "output_type": "display_data"1051 },1052 {1053 "data": {1054 "application/vnd.holoviews_exec.v0+json": "",1055 "text/html": [1056 "<div id='e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0'>\n",1057 " <div id=\"b2c3de4b-d1f4-4a68-bb4f-d47d745c4fb4\" data-root-id=\"e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0\" style=\"display: contents;\"></div>\n",1058 "</div>\n",1059 "<script type=\"application/javascript\">(function(root) {\n",1060 " var docs_json = {\"110a5101-d9da-4c8b-8036-7388e6a7010a\":{\"version\":\"3.2.1\",\"title\":\"Bokeh Application\",\"roots\":[{\"type\":\"object\",\"name\":\"panel.models.browser.BrowserInfo\",\"id\":\"e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0\"},{\"type\":\"object\",\"name\":\"panel.models.comm_manager.CommManager\",\"id\":\"717f8653-9405-4808-b25e-523be1b857d9\",\"attributes\":{\"plot_id\":\"e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0\",\"comm_id\":\"9516773615864ad0bc40521f95f86718\",\"client_comm_id\":\"72414080bb1145e4b21db91527c0994c\"}}],\"defs\":[{\"type\":\"model\",\"name\":\"ReactiveHTML1\"},{\"type\":\"model\",\"name\":\"FlexBox1\",\"properties\":[{\"name\":\"align_content\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"align_items\",\"kind\":\"Any\",\"default\":\"flex-start\"},{\"name\":\"flex_direction\",\"kind\":\"Any\",\"default\":\"row\"},{\"name\":\"flex_wrap\",\"kind\":\"Any\",\"default\":\"wrap\"},{\"name\":\"justify_content\",\"kind\":\"Any\",\"default\":\"flex-start\"}]},{\"type\":\"model\",\"name\":\"FloatPanel1\",\"properties\":[{\"name\":\"config\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"contained\",\"kind\":\"Any\",\"default\":true},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"right-top\"},{\"name\":\"offsetx\",\"kind\":\"Any\",\"default\":null},{\"name\":\"offsety\",\"kind\":\"Any\",\"default\":null},{\"name\":\"theme\",\"kind\":\"Any\",\"default\":\"primary\"},{\"name\":\"status\",\"kind\":\"Any\",\"default\":\"normalized\"}]},{\"type\":\"model\",\"name\":\"GridStack1\",\"properties\":[{\"name\":\"mode\",\"kind\":\"Any\",\"default\":\"warn\"},{\"name\":\"ncols\",\"kind\":\"Any\",\"default\":null},{\"name\":\"nrows\",\"kind\":\"Any\",\"default\":null},{\"name\":\"allow_resize\",\"kind\":\"Any\",\"default\":true},{\"name\":\"allow_drag\",\"kind\":\"Any\",\"default\":true},{\"name\":\"state\",\"kind\":\"Any\",\"default\":[]}]},{\"type\":\"model\",\"name\":\"drag1\",\"properties\":[{\"name\":\"slider_width\",\"kind\":\"Any\",\"default\":5},{\"name\":\"slider_color\",\"kind\":\"Any\",\"default\":\"black\"},{\"name\":\"value\",\"kind\":\"Any\",\"default\":50}]},{\"type\":\"model\",\"name\":\"click1\",\"properties\":[{\"name\":\"terminal_output\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"debug_name\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"clears\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"FastWrapper1\",\"properties\":[{\"name\":\"object\",\"kind\":\"Any\",\"default\":null},{\"name\":\"style\",\"kind\":\"Any\",\"default\":null}]},{\"type\":\"model\",\"name\":\"NotificationAreaBase1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"NotificationArea1\",\"properties\":[{\"name\":\"js_events\",\"kind\":\"Any\",\"default\":{\"type\":\"map\"}},{\"name\":\"notifications\",\"kind\":\"Any\",\"default\":[]},{\"name\":\"position\",\"kind\":\"Any\",\"default\":\"bottom-right\"},{\"name\":\"_clear\",\"kind\":\"Any\",\"default\":0},{\"name\":\"types\",\"kind\":\"Any\",\"default\":[{\"type\":\"map\",\"entries\":[[\"type\",\"warning\"],[\"background\",\"#ffc107\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-exclamation-triangle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]},{\"type\":\"map\",\"entries\":[[\"type\",\"info\"],[\"background\",\"#007bff\"],[\"icon\",{\"type\":\"map\",\"entries\":[[\"className\",\"fas fa-info-circle\"],[\"tagName\",\"i\"],[\"color\",\"white\"]]}]]}]}]},{\"type\":\"model\",\"name\":\"Notification\",\"properties\":[{\"name\":\"background\",\"kind\":\"Any\",\"default\":null},{\"name\":\"duration\",\"kind\":\"Any\",\"default\":3000},{\"name\":\"icon\",\"kind\":\"Any\",\"default\":null},{\"name\":\"message\",\"kind\":\"Any\",\"default\":\"\"},{\"name\":\"notification_type\",\"kind\":\"Any\",\"default\":null},{\"name\":\"_destroyed\",\"kind\":\"Any\",\"default\":false}]},{\"type\":\"model\",\"name\":\"TemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"BootstrapTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]},{\"type\":\"model\",\"name\":\"MaterialTemplateActions1\",\"properties\":[{\"name\":\"open_modal\",\"kind\":\"Any\",\"default\":0},{\"name\":\"close_modal\",\"kind\":\"Any\",\"default\":0}]}]}};\n",1061 " var render_items = [{\"docid\":\"110a5101-d9da-4c8b-8036-7388e6a7010a\",\"roots\":{\"e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0\":\"b2c3de4b-d1f4-4a68-bb4f-d47d745c4fb4\"},\"root_ids\":[\"e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0\"]}];\n",1062 " var docs = Object.values(docs_json)\n",1063 " if (!docs) {\n",1064 " return\n",1065 " }\n",1066 " const py_version = docs[0].version.replace('rc', '-rc.').replace('.dev', '-dev.')\n",1067 " const is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1\n",1068 " function embed_document(root) {\n",1069 " var Bokeh = get_bokeh(root)\n",1070 " Bokeh.embed.embed_items_notebook(docs_json, render_items);\n",1071 " for (const render_item of render_items) {\n",1072 " for (const root_id of render_item.root_ids) {\n",1073 "\tconst id_el = document.getElementById(root_id)\n",1074 "\tif (id_el.children.length && (id_el.children[0].className === 'bk-root')) {\n",1075 "\t const root_el = id_el.children[0]\n",1076 "\t root_el.id = root_el.id + '-rendered'\n",1077 "\t}\n",1078 " }\n",1079 " }\n",1080 " }\n",1081 " function get_bokeh(root) {\n",1082 " if (root.Bokeh === undefined) {\n",1083 " return null\n",1084 " } else if (root.Bokeh.version !== py_version && !is_dev) {\n",1085 " if (root.Bokeh.versions === undefined || !root.Bokeh.versions.has(py_version)) {\n",1086 "\treturn null\n",1087 " }\n",1088 " return root.Bokeh.versions.get(py_version);\n",1089 " } else if (root.Bokeh.version === py_version) {\n",1090 " return root.Bokeh\n",1091 " }\n",1092 " return null\n",1093 " }\n",1094 " function is_loaded(root) {\n",1095 " var Bokeh = get_bokeh(root)\n",1096 " return (Bokeh != null && Bokeh.Panel !== undefined && ( root['Tabulator'] !== undefined) && ( root['Tabulator'] !== undefined))\n",1097 " }\n",1098 " if (is_loaded(root)) {\n",1099 " embed_document(root);\n",1100 " } else {\n",1101 " var attempts = 0;\n",1102 " var timer = setInterval(function(root) {\n",1103 " if (is_loaded(root)) {\n",1104 " clearInterval(timer);\n",1105 " embed_document(root);\n",1106 " } else if (document.readyState == \"complete\") {\n",1107 " attempts++;\n",1108 " if (attempts > 200) {\n",1109 " clearInterval(timer);\n",1110 "\t var Bokeh = get_bokeh(root)\n",1111 "\t if (Bokeh == null || Bokeh.Panel == null) {\n",1112 " console.warn(\"Panel: ERROR: Unable to run Panel code because Bokeh or Panel library is missing\");\n",1113 "\t } else {\n",1114 "\t console.warn(\"Panel: WARNING: Attempting to render but not all required libraries could be resolved.\")\n",1115 "\t embed_document(root)\n",1116 "\t }\n",1117 " }\n",1118 " }\n",1119 " }, 25, root)\n",1120 " }\n",1121 "})(window);</script>"1122 ]1123 },1124 "metadata": {1125 "application/vnd.holoviews_exec.v0+json": {1126 "id": "e9ec6c8b-018a-44ba-a61d-ece7fc9cb3a0"1127 }1128 },1129 "output_type": "display_data"1130 },1131 {1132 "data": {1133 "application/javascript": [1134 "(function(root) {\n",1135 " function now() {\n",1136 " return new Date();\n",1137 " }\n",1138 "\n",1139 " var force = true;\n",1140 " var py_version = '3.2.1'.replace('rc', '-rc.').replace('.dev', '-dev.');\n",1141 " var is_dev = py_version.indexOf(\"+\") !== -1 || py_version.indexOf(\"-\") !== -1;\n",1142 " var reloading = true;\n",1143 " var Bokeh = root.Bokeh;\n",1144 " var bokeh_loaded = Bokeh != null && (Bokeh.version === py_version || (Bokeh.versions !== undefined && Bokeh.versions.has(py_version)));\n",1145 "\n",1146 " if (typeof (root._bokeh_timeout) === \"undefined\" || force) {\n",1147 " root._bokeh_timeout = Date.now() + 5000;\n",1148 " root._bokeh_failed_load = false;\n",1149 " }\n",1150 "\n",1151 " function run_callbacks() {\n",1152 " try {\n",1153 " root._bokeh_onload_callbacks.forEach(function(callback) {\n",1154 " if (callback != null)\n",1155 " callback();\n",1156 " });\n",1157 " } finally {\n",1158 " delete root._bokeh_onload_callbacks;\n",1159 " }\n",1160 " console.debug(\"Bokeh: all callbacks have finished\");\n",1161 " }\n",1162 "\n",1163 " function load_libs(css_urls, js_urls, js_modules, js_exports, callback) {\n",1164 " if (css_urls == null) css_urls = [];\n",1165 " if (js_urls == null) js_urls = [];\n",1166 " if (js_modules == null) js_modules = [];\n",1167 " if (js_exports == null) js_exports = {};\n",1168 "\n",1169 " root._bokeh_onload_callbacks.push(callback);\n",1170 "\n",1171 " if (root._bokeh_is_loading > 0) {\n",1172 " console.debug(\"Bokeh: BokehJS is being loaded, scheduling callback at\", now());\n",1173 " return null;\n",1174 " }\n",1175 " if (js_urls.length === 0 && js_modules.length === 0 && Object.keys(js_exports).length === 0) {\n",1176 " run_callbacks();\n",1177 " return null;\n",1178 " }\n",1179 " if (!reloading) {\n",1180 " console.debug(\"Bokeh: BokehJS not loaded, scheduling load and callback at\", now());\n",1181 " }\n",1182 "\n",1183 " function on_load() {\n",1184 " root._bokeh_is_loading--;\n",1185 " if (root._bokeh_is_loading === 0) {\n",1186 " console.debug(\"Bokeh: all BokehJS libraries/stylesheets loaded\");\n",1187 " run_callbacks()\n",1188 " }\n",1189 " }\n",1190 " window._bokeh_on_load = on_load\n",1191 "\n",1192 " function on_error() {\n",1193 " console.error(\"failed to load \" + url);\n",1194 " }\n",1195 "\n",1196 " var skip = [];\n",1197 " if (window.requirejs) {\n",1198 " window.requirejs.config({'packages': {}, 'paths': {'tabulator': 'https://cdn.jsdelivr.net/npm/tabulator-tables@5.5.0/dist/js/tabulator', 'moment': 'https://cdn.jsdelivr.net/npm/luxon/build/global/luxon.min', 'plotly': 'https://cdn.plot.ly/plotly-2.18.0.min', 'jspanel': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/jspanel', 'jspanel-modal': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/modal/jspanel.modal', 'jspanel-tooltip': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/tooltip/jspanel.tooltip', 'jspanel-hint': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/hint/jspanel.hint', 'jspanel-layout': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/layout/jspanel.layout', 'jspanel-contextmenu': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/contextmenu/jspanel.contextmenu', 'jspanel-dock': 'https://cdn.jsdelivr.net/npm/jspanel4@4.12.0/dist/extensions/dock/jspanel.dock', 'gridstack': 'https://cdn.jsdelivr.net/npm/gridstack@7.2.3/dist/gridstack-all', 'notyf': 'https://cdn.jsdelivr.net/npm/notyf@3/notyf.min'}, 'shim': {'jspanel': {'exports': 'jsPanel'}, 'gridstack': {'exports': 'GridStack'}}});\n",1199 " require([\"tabulator\"], function(Tabulator) {\n",1200 "\twindow.Tabulator = Tabulator\n",