contingent-space-website/cosmoscope.html
2025-04-15 00:02:58 +02:00

1717 lines
No EOL
235 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="generator" content="Cosma v2.4.1">
<meta name="title" content="rhizom2o24">
<meta name="author" content="lukasrosier">
<meta name="description" content="obvious">
<meta name="keywords" content="">
<meta name="date" content="November 4, 2024 at 10:09:38 PM">
<title>Cosma — rhizom2o24</title>
<link rel="icon" type="image/png" sizes="16x16" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAAIGaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOnRpZmY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vdGlmZi8xLjAvIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4xMDI0PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjEwMjQ8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KokyVsAAAAAlwSFlzAAALEwAACxMBAJqcGAAAATtQTFRFR3BMDVJzDFx+GHSUAP//DVByCVd3AAAAAAD/AIKBCXKSBFJ0F1x/GFZ2EGCANmF8D2+QGHaXFG6NAFh8EnaXG3aWLHCOE2iIH3mZAEx4AFV6AG2QAXOUOn+dprG8AHGSGmuLGWmJfZqtUoahprrGD1V4CVV4FHeWFnWWLmeIAFp8FWaGAFh7LmeGF2OGUHWNfZapAF+HUHSNfZaoAF6H/////Pz87O7x4uLio6Oj3t7eFWaJE16DGGCEIWuOAFqAGoCiADxyAFyHRG+MHoGjAGeQE3GUEG6S1tvhAH2iRX+cAG2Y5OjrAGWMiqCxoa+7iqGyobXBB2KGCF6DCGGFCl2DE4CiEX2gGXqdEX2fFX+iJHmcGXqcInmbAEx3aIWa193jAE12Z4Sa5ensZ5CmaZCn1t3j5Ons3t7fp3RRZgAAADV0Uk5TAHRwQQFHRAEBAkJ4+3h0eHBudPpy+3V1cvv7+vpy+/v7+/v7+52dmZl1+nX6dXX7+/v7+/siYXfnAAAA2ElEQVQYGQXBy07CUBRA0X1OD9zCQAloS4Nj40ii/gG/7UdoSYwxjowCgo9EQxrpfdS1wA0AAGDgEHcgO8qshw/xN+IscnG9tp6SfCjqp2hheHXrMhO6EB8Wr43Rz/qX2fSe+TbW0m8MlepMdvBVxCJTDHv/vkNulqs3fnaGIpJmqnWnOksiKKVIAoAkcoLR+fEGMWK3OfYJ5SWsJ2XlfVVOtmGFso+tP53AaOzbuMewqt4+Tj9pP0aH0lrJ/87nG1Elpa5cPufiDvTCUJWUGvM4cDkAAOSOf+M3WO+ZgJOzAAAAAElFTkSuQmCC" />
<style>
:root {
--n_undefined: yellow;
--n_software: powderblue;
--n_concept: pink;
--n_organisation: gold;
--n_character: cornsilk;
--n_tool: papayawhip;
--n_project: aquamarine;
--l_undefined: #C0C0C0;
--highlight: red;
}
@charset "UTF-8";
/** Global
------------------------------------------------------------*/
:root {
/* colors */
--cosma-blue: #147899;
--cosma-blue-dark: #02385c;
--border-color: #d8d8d8;
--border-light-color: #f3f3f3;
--indicator-background-color: #fafafa;
--lateral-background-color: white;
/* typography */
--sans: system-ui, -apple-system, 'San Francisco', 'Helvetica Neue', 'Segoe UI', 'Arial',
sans-serif;
--serif: 'Georgia', 'Garamond', 'Time New Roman', 'Times', serif;
--mono: 'Consolas', 'Courrier New', 'Courrier', monospace;
--condensed: 'Avenir Next Condensed', 'Arial Condensed', sans-serif;
/* global size */
font-size: 62.5%;
/* others */
--shadow: 0 1px 3px rgba(3, 2, 2, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
--offblack: rgb(51, 51, 51);
--offwhite: rgb(253, 252, 251);
--gray: #d6d6d6;
--background-gray: rgb(246, 246, 246);
}
* {
box-sizing: border-box;
}
/** Page
------------------------------------------------------------*/
body {
display: flex;
overflow: hidden;
width: 100%;
margin: 0;
padding: 0;
font-family: var(--sans);
font-size: 1.4rem;
}
/* ---
- Containers
--- */
article {
padding: 0.8rem 0;
}
article + article:not(.record) {
border-top: 1px solid var(--border-light-color);
}
/** Elements
------------------------------------------------------------*/
a {
text-decoration: none;
}
/* ---
- Buttons
--- */
button {
cursor: pointer;
margin: 0.5rem 0.2rem;
font-size: 1.3rem;
}
.btn {
background-color: white;
border: 1px solid var(--border-color);
border-radius: 2px;
}
.btn.active,
.btn[data-active='true'] {
border: 1px solid black;
}
[onclick] {
cursor: pointer;
}
/* ---
- Inputs
--- */
.outline {
outline: var(--cosma-blue) solid 1px;
}
label {
cursor: pointer;
}
input {
font-size: 1.3rem;
}
input[type='checkbox'] {
cursor: pointer;
width: 1.2rem;
height: 1.2rem;
margin: 0 0.8rem 0 0;
}
input[type='range'] {
cursor: pointer;
width: 100%;
margin-top: 0.3rem;
}
/* ---
- Lists
--- */
details {
padding: 0.5rem 0 1rem 0;
}
details[data-sort] .sort-box:not(.active) {
display: none;
}
details > summary {
cursor: pointer;
text-transform: uppercase;
font-size: 1.3rem;
margin: 1rem 0 0.5rem 0;
font-weight: bold;
outline: none;
}
summary + button {
margin: 1rem 0;
}
.list-content-container ul {
list-style: none;
margin: 0;
padding: 0;
}
.list-content-container ul li {
padding: 0.3rem 0 0.3rem 1rem;
}
.list-content-container .menu-controls-list {
margin-top: 1.3rem;
}
.list-content-container ul li span:last-of-type:not(.badge) {
line-height: 1.5;
}
.record-type-points {
/* colored dot before links */
font-size: 0.8em;
padding-right: 0.8em;
}
.menu-controls-container p:first-child {
font-weight: bold;
}
.menu-types-container {
display: flex;
flex-direction: column;
}
.filter {
margin: 0.1em 0;
}
.menu-tags-container {
display: flex;
flex-wrap: wrap;
margin-top: 1em;
}
.menu-tags-container label {
display: flex;
align-items: center;
margin: 0.15em 0.15em 0.15em 0;
}
.menu-tags-container .label {
margin: 0 0.2em;
}
.menu-tags-container .badge {
margin: 0.15em 0.15em 0.15em 0;
}
.menu-tags-container input[type='checkbox'] {
margin: 0.2em;
}
.menu-index-list {
display: flex;
flex-direction: column;
}
.menu-index-list.reverse {
flex-direction: column-reverse;
}
/* ---
- Texts
--- */
a {
color: inherit;
}
code {
font-family: var(--mono);
}
/* ---
- Tips
--- */
.badge {
display: inline-block;
background-color: var(--indicator-background-color);
border: 1px solid var(--gray);
border-radius: 1px;
padding: 0 0.3rem;
font-size: 1rem;
margin-left: 0.2rem;
text-align: center;
line-height: 1.5rem;
white-space: nowrap;
font-family: var(--mono);
color: black;
}
.tooltip {
cursor: pointer;
position: relative;
display: inline-block;
background-color: var(--cosma-blue);
border-radius: 50%;
color: white;
width: 16px;
text-align: center;
height: 16px;
font-weight: normal;
}
.tooltip .tooltiptext {
visibility: hidden;
width: 120px;
line-height: 130%;
background-color: var(--cosma-blue-dark);
box-shadow: var(--shadow);
text-align: center;
padding: 5px;
border-radius: 2px;
position: absolute;
z-index: 1;
width: 160px;
bottom: 130%;
left: 50%;
margin-left: -80px;
}
.tooltip:hover .tooltiptext {
visibility: visible;
}
/** Menu (left side board)
------------------------------------------------------------*/
aside.menu {
box-shadow: var(--shadow);
z-index: 100;
overflow: auto;
height: 100vh;
flex: 0 0 30rem;
margin: 0;
padding: 0 20px 50px 20px;
background-color: var(--background-gray);
color: var(--offblack);
}
aside.menu:not(.active) {
display: none;
}
/* ---
- User title
--- */
.title {
text-transform: uppercase;
font-size: 1.8rem;
color: var(--cosma-blue-dark);
text-align: center;
}
/* ---
- Toolbar
--- */
#menu-electron {
display: flex;
flex-direction: row;
justify-content: space-evenly;
align-items: center;
margin-top: 1.5rem;
}
#menu-electron button {
padding: 0;
margin: 0;
background-color: transparent;
border: none;
}
#menu-electron button + button {
margin-left: 7px;
}
#menu-electron button svg {
height: 25px;
width: auto;
}
#menu-electron button.icon-chevron svg {
height: 18px;
}
/* ---
- Spatialization load bar
--- */
.load-bar {
height: 0.3em;
padding: 0.1rem;
display: flex;
margin: 1rem 0;
background-color: var(--indicator-background-color);
}
.load-bar #load-bar-value {
background-color: var(--cosma-blue);
flex-basis: 100%;
}
/* ---
- Search input & list
--- */
.search-bar {
width: 100%;
margin: 0.8rem 0;
}
#search-result-list {
margin-bottom: 0.8rem;
}
#search-result-list li {
cursor: pointer;
}
/* ---
- Controls from graph params
--- */
.menu-controls input[type='number'] {
width: 7rem;
margin-left: 1rem;
}
.menu-controls-title {
font-weight: bold;
}
/* ---
- Footer
--- */
aside.menu footer {
display: flex;
justify-content: space-evenly;
position: fixed;
bottom: 0px;
left: 0px;
width: 30rem;
margin-top: 1.8rem;
background-color: inherit;
padding: 0.8rem 0 0.8rem 0.8rem;
text-transform: uppercase;
border-top: solid 1px var(--border-color);
font-size: 1.1rem;
text-align: center;
}
aside.menu footer span:not(:first-of-type)::before {
content: '—';
}
/** Record container (right side board)
------------------------------------------------------------*/
main.record-container {
z-index: 100;
top: 0;
right: 0;
padding: 1rem 2rem;
flex: 0 0 50rem;
height: 100vh;
overflow: auto;
background-color: var(--offwhite);
color: var(--offblack);
box-shadow: var(--shadow);
}
main.record-container:not(.active) {
display: none;
}
.empty-record {
margin-top: 4rem;
}
.empty-record p {
font-size: 1.8rem;
}
.record:not(.active) {
display: none;
}
/* ---
- Record header
--- */
.record header {
padding-bottom: 1.5rem;
margin-bottom: 3rem;
border-bottom: 1px solid var(--gray);
}
.record header div + div,
.record-focus-container {
margin-top: 0.8rem;
}
.record header div span:first-of-type,
.record-focus-container > span {
font-size: 1.3rem;
font-weight: bold;
text-transform: uppercase;
margin-right: 0.8rem;
}
.record-last-edit {
display: none;
}
.record-focus-lever {
display: none;
}
.record-focus-lever input {
width: 80%;
}
/* ---
- Record content
--- */
.record-content a {
text-decoration: underline;
}
.record img {
height: auto;
max-width: 100%;
}
.record header img {
height: auto;
max-width: 100%;
margin: 1rem 0;
}
/* From Typesafe.css, by Bradley Taunt */
.record main {
font-size: 1.6rem;
line-height: 1.5;
font-family: var(--serif);
}
.record main h1,
h2,
h3,
h4,
h5,
h6 {
font-family: var(--sans);
margin: 3rem 0 0 0;
}
.record main h1 {
font-size: 1.8rem;
}
.record main h2 {
font-size: 1.6rem;
}
.record main h3 {
font-size: 1.4rem;
}
.record main a {
word-wrap: break-word;
}
.record main a.record-link {
color: #337ab7;
}
a.record-link.highlight {
font-style: normal;
background-color: rgba(255, 255, 182, 1);
}
.record main ul,
.record main ol {
padding-left: 2rem;
}
.record main ul li,
.record ol li {
margin: 0.5rem 0 0 0;
}
.record main pre {
overflow: auto;
font-size: 90%;
}
.record main blockquote {
border-left: 5px solid var(--border-color);
margin: 0;
padding-left: 1rem;
}
.record main table {
border-collapse: collapse;
margin: 2rem 0;
text-align: left;
width: 100%;
}
.record main tr {
border-bottom: 1px solid var(--border-color);
}
.record main th,
.record main td {
padding: 0.5rem;
}
.record main hr {
background: var(--border-color);
border: 0;
height: 1px;
margin: 2rem 0;
}
/* ---
- Record bibliography
--- */
.record .bibliography div + div {
margin-top: 1rem;
}
.record div.csl-entry {
width: inherit;
text-indent: -2rem;
padding-left: 2rem;
margin: 0.75rem 0 0 0;
line-height: 1.3;
overflow-wrap: break-word;
word-wrap: break-word;
-ms-word-break: break-all;
word-break: break-word;
}
/* ---
- Record footer
--- */
.record footer {
margin-top: 3rem;
border-top: 1px solid var(--gray);
}
.record footer li {
/* links & backlinks */
position: relative;
}
.record footer li .record-links-context {
background: white;
padding: 0.8rem;
border-radius: 2px;
margin-top: 0.8rem;
bottom: calc(100% + 10px);
box-shadow: var(--shadow);
text-indent: 0;
}
.record footer li .record-links-context.hover {
position: absolute;
display: none;
}
.record footer li:hover .record-links-context.hover {
display: block;
}
.record footer li .record-links-context li::before {
content: '-';
position: relative;
left: -5px;
}
.record footer li .record-links-context p,
.record footer li .record-links-context blockquote {
margin: 0px;
}
.record footer li .record-links-context p + p {
margin-top: 0.8rem;
}
/** Graph
------------------------------------------------------------*/
.graph-wrapper {
top: 0;
right: 0;
height: 100vh;
flex: 1;
}
#graph-canvas {
cursor: move;
width: 100%;
height: 100%;
}
/* ---
- Graph elements
--- */
/* nodes */
circle,
text {
cursor: pointer;
}
g.focus circle {
stroke: var(--highlight);
}
/* labels */
text {
font-family: var(--condensed);
fill: gray;
}
/* arrows */
marker {
/* set into config.yml file by 'undefined' link type */
stroke: var(--l_undefined);
fill: var(--l_undefined);
}
/* ---
- Buttons
--- */
.graph-controls-section + .graph-controls-section {
margin-top: 10px;
}
.graph-control-label {
margin-bottom: 5px;
}
.graph-controls {
position: fixed;
left: 34rem;
display: flex;
align-items: flex-start;
flex-direction: column;
bottom: 55px;
}
.graph-controls.move {
left: 4rem;
}
.graph-timeline {
position: absolute;
display: flex;
align-items: flex-start;
flex-direction: column;
}
.graph-controls div {
position: relative;
}
.graph-controls div.graph-controls-zoom {
display: flex;
justify-content: space-between;
position: relative;
}
.graph-controls-focus {
display: flex;
justify-content: flex-start;
flex-flow: row wrap;
}
.graph-controls-focus input[type='range']:not(.active) {
display: none;
}
.graph-controls #reset-isolate {
display: none;
}
.graph-controls #reset-highlight {
display: none;
}
#timeline-form {
width: calc(100vw - 850px);
backdrop-filter: blur(7px);
}
#timeline-form:not(.active) {
display: none;
}
#timeline-form input[type='range'] {
width: 100%;
}
#timeline-range output[name='timeline_output'] {
color: gray;
position: relative;
text-align: center;
}
#chonos-list {
display: flex;
color: gray;
justify-content: space-between;
}
/* thanks to https://stackoverflow.com/a/62983699/13491646 */
input[type='range'] + datalist {
display: block;
margin-top: -4px;
}
input[type='range'] + datalist option {
cursor: pointer;
display: inline-block;
width: calc((100% - 12px) / (var(--list-length) - 1));
text-align: center;
font-size: 11px;
color: gray;
}
input[type='range'] + datalist option:first-child {
width: calc((100% - 12px) / ((var(--list-length) - 1) * 2) + 6px);
text-align: left;
}
input[type='range'] + datalist option:last-child {
width: calc((100% - 12px) / ((var(--list-length) - 1) * 2) + 6px);
text-align: right;
}
/** Credits
------------------------------------------------------------*/
article#credits {
text-align: center;
}
article#credits ul {
list-style-type: none;
margin: 0;
padding: 0;
}
article#credits dt {
font-weight: bold;
}
article#credits dd,
article#credits li {
margin: 0;
padding: 0 0 0.5rem 0;
}
article#credits h1.metas-title {
font-size: 2rem;
}
/* ---
- Logo
--- */
.logo {
cursor: pointer;
}
.logo svg {
display: block;
margin: 0 auto;
max-width: 300px;
}
@keyframes rotate-center {
0% {
transform: rotate(0deg);
}
50% {
transform: rotate(270deg);
}
100% {
transform: rotate(360deg);
}
}
#cosma-roll {
transform-origin: 96px 42px;
}
#cosma-roll.anim {
animation: 3s cubic-bezier(0.2, -0.2, 0.8, 1) 1 rotate-center;
}
/** Help
------------------------------------------------------------*/
#help td:first-child {
font-weight: bold;
text-align: right;
}
#help td {
vertical-align: top;
}
#help tr {
border-top: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
}
/** Bibliography references
------------------------------------------------------------*/
#citation-references button {
margin-bottom: 2rem;
}
#citation-references code {
display: block;
word-wrap: break-word;
font-size: 1.2rem;
max-height: 75vh;
overflow: scroll;
border-top: 1px solid var(--border-color);
border-bottom: 1px solid var(--border-color);
}
.close-button {
position: absolute;
top: 5px;
z-index: 200;
padding: 1px 5px 4px 4px;
}
.close-button.active {
transform: scaleX(-1);
}
.close-button.right {
right: 10px;
text-orientation: upright;
}
.close-button.left {
left: 10px;
}
@media print {
/* ---
- Global
--- */
:root {
font-size: 52.5%;
}
@page {
margin: 10mm 20mm;
}
body {
overflow: unset;
}
/* ---
- Elements
--- */
p,
tr,
li {
orphans: 3;
}
a[href]:not([onclick]):after {
content: ' (' attr(href) ')';
}
/* ---
- Page containers
--- */
aside,
.graph-wrapper {
display: none;
}
/* ---
- Record header
--- */
.record header {
margin-bottom: 10mm;
}
.record-focus-container,
.record-btn-close {
display: none;
}
/* ---
- Record main
--- */
main.record-container {
position: unset;
width: 100%;
overflow: unset;
box-shadow: unset;
}
/* ---
- Record footer
--- */
main.record-container footer {
break-before: page;
}
main.record-container footer .record-links-context {
display: block;
position: unset;
box-shadow: unset;
}
main.record-container footer li {
display: block;
margin-top: 2mm;
}
.id-context {
font-style: normal;
text-decoration: underline;
}
}
:root {
border-color: MediumBlue;
--cosma-blue-dark: Mediumblue;
--border-color: deepskyblue;
--indicator-background-color: ghostwhite;
}
body {
font-family: var(--mono);
font-size: 1.4rem;
}
.record main {
font-family: var(--mono);
font-size: 1.1rem;
font-weight: 100;
color: red;
background-color: whitesmoke
}
.record main a.record-link {
text-decoration: none;
font-style: italic;
color: mediumblue;
}
.record main hr {
background: mistyrose;
}
.record main a.record-link::before {
content: '/';
}
.record main h1, h2, h3, h4, h5, h6 {
font-family: var(--mono);
}
main.record-container {
color: mediumblue;
background-image: radial-gradient(circle, SlateGrey 0.5px, snow 0.5px);
background-size: 8px 8px;
}
details > summary {
text-transform: lowercase;
}
details {
font-size: 1rem;
background-color: whitesmoke;
}
text {
fill: mediumblue;
font-weight: 100;
z-index: 999;
}
aside.menu {
background-image: radial-gradient(circle, slategrey 0.5px, snow 0.5px);
color: MediumBlue;
background-size: 8px 8px;
flex: 0 0 20rem;
}
aside.menu footer {
width:20rem;
}
button {
background-color: ghostwhite;
font-family: var(--mono);
}
.title {
text-transform: lowercase;
}
.load-bar #load-bar-value {
background-color: gold;
}
.record footer li .record-links-context {
font-size: 1rem;
}
</style>
</head>
<body>
<button id="close-left-side" class="close-button left"></button>
<button id="close-right-side" class="close-button right"></button>
<aside id="menu-container" class="menu active list-content-container">
<header role="banner">
<h1 class="title">rhizom2o24</h1>
<div class="load-bar" onclick="updateForces()"
title="Spatialization (Space)">
<div id="load-bar-value"></div>
</div>
</header>
<section>
<input class="search-bar" id="search" placeholder="Search… (S)"
autocomplete="off" role="search" />
<ul id="search-result-list"></ul>
</section>
<details class="menu-types" open="open">
<summary class="menu-title">
Types
<span id="types-counter" class="badge">0</span>
</summary>
<form id="types-form" class="menu-types-container">
<label class="filter">
<input type="checkbox" name="project">
<span class="label" style="color: var(--n_project);">project</span>
<span class="badge">2</span>
</label>
</form>
</details>
<details class="menu-tags" data-sort="tag">
<summary class="menu-title">
Keywords
<span id="tag-counter" class="badge">3</span>
</summary>
<select class="sorting-select" name="index_sorting">
<option value="alphabetical">A-Z</option>
<option value="alphabetical:reverse">Z-A</option>
<option value="digital">Ascending</option>
<option value="digital:reverse">Descending</option>
</select>
<form id="tags-form" class="menu-tags-container menu-tags-container-prim sort-box active">
<label class="btn" style="order: 1">
<input type="checkbox" name="software">
<span class="label">software</span>
<span class="badge">1</span>
</label>
<label class="btn" style="order: 2">
<input type="checkbox" name="hardware">
<span class="label">hardware</span>
<span class="badge">1</span>
</label>
<label class="btn" style="order: 3">
<input type="checkbox" name="architecture">
<span class="label">architecture</span>
<span class="badge">1</span>
</label>
</form>
</details>
<details class="menu-index" id="index">
<summary class="menu-title">
Index
<span id="index-counter" class="badge">2</span>
</summary>
<select class="sorting-select" name="index_sorting">
<option value="alphabetical">A-Z</option>
<option value="alphabetical:reverse">Z-A</option>
<option value="chronological">Chronological</option>
<option value="chronological:reverse">Antechronological</option>
</select>
<ul class="menu-index-list">
<li data-index="hkw-pavillon" style="order: 1">
<a href="#hkw-pavillon">
<span class="record-type-points">
<span style="color: var(--n_project);"></span>
</span>
<span>hkw-pavillon</span>
</a>
</li>
<li data-index="meta" style="order: 2">
<a href="#meta">
<span class="record-type-points">
<span style="color: var(--n_project);"></span>
</span>
<span>meta</span>
</a>
</li>
</ul>
</details>
<details class="menu-view" open="open">
<summary class="menu-title">
View
</summary>
<button onclick="window.location.replace(window.location.pathname)">
Reset the view
</button>
<button id="view-save">
Set URL to current view
</button>
<span class="tooltip">?
<span class="tooltiptext">Apply the current state of the interface (selected record, filters, focus…) to the URL, which can then be used to access the current view.
</span>
</span>
<div class="menu-view-container" id="views-container">
</div>
</details>
<details class="menu-controls">
<summary class="menu-title">
Graph parameters
</summary>
<ul class="menu-controls-list">
<li>
<label>
<input type="checkbox" checked onchange="linksDisplayToggle(this.checked)">
Display links
<span class="badge">0</span>
</label>
</li>
<li>
<label>
<input type="checkbox" checked onchange="labelDisplayToggle(this.checked)">
Display labels
</label>
</li>
<li>
<label>
<input type="checkbox" checked
onchange="graphProperties.graph_highlight_on_hover = this.checked">
Highlight on hover
</label>
</li>
</ul>
<article class="menu-controls-container">
<p class="menu-controls-title">
Forces
<span class="tooltip">?
<span class="tooltiptext"></span>
</span>
</p>
<form oninput="graphProperties.attraction_force = range.value; updateForces()">
<label>repulsion</label>
<input type="number" value="400" name="number" min="50" max="600" oninput="range.value = number.value"/>
<input type="range" min="50" max="600" value="400" name="range" step="0.1" oninput="number.value = range.value"/>
</form>
<form oninput="graphProperties.attraction_distance_max = range.value; updateForces()">
<label>max distance</label>
<input type="number" value="500" name="number" min="200" max="800" oninput="range.value = number.value"/>
<input type="range" min="200" max="800" value="500" name="range" step="0.1" oninput="number.value = range.value"/>
</form>
<form oninput="graphProperties.attraction_vertical = range.value; updateForces()">
<label>vertical attraction</label>
<input type="number" value="0" name="number" min="0" max="1" oninput="range.value = number.value"/>
<input type="range" min="0" max="1" value="0" name="range" step="0.01" oninput="number.value = range.value"/>
</form>
<form oninput="graphProperties.attraction_horizontal = range.value; updateForces()">
<label>horizontal attraction</label>
<input type="number" value="0" name="number" min="0" max="1" oninput="range.value = number.value"/>
<input type="range" min="0" max="1" value="0" name="range" step="0.01" oninput="number.value = range.value"/>
</form>
</article>
<article class="menu-controls-container">
<p class="menu-controls-title">
Labels
</p>
<form oninput="graphProperties.text_size = range.value; updateFontsize()">
<label>font size</label>
<input type="number" value="14" name="number" min="2" max="15" oninput="range.value = number.value"/>
<input type="range" min="2" max="15" value="14" name="range" step="0.5" oninput="number.value = range.value"/>
</form>
</article>
<article class="menu-controls-container">
<p class="menu-controls-title">Focus type</p>
<select name="focus_mode" id="focus-mode-select">
<option value="directed">All links</option>
<option value="inbound">Inbound links</option>
<option value="outbound">Outbound links</option>
</select>
</article>
</details>
<footer class="menu-footer">
<a href="#help">
Help
</a>
<a href="#credits">
Made with Cosma About
</a>
</footer>
</aside>
<div class="graph-wrapper" style="background-color: whitesmoke">
<svg id="graph-canvas">
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="22" refY="5" markerUnits="strokeWidth" markerWidth="5" markerHeight="5" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z"></path>
</marker>
<filter id="double">
<feMorphology in="SourceGraphic" result="a" operator="dilate" radius="0.2"></feMorphology>
<feComposite in="SourceGraphic" in2="a" result="xx" operator="xor"></feComposite>
</filter>
</defs>
</svg>
</div>
<div class="graph-controls" id="graph-controls">
<div class="graph-controls-section graph-controls-zoom">
<button onclick="zoomLess()">-</button>
<button onclick="zoomReset()">Reset (R)</button>
<button onclick="zoomMore()">+</button>
</div>
<div class="graph-controls-section graph-controls-focus">
<span class="graph-control-label">
<input id="focus-check" type="checkbox" name="checkbox">
<label for="focus-check">Focus (F)</label>
</span>
<input id="focus-input" type="range" min="1" max="2" value="1" name="focus_range" step="1" />
</div>
</div>
<main id="record-container" class="record-container">
<article class="record active empty-record">
<p>To open a record, select a node in the graph or a title in the index.</p>
</article>
<article id="hkw-pavillon" class="record">
<header>
<h1 class="record-title">hkw-pavillon</h1>
<div class="record-type">
<span>types :</span>
<span>project</span>
</div>
<div class="record-tags">
<span>keywords :</span>
<button class="btn" onclick="activeTag('architecture');">architecture</button>
</div>
</header>
<main class="record-content">
<p><img src="https://data.lukasrosier.com/hkw-pavillon.jpeg" alt="hkww-pavillon"></p>
</main>
<footer class="list-content-container">
</footer>
</article>
<article id="meta" class="record">
<header>
<h1 class="record-title">meta</h1>
<div class="record-type">
<span>types :</span>
<span>project</span>
</div>
<div class="record-tags">
<span>keywords :</span>
<button class="btn" onclick="activeTag('software');">software</button>
<button class="btn" onclick="activeTag('hardware');">hardware</button>
</div>
</header>
<main class="record-content">
<p><img src="https://data.lukasrosier.com/pinix.jpeg" alt="pinix"></p>
<p>you are here, right now, inside my closet, hanging on kabelbinder, being cooled by a icetower with funky cheesy leds.</p>
<p>how do you like it huh? :D</p>
</main>
<footer class="list-content-container">
</footer>
</article>
<article id="help" class="record">
<main>
<h1>Help</h1>
<p>
<a href="https://cosma.arthurperret.fr/" target="_blank" class="link-documentation">
Click here to access Cosma&#39;s documentation
</a>
</p>
<h2>Shortcuts</h2>
<table>
<tbody>
<tr>
<td>Space</td>
<td>Re-run the force-layout algorithm</td>
</tr>
<tr>
<td>S</td>
<td>Move the cursor to Search</td>
</tr>
<tr>
<td>Alt + click</td>
<td>(on a record type) Deselect other types</td>
</tr>
<tr>
<td>R</td>
<td>Reset zoom</td>
</tr>
<tr>
<td>Alt + R</td>
<td>Reset the display</td>
</tr>
<tr>
<td>C</td>
<td>Zoom in on the selected node</td>
</tr>
<tr>
<td>F</td>
<td>Switch to Focus mode</td>
</tr>
<tr>
<td>Escape</td>
<td>Close the active record</td>
</tr>
</tbody>
</table>
</main>
</article>
<article id="credits" class="record">
<main>
<h1 class="metas-title">rhizom2o24</h1>
<p class="metas-author">lukasrosier</p>
<p class="metas-description">obvious</p>
<hr>
<div class="logo">
<?xml version="1.0" encoding="UTF-8"?>
<svg enable-background="new 0 0 283.46 68" version="1.1" viewBox="0 0 283.46 68" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
.st0{fill:#147899;}
.st1{fill:#02385C;}
.st2{fill:#001A37;}
</style>
<path class="st0" d="m227.63 41.56v0.68-0.35-0.33m-15.62-15.3c-6.32 0-12.02 3.81-14.44 9.65s-1.08 12.56 3.39 17.03c2.99 2.99 6.98 4.58 11.05 4.58 2.01 0 4.04-0.39 5.98-1.19 0.26-0.11 0.52-0.22 0.77-0.34v-12.1c-0.86 2.91-3.56 5.03-6.75 5.03-2.85 0-5.41-1.71-6.5-4.34s-0.49-5.66 1.53-7.67c1.35-1.35 3.15-2.06 4.98-2.06 0.91 0 1.82 0.18 2.69 0.54 1.99 0.83 3.46 2.5 4.05 4.5v-12.09c-2.05-0.98-4.33-1.53-6.75-1.54"/>
<path class="st0" d="m67.32 26.18c-4 0-8 1.53-11.05 4.58-6.1 6.1-6.1 16 0 22.1 3.05 3.05 7.05 4.58 11.05 4.58s8-1.53 11.05-4.58l-6.07-6.07c-1.31 1.32-3.1 2.06-4.96 2.06h-0.02c-3.19 0-5.97-2.14-6.8-5.22-0.82-3.08 0.52-6.32 3.28-7.92 1.1-0.63 2.31-0.94 3.52-0.94 1.82 0 3.62 0.71 4.98 2.06l6.07-6.07c-3.05-3.05-7.05-4.58-11.05-4.58"/>
<path class="st0" d="m137.46 26.26h-12.18c-5.5 0-9.96 4.46-9.96 9.96s4.46 9.96 9.96 9.96h5.13c0.76 0 1.37 0.61 1.37 1.37s-0.61 1.37-1.37 1.37h-12.18v8.59h12.32c4-0.05 7.58-2.5 9.09-6.21s0.65-7.96-2.18-10.79c-1.86-1.87-4.38-2.92-7.01-2.92h-0.03-5.13c-0.76 0-1.37-0.62-1.37-1.38s0.62-1.37 1.37-1.37h12.18v-8.58"/>
<path class="st0" d="m227.63 42.24c-0.13 5.9-3.58 11.21-8.88 13.74v1.49h8.88v-15.23m-8.87-2.36v4.01c0.19-0.64 0.29-1.31 0.29-2s-0.1-1.37-0.29-2.01m8.87-13.65h-8.88v1.57c5.15 2.48 8.74 7.69 8.88 13.76v-15.33"/>
<path class="st1" d="m218.76 27.8v12.08c0.19 0.64 0.29 1.31 0.29 2 0 0.7-0.1 1.37-0.29 2v12.09c5.3-2.53 8.74-7.84 8.88-13.74v-0.68c-0.14-6.06-3.73-11.28-8.88-13.75"/>
<path class="st0" d="m153.79 26.23h-8.52v31.24h8.52-8.52v-17.57-0.18c0.07-5.65 3.57-10.48 8.52-12.49v-1"/>
<path class="st0" d="m177.75 26.23c-3.65 0-6.96 1.43-9.41 3.75 2.58 2.45 4.21 5.91 4.26 9.74v0.18c0-2.84 2.3-5.15 5.15-5.15 2.84 0 5.15 2.3 5.15 5.15v17.57h8.52v-17.57-0.18c-0.1-7.47-6.18-13.49-13.67-13.49"/>
<path class="st0" d="m158.93 26.23c-1.82 0-3.56 0.36-5.15 1v30.24-17.57c0-2.84 2.3-5.15 5.15-5.15s5.15 2.3 5.15 5.15v-0.18c0.05-3.83 1.67-7.28 4.26-9.74-2.45-2.32-5.76-3.75-9.41-3.75"/>
<path class="st1" d="m153.79 27.23c-4.94 2.01-8.45 6.84-8.52 12.49v0.18 17.57h8.52v-30.24"/>
<path class="st1" d="m168.34 29.98c-2.58 2.45-4.21 5.91-4.26 9.74v0.18 17.57h8.52v-17.57-0.18c-0.05-3.83-1.68-7.28-4.26-9.74"/>
<g id="cosma-roll">
<path class="st0" d="m95.49 46.43-4.08 2.36v8.55h8.17v-8.55l-4.09-2.36m4.08-20.34h-8.17v8.55l4.09 2.36 4.08-2.36v-8.55"/>
<path class="st0" d="m103.65 41.71-4.08 2.36v4.71l7.4 4.27 4.08-7.07-7.4-4.27m-19.65-11.34-4.08 7.07 7.4 4.27 4.08-2.36v-4.71l-7.4-4.27"/>
<path class="st1" d="m99.57 44.07-4.08 2.36 4.08 2.36v-4.72m-8.17-9.43v4.71l4.09-2.35-4.09-2.36"/>
<path class="st0" d="m87.32 41.71-7.4 4.27 4.08 7.08 7.4-4.27v-4.71l-4.08-2.37m19.65-11.34-7.4 4.27v4.71l4.08 2.36 7.4-4.27-4.08-7.07"/>
<path class="st1" d="m91.4 44.07v4.71l4.08-2.36-4.08-2.35m8.17-9.43-4.08 2.36 4.08 2.36v-4.72"/>
<path class="st1" d="m91.4 39.36-4.08 2.36 4.08 2.36v-4.72m8.17 0v4.71l4.08-2.36-4.08-2.35"/>
<polyline class="st2" points="95.49 37 91.4 39.36 91.4 44.07 95.49 46.43 99.57 44.07 99.57 39.36 95.49 37"/>
</g>
<path class="st0" d="m50.43 16.17h-15c-0.69 0-1.25 0.56-1.25 1.25v48.56c0 0.69 0.56 1.25 1.25 1.25h15v-9.9h-5.09c-0.69 0-1.25-0.56-1.25-1.25v-28.74c0-0.69 0.56-1.25 1.25-1.25h5.09v-9.92"/>
<path class="st0" d="m32.53 16.17h-15c-0.69 0-1.25 0.56-1.25 1.25v48.56c0 0.69 0.56 1.25 1.25 1.25h15v-9.9h-5.09c-0.69 0-1.25-0.56-1.25-1.25v-28.73c0-0.69 0.56-1.25 1.25-1.25h5.09v-9.93"/>
<path class="st0" d="m247.89 16.17h-15v9.92h5.09c0.69 0 1.25 0.56 1.25 1.25v28.74c0 0.69-0.56 1.25-1.25 1.25h-5.09v9.9h15c0.69 0 1.25-0.56 1.25-1.25v-48.56c0.01-0.68-0.56-1.25-1.25-1.25"/>
<path class="st0" d="m265.82 16.17h-15v9.92h5.09c0.69 0 1.25 0.56 1.25 1.25v28.74c0 0.69-0.56 1.25-1.25 1.25h-5.09v9.9h15c0.69 0 1.25-0.56 1.25-1.25v-48.55c0-0.69-0.56-1.26-1.25-1.26"/>
</svg>
</div>
<p>
Version 2.4.1
License GPL-3.0-or-later</p>
<ul>
<li>Arthur Perret</li>
<li>Guillaume Brioudes</li>
<li>Olivier Le Deuff</li>
<li>Clément Borel</li>
<li>ANR research programme <a href="https://hyperotlet.hypotheses.org/">HyperOtlet</a></li>
</ul>
<dl>
<dt><a href="https://d3js.org/" target="_blank">D3 <span class="badge">v4.13.0</span></a></dt>
<dd>Mike Bostock (BSD 3-Clause)</dd>
<dt><a href="https://mozilla.github.io/nunjucks/" target="_blank">Nunjucks <span class="badge">v3.2.3</span></a></dt>
<dd>James Long (BSD 2-Clause)</dd>
<dt><a href="https://github.com/nodeca/js-yaml" target="_blank">Js-yaml <span class="badge">v4.1.0</span></a></dt>
<dd>Vitaly Puzrin (MIT License)</dd>
<dt><a href="https://github.com/markdown-it/markdown-it" target="_blank">Markdown-it <span class="badge">v12.3.0</span></a></dt>
<dd>Vitaly Puzrin, Alex Kocharin (MIT License)</dd>
<dt><a href="https://github.com/juris-m/citeproc-js" target="_blank">Citeproc <span class="badge">v2.4.62</span></a></dt>
<dd>Frank Bennett (CPAL, AGPL)</dd>
<dt><a href="https://fusejs.io/" target="_blank">Fuse-js <span class="badge">v6.4.6</span></a></dt>
<dd>Kiro Risk (Apache License 2.0)</dd>
</dl>
</main>
</article>
</main>
<script>
const data = {"nodes":[{"id":"meta","label":"meta","types":["project"],"size":11,"strokeWidth":2},{"id":"hkw-pavillon","label":"hkw-pavillon","types":["project"],"size":11,"strokeWidth":2}],"links":[]};
const graphProperties = {"select_origin":"directory","files_origin":"/srv/git/nixos-config/data","nodes_origin":"","links_origin":"","nodes_online":"","links_online":"","images_origin":"","export_target":"/srv/git/nixos-config/www/","history":false,"focus_max":2,"record_types":{"undefined":{"fill":"maroon","stroke":"yellow"},"software":{"fill":"Aqua","stroke":"powderblue"},"concept":{"fill":"DeepPink","stroke":"pink"},"organisation":{"fill":"orangered","stroke":"gold"},"character":{"fill":"rosybrown","stroke":"cornsilk"},"tool":{"fill":"magenta","stroke":"papayawhip"},"project":{"fill":"lime","stroke":"aquamarine"}},"link_types":{"undefined":{"stroke":"dash","color":"#C0C0C0"}},"references_as_nodes":false,"references_type_label":"references","record_filters":[],"graph_background_color":"whitesmoke","graph_highlight_color":"red","graph_highlight_on_hover":true,"graph_text_size":14,"graph_arrows":false,"node_size_method":"degree","node_size":10,"node_size_max":20,"node_size_min":2,"attraction_force":400,"attraction_distance_max":500,"attraction_vertical":0,"attraction_horizontal":0,"views":{},"record_metas":[],"generate_id":"never","link_context":"tooltip","hide_id_from_record_header":true,"title":"rhizom2o24","author":"lukasrosier","description":"obvious","keywords":[],"link_symbol":"","csl":"","bibliography":"","csl_locale":"","css_custom":"/srv/git/nixos-config/www/style.css","devtools":false,"lang":"en"};
const tagList = [{"name":"software","nodes":["meta"]},{"name":"hardware","nodes":["meta"]},{"name":"architecture","nodes":["hkw-pavillon"]}];
const typeList = {"project":{"nodes":["meta","hkw-pavillon"],"active":true}};
const timeline = {"end":null};
const sorting = {"records":[{"alphabetical":0,"chronological":0},{"alphabetical":1,"chronological":1}],"tags":[{"alphabetical":2,"digital":0},{"alphabetical":1,"digital":1},{"alphabetical":0,"digital":2}]};
const focusIsActive = true;
</script>
<script>
/*! For license information please see bundle.js.LICENSE.txt */
(()=>{var t={165:()=>{window.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("citation-references"),e=null==t?void 0:t.querySelector("button"),n=null==t?void 0:t.querySelector("code");e&&e.addEventListener("click",(function(){var t=document.createElement("a");t.setAttribute("href","data:text/plain;charset=utf-8,"+encodeURIComponent(n.textContent)),t.setAttribute("download","bibliography.json"),t.style.display="none",document.body.appendChild(t),t.click(),t.remove()}))}))},192:()=>{window.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("close-left-side"),e=document.getElementById("menu-container"),n=document.getElementById("graph-controls");t.addEventListener("click",(function(){t.classList.toggle("active"),e.classList.toggle("active"),n.classList.toggle("move")}))}))},841:function(t){t.exports=function(){"use strict";function t(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(t);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,r)}return n}function e(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?t(Object(r),!0).forEach((function(t){a(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):t(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function n(t){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n(t)}function r(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}function o(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function a(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function u(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||function(t,e){if(t){if("string"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?c(t,e):void 0}}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function s(t){return Array.isArray?Array.isArray(t):"[object Array]"===m(t)}var h=1/0;function l(t){return null==t?"":function(t){if("string"==typeof t)return t;var e=t+"";return"0"==e&&1/t==-h?"-0":e}(t)}function d(t){return"string"==typeof t}function f(t){return"number"==typeof t}function p(t){return!0===t||!1===t||function(t){return y(t)&&null!==t}(t)&&"[object Boolean]"==m(t)}function y(t){return"object"===n(t)}function g(t){return null!=t}function v(t){return!t.trim().length}function m(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}var w=function(t){return"Missing ".concat(t," property in key")},b=function(t){return"Property 'weight' in key '".concat(t,"' must be a positive integer")},_=Object.prototype.hasOwnProperty,x=function(){function t(e){var n=this;r(this,t),this._keys=[],this._keyMap={};var i=0;e.forEach((function(t){var e=k(t);i+=e.weight,n._keys.push(e),n._keyMap[e.id]=e,i+=e.weight})),this._keys.forEach((function(t){t.weight/=i}))}return o(t,[{key:"get",value:function(t){return this._keyMap[t]}},{key:"keys",value:function(){return this._keys}},{key:"toJSON",value:function(){return JSON.stringify(this._keys)}}]),t}();function k(t){var e=null,n=null,r=null,i=1,o=null;if(d(t)||s(t))r=t,e=E(t),n=A(t);else{if(!_.call(t,"name"))throw new Error(w("name"));var a=t.name;if(r=a,_.call(t,"weight")&&(i=t.weight)<=0)throw new Error(b(a));e=E(a),n=A(a),o=t.getFn}return{path:e,id:n,weight:i,src:r,getFn:o}}function E(t){return s(t)?t:t.split(".")}function A(t){return s(t)?t.join("."):t}var S={useExtendedSearch:!1,getFn:function(t,e){var n=[],r=!1;return function t(e,i,o){if(g(e))if(i[o]){var a=e[i[o]];if(!g(a))return;if(o===i.length-1&&(d(a)||f(a)||p(a)))n.push(l(a));else if(s(a)){r=!0;for(var u=0,c=a.length;u<c;u+=1)t(a[u],i,o+1)}else i.length&&t(a,i,o+1)}else n.push(e)}(t,d(e)?e.split("."):e,0),r?n:n[0]},ignoreLocation:!1,ignoreFieldNorm:!1,fieldNormWeight:1},L=e(e(e(e({},{isCaseSensitive:!1,includeScore:!1,keys:[],shouldSort:!0,sortFn:function(t,e){return t.score===e.score?t.idx<e.idx?-1:1:t.score<e.score?-1:1}}),{includeMatches:!1,findAllMatches:!1,minMatchCharLength:1}),{location:0,threshold:.6,distance:100}),S),M=/[^ ]+/g;var G=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=e.getFn,i=void 0===n?L.getFn:n,o=e.fieldNormWeight,a=void 0===o?L.fieldNormWeight:o;r(this,t),this.norm=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:3,n=new Map,r=Math.pow(10,e);return{get:function(e){var i=e.match(M).length;if(n.has(i))return n.get(i);var o=1/Math.pow(i,.5*t),a=parseFloat(Math.round(o*r)/r);return n.set(i,a),a},clear:function(){n.clear()}}}(a,3),this.getFn=i,this.isCreated=!1,this.setIndexRecords()}return o(t,[{key:"setSources",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.docs=t}},{key:"setIndexRecords",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.records=t}},{key:"setKeys",value:function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.keys=e,this._keysMap={},e.forEach((function(e,n){t._keysMap[e.id]=n}))}},{key:"create",value:function(){var t=this;!this.isCreated&&this.docs.length&&(this.isCreated=!0,d(this.docs[0])?this.docs.forEach((function(e,n){t._addString(e,n)})):this.docs.forEach((function(e,n){t._addObject(e,n)})),this.norm.clear())}},{key:"add",value:function(t){var e=this.size();d(t)?this._addString(t,e):this._addObject(t,e)}},{key:"removeAt",value:function(t){this.records.splice(t,1);for(var e=t,n=this.size();e<n;e+=1)this.records[e].i-=1}},{key:"getValueForItemAtKeyId",value:function(t,e){return t[this._keysMap[e]]}},{key:"size",value:function(){return this.records.length}},{key:"_addString",value:function(t,e){if(g(t)&&!v(t)){var n={v:t,i:e,n:this.norm.get(t)};this.records.push(n)}}},{key:"_addObject",value:function(t,e){var n=this,r={i:e,$:{}};this.keys.forEach((function(e,i){var o=e.getFn?e.getFn(t):n.getFn(t,e.path);if(g(o))if(s(o))!function(){for(var t=[],e=[{nestedArrIndex:-1,value:o}];e.length;){var a=e.pop(),u=a.nestedArrIndex,c=a.value;if(g(c))if(d(c)&&!v(c)){var h={v:c,i:u,n:n.norm.get(c)};t.push(h)}else s(c)&&c.forEach((function(t,n){e.push({nestedArrIndex:n,value:t})}))}r.$[i]=t}();else if(d(o)&&!v(o)){var a={v:o,n:n.norm.get(o)};r.$[i]=a}})),this.records.push(r)}},{key:"toJSON",value:function(){return{keys:this.keys,records:this.records}}}]),t}();function N(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.getFn,i=void 0===r?L.getFn:r,o=n.fieldNormWeight,a=void 0===o?L.fieldNormWeight:o,u=new G({getFn:i,fieldNormWeight:a});return u.setKeys(t.map(k)),u.setSources(e),u.create(),u}function O(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.errors,r=void 0===n?0:n,i=e.currentLocation,o=void 0===i?0:i,a=e.expectedLocation,u=void 0===a?0:a,c=e.distance,s=void 0===c?L.distance:c,h=e.ignoreLocation,l=void 0===h?L.ignoreLocation:h,d=r/t.length;if(l)return d;var f=Math.abs(u-o);return s?d+f/s:f?1:d}var j=32;function z(t,e,n){var r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=r.location,o=void 0===i?L.location:i,a=r.distance,u=void 0===a?L.distance:a,c=r.threshold,s=void 0===c?L.threshold:c,h=r.findAllMatches,l=void 0===h?L.findAllMatches:h,d=r.minMatchCharLength,f=void 0===d?L.minMatchCharLength:d,p=r.includeMatches,y=void 0===p?L.includeMatches:p,g=r.ignoreLocation,v=void 0===g?L.ignoreLocation:g;if(e.length>j)throw new Error("Pattern length exceeds max of ".concat(j,"."));for(var m,w=e.length,b=t.length,_=Math.max(0,Math.min(o,b)),x=s,k=_,E=f>1||y,A=E?Array(b):[];(m=t.indexOf(e,k))>-1;){var S=O(e,{currentLocation:m,expectedLocation:_,distance:u,ignoreLocation:v});if(x=Math.min(S,x),k=m+w,E)for(var M=0;M<w;)A[m+M]=1,M+=1}k=-1;for(var G=[],N=1,z=w+b,C=1<<w-1,D=0;D<w;D+=1){for(var P=0,I=z;P<I;)O(e,{errors:D,currentLocation:_+I,expectedLocation:_,distance:u,ignoreLocation:v})<=x?P=I:z=I,I=Math.floor((z-P)/2+P);z=I;var U=Math.max(1,_-I+1),T=l?b:Math.min(_+I,b)+w,B=Array(T+2);B[T+1]=(1<<D)-1;for(var q=T;q>=U;q-=1){var R=q-1,F=n[t.charAt(R)];if(E&&(A[R]=+!!F),B[q]=(B[q+1]<<1|1)&F,D&&(B[q]|=(G[q+1]|G[q])<<1|1|G[q+1]),B[q]&C&&(N=O(e,{errors:D,currentLocation:R,expectedLocation:_,distance:u,ignoreLocation:v}))<=x){if(x=N,(k=R)<=_)break;U=Math.max(1,2*_-k)}}if(O(e,{errors:D+1,currentLocation:_,expectedLocation:_,distance:u,ignoreLocation:v})>x)break;G=B}var K={isMatch:k>=0,score:Math.max(.001,N)};if(E){var W=function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:L.minMatchCharLength,n=[],r=-1,i=-1,o=0,a=t.length;o<a;o+=1){var u=t[o];u&&-1===r?r=o:u||-1===r||((i=o-1)-r+1>=e&&n.push([r,i]),r=-1)}return t[o-1]&&o-r>=e&&n.push([r,o-1]),n}(A,f);W.length?y&&(K.indices=W):K.isMatch=!1}return K}function C(t){for(var e={},n=0,r=t.length;n<r;n+=1){var i=t.charAt(n);e[i]=(e[i]||0)|1<<r-n-1}return e}var D=function(){function t(e){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=i.location,a=void 0===o?L.location:o,u=i.threshold,c=void 0===u?L.threshold:u,s=i.distance,h=void 0===s?L.distance:s,l=i.includeMatches,d=void 0===l?L.includeMatches:l,f=i.findAllMatches,p=void 0===f?L.findAllMatches:f,y=i.minMatchCharLength,g=void 0===y?L.minMatchCharLength:y,v=i.isCaseSensitive,m=void 0===v?L.isCaseSensitive:v,w=i.ignoreLocation,b=void 0===w?L.ignoreLocation:w;if(r(this,t),this.options={location:a,threshold:c,distance:h,includeMatches:d,findAllMatches:p,minMatchCharLength:g,isCaseSensitive:m,ignoreLocation:b},this.pattern=m?e:e.toLowerCase(),this.chunks=[],this.pattern.length){var _=function(t,e){n.chunks.push({pattern:t,alphabet:C(t),startIndex:e})},x=this.pattern.length;if(x>j){for(var k=0,E=x%j,A=x-E;k<A;)_(this.pattern.substr(k,j),k),k+=j;if(E){var S=x-j;_(this.pattern.substr(S),S)}}else _(this.pattern,0)}}return o(t,[{key:"searchIn",value:function(t){var e=this.options,n=e.isCaseSensitive,r=e.includeMatches;if(n||(t=t.toLowerCase()),this.pattern===t){var i={isMatch:!0,score:0};return r&&(i.indices=[[0,t.length-1]]),i}var o=this.options,a=o.location,c=o.distance,s=o.threshold,h=o.findAllMatches,l=o.minMatchCharLength,d=o.ignoreLocation,f=[],p=0,y=!1;this.chunks.forEach((function(e){var n=e.pattern,i=e.alphabet,o=e.startIndex,g=z(t,n,i,{location:a+o,distance:c,threshold:s,findAllMatches:h,minMatchCharLength:l,includeMatches:r,ignoreLocation:d}),v=g.isMatch,m=g.score,w=g.indices;v&&(y=!0),p+=m,v&&w&&(f=[].concat(u(f),u(w)))}));var g={isMatch:y,score:y?p/this.chunks.length:1};return y&&r&&(g.indices=f),g}}]),t}(),P=[];function I(t,e){for(var n=0,r=P.length;n<r;n+=1){var i=P[n];if(i.condition(t,e))return new i(t,e)}return new D(t,e)}var U="$and",T="$or",B="$path",q="$val",R=function(t){return!(!t[U]&&!t[T])},F=function(t){return a({},U,Object.keys(t).map((function(e){return a({},e,t[e])})))};function K(t,e){var n=t.matches;e.matches=[],g(n)&&n.forEach((function(t){if(g(t.indices)&&t.indices.length){var n={indices:t.indices,value:t.value};t.key&&(n.key=t.key.src),t.idx>-1&&(n.refIndex=t.idx),e.matches.push(n)}}))}function W(t,e){e.score=t.score}var Y=function(){function t(n){var i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2?arguments[2]:void 0;if(r(this,t),this.options=e(e({},L),i),this.options.useExtendedSearch)throw new Error("Extended search is not available");this._keyStore=new x(this.options.keys),this.setCollection(n,o)}return o(t,[{key:"setCollection",value:function(t,e){if(this._docs=t,e&&!(e instanceof G))throw new Error("Incorrect 'index' type");this._myIndex=e||N(this.options.keys,this._docs,{getFn:this.options.getFn,fieldNormWeight:this.options.fieldNormWeight})}},{key:"add",value:function(t){g(t)&&(this._docs.push(t),this._myIndex.add(t))}},{key:"remove",value:function(){for(var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:function(){return!1},e=[],n=0,r=this._docs.length;n<r;n+=1){var i=this._docs[n];t(i,n)&&(this.removeAt(n),n-=1,r-=1,e.push(i))}return e}},{key:"removeAt",value:function(t){this._docs.splice(t,1),this._myIndex.removeAt(t)}},{key:"getIndex",value:function(){return this._myIndex}},{key:"search",value:function(t){var e=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).limit,n=void 0===e?-1:e,r=this.options,i=r.includeMatches,o=r.includeScore,a=r.shouldSort,u=r.sortFn,c=r.ignoreFieldNorm,s=d(t)?d(this._docs[0])?this._searchStringList(t):this._searchObjectList(t):this._searchLogical(t);return function(t,e){var n=e.ignoreFieldNorm,r=void 0===n?L.ignoreFieldNorm:n;t.forEach((function(t){var e=1;t.matches.forEach((function(t){var n=t.key,i=t.norm,o=t.score,a=n?n.weight:null;e*=Math.pow(0===o&&a?Number.EPSILON:o,(a||1)*(r?1:i))})),t.score=e}))}(s,{ignoreFieldNorm:c}),a&&s.sort(u),f(n)&&n>-1&&(s=s.slice(0,n)),function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.includeMatches,i=void 0===r?L.includeMatches:r,o=n.includeScore,a=void 0===o?L.includeScore:o,u=[];return i&&u.push(K),a&&u.push(W),t.map((function(t){var n=t.idx,r={item:e[n],refIndex:n};return u.length&&u.forEach((function(e){e(t,r)})),r}))}(s,this._docs,{includeMatches:i,includeScore:o})}},{key:"_searchStringList",value:function(t){var e=I(t,this.options),n=this._myIndex.records,r=[];return n.forEach((function(t){var n=t.v,i=t.i,o=t.n;if(g(n)){var a=e.searchIn(n),u=a.isMatch,c=a.score,s=a.indices;u&&r.push({item:n,idx:i,matches:[{score:c,value:n,norm:o,indices:s}]})}})),r}},{key:"_searchLogical",value:function(t){throw new Error("Logical search is not available")}},{key:"_searchObjectList",value:function(t){var e=this,n=I(t,this.options),r=this._myIndex,i=r.keys,o=r.records,a=[];return o.forEach((function(t){var r=t.$,o=t.i;if(g(r)){var c=[];i.forEach((function(t,i){c.push.apply(c,u(e._findMatches({key:t,value:r[i],searcher:n})))})),c.length&&a.push({idx:o,item:r,matches:c})}})),a}},{key:"_findMatches",value:function(t){var e=t.key,n=t.value,r=t.searcher;if(!g(n))return[];var i=[];if(s(n))n.forEach((function(t){var n=t.v,o=t.i,a=t.n;if(g(n)){var u=r.searchIn(n),c=u.isMatch,s=u.score,h=u.indices;c&&i.push({score:s,key:e,value:n,idx:o,norm:a,indices:h})}}));else{var o=n.v,a=n.n,u=r.searchIn(o),c=u.isMatch,h=u.score,l=u.indices;c&&i.push({score:h,key:e,value:o,norm:a,indices:l})}return i}}]),t}();return Y.version="6.6.2",Y.createIndex=N,Y.parseIndex=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=e.getFn,r=void 0===n?L.getFn:n,i=e.fieldNormWeight,o=void 0===i?L.fieldNormWeight:i,a=t.keys,u=t.records,c=new G({getFn:r,fieldNormWeight:o});return c.setKeys(a),c.setIndexRecords(u),c},Y.config=L,Y.parseQuery=function(t,e){var n=(arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}).auto,r=void 0===n||n;return R(t)||(t=F(t)),function t(n){var i=Object.keys(n),o=function(t){return!!t[B]}(n);if(!o&&i.length>1&&!R(n))return t(F(n));if(function(t){return!s(t)&&y(t)&&!R(t)}(n)){var a=o?n[B]:i[0],u=o?n[q]:n[a];if(!d(u))throw new Error(function(t){return"Invalid value for key ".concat(t)}(a));var c={keyId:A(a),pattern:u};return r&&(c.searcher=I(u,e)),c}var h={children:[],operator:i[0]};return i.forEach((function(e){var r=n[e];s(r)&&r.forEach((function(e){h.children.push(t(e))}))})),h}(t)},Y}()},30:(t,e,n)=>{var r=n(208);function i(t){this.graph=t,this.queue=new r(Array,t.order),this.seen=new Set,this.size=0}i.prototype.hasAlreadySeenEverything=function(){return this.seen.size===this.graph.order},i.prototype.countUnseenNodes=function(){return this.graph.order-this.seen.size},i.prototype.forEachNodeYetUnseen=function(t){var e=this.seen,n=this.graph;n.someNode((function(r,i){return e.size===n.order||!e.has(r)&&!!t(r,i)}))},i.prototype.has=function(t){return this.seen.has(t)},i.prototype.push=function(t){var e=this.seen.size;return this.seen.add(t),e!==this.seen.size&&(this.queue.push(t),this.size++,!0)},i.prototype.pushWith=function(t,e){var n=this.seen.size;return this.seen.add(t),n!==this.seen.size&&(this.queue.push(e),this.size++,!0)},i.prototype.shift=function(){var t=this.queue.shift();return this.size=this.queue.size,t},t.exports=i},563:(t,e,n)=>{var r=n(736),i=n(30),o=n(331),a=o.TraversalRecord,u=o.capitalize;e.g=function(t,e,n,o){if(o=o||{},!r(t))throw new Error("graphology-traversal/bfs: expecting a graphology instance.");if("function"!=typeof n)throw new Error("graphology-traversal/bfs: given callback is not a function.");if(0!==t.order){var c,s=new i(t),h=t["forEach"+u(o.mode||"outbound")+"Neighbor"].bind(t);(null===e?s.forEachNodeYetUnseen.bind(s):function(n){n(e=""+e,t.getNodeAttributes(e))})((function(t,e){for(s.pushWith(t,new a(t,e,0));0!==s.size;)c=s.shift(),!0!==n(c.node,c.attributes,c.depth)&&h(c.node,l)}))}function l(t,e){s.pushWith(t,new a(t,e,c.depth+1))}}},331:(t,e)=>{e.TraversalRecord=function(t,e,n){this.node=t,this.attributes=e,this.depth=n},e.capitalize=function(t){return t[0].toUpperCase()+t.slice(1)}},736:t=>{t.exports=function(t){return null!==t&&"object"==typeof t&&"function"==typeof t.addUndirectedEdgeWithKey&&"function"==typeof t.dropNode&&"boolean"==typeof t.multi}},934:function(t){t.exports=function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,r(t,e)}function n(t){return n=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},n(t)}function r(t,e){return r=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},r(t,e)}function i(t,e,n){return i=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(t){return!1}}()?Reflect.construct.bind():function(t,e,n){var i=[null];i.push.apply(i,e);var o=new(Function.bind.apply(t,i));return n&&r(o,n.prototype),o},i.apply(null,arguments)}function o(t){var e="function"==typeof Map?new Map:void 0;return o=function(t){if(null===t||(o=t,-1===Function.toString.call(o).indexOf("[native code]")))return t;var o;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==e){if(e.has(t))return e.get(t);e.set(t,a)}function a(){return i(t,arguments,n(this).constructor)}return a.prototype=Object.create(t.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),r(a,t)},o(t)}function a(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}var u=function(){for(var t=arguments[0],e=1,n=arguments.length;e<n;e++)if(arguments[e])for(var r in arguments[e])t[r]=arguments[e][r];return t};function c(t,e,n,r){var i=t._nodes.get(e),o=null;return i?o="mixed"===r?i.out&&i.out[n]||i.undirected&&i.undirected[n]:"directed"===r?i.out&&i.out[n]:i.undirected&&i.undirected[n]:o}function s(e){return"object"===t(e)&&null!==e}function h(t){var e;for(e in t)return!1;return!0}function l(t,e,n){Object.defineProperty(t,e,{enumerable:!1,configurable:!1,writable:!0,value:n})}function d(t,e,n){var r={enumerable:!0,configurable:!0};"function"==typeof n?r.get=n:(r.value=n,r.writable=!1),Object.defineProperty(t,e,r)}function f(t){return!(!s(t)||t.attributes&&!Array.isArray(t.attributes))}"function"==typeof Object.assign&&(u=Object.assign);var p,y={exports:{}},g="object"==typeof Reflect?Reflect:null,v=g&&"function"==typeof g.apply?g.apply:function(t,e,n){return Function.prototype.apply.call(t,e,n)};p=g&&"function"==typeof g.ownKeys?g.ownKeys:Object.getOwnPropertySymbols?function(t){return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))}:function(t){return Object.getOwnPropertyNames(t)};var m=Number.isNaN||function(t){return t!=t};function w(){w.init.call(this)}y.exports=w,y.exports.once=function(t,e){return new Promise((function(n,r){function i(n){t.removeListener(e,o),r(n)}function o(){"function"==typeof t.removeListener&&t.removeListener("error",i),n([].slice.call(arguments))}G(t,e,o,{once:!0}),"error"!==e&&function(t,e,n){"function"==typeof t.on&&G(t,"error",e,{once:!0})}(t,i)}))},w.EventEmitter=w,w.prototype._events=void 0,w.prototype._eventsCount=0,w.prototype._maxListeners=void 0;var b=10;function _(t){if("function"!=typeof t)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof t)}function x(t){return void 0===t._maxListeners?w.defaultMaxListeners:t._maxListeners}function k(t,e,n,r){var i,o,a,u;if(_(n),void 0===(o=t._events)?(o=t._events=Object.create(null),t._eventsCount=0):(void 0!==o.newListener&&(t.emit("newListener",e,n.listener?n.listener:n),o=t._events),a=o[e]),void 0===a)a=o[e]=n,++t._eventsCount;else if("function"==typeof a?a=o[e]=r?[n,a]:[a,n]:r?a.unshift(n):a.push(n),(i=x(t))>0&&a.length>i&&!a.warned){a.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+a.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=t,c.type=e,c.count=a.length,u=c,console&&console.warn&&console.warn(u)}return t}function E(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function A(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=E.bind(r);return i.listener=n,r.wrapFn=i,i}function S(t,e,n){var r=t._events;if(void 0===r)return[];var i=r[e];return void 0===i?[]:"function"==typeof i?n?[i.listener||i]:[i]:n?function(t){for(var e=new Array(t.length),n=0;n<e.length;++n)e[n]=t[n].listener||t[n];return e}(i):M(i,i.length)}function L(t){var e=this._events;if(void 0!==e){var n=e[t];if("function"==typeof n)return 1;if(void 0!==n)return n.length}return 0}function M(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t[r];return n}function G(t,e,n,r){if("function"==typeof t.on)r.once?t.once(e,n):t.on(e,n);else{if("function"!=typeof t.addEventListener)throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t);t.addEventListener(e,(function i(o){r.once&&t.removeEventListener(e,i),n(o)}))}}function N(t){if("function"!=typeof t)throw new Error("obliterator/iterator: expecting a function!");this.next=t}Object.defineProperty(w,"defaultMaxListeners",{enumerable:!0,get:function(){return b},set:function(t){if("number"!=typeof t||t<0||m(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");b=t}}),w.init=function(){void 0!==this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},w.prototype.setMaxListeners=function(t){if("number"!=typeof t||t<0||m(t))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+t+".");return this._maxListeners=t,this},w.prototype.getMaxListeners=function(){return x(this)},w.prototype.emit=function(t){for(var e=[],n=1;n<arguments.length;n++)e.push(arguments[n]);var r="error"===t,i=this._events;if(void 0!==i)r=r&&void 0===i.error;else if(!r)return!1;if(r){var o;if(e.length>0&&(o=e[0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var u=i[t];if(void 0===u)return!1;if("function"==typeof u)v(u,this,e);else{var c=u.length,s=M(u,c);for(n=0;n<c;++n)v(s[n],this,e)}return!0},w.prototype.addListener=function(t,e){return k(this,t,e,!1)},w.prototype.on=w.prototype.addListener,w.prototype.prependListener=function(t,e){return k(this,t,e,!0)},w.prototype.once=function(t,e){return _(e),this.on(t,A(this,t,e)),this},w.prototype.prependOnceListener=function(t,e){return _(e),this.prependListener(t,A(this,t,e)),this},w.prototype.removeListener=function(t,e){var n,r,i,o,a;if(_(e),void 0===(r=this._events))return this;if(void 0===(n=r[t]))return this;if(n===e||n.listener===e)0==--this._eventsCount?this._events=Object.create(null):(delete r[t],r.removeListener&&this.emit("removeListener",t,n.listener||e));else if("function"!=typeof n){for(i=-1,o=n.length-1;o>=0;o--)if(n[o]===e||n[o].listener===e){a=n[o].listener,i=o;break}if(i<0)return this;0===i?n.shift():function(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}(n,i),1===n.length&&(r[t]=n[0]),void 0!==r.removeListener&&this.emit("removeListener",t,a||e)}return this},w.prototype.off=w.prototype.removeListener,w.prototype.removeAllListeners=function(t){var e,n,r;if(void 0===(n=this._events))return this;if(void 0===n.removeListener)return 0===arguments.length?(this._events=Object.create(null),this._eventsCount=0):void 0!==n[t]&&(0==--this._eventsCount?this._events=Object.create(null):delete n[t]),this;if(0===arguments.length){var i,o=Object.keys(n);for(r=0;r<o.length;++r)"removeListener"!==(i=o[r])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=Object.create(null),this._eventsCount=0,this}if("function"==typeof(e=n[t]))this.removeListener(t,e);else if(void 0!==e)for(r=e.length-1;r>=0;r--)this.removeListener(t,e[r]);return this},w.prototype.listeners=function(t){return S(this,t,!0)},w.prototype.rawListeners=function(t){return S(this,t,!1)},w.listenerCount=function(t,e){return"function"==typeof t.listenerCount?t.listenerCount(e):L.call(t,e)},w.prototype.listenerCount=L,w.prototype.eventNames=function(){return this._eventsCount>0?p(this._events):[]},"undefined"!=typeof Symbol&&(N.prototype[Symbol.iterator]=function(){return this}),N.of=function(){var t=arguments,e=t.length,n=0;return new N((function(){return n>=e?{done:!0}:{done:!1,value:t[n++]}}))},N.empty=function(){return new N((function(){return{done:!0}}))},N.fromSequence=function(t){var e=0,n=t.length;return new N((function(){return e>=n?{done:!0}:{done:!1,value:t[e++]}}))},N.is=function(t){return t instanceof N||"object"==typeof t&&null!==t&&"function"==typeof t.next};var O=N,j={};j.ARRAY_BUFFER_SUPPORT="undefined"!=typeof ArrayBuffer,j.SYMBOL_SUPPORT="undefined"!=typeof Symbol;var z=O,C=j,D=C.ARRAY_BUFFER_SUPPORT,P=C.SYMBOL_SUPPORT,I=function(t){var e=function(t){return"string"==typeof t||Array.isArray(t)||D&&ArrayBuffer.isView(t)?z.fromSequence(t):"object"!=typeof t||null===t?null:P&&"function"==typeof t[Symbol.iterator]?t[Symbol.iterator]():"function"==typeof t.next?t:null}(t);if(!e)throw new Error("obliterator: target is not iterable nor a valid iterator.");return e},U=I,T=function(t,e){for(var n,r=arguments.length>1?e:1/0,i=r!==1/0?new Array(r):[],o=0,a=U(t);;){if(o===r)return i;if((n=a.next()).done)return o!==e&&(i.length=o),i;i[o++]=n.value}},B=function(t){function n(e){var n;return(n=t.call(this)||this).name="GraphError",n.message=e,n}return e(n,t),n}(o(Error)),q=function(t){function n(e){var r;return(r=t.call(this,e)||this).name="InvalidArgumentsGraphError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(a(r),n.prototype.constructor),r}return e(n,t),n}(B),R=function(t){function n(e){var r;return(r=t.call(this,e)||this).name="NotFoundGraphError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(a(r),n.prototype.constructor),r}return e(n,t),n}(B),F=function(t){function n(e){var r;return(r=t.call(this,e)||this).name="UsageGraphError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(a(r),n.prototype.constructor),r}return e(n,t),n}(B);function K(t,e){this.key=t,this.attributes=e,this.clear()}function W(t,e){this.key=t,this.attributes=e,this.clear()}function Y(t,e){this.key=t,this.attributes=e,this.clear()}function X(t,e,n,r,i){this.key=e,this.attributes=i,this.undirected=t,this.source=n,this.target=r}function $(t,e,n,r,i,o,a){var u,c,s,h;if(r=""+r,0===n){if(!(u=t._nodes.get(r)))throw new R("Graph.".concat(e,': could not find the "').concat(r,'" node in the graph.'));s=i,h=o}else if(3===n){if(i=""+i,!(c=t._edges.get(i)))throw new R("Graph.".concat(e,': could not find the "').concat(i,'" edge in the graph.'));var l=c.source.key,d=c.target.key;if(r===l)u=c.target;else{if(r!==d)throw new R("Graph.".concat(e,': the "').concat(r,'" node is not attached to the "').concat(i,'" edge (').concat(l,", ").concat(d,")."));u=c.source}s=o,h=a}else{if(!(c=t._edges.get(r)))throw new R("Graph.".concat(e,': could not find the "').concat(r,'" edge in the graph.'));u=1===n?c.source:c.target,s=i,h=o}return[u,s,h]}K.prototype.clear=function(){this.inDegree=0,this.outDegree=0,this.undirectedDegree=0,this.undirectedLoops=0,this.directedLoops=0,this.in={},this.out={},this.undirected={}},W.prototype.clear=function(){this.inDegree=0,this.outDegree=0,this.directedLoops=0,this.in={},this.out={}},Y.prototype.clear=function(){this.undirectedDegree=0,this.undirectedLoops=0,this.undirected={}},X.prototype.attach=function(){var t="out",e="in";this.undirected&&(t=e="undirected");var n=this.source.key,r=this.target.key;this.source[t][r]=this,this.undirected&&n===r||(this.target[e][n]=this)},X.prototype.attachMulti=function(){var t="out",e="in",n=this.source.key,r=this.target.key;this.undirected&&(t=e="undirected");var i=this.source[t],o=i[r];if(void 0===o)return i[r]=this,void(this.undirected&&n===r||(this.target[e][n]=this));o.previous=this,this.next=o,i[r]=this,this.target[e][n]=this},X.prototype.detach=function(){var t=this.source.key,e=this.target.key,n="out",r="in";this.undirected&&(n=r="undirected"),delete this.source[n][e],delete this.target[r][t]},X.prototype.detachMulti=function(){var t=this.source.key,e=this.target.key,n="out",r="in";this.undirected&&(n=r="undirected"),void 0===this.previous?void 0===this.next?(delete this.source[n][e],delete this.target[r][t]):(this.next.previous=void 0,this.source[n][e]=this.next,this.target[r][t]=this.next):(this.previous.next=this.next,void 0!==this.next&&(this.next.previous=this.previous))};var V=[{name:function(t){return"get".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o=$(this,e,n,t,r,i),a=o[0],u=o[1];return a.attributes[u]}}},{name:function(t){return"get".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r){return $(this,e,n,t,r)[0].attributes}}},{name:function(t){return"has".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o=$(this,e,n,t,r,i),a=o[0],u=o[1];return a.attributes.hasOwnProperty(u)}}},{name:function(t){return"set".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i,o){var a=$(this,e,n,t,r,i,o),u=a[0],c=a[1],s=a[2];return u.attributes[c]=s,this.emit("nodeAttributesUpdated",{key:u.key,type:"set",attributes:u.attributes,name:c}),this}}},{name:function(t){return"update".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i,o){var a=$(this,e,n,t,r,i,o),u=a[0],c=a[1],s=a[2];if("function"!=typeof s)throw new q("Graph.".concat(e,": updater should be a function."));var h=u.attributes,l=s(h[c]);return h[c]=l,this.emit("nodeAttributesUpdated",{key:u.key,type:"set",attributes:u.attributes,name:c}),this}}},{name:function(t){return"remove".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o=$(this,e,n,t,r,i),a=o[0],u=o[1];return delete a.attributes[u],this.emit("nodeAttributesUpdated",{key:a.key,type:"remove",attributes:a.attributes,name:u}),this}}},{name:function(t){return"replace".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o=$(this,e,n,t,r,i),a=o[0],u=o[1];if(!s(u))throw new q("Graph.".concat(e,": provided attributes are not a plain object."));return a.attributes=u,this.emit("nodeAttributesUpdated",{key:a.key,type:"replace",attributes:a.attributes}),this}}},{name:function(t){return"merge".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o=$(this,e,n,t,r,i),a=o[0],c=o[1];if(!s(c))throw new q("Graph.".concat(e,": provided attributes are not a plain object."));return u(a.attributes,c),this.emit("nodeAttributesUpdated",{key:a.key,type:"merge",attributes:a.attributes,data:c}),this}}},{name:function(t){return"update".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o=$(this,e,n,t,r,i),a=o[0],u=o[1];if("function"!=typeof u)throw new q("Graph.".concat(e,": provided updater is not a function."));return a.attributes=u(a.attributes),this.emit("nodeAttributesUpdated",{key:a.key,type:"update",attributes:a.attributes}),this}}}],H=[{name:function(t){return"get".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r){var i;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>2){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var o=""+t,a=""+r;if(r=arguments[2],!(i=c(this,o,a,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(o,'" - "').concat(a,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(i=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}return i.attributes[r]}}},{name:function(t){return"get".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t){var r;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>1){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var i=""+t,o=""+arguments[1];if(!(r=c(this,i,o,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(i,'" - "').concat(o,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(r=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}return r.attributes}}},{name:function(t){return"has".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r){var i;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>2){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var o=""+t,a=""+r;if(r=arguments[2],!(i=c(this,o,a,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(o,'" - "').concat(a,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(i=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}return i.attributes.hasOwnProperty(r)}}},{name:function(t){return"set".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>3){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var a=""+t,u=""+r;if(r=arguments[2],i=arguments[3],!(o=c(this,a,u,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(a,'" - "').concat(u,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(o=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}return o.attributes[r]=i,this.emit("edgeAttributesUpdated",{key:o.key,type:"set",attributes:o.attributes,name:r}),this}}},{name:function(t){return"update".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r,i){var o;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>3){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var a=""+t,u=""+r;if(r=arguments[2],i=arguments[3],!(o=c(this,a,u,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(a,'" - "').concat(u,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(o=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}if("function"!=typeof i)throw new q("Graph.".concat(e,": updater should be a function."));return o.attributes[r]=i(o.attributes[r]),this.emit("edgeAttributesUpdated",{key:o.key,type:"set",attributes:o.attributes,name:r}),this}}},{name:function(t){return"remove".concat(t,"Attribute")},attacher:function(t,e,n){t.prototype[e]=function(t,r){var i;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>2){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var o=""+t,a=""+r;if(r=arguments[2],!(i=c(this,o,a,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(o,'" - "').concat(a,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(i=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}return delete i.attributes[r],this.emit("edgeAttributesUpdated",{key:i.key,type:"remove",attributes:i.attributes,name:r}),this}}},{name:function(t){return"replace".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r){var i;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>2){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var o=""+t,a=""+r;if(r=arguments[2],!(i=c(this,o,a,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(o,'" - "').concat(a,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(i=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}if(!s(r))throw new q("Graph.".concat(e,": provided attributes are not a plain object."));return i.attributes=r,this.emit("edgeAttributesUpdated",{key:i.key,type:"replace",attributes:i.attributes}),this}}},{name:function(t){return"merge".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r){var i;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>2){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var o=""+t,a=""+r;if(r=arguments[2],!(i=c(this,o,a,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(o,'" - "').concat(a,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(i=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}if(!s(r))throw new q("Graph.".concat(e,": provided attributes are not a plain object."));return u(i.attributes,r),this.emit("edgeAttributesUpdated",{key:i.key,type:"merge",attributes:i.attributes,data:r}),this}}},{name:function(t){return"update".concat(t,"Attributes")},attacher:function(t,e,n){t.prototype[e]=function(t,r){var i;if("mixed"!==this.type&&"mixed"!==n&&n!==this.type)throw new F("Graph.".concat(e,": cannot find this type of edges in your ").concat(this.type," graph."));if(arguments.length>2){if(this.multi)throw new F("Graph.".concat(e,": cannot use a {source,target} combo when asking about an edge's attributes in a MultiGraph since we cannot infer the one you want information about."));var o=""+t,a=""+r;if(r=arguments[2],!(i=c(this,o,a,n)))throw new R("Graph.".concat(e,': could not find an edge for the given path ("').concat(o,'" - "').concat(a,'").'))}else{if("mixed"!==n)throw new F("Graph.".concat(e,": calling this method with only a key (vs. a source and target) does not make sense since an edge with this key could have the other type."));if(t=""+t,!(i=this._edges.get(t)))throw new R("Graph.".concat(e,': could not find the "').concat(t,'" edge in the graph.'))}if("function"!=typeof r)throw new q("Graph.".concat(e,": provided updater is not a function."));return i.attributes=r(i.attributes),this.emit("edgeAttributesUpdated",{key:i.key,type:"update",attributes:i.attributes}),this}}}],J=O,Q=I,Z=function(){var t=arguments,e=null,n=-1;return new J((function(){for(var r=null;;){if(null===e){if(++n>=t.length)return{done:!0};e=Q(t[n])}if(!0!==(r=e.next()).done)break;e=null}return r}))},tt=[{name:"edges",type:"mixed"},{name:"inEdges",type:"directed",direction:"in"},{name:"outEdges",type:"directed",direction:"out"},{name:"inboundEdges",type:"mixed",direction:"in"},{name:"outboundEdges",type:"mixed",direction:"out"},{name:"directedEdges",type:"directed"},{name:"undirectedEdges",type:"undirected"}];function et(t,e,n,r){var i=!1;for(var o in e)if(o!==r){var a=e[o];if(i=n(a.key,a.attributes,a.source.key,a.target.key,a.source.attributes,a.target.attributes,a.undirected),t&&i)return a.key}}function nt(t,e,n,r){var i,o,a,u=!1;for(var c in e)if(c!==r){i=e[c];do{if(o=i.source,a=i.target,u=n(i.key,i.attributes,o.key,a.key,o.attributes,a.attributes,i.undirected),t&&u)return i.key;i=i.next}while(void 0!==i)}}function rt(t,e){var n,r=Object.keys(t),i=r.length,o=0;return new O((function(){do{if(n)n=n.next;else{if(o>=i)return{done:!0};var a=r[o++];if(a===e){n=void 0;continue}n=t[a]}}while(!n);return{done:!1,value:{edge:n.key,attributes:n.attributes,source:n.source.key,target:n.target.key,sourceAttributes:n.source.attributes,targetAttributes:n.target.attributes,undirected:n.undirected}}}))}function it(t,e,n,r){var i=e[n];if(i){var o=i.source,a=i.target;return r(i.key,i.attributes,o.key,a.key,o.attributes,a.attributes,i.undirected)&&t?i.key:void 0}}function ot(t,e,n,r){var i=e[n];if(i){var o=!1;do{if(o=r(i.key,i.attributes,i.source.key,i.target.key,i.source.attributes,i.target.attributes,i.undirected),t&&o)return i.key;i=i.next}while(void 0!==i)}}function at(t,e){var n=t[e];return void 0!==n.next?new O((function(){if(!n)return{done:!0};var t={edge:n.key,attributes:n.attributes,source:n.source.key,target:n.target.key,sourceAttributes:n.source.attributes,targetAttributes:n.target.attributes,undirected:n.undirected};return n=n.next,{done:!1,value:t}})):O.of({edge:n.key,attributes:n.attributes,source:n.source.key,target:n.target.key,sourceAttributes:n.source.attributes,targetAttributes:n.target.attributes,undirected:n.undirected})}function ut(t,e,n,r){if(0!==e.size)for(var i,o,a="mixed"!==n&&n!==e.type,u="undirected"===n,c=!1,s=e._edges.values();!0!==(i=s.next()).done;)if(o=i.value,!a||o.undirected===u){var h=o,l=h.key,d=h.attributes,f=h.source,p=h.target;if(c=r(l,d,f.key,p.key,f.attributes,p.attributes,o.undirected),t&&c)return l}}function ct(t,e,n,r,i,o){var a,u=e?nt:et;if("undirected"!==n){if("out"!==r&&(a=u(t,i.in,o),t&&a))return a;if("in"!==r&&(a=u(t,i.out,o,r?void 0:i.key),t&&a))return a}if("directed"!==n&&(a=u(t,i.undirected,o),t&&a))return a}function st(t,e,n,r,i,o,a){var u,c=n?ot:it;if("undirected"!==e){if(void 0!==i.in&&"out"!==r&&(u=c(t,i.in,o,a),t&&u))return u;if(void 0!==i.out&&"in"!==r&&(r||i.key!==o)&&(u=c(t,i.out,o,a),t&&u))return u}if("directed"!==e&&void 0!==i.undirected&&(u=c(t,i.undirected,o,a),t&&u))return u}var ht=[{name:"neighbors",type:"mixed"},{name:"inNeighbors",type:"directed",direction:"in"},{name:"outNeighbors",type:"directed",direction:"out"},{name:"inboundNeighbors",type:"mixed",direction:"in"},{name:"outboundNeighbors",type:"mixed",direction:"out"},{name:"directedNeighbors",type:"directed"},{name:"undirectedNeighbors",type:"undirected"}];function lt(){this.A=null,this.B=null}function dt(t,e,n,r,i){for(var o in r){var a=r[o],u=a.source,c=a.target,s=u===n?c:u;if(!e||!e.has(s.key)){var h=i(s.key,s.attributes);if(t&&h)return s.key}}}function ft(t,e,n,r,i){if("mixed"!==e){if("undirected"===e)return dt(t,null,r,r.undirected,i);if("string"==typeof n)return dt(t,null,r,r[n],i)}var o,a=new lt;if("undirected"!==e){if("out"!==n){if(o=dt(t,null,r,r.in,i),t&&o)return o;a.wrap(r.in)}if("in"!==n){if(o=dt(t,a,r,r.out,i),t&&o)return o;a.wrap(r.out)}}if("directed"!==e&&(o=dt(t,a,r,r.undirected,i),t&&o))return o}function pt(t,e,n){var r=Object.keys(n),i=r.length,o=0;return new O((function(){var a=null;do{if(o>=i)return t&&t.wrap(n),{done:!0};var u=n[r[o++]],c=u.source,s=u.target;a=c===e?s:c,t&&t.has(a.key)&&(a=null)}while(null===a);return{done:!1,value:{neighbor:a.key,attributes:a.attributes}}}))}function yt(t,e,n,r,i){for(var o,a,u,c,s,h,l,d=r._nodes.values(),f=r.type;!0!==(o=d.next()).done;){var p=!1;if(a=o.value,"undirected"!==f)for(u in c=a.out){s=c[u];do{if(h=s.target,p=!0,l=i(a.key,h.key,a.attributes,h.attributes,s.key,s.attributes,s.undirected),t&&l)return s;s=s.next}while(s)}if("directed"!==f)for(u in c=a.undirected)if(!(e&&a.key>u)){s=c[u];do{if((h=s.target).key!==u&&(h=s.source),p=!0,l=i(a.key,h.key,a.attributes,h.attributes,s.key,s.attributes,s.undirected),t&&l)return s;s=s.next}while(s)}if(n&&!p&&(l=i(a.key,null,a.attributes,null,null,null,null),t&&l))return null}}function gt(t){if(!s(t))throw new q('Graph.import: invalid serialized node. A serialized node should be a plain object with at least a "key" property.');if(!("key"in t))throw new q("Graph.import: serialized node is missing its key.");if("attributes"in t&&(!s(t.attributes)||null===t.attributes))throw new q("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted.")}function vt(t){if(!s(t))throw new q('Graph.import: invalid serialized edge. A serialized edge should be a plain object with at least a "source" & "target" property.');if(!("source"in t))throw new q("Graph.import: serialized edge is missing its source.");if(!("target"in t))throw new q("Graph.import: serialized edge is missing its target.");if("attributes"in t&&(!s(t.attributes)||null===t.attributes))throw new q("Graph.import: invalid attributes. Attributes should be a plain object, null or omitted.");if("undirected"in t&&"boolean"!=typeof t.undirected)throw new q("Graph.import: invalid undirectedness information. Undirected should be boolean or omitted.")}lt.prototype.wrap=function(t){null===this.A?this.A=t:null===this.B&&(this.B=t)},lt.prototype.has=function(t){return null!==this.A&&t in this.A||null!==this.B&&t in this.B};var mt,wt=(mt=255&Math.floor(256*Math.random()),function(){return mt++}),bt=new Set(["directed","undirected","mixed"]),_t=new Set(["domain","_events","_eventsCount","_maxListeners"]),xt={allowSelfLoops:!0,multi:!1,type:"mixed"};function kt(t,e,n){var r=new t.NodeDataClass(e,n);return t._nodes.set(e,r),t.emit("nodeAdded",{key:e,attributes:n}),r}function Et(t,e,n,r,i,o,a,u){if(!r&&"undirected"===t.type)throw new F("Graph.".concat(e,": you cannot add a directed edge to an undirected graph. Use the #.addEdge or #.addUndirectedEdge instead."));if(r&&"directed"===t.type)throw new F("Graph.".concat(e,": you cannot add an undirected edge to a directed graph. Use the #.addEdge or #.addDirectedEdge instead."));if(u&&!s(u))throw new q("Graph.".concat(e,': invalid attributes. Expecting an object but got "').concat(u,'"'));if(o=""+o,a=""+a,u=u||{},!t.allowSelfLoops&&o===a)throw new F("Graph.".concat(e,': source & target are the same ("').concat(o,"\"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false."));var c=t._nodes.get(o),h=t._nodes.get(a);if(!c)throw new R("Graph.".concat(e,': source node "').concat(o,'" not found.'));if(!h)throw new R("Graph.".concat(e,': target node "').concat(a,'" not found.'));var l={key:null,undirected:r,source:o,target:a,attributes:u};if(n)i=t._edgeKeyGenerator();else if(i=""+i,t._edges.has(i))throw new F("Graph.".concat(e,': the "').concat(i,'" edge already exists in the graph.'));if(!t.multi&&(r?void 0!==c.undirected[a]:void 0!==c.out[a]))throw new F("Graph.".concat(e,': an edge linking "').concat(o,'" to "').concat(a,"\" already exists. If you really want to add multiple edges linking those nodes, you should create a multi graph by using the 'multi' option."));var d=new X(r,i,c,h,u);t._edges.set(i,d);var f=o===a;return r?(c.undirectedDegree++,h.undirectedDegree++,f&&(c.undirectedLoops++,t._undirectedSelfLoopCount++)):(c.outDegree++,h.inDegree++,f&&(c.directedLoops++,t._directedSelfLoopCount++)),t.multi?d.attachMulti():d.attach(),r?t._undirectedSize++:t._directedSize++,l.key=i,t.emit("edgeAdded",l),i}function At(t,e,n,r,i,o,a,c,h){if(!r&&"undirected"===t.type)throw new F("Graph.".concat(e,": you cannot merge/update a directed edge to an undirected graph. Use the #.mergeEdge/#.updateEdge or #.addUndirectedEdge instead."));if(r&&"directed"===t.type)throw new F("Graph.".concat(e,": you cannot merge/update an undirected edge to a directed graph. Use the #.mergeEdge/#.updateEdge or #.addDirectedEdge instead."));if(c)if(h){if("function"!=typeof c)throw new q("Graph.".concat(e,': invalid updater function. Expecting a function but got "').concat(c,'"'))}else if(!s(c))throw new q("Graph.".concat(e,': invalid attributes. Expecting an object but got "').concat(c,'"'));var l;if(o=""+o,a=""+a,h&&(l=c,c=void 0),!t.allowSelfLoops&&o===a)throw new F("Graph.".concat(e,': source & target are the same ("').concat(o,"\"), thus creating a loop explicitly forbidden by this graph 'allowSelfLoops' option set to false."));var d,f,p=t._nodes.get(o),y=t._nodes.get(a);if(!n&&(d=t._edges.get(i))){if(!(d.source.key===o&&d.target.key===a||r&&d.source.key===a&&d.target.key===o))throw new F("Graph.".concat(e,': inconsistency detected when attempting to merge the "').concat(i,'" edge with "').concat(o,'" source & "').concat(a,'" target vs. ("').concat(d.source.key,'", "').concat(d.target.key,'").'));f=d}if(f||t.multi||!p||(f=r?p.undirected[a]:p.out[a]),f){var g=[f.key,!1,!1,!1];if(h?!l:!c)return g;if(h){var v=f.attributes;f.attributes=l(v),t.emit("edgeAttributesUpdated",{type:"replace",key:f.key,attributes:f.attributes})}else u(f.attributes,c),t.emit("edgeAttributesUpdated",{type:"merge",key:f.key,attributes:f.attributes,data:c});return g}c=c||{},h&&l&&(c=l(c));var m={key:null,undirected:r,source:o,target:a,attributes:c};if(n)i=t._edgeKeyGenerator();else if(i=""+i,t._edges.has(i))throw new F("Graph.".concat(e,': the "').concat(i,'" edge already exists in the graph.'));var w=!1,b=!1;p||(p=kt(t,o,{}),w=!0,o===a&&(y=p,b=!0)),y||(y=kt(t,a,{}),b=!0),d=new X(r,i,p,y,c),t._edges.set(i,d);var _=o===a;return r?(p.undirectedDegree++,y.undirectedDegree++,_&&(p.undirectedLoops++,t._undirectedSelfLoopCount++)):(p.outDegree++,y.inDegree++,_&&(p.directedLoops++,t._directedSelfLoopCount++)),t.multi?d.attachMulti():d.attach(),r?t._undirectedSize++:t._directedSize++,m.key=i,t.emit("edgeAdded",m),[i,!0,w,b]}function St(t,e){t._edges.delete(e.key);var n=e.source,r=e.target,i=e.attributes,o=e.undirected,a=n===r;o?(n.undirectedDegree--,r.undirectedDegree--,a&&(n.undirectedLoops--,t._undirectedSelfLoopCount--)):(n.outDegree--,r.inDegree--,a&&(n.directedLoops--,t._directedSelfLoopCount--)),t.multi?e.detachMulti():e.detach(),o?t._undirectedSize--:t._directedSize--,t.emit("edgeDropped",{key:e.key,attributes:i,source:n.key,target:r.key,undirected:o})}var Lt=function(n){function r(t){var e;if(e=n.call(this)||this,"boolean"!=typeof(t=u({},xt,t)).multi)throw new q("Graph.constructor: invalid 'multi' option. Expecting a boolean but got \"".concat(t.multi,'".'));if(!bt.has(t.type))throw new q('Graph.constructor: invalid \'type\' option. Should be one of "mixed", "directed" or "undirected" but got "'.concat(t.type,'".'));if("boolean"!=typeof t.allowSelfLoops)throw new q("Graph.constructor: invalid 'allowSelfLoops' option. Expecting a boolean but got \"".concat(t.allowSelfLoops,'".'));var r="mixed"===t.type?K:"directed"===t.type?W:Y;l(a(e),"NodeDataClass",r);var i="geid_"+wt()+"_",o=0;return l(a(e),"_attributes",{}),l(a(e),"_nodes",new Map),l(a(e),"_edges",new Map),l(a(e),"_directedSize",0),l(a(e),"_undirectedSize",0),l(a(e),"_directedSelfLoopCount",0),l(a(e),"_undirectedSelfLoopCount",0),l(a(e),"_edgeKeyGenerator",(function(){var t;do{t=i+o++}while(e._edges.has(t));return t})),l(a(e),"_options",t),_t.forEach((function(t){return l(a(e),t,e[t])})),d(a(e),"order",(function(){return e._nodes.size})),d(a(e),"size",(function(){return e._edges.size})),d(a(e),"directedSize",(function(){return e._directedSize})),d(a(e),"undirectedSize",(function(){return e._undirectedSize})),d(a(e),"selfLoopCount",(function(){return e._directedSelfLoopCount+e._undirectedSelfLoopCount})),d(a(e),"directedSelfLoopCount",(function(){return e._directedSelfLoopCount})),d(a(e),"undirectedSelfLoopCount",(function(){return e._undirectedSelfLoopCount})),d(a(e),"multi",e._options.multi),d(a(e),"type",e._options.type),d(a(e),"allowSelfLoops",e._options.allowSelfLoops),d(a(e),"implementation",(function(){return"graphology"})),e}e(r,n);var i=r.prototype;return i._resetInstanceCounters=function(){this._directedSize=0,this._undirectedSize=0,this._directedSelfLoopCount=0,this._undirectedSelfLoopCount=0},i.hasNode=function(t){return this._nodes.has(""+t)},i.hasDirectedEdge=function(t,e){if("undirected"===this.type)return!1;if(1===arguments.length){var n=""+t,r=this._edges.get(n);return!!r&&!r.undirected}if(2===arguments.length){t=""+t,e=""+e;var i=this._nodes.get(t);return!!i&&i.out.hasOwnProperty(e)}throw new q("Graph.hasDirectedEdge: invalid arity (".concat(arguments.length,", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target."))},i.hasUndirectedEdge=function(t,e){if("directed"===this.type)return!1;if(1===arguments.length){var n=""+t,r=this._edges.get(n);return!!r&&r.undirected}if(2===arguments.length){t=""+t,e=""+e;var i=this._nodes.get(t);return!!i&&i.undirected.hasOwnProperty(e)}throw new q("Graph.hasDirectedEdge: invalid arity (".concat(arguments.length,", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target."))},i.hasEdge=function(t,e){if(1===arguments.length){var n=""+t;return this._edges.has(n)}if(2===arguments.length){t=""+t,e=""+e;var r=this._nodes.get(t);return!!r&&(void 0!==r.out&&r.out.hasOwnProperty(e)||void 0!==r.undirected&&r.undirected.hasOwnProperty(e))}throw new q("Graph.hasEdge: invalid arity (".concat(arguments.length,", instead of 1 or 2). You can either ask for an edge id or for the existence of an edge between a source & a target."))},i.directedEdge=function(t,e){if("undirected"!==this.type){if(t=""+t,e=""+e,this.multi)throw new F("Graph.directedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.directedEdges instead.");var n=this._nodes.get(t);if(!n)throw new R('Graph.directedEdge: could not find the "'.concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R('Graph.directedEdge: could not find the "'.concat(e,'" target node in the graph.'));var r=n.out&&n.out[e]||void 0;return r?r.key:void 0}},i.undirectedEdge=function(t,e){if("directed"!==this.type){if(t=""+t,e=""+e,this.multi)throw new F("Graph.undirectedEdge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.undirectedEdges instead.");var n=this._nodes.get(t);if(!n)throw new R('Graph.undirectedEdge: could not find the "'.concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R('Graph.undirectedEdge: could not find the "'.concat(e,'" target node in the graph.'));var r=n.undirected&&n.undirected[e]||void 0;return r?r.key:void 0}},i.edge=function(t,e){if(this.multi)throw new F("Graph.edge: this method is irrelevant with multigraphs since there might be multiple edges between source & target. See #.edges instead.");t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.edge: could not find the "'.concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R('Graph.edge: could not find the "'.concat(e,'" target node in the graph.'));var r=n.out&&n.out[e]||n.undirected&&n.undirected[e]||void 0;if(r)return r.key},i.areDirectedNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areDirectedNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"undirected"!==this.type&&(e in n.in||e in n.out)},i.areOutNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areOutNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"undirected"!==this.type&&e in n.out},i.areInNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areInNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"undirected"!==this.type&&e in n.in},i.areUndirectedNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areUndirectedNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"directed"!==this.type&&e in n.undirected},i.areNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"undirected"!==this.type&&(e in n.in||e in n.out)||"directed"!==this.type&&e in n.undirected},i.areInboundNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areInboundNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"undirected"!==this.type&&e in n.in||"directed"!==this.type&&e in n.undirected},i.areOutboundNeighbors=function(t,e){t=""+t,e=""+e;var n=this._nodes.get(t);if(!n)throw new R('Graph.areOutboundNeighbors: could not find the "'.concat(t,'" node in the graph.'));return"undirected"!==this.type&&e in n.out||"directed"!==this.type&&e in n.undirected},i.inDegree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.inDegree: could not find the "'.concat(t,'" node in the graph.'));return"undirected"===this.type?0:e.inDegree},i.outDegree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.outDegree: could not find the "'.concat(t,'" node in the graph.'));return"undirected"===this.type?0:e.outDegree},i.directedDegree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.directedDegree: could not find the "'.concat(t,'" node in the graph.'));return"undirected"===this.type?0:e.inDegree+e.outDegree},i.undirectedDegree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.undirectedDegree: could not find the "'.concat(t,'" node in the graph.'));return"directed"===this.type?0:e.undirectedDegree},i.inboundDegree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.inboundDegree: could not find the "'.concat(t,'" node in the graph.'));var n=0;return"directed"!==this.type&&(n+=e.undirectedDegree),"undirected"!==this.type&&(n+=e.inDegree),n},i.outboundDegree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.outboundDegree: could not find the "'.concat(t,'" node in the graph.'));var n=0;return"directed"!==this.type&&(n+=e.undirectedDegree),"undirected"!==this.type&&(n+=e.outDegree),n},i.degree=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.degree: could not find the "'.concat(t,'" node in the graph.'));var n=0;return"directed"!==this.type&&(n+=e.undirectedDegree),"undirected"!==this.type&&(n+=e.inDegree+e.outDegree),n},i.inDegreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.inDegreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));return"undirected"===this.type?0:e.inDegree-e.directedLoops},i.outDegreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.outDegreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));return"undirected"===this.type?0:e.outDegree-e.directedLoops},i.directedDegreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.directedDegreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));return"undirected"===this.type?0:e.inDegree+e.outDegree-2*e.directedLoops},i.undirectedDegreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.undirectedDegreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));return"directed"===this.type?0:e.undirectedDegree-2*e.undirectedLoops},i.inboundDegreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.inboundDegreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));var n=0,r=0;return"directed"!==this.type&&(n+=e.undirectedDegree,r+=2*e.undirectedLoops),"undirected"!==this.type&&(n+=e.inDegree,r+=e.directedLoops),n-r},i.outboundDegreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.outboundDegreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));var n=0,r=0;return"directed"!==this.type&&(n+=e.undirectedDegree,r+=2*e.undirectedLoops),"undirected"!==this.type&&(n+=e.outDegree,r+=e.directedLoops),n-r},i.degreeWithoutSelfLoops=function(t){t=""+t;var e=this._nodes.get(t);if(!e)throw new R('Graph.degreeWithoutSelfLoops: could not find the "'.concat(t,'" node in the graph.'));var n=0,r=0;return"directed"!==this.type&&(n+=e.undirectedDegree,r+=2*e.undirectedLoops),"undirected"!==this.type&&(n+=e.inDegree+e.outDegree,r+=2*e.directedLoops),n-r},i.source=function(t){t=""+t;var e=this._edges.get(t);if(!e)throw new R('Graph.source: could not find the "'.concat(t,'" edge in the graph.'));return e.source.key},i.target=function(t){t=""+t;var e=this._edges.get(t);if(!e)throw new R('Graph.target: could not find the "'.concat(t,'" edge in the graph.'));return e.target.key},i.extremities=function(t){t=""+t;var e=this._edges.get(t);if(!e)throw new R('Graph.extremities: could not find the "'.concat(t,'" edge in the graph.'));return[e.source.key,e.target.key]},i.opposite=function(t,e){t=""+t,e=""+e;var n=this._edges.get(e);if(!n)throw new R('Graph.opposite: could not find the "'.concat(e,'" edge in the graph.'));var r=n.source.key,i=n.target.key;if(t===r)return i;if(t===i)return r;throw new R('Graph.opposite: the "'.concat(t,'" node is not attached to the "').concat(e,'" edge (').concat(r,", ").concat(i,")."))},i.hasExtremity=function(t,e){t=""+t,e=""+e;var n=this._edges.get(t);if(!n)throw new R('Graph.hasExtremity: could not find the "'.concat(t,'" edge in the graph.'));return n.source.key===e||n.target.key===e},i.isUndirected=function(t){t=""+t;var e=this._edges.get(t);if(!e)throw new R('Graph.isUndirected: could not find the "'.concat(t,'" edge in the graph.'));return e.undirected},i.isDirected=function(t){t=""+t;var e=this._edges.get(t);if(!e)throw new R('Graph.isDirected: could not find the "'.concat(t,'" edge in the graph.'));return!e.undirected},i.isSelfLoop=function(t){t=""+t;var e=this._edges.get(t);if(!e)throw new R('Graph.isSelfLoop: could not find the "'.concat(t,'" edge in the graph.'));return e.source===e.target},i.addNode=function(t,e){var n=function(t,e,n){if(n&&!s(n))throw new q('Graph.addNode: invalid attributes. Expecting an object but got "'.concat(n,'"'));if(e=""+e,n=n||{},t._nodes.has(e))throw new F('Graph.addNode: the "'.concat(e,'" node already exist in the graph.'));var r=new t.NodeDataClass(e,n);return t._nodes.set(e,r),t.emit("nodeAdded",{key:e,attributes:n}),r}(this,t,e);return n.key},i.mergeNode=function(t,e){if(e&&!s(e))throw new q('Graph.mergeNode: invalid attributes. Expecting an object but got "'.concat(e,'"'));t=""+t,e=e||{};var n=this._nodes.get(t);return n?(e&&(u(n.attributes,e),this.emit("nodeAttributesUpdated",{type:"merge",key:t,attributes:n.attributes,data:e})),[t,!1]):(n=new this.NodeDataClass(t,e),this._nodes.set(t,n),this.emit("nodeAdded",{key:t,attributes:e}),[t,!0])},i.updateNode=function(t,e){if(e&&"function"!=typeof e)throw new q('Graph.updateNode: invalid updater function. Expecting a function but got "'.concat(e,'"'));t=""+t;var n=this._nodes.get(t);if(n){if(e){var r=n.attributes;n.attributes=e(r),this.emit("nodeAttributesUpdated",{type:"replace",key:t,attributes:n.attributes})}return[t,!1]}var i=e?e({}):{};return n=new this.NodeDataClass(t,i),this._nodes.set(t,n),this.emit("nodeAdded",{key:t,attributes:i}),[t,!0]},i.dropNode=function(t){t=""+t;var e,n=this._nodes.get(t);if(!n)throw new R('Graph.dropNode: could not find the "'.concat(t,'" node in the graph.'));if("undirected"!==this.type){for(var r in n.out){e=n.out[r];do{St(this,e),e=e.next}while(e)}for(var i in n.in){e=n.in[i];do{St(this,e),e=e.next}while(e)}}if("directed"!==this.type)for(var o in n.undirected){e=n.undirected[o];do{St(this,e),e=e.next}while(e)}this._nodes.delete(t),this.emit("nodeDropped",{key:t,attributes:n.attributes})},i.dropEdge=function(t){var e;if(arguments.length>1){var n=""+arguments[0],r=""+arguments[1];if(!(e=c(this,n,r,this.type)))throw new R('Graph.dropEdge: could not find the "'.concat(n,'" -> "').concat(r,'" edge in the graph.'))}else if(t=""+t,!(e=this._edges.get(t)))throw new R('Graph.dropEdge: could not find the "'.concat(t,'" edge in the graph.'));return St(this,e),this},i.dropDirectedEdge=function(t,e){if(arguments.length<2)throw new F("Graph.dropDirectedEdge: it does not make sense to try and drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead.");if(this.multi)throw new F("Graph.dropDirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones.");var n=c(this,t=""+t,e=""+e,"directed");if(!n)throw new R('Graph.dropDirectedEdge: could not find a "'.concat(t,'" -> "').concat(e,'" edge in the graph.'));return St(this,n),this},i.dropUndirectedEdge=function(t,e){if(arguments.length<2)throw new F("Graph.dropUndirectedEdge: it does not make sense to drop a directed edge by key. What if the edge with this key is undirected? Use #.dropEdge for this purpose instead.");if(this.multi)throw new F("Graph.dropUndirectedEdge: cannot use a {source,target} combo when dropping an edge in a MultiGraph since we cannot infer the one you want to delete as there could be multiple ones.");var n=c(this,t,e,"undirected");if(!n)throw new R('Graph.dropUndirectedEdge: could not find a "'.concat(t,'" -> "').concat(e,'" edge in the graph.'));return St(this,n),this},i.clear=function(){this._edges.clear(),this._nodes.clear(),this._resetInstanceCounters(),this.emit("cleared")},i.clearEdges=function(){for(var t,e=this._nodes.values();!0!==(t=e.next()).done;)t.value.clear();this._edges.clear(),this._resetInstanceCounters(),this.emit("edgesCleared")},i.getAttribute=function(t){return this._attributes[t]},i.getAttributes=function(){return this._attributes},i.hasAttribute=function(t){return this._attributes.hasOwnProperty(t)},i.setAttribute=function(t,e){return this._attributes[t]=e,this.emit("attributesUpdated",{type:"set",attributes:this._attributes,name:t}),this},i.updateAttribute=function(t,e){if("function"!=typeof e)throw new q("Graph.updateAttribute: updater should be a function.");var n=this._attributes[t];return this._attributes[t]=e(n),this.emit("attributesUpdated",{type:"set",attributes:this._attributes,name:t}),this},i.removeAttribute=function(t){return delete this._attributes[t],this.emit("attributesUpdated",{type:"remove",attributes:this._attributes,name:t}),this},i.replaceAttributes=function(t){if(!s(t))throw new q("Graph.replaceAttributes: provided attributes are not a plain object.");return this._attributes=t,this.emit("attributesUpdated",{type:"replace",attributes:this._attributes}),this},i.mergeAttributes=function(t){if(!s(t))throw new q("Graph.mergeAttributes: provided attributes are not a plain object.");return u(this._attributes,t),this.emit("attributesUpdated",{type:"merge",attributes:this._attributes,data:t}),this},i.updateAttributes=function(t){if("function"!=typeof t)throw new q("Graph.updateAttributes: provided updater is not a function.");return this._attributes=t(this._attributes),this.emit("attributesUpdated",{type:"update",attributes:this._attributes}),this},i.updateEachNodeAttributes=function(t,e){if("function"!=typeof t)throw new q("Graph.updateEachNodeAttributes: expecting an updater function.");if(e&&!f(e))throw new q("Graph.updateEachNodeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}");for(var n,r,i=this._nodes.values();!0!==(n=i.next()).done;)(r=n.value).attributes=t(r.key,r.attributes);this.emit("eachNodeAttributesUpdated",{hints:e||null})},i.updateEachEdgeAttributes=function(t,e){if("function"!=typeof t)throw new q("Graph.updateEachEdgeAttributes: expecting an updater function.");if(e&&!f(e))throw new q("Graph.updateEachEdgeAttributes: invalid hints. Expecting an object having the following shape: {attributes?: [string]}");for(var n,r,i,o,a=this._edges.values();!0!==(n=a.next()).done;)i=(r=n.value).source,o=r.target,r.attributes=t(r.key,r.attributes,i.key,o.key,i.attributes,o.attributes,r.undirected);this.emit("eachEdgeAttributesUpdated",{hints:e||null})},i.forEachAdjacencyEntry=function(t){if("function"!=typeof t)throw new q("Graph.forEachAdjacencyEntry: expecting a callback.");yt(!1,!1,!1,this,t)},i.forEachAdjacencyEntryWithOrphans=function(t){if("function"!=typeof t)throw new q("Graph.forEachAdjacencyEntryWithOrphans: expecting a callback.");yt(!1,!1,!0,this,t)},i.forEachAssymetricAdjacencyEntry=function(t){if("function"!=typeof t)throw new q("Graph.forEachAssymetricAdjacencyEntry: expecting a callback.");yt(!1,!0,!1,this,t)},i.forEachAssymetricAdjacencyEntryWithOrphans=function(t){if("function"!=typeof t)throw new q("Graph.forEachAssymetricAdjacencyEntryWithOrphans: expecting a callback.");yt(!1,!0,!0,this,t)},i.nodes=function(){return"function"==typeof Array.from?Array.from(this._nodes.keys()):T(this._nodes.keys(),this._nodes.size)},i.forEachNode=function(t){if("function"!=typeof t)throw new q("Graph.forEachNode: expecting a callback.");for(var e,n,r=this._nodes.values();!0!==(e=r.next()).done;)t((n=e.value).key,n.attributes)},i.findNode=function(t){if("function"!=typeof t)throw new q("Graph.findNode: expecting a callback.");for(var e,n,r=this._nodes.values();!0!==(e=r.next()).done;)if(t((n=e.value).key,n.attributes))return n.key},i.mapNodes=function(t){if("function"!=typeof t)throw new q("Graph.mapNode: expecting a callback.");for(var e,n,r=this._nodes.values(),i=new Array(this.order),o=0;!0!==(e=r.next()).done;)n=e.value,i[o++]=t(n.key,n.attributes);return i},i.someNode=function(t){if("function"!=typeof t)throw new q("Graph.someNode: expecting a callback.");for(var e,n,r=this._nodes.values();!0!==(e=r.next()).done;)if(t((n=e.value).key,n.attributes))return!0;return!1},i.everyNode=function(t){if("function"!=typeof t)throw new q("Graph.everyNode: expecting a callback.");for(var e,n,r=this._nodes.values();!0!==(e=r.next()).done;)if(!t((n=e.value).key,n.attributes))return!1;return!0},i.filterNodes=function(t){if("function"!=typeof t)throw new q("Graph.filterNodes: expecting a callback.");for(var e,n,r=this._nodes.values(),i=[];!0!==(e=r.next()).done;)t((n=e.value).key,n.attributes)&&i.push(n.key);return i},i.reduceNodes=function(t,e){if("function"!=typeof t)throw new q("Graph.reduceNodes: expecting a callback.");if(arguments.length<2)throw new q("Graph.reduceNodes: missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array.");for(var n,r,i=e,o=this._nodes.values();!0!==(n=o.next()).done;)i=t(i,(r=n.value).key,r.attributes);return i},i.nodeEntries=function(){var t=this._nodes.values();return new O((function(){var e=t.next();if(e.done)return e;var n=e.value;return{value:{node:n.key,attributes:n.attributes},done:!1}}))},i.export=function(){var t=this,e=new Array(this._nodes.size),n=0;this._nodes.forEach((function(t,r){e[n++]=function(t,e){var n={key:t};return h(e.attributes)||(n.attributes=u({},e.attributes)),n}(r,t)}));var r=new Array(this._edges.size);return n=0,this._edges.forEach((function(e,i){r[n++]=function(t,e,n){var r={key:e,source:n.source.key,target:n.target.key};return h(n.attributes)||(r.attributes=u({},n.attributes)),"mixed"===t&&n.undirected&&(r.undirected=!0),r}(t.type,i,e)})),{options:{type:this.type,multi:this.multi,allowSelfLoops:this.allowSelfLoops},attributes:this.getAttributes(),nodes:e,edges:r}},i.import=function(t){var e,n,i,o,a,u=this,c=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(t instanceof r)return t.forEachNode((function(t,e){c?u.mergeNode(t,e):u.addNode(t,e)})),t.forEachEdge((function(t,e,n,r,i,o,a){c?a?u.mergeUndirectedEdgeWithKey(t,n,r,e):u.mergeDirectedEdgeWithKey(t,n,r,e):a?u.addUndirectedEdgeWithKey(t,n,r,e):u.addDirectedEdgeWithKey(t,n,r,e)})),this;if(!s(t))throw new q("Graph.import: invalid argument. Expecting a serialized graph or, alternatively, a Graph instance.");if(t.attributes){if(!s(t.attributes))throw new q("Graph.import: invalid attributes. Expecting a plain object.");c?this.mergeAttributes(t.attributes):this.replaceAttributes(t.attributes)}if(t.nodes){if(i=t.nodes,!Array.isArray(i))throw new q("Graph.import: invalid nodes. Expecting an array.");for(e=0,n=i.length;e<n;e++){gt(o=i[e]);var h=o,l=h.key,d=h.attributes;c?this.mergeNode(l,d):this.addNode(l,d)}}if(t.edges){var f=!1;if("undirected"===this.type&&(f=!0),i=t.edges,!Array.isArray(i))throw new q("Graph.import: invalid edges. Expecting an array.");for(e=0,n=i.length;e<n;e++){vt(a=i[e]);var p=a,y=p.source,g=p.target,v=p.attributes,m=p.undirected,w=void 0===m?f:m;"key"in a?(c?w?this.mergeUndirectedEdgeWithKey:this.mergeDirectedEdgeWithKey:w?this.addUndirectedEdgeWithKey:this.addDirectedEdgeWithKey).call(this,a.key,y,g,v):(c?w?this.mergeUndirectedEdge:this.mergeDirectedEdge:w?this.addUndirectedEdge:this.addDirectedEdge).call(this,y,g,v)}}return this},i.nullCopy=function(t){var e=new r(u({},this._options,t));return e.replaceAttributes(u({},this.getAttributes())),e},i.emptyCopy=function(t){var e=this.nullCopy(t);return this._nodes.forEach((function(t,n){var r=u({},t.attributes);t=new e.NodeDataClass(n,r),e._nodes.set(n,t)})),e},i.copy=function(t){if("string"==typeof(t=t||{}).type&&t.type!==this.type&&"mixed"!==t.type)throw new F('Graph.copy: cannot create an incompatible copy from "'.concat(this.type,'" type to "').concat(t.type,'" because this would mean losing information about the current graph.'));if("boolean"==typeof t.multi&&t.multi!==this.multi&&!0!==t.multi)throw new F("Graph.copy: cannot create an incompatible copy by downgrading a multi graph to a simple one because this would mean losing information about the current graph.");if("boolean"==typeof t.allowSelfLoops&&t.allowSelfLoops!==this.allowSelfLoops&&!0!==t.allowSelfLoops)throw new F("Graph.copy: cannot create an incompatible copy from a graph allowing self loops to one that does not because this would mean losing information about the current graph.");for(var e,n,r=this.emptyCopy(t),i=this._edges.values();!0!==(e=i.next()).done;)Et(r,"copy",!1,(n=e.value).undirected,n.key,n.source.key,n.target.key,u({},n.attributes));return r},i.toJSON=function(){return this.export()},i.toString=function(){return"[object Graph]"},i.inspect=function(){var e=this,n={};this._nodes.forEach((function(t,e){n[e]=t.attributes}));var r={},i={};this._edges.forEach((function(t,n){var o,a=t.undirected?"--":"->",u="",c=t.source.key,s=t.target.key;t.undirected&&c>s&&(o=c,c=s,s=o);var h="(".concat(c,")").concat(a,"(").concat(s,")");n.startsWith("geid_")?e.multi&&(void 0===i[h]?i[h]=0:i[h]++,u+="".concat(i[h],". ")):u+="[".concat(n,"]: "),r[u+=h]=t.attributes}));var o={};for(var a in this)this.hasOwnProperty(a)&&!_t.has(a)&&"function"!=typeof this[a]&&"symbol"!==t(a)&&(o[a]=this[a]);return o.attributes=this._attributes,o.nodes=n,o.edges=r,l(o,"constructor",this.constructor),o},r}(y.exports.EventEmitter);"undefined"!=typeof Symbol&&(Lt.prototype[Symbol.for("nodejs.util.inspect.custom")]=Lt.prototype.inspect),[{name:function(t){return"".concat(t,"Edge")},generateKey:!0},{name:function(t){return"".concat(t,"DirectedEdge")},generateKey:!0,type:"directed"},{name:function(t){return"".concat(t,"UndirectedEdge")},generateKey:!0,type:"undirected"},{name:function(t){return"".concat(t,"EdgeWithKey")}},{name:function(t){return"".concat(t,"DirectedEdgeWithKey")},type:"directed"},{name:function(t){return"".concat(t,"UndirectedEdgeWithKey")},type:"undirected"}].forEach((function(t){["add","merge","update"].forEach((function(e){var n=t.name(e),r="add"===e?Et:At;t.generateKey?Lt.prototype[n]=function(i,o,a){return r(this,n,!0,"undirected"===(t.type||this.type),null,i,o,a,"update"===e)}:Lt.prototype[n]=function(i,o,a,u){return r(this,n,!1,"undirected"===(t.type||this.type),i,o,a,u,"update"===e)}}))})),function(t){V.forEach((function(e){var n=e.name,r=e.attacher;r(t,n("Node"),0),r(t,n("Source"),1),r(t,n("Target"),2),r(t,n("Opposite"),3)}))}(Lt),function(t){H.forEach((function(e){var n=e.name,r=e.attacher;r(t,n("Edge"),"mixed"),r(t,n("DirectedEdge"),"directed"),r(t,n("UndirectedEdge"),"undirected")}))}(Lt),function(t){tt.forEach((function(e){!function(t,e){var n=e.name,r=e.type,i=e.direction;t.prototype[n]=function(t,e){if("mixed"!==r&&"mixed"!==this.type&&r!==this.type)return[];if(!arguments.length)return function(t,e){if(0===t.size)return[];if("mixed"===e||e===t.type)return"function"==typeof Array.from?Array.from(t._edges.keys()):T(t._edges.keys(),t._edges.size);for(var n,r,i="undirected"===e?t.undirectedSize:t.directedSize,o=new Array(i),a="undirected"===e,u=t._edges.values(),c=0;!0!==(n=u.next()).done;)(r=n.value).undirected===a&&(o[c++]=r.key);return o}(this,r);if(1===arguments.length){t=""+t;var o=this._nodes.get(t);if(void 0===o)throw new R("Graph.".concat(n,': could not find the "').concat(t,'" node in the graph.'));return function(t,e,n,r){var i=[];return ct(!1,t,e,n,r,(function(t){i.push(t)})),i}(this.multi,"mixed"===r?this.type:r,i,o)}if(2===arguments.length){t=""+t,e=""+e;var a=this._nodes.get(t);if(!a)throw new R("Graph.".concat(n,': could not find the "').concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R("Graph.".concat(n,': could not find the "').concat(e,'" target node in the graph.'));return function(t,e,n,r,i){var o=[];return st(!1,t,e,n,r,i,(function(t){o.push(t)})),o}(r,this.multi,i,a,e)}throw new q("Graph.".concat(n,": too many arguments (expecting 0, 1 or 2 and got ").concat(arguments.length,")."))}}(t,e),function(t,e){var n=e.name,r=e.type,i=e.direction,o="forEach"+n[0].toUpperCase()+n.slice(1,-1);t.prototype[o]=function(t,e,n){if("mixed"===r||"mixed"===this.type||r===this.type){if(1===arguments.length)return ut(!1,this,r,n=t);if(2===arguments.length){t=""+t,n=e;var a=this._nodes.get(t);if(void 0===a)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" node in the graph.'));return ct(!1,this.multi,"mixed"===r?this.type:r,i,a,n)}if(3===arguments.length){t=""+t,e=""+e;var u=this._nodes.get(t);if(!u)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R("Graph.".concat(o,': could not find the "').concat(e,'" target node in the graph.'));return st(!1,r,this.multi,i,u,e,n)}throw new q("Graph.".concat(o,": too many arguments (expecting 1, 2 or 3 and got ").concat(arguments.length,")."))}};var a="map"+n[0].toUpperCase()+n.slice(1);t.prototype[a]=function(){var t,e=Array.prototype.slice.call(arguments),n=e.pop();if(0===e.length){var i=0;"directed"!==r&&(i+=this.undirectedSize),"undirected"!==r&&(i+=this.directedSize),t=new Array(i);var a=0;e.push((function(e,r,i,o,u,c,s){t[a++]=n(e,r,i,o,u,c,s)}))}else t=[],e.push((function(e,r,i,o,a,u,c){t.push(n(e,r,i,o,a,u,c))}));return this[o].apply(this,e),t};var u="filter"+n[0].toUpperCase()+n.slice(1);t.prototype[u]=function(){var t=Array.prototype.slice.call(arguments),e=t.pop(),n=[];return t.push((function(t,r,i,o,a,u,c){e(t,r,i,o,a,u,c)&&n.push(t)})),this[o].apply(this,t),n};var c="reduce"+n[0].toUpperCase()+n.slice(1);t.prototype[c]=function(){var t,e,n=Array.prototype.slice.call(arguments);if(n.length<2||n.length>4)throw new q("Graph.".concat(c,": invalid number of arguments (expecting 2, 3 or 4 and got ").concat(n.length,")."));if("function"==typeof n[n.length-1]&&"function"!=typeof n[n.length-2])throw new q("Graph.".concat(c,": missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array."));2===n.length?(t=n[0],e=n[1],n=[]):3===n.length?(t=n[1],e=n[2],n=[n[0]]):4===n.length&&(t=n[2],e=n[3],n=[n[0],n[1]]);var r=e;return n.push((function(e,n,i,o,a,u,c){r=t(r,e,n,i,o,a,u,c)})),this[o].apply(this,n),r}}(t,e),function(t,e){var n=e.name,r=e.type,i=e.direction,o="find"+n[0].toUpperCase()+n.slice(1,-1);t.prototype[o]=function(t,e,n){if("mixed"!==r&&"mixed"!==this.type&&r!==this.type)return!1;if(1===arguments.length)return ut(!0,this,r,n=t);if(2===arguments.length){t=""+t,n=e;var a=this._nodes.get(t);if(void 0===a)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" node in the graph.'));return ct(!0,this.multi,"mixed"===r?this.type:r,i,a,n)}if(3===arguments.length){t=""+t,e=""+e;var u=this._nodes.get(t);if(!u)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R("Graph.".concat(o,': could not find the "').concat(e,'" target node in the graph.'));return st(!0,r,this.multi,i,u,e,n)}throw new q("Graph.".concat(o,": too many arguments (expecting 1, 2 or 3 and got ").concat(arguments.length,")."))};var a="some"+n[0].toUpperCase()+n.slice(1,-1);t.prototype[a]=function(){var t=Array.prototype.slice.call(arguments),e=t.pop();return t.push((function(t,n,r,i,o,a,u){return e(t,n,r,i,o,a,u)})),!!this[o].apply(this,t)};var u="every"+n[0].toUpperCase()+n.slice(1,-1);t.prototype[u]=function(){var t=Array.prototype.slice.call(arguments),e=t.pop();return t.push((function(t,n,r,i,o,a,u){return!e(t,n,r,i,o,a,u)})),!this[o].apply(this,t)}}(t,e),function(t,e){var n=e.name,r=e.type,i=e.direction,o=n.slice(0,-1)+"Entries";t.prototype[o]=function(t,e){if("mixed"!==r&&"mixed"!==this.type&&r!==this.type)return O.empty();if(!arguments.length)return function(t,e){if(0===t.size)return O.empty();var n="mixed"!==e&&e!==t.type,r="undirected"===e,i=t._edges.values();return new O((function(){for(var t,e;;){if((t=i.next()).done)return t;if(e=t.value,!n||e.undirected===r)break}return{value:{edge:e.key,attributes:e.attributes,source:e.source.key,target:e.target.key,sourceAttributes:e.source.attributes,targetAttributes:e.target.attributes,undirected:e.undirected},done:!1}}))}(this,r);if(1===arguments.length){t=""+t;var n=this._nodes.get(t);if(!n)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" node in the graph.'));return function(t,e,n){var r=O.empty();return"undirected"!==t&&("out"!==e&&void 0!==n.in&&(r=Z(r,rt(n.in))),"in"!==e&&void 0!==n.out&&(r=Z(r,rt(n.out,e?void 0:n.key)))),"directed"!==t&&void 0!==n.undirected&&(r=Z(r,rt(n.undirected))),r}(r,i,n)}if(2===arguments.length){t=""+t,e=""+e;var a=this._nodes.get(t);if(!a)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" source node in the graph.'));if(!this._nodes.has(e))throw new R("Graph.".concat(o,': could not find the "').concat(e,'" target node in the graph.'));return function(t,e,n,r){var i=O.empty();return"undirected"!==t&&(void 0!==n.in&&"out"!==e&&r in n.in&&(i=Z(i,at(n.in,r))),void 0!==n.out&&"in"!==e&&r in n.out&&(e||n.key!==r)&&(i=Z(i,at(n.out,r)))),"directed"!==t&&void 0!==n.undirected&&r in n.undirected&&(i=Z(i,at(n.undirected,r))),i}(r,i,a,e)}throw new q("Graph.".concat(o,": too many arguments (expecting 0, 1 or 2 and got ").concat(arguments.length,")."))}}(t,e)}))}(Lt),function(t){ht.forEach((function(e){(function(t,e){var n=e.name,r=e.type,i=e.direction;t.prototype[n]=function(t){if("mixed"!==r&&"mixed"!==this.type&&r!==this.type)return[];t=""+t;var e=this._nodes.get(t);if(void 0===e)throw new R("Graph.".concat(n,': could not find the "').concat(t,'" node in the graph.'));return function(t,e,n){if("mixed"!==t){if("undirected"===t)return Object.keys(n.undirected);if("string"==typeof e)return Object.keys(n[e])}var r=[];return ft(!1,t,e,n,(function(t){r.push(t)})),r}("mixed"===r?this.type:r,i,e)}})(t,e),function(t,e){var n=e.name,r=e.type,i=e.direction,o="forEach"+n[0].toUpperCase()+n.slice(1,-1);t.prototype[o]=function(t,e){if("mixed"===r||"mixed"===this.type||r===this.type){t=""+t;var n=this._nodes.get(t);if(void 0===n)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" node in the graph.'));ft(!1,"mixed"===r?this.type:r,i,n,e)}};var a="map"+n[0].toUpperCase()+n.slice(1);t.prototype[a]=function(t,e){var n=[];return this[o](t,(function(t,r){n.push(e(t,r))})),n};var u="filter"+n[0].toUpperCase()+n.slice(1);t.prototype[u]=function(t,e){var n=[];return this[o](t,(function(t,r){e(t,r)&&n.push(t)})),n};var c="reduce"+n[0].toUpperCase()+n.slice(1);t.prototype[c]=function(t,e,n){if(arguments.length<3)throw new q("Graph.".concat(c,": missing initial value. You must provide it because the callback takes more than one argument and we cannot infer the initial value from the first iteration, as you could with a simple array."));var r=n;return this[o](t,(function(t,n){r=e(r,t,n)})),r}}(t,e),function(t,e){var n=e.name,r=e.type,i=e.direction,o=n[0].toUpperCase()+n.slice(1,-1),a="find"+o;t.prototype[a]=function(t,e){if("mixed"===r||"mixed"===this.type||r===this.type){t=""+t;var n=this._nodes.get(t);if(void 0===n)throw new R("Graph.".concat(a,': could not find the "').concat(t,'" node in the graph.'));return ft(!0,"mixed"===r?this.type:r,i,n,e)}};var u="some"+o;t.prototype[u]=function(t,e){return!!this[a](t,e)};var c="every"+o;t.prototype[c]=function(t,e){return!this[a](t,(function(t,n){return!e(t,n)}))}}(t,e),function(t,e){var n=e.name,r=e.type,i=e.direction,o=n.slice(0,-1)+"Entries";t.prototype[o]=function(t){if("mixed"!==r&&"mixed"!==this.type&&r!==this.type)return O.empty();t=""+t;var e=this._nodes.get(t);if(void 0===e)throw new R("Graph.".concat(o,': could not find the "').concat(t,'" node in the graph.'));return function(t,e,n){if("mixed"!==t){if("undirected"===t)return pt(null,n,n.undirected);if("string"==typeof e)return pt(null,n,n[e])}var r=O.empty(),i=new lt;return"undirected"!==t&&("out"!==e&&(r=Z(r,pt(i,n,n.in))),"in"!==e&&(r=Z(r,pt(i,n,n.out)))),"directed"!==t&&(r=Z(r,pt(i,n,n.undirected))),r}("mixed"===r?this.type:r,i,e)}}(t,e)}))}(Lt);var Mt=function(t){function n(e){var n=u({type:"directed"},e);if("multi"in n&&!1!==n.multi)throw new q("DirectedGraph.from: inconsistent indication that the graph should be multi in given options!");if("directed"!==n.type)throw new q('DirectedGraph.from: inconsistent "'+n.type+'" type in given options!');return t.call(this,n)||this}return e(n,t),n}(Lt),Gt=function(t){function n(e){var n=u({type:"undirected"},e);if("multi"in n&&!1!==n.multi)throw new q("UndirectedGraph.from: inconsistent indication that the graph should be multi in given options!");if("undirected"!==n.type)throw new q('UndirectedGraph.from: inconsistent "'+n.type+'" type in given options!');return t.call(this,n)||this}return e(n,t),n}(Lt),Nt=function(t){function n(e){var n=u({multi:!0},e);if("multi"in n&&!0!==n.multi)throw new q("MultiGraph.from: inconsistent indication that the graph should be simple in given options!");return t.call(this,n)||this}return e(n,t),n}(Lt),Ot=function(t){function n(e){var n=u({type:"directed",multi:!0},e);if("multi"in n&&!0!==n.multi)throw new q("MultiDirectedGraph.from: inconsistent indication that the graph should be simple in given options!");if("directed"!==n.type)throw new q('MultiDirectedGraph.from: inconsistent "'+n.type+'" type in given options!');return t.call(this,n)||this}return e(n,t),n}(Lt),jt=function(t){function n(e){var n=u({type:"undirected",multi:!0},e);if("multi"in n&&!0!==n.multi)throw new q("MultiUndirectedGraph.from: inconsistent indication that the graph should be simple in given options!");if("undirected"!==n.type)throw new q('MultiUndirectedGraph.from: inconsistent "'+n.type+'" type in given options!');return t.call(this,n)||this}return e(n,t),n}(Lt);function zt(t){t.from=function(e,n){var r=u({},e.options,n),i=new t(r);return i.import(e),i}}return zt(Lt),zt(Mt),zt(Gt),zt(Nt),zt(Ot),zt(jt),Lt.Graph=Lt,Lt.DirectedGraph=Mt,Lt.UndirectedGraph=Gt,Lt.MultiGraph=Nt,Lt.MultiDirectedGraph=Ot,Lt.MultiUndirectedGraph=jt,Lt.InvalidArgumentsGraphError=q,Lt.NotFoundGraphError=R,Lt.UsageGraphError=F,Lt}()},208:(t,e,n)=>{var r=n(938),i=n(766);function o(t,e){if(arguments.length<2)throw new Error("mnemonist/fixed-deque: expecting an Array class and a capacity.");if("number"!=typeof e||e<=0)throw new Error("mnemonist/fixed-deque: `capacity` should be a positive number.");this.ArrayClass=t,this.capacity=e,this.items=new t(this.capacity),this.clear()}o.prototype.clear=function(){this.start=0,this.size=0},o.prototype.push=function(t){if(this.size===this.capacity)throw new Error("mnemonist/fixed-deque.push: deque capacity ("+this.capacity+") exceeded!");var e=this.start+this.size;return e>=this.capacity&&(e-=this.capacity),this.items[e]=t,++this.size},o.prototype.unshift=function(t){if(this.size===this.capacity)throw new Error("mnemonist/fixed-deque.unshift: deque capacity ("+this.capacity+") exceeded!");var e=this.start-1;return 0===this.start&&(e=this.capacity-1),this.items[e]=t,this.start=e,++this.size},o.prototype.pop=function(){if(0!==this.size){this.size--;var t=this.start+this.size;return t>=this.capacity&&(t-=this.capacity),this.items[t]}},o.prototype.shift=function(){if(0!==this.size){var t=this.start;return this.size--,this.start++,this.start===this.capacity&&(this.start=0),this.items[t]}},o.prototype.peekFirst=function(){if(0!==this.size)return this.items[this.start]},o.prototype.peekLast=function(){if(0!==this.size){var t=this.start+this.size-1;return t>=this.capacity&&(t-=this.capacity),this.items[t]}},o.prototype.get=function(t){if(!(0===this.size||t>=this.capacity))return(t=this.start+t)>=this.capacity&&(t-=this.capacity),this.items[t]},o.prototype.forEach=function(t,e){e=arguments.length>1?e:this;for(var n=this.capacity,r=this.size,i=this.start,o=0;o<r;)t.call(e,this.items[i],o,this),o++,++i===n&&(i=0)},o.prototype.toArray=function(){var t=this.start+this.size;if(t<this.capacity)return this.items.slice(this.start,t);for(var e=new this.ArrayClass(this.size),n=this.capacity,r=this.size,i=this.start,o=0;o<r;)e[o]=this.items[i],o++,++i===n&&(i=0);return e},o.prototype.values=function(){var t=this.items,e=this.capacity,n=this.size,r=this.start,o=0;return new i((function(){if(o>=n)return{done:!0};var i=t[r];return r++,o++,r===e&&(r=0),{value:i,done:!1}}))},o.prototype.entries=function(){var t=this.items,e=this.capacity,n=this.size,r=this.start,o=0;return new i((function(){if(o>=n)return{done:!0};var i=t[r];return++r===e&&(r=0),{value:[o++,i],done:!1}}))},"undefined"!=typeof Symbol&&(o.prototype[Symbol.iterator]=o.prototype.values),o.prototype.inspect=function(){var t=this.toArray();return t.type=this.ArrayClass.name,t.capacity=this.capacity,Object.defineProperty(t,"constructor",{value:o,enumerable:!1}),t},"undefined"!=typeof Symbol&&(o.prototype[Symbol.for("nodejs.util.inspect.custom")]=o.prototype.inspect),o.from=function(t,e,n){if(arguments.length<3&&"number"!=typeof(n=r.guessLength(t)))throw new Error("mnemonist/fixed-deque.from: could not guess iterable length. Please provide desired capacity as last argument.");var i=new o(e,n);if(r.isArrayLike(t)){var a,u;for(a=0,u=t.length;a<u;a++)i.items[a]=t[a];return i.size=u,i}return r.forEach(t,(function(t){i.push(t)})),i},t.exports=o},938:(t,e,n)=>{var r=n(156),i=n(384);function o(t){return"number"==typeof t.length?t.length:"number"==typeof t.size?t.size:void 0}e.isArrayLike=function(t){return Array.isArray(t)||i.isTypedArray(t)},e.guessLength=o,e.toArray=function(t){var e=o(t),n="number"==typeof e?new Array(e):[],i=0;return r(t,(function(t){n[i++]=t})),n},e.toArrayWithIndices=function(t){var e=o(t),n="number"==typeof e?i.getPointerArray(e):Array,a="number"==typeof e?new Array(e):[],u="number"==typeof e?new n(e):[],c=0;return r(t,(function(t){a[c]=t,u[c]=c++})),[a,u]}},384:(t,e)=>{var n=Math.pow(2,8)-1,r=Math.pow(2,16)-1,i=Math.pow(2,32)-1,o=Math.pow(2,7)-1,a=Math.pow(2,15)-1,u=Math.pow(2,31)-1;e.getPointerArray=function(t){var e=t-1;if(e<=n)return Uint8Array;if(e<=r)return Uint16Array;if(e<=i)return Uint32Array;throw new Error("mnemonist: Pointer Array of size > 4294967295 is not supported.")},e.getSignedPointerArray=function(t){var e=t-1;return e<=o?Int8Array:e<=a?Int16Array:e<=u?Int32Array:Float64Array},e.getNumberType=function(t){return t===(0|t)?-1===Math.sign(t)?t<=127&&t>=-128?Int8Array:t<=32767&&t>=-32768?Int16Array:Int32Array:t<=255?Uint8Array:t<=65535?Uint16Array:Uint32Array:Float64Array};var c={Uint8Array:1,Int8Array:2,Uint16Array:3,Int16Array:4,Uint32Array:5,Int32Array:6,Float32Array:7,Float64Array:8};e.getMinimalRepresentation=function(t,n){var r,i,o,a,u,s=null,h=0;for(a=0,u=t.length;a<u;a++)o=n?n(t[a]):t[a],i=e.getNumberType(o),(r=c[i.name])>h&&(h=r,s=i);return s},e.isTypedArray=function(t){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView(t)},e.concat=function(){var t,e,n,r=0;for(t=0,n=arguments.length;t<n;t++)r+=arguments[t].length;var i=new arguments[0].constructor(r);for(t=0,e=0;t<n;t++)i.set(arguments[t],e),e+=arguments[t].length;return i},e.indices=function(t){for(var n=new(e.getPointerArray(t))(t),r=0;r<t;r++)n[r]=r;return n}},156:(t,e,n)=>{var r=n(109),i=r.ARRAY_BUFFER_SUPPORT,o=r.SYMBOL_SUPPORT;t.exports=function(t,e){var n,r,a,u,c;if(!t)throw new Error("obliterator/forEach: invalid iterable.");if("function"!=typeof e)throw new Error("obliterator/forEach: expecting a callback.");if(Array.isArray(t)||i&&ArrayBuffer.isView(t)||"string"==typeof t||"[object Arguments]"===t.toString())for(a=0,u=t.length;a<u;a++)e(t[a],a);else if("function"!=typeof t.forEach)if(o&&Symbol.iterator in t&&"function"!=typeof t.next&&(t=t[Symbol.iterator]()),"function"!=typeof t.next)for(r in t)t.hasOwnProperty(r)&&e(t[r],r);else for(n=t,a=0;!0!==(c=n.next()).done;)e(c.value,a),a++;else t.forEach(e)}},766:t=>{function e(t){if("function"!=typeof t)throw new Error("obliterator/iterator: expecting a function!");this.next=t}"undefined"!=typeof Symbol&&(e.prototype[Symbol.iterator]=function(){return this}),e.of=function(){var t=arguments,n=t.length,r=0;return new e((function(){return r>=n?{done:!0}:{done:!1,value:t[r++]}}))},e.empty=function(){return new e((function(){return{done:!0}}))},e.fromSequence=function(t){var n=0,r=t.length;return new e((function(){return n>=r?{done:!0}:{done:!1,value:t[n++]}}))},e.is=function(t){return t instanceof e||"object"==typeof t&&null!==t&&"function"==typeof t.next},t.exports=e},109:(t,e)=>{e.ARRAY_BUFFER_SUPPORT="undefined"!=typeof ArrayBuffer,e.SYMBOL_SUPPORT="undefined"!=typeof Symbol}},e={};function n(r){var i=e[r];if(void 0!==i)return i.exports;var o=e[r]={exports:{}};return t[r].call(o.exports,o,o.exports,n),o.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var r in e)n.o(e,r)&&!n.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";function t(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n<e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n<i||void 0===n&&i>=i)&&(n=i)}return n}function e(t,e){let n=0,r=0;if(void 0===e)for(let e of t)null!=e&&(e=+e)>=e&&(++n,r+=e);else{let i=-1;for(let o of t)null!=(o=e(o,++i,t))&&(o=+o)>=o&&(++n,r+=o)}if(n)return r/n}function r(t,e){let n;if(void 0===e)for(const e of t)null!=e&&(n>e||void 0===n&&e>=e)&&(n=e);else{let r=-1;for(let i of t)null!=(i=e(i,++r,t))&&(n>i||void 0===n&&i>=i)&&(n=i)}return n}function i(){}function o(t){return null==t?i:function(){return this.querySelector(t)}}function a(){return[]}function u(t){return null==t?a:function(){return this.querySelectorAll(t)}}function c(t){return function(){return this.matches(t)}}function s(t){return function(e){return e.matches(t)}}var h=Array.prototype.find;function l(){return this.firstElementChild}var d=Array.prototype.filter;function f(){return Array.from(this.children)}function p(t){return new Array(t.length)}function y(t,e){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=e}function g(t,e,n,r,i,o){for(var a,u=0,c=e.length,s=o.length;u<s;++u)(a=e[u])?(a.__data__=o[u],r[u]=a):n[u]=new y(t,o[u]);for(;u<c;++u)(a=e[u])&&(i[u]=a)}function v(t,e,n,r,i,o,a){var u,c,s,h=new Map,l=e.length,d=o.length,f=new Array(l);for(u=0;u<l;++u)(c=e[u])&&(f[u]=s=a.call(c,c.__data__,u,e)+"",h.has(s)?i[u]=c:h.set(s,c));for(u=0;u<d;++u)s=a.call(t,o[u],u,o)+"",(c=h.get(s))?(r[u]=c,c.__data__=o[u],h.delete(s)):n[u]=new y(t,o[u]);for(u=0;u<l;++u)(c=e[u])&&h.get(f[u])===c&&(i[u]=c)}function m(t){return t.__data__}function w(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function b(t,e){return t<e?-1:t>e?1:t>=e?0:NaN}y.prototype={constructor:y,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,e){return this._parent.insertBefore(t,e)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var _="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:_,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function k(t){var e=t+="",n=e.indexOf(":");return n>=0&&"xmlns"!==(e=t.slice(0,n))&&(t=t.slice(n+1)),x.hasOwnProperty(e)?{space:x[e],local:t}:t}function E(t){return function(){this.removeAttribute(t)}}function A(t){return function(){this.removeAttributeNS(t.space,t.local)}}function S(t,e){return function(){this.setAttribute(t,e)}}function L(t,e){return function(){this.setAttributeNS(t.space,t.local,e)}}function M(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttribute(t):this.setAttribute(t,n)}}function G(t,e){return function(){var n=e.apply(this,arguments);null==n?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,n)}}function N(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function O(t){return function(){this.style.removeProperty(t)}}function j(t,e,n){return function(){this.style.setProperty(t,e,n)}}function z(t,e,n){return function(){var r=e.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,n)}}function C(t,e){return t.style.getPropertyValue(e)||N(t).getComputedStyle(t,null).getPropertyValue(e)}function D(t){return function(){delete this[t]}}function P(t,e){return function(){this[t]=e}}function I(t,e){return function(){var n=e.apply(this,arguments);null==n?delete this[t]:this[t]=n}}function U(t){return t.trim().split(/^|\s+/)}function T(t){return t.classList||new B(t)}function B(t){this._node=t,this._names=U(t.getAttribute("class")||"")}function q(t,e){for(var n=T(t),r=-1,i=e.length;++r<i;)n.add(e[r])}function R(t,e){for(var n=T(t),r=-1,i=e.length;++r<i;)n.remove(e[r])}function F(t){return function(){q(this,t)}}function K(t){return function(){R(this,t)}}function W(t,e){return function(){(e.apply(this,arguments)?q:R)(this,t)}}function Y(){this.textContent=""}function X(t){return function(){this.textContent=t}}function $(t){return function(){var e=t.apply(this,arguments);this.textContent=null==e?"":e}}function V(){this.innerHTML=""}function H(t){return function(){this.innerHTML=t}}function J(t){return function(){var e=t.apply(this,arguments);this.innerHTML=null==e?"":e}}function Q(){this.nextSibling&&this.parentNode.appendChild(this)}function Z(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var e=this.ownerDocument,n=this.namespaceURI;return n===_&&e.documentElement.namespaceURI===_?e.createElement(t):e.createElementNS(n,t)}}function et(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function nt(t){var e=k(t);return(e.local?et:tt)(e)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function at(){var t=this.cloneNode(!0),e=this.parentNode;return e?e.insertBefore(t,this.nextSibling):t}function ut(t){return function(){var e=this.__on;if(e){for(var n,r=0,i=-1,o=e.length;r<o;++r)n=e[r],t.type&&n.type!==t.type||n.name!==t.name?e[++i]=n:this.removeEventListener(n.type,n.listener,n.options);++i?e.length=i:delete this.__on}}}function ct(t,e,n){return function(){var r,i=this.__on,o=function(t){return function(e){t.call(this,e,this.__data__)}}(e);if(i)for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=n),void(r.value=e);this.addEventListener(t.type,o,n),r={type:t.type,name:t.name,value:e,listener:o,options:n},i?i.push(r):this.__on=[r]}}function st(t,e,n){var r=N(t),i=r.CustomEvent;"function"==typeof i?i=new i(e,n):(i=r.document.createEvent("Event"),n?(i.initEvent(e,n.bubbles,n.cancelable),i.detail=n.detail):i.initEvent(e,!1,!1)),t.dispatchEvent(i)}function ht(t,e){return function(){return st(this,t,e)}}function lt(t,e){return function(){return st(this,t,e.apply(this,arguments))}}B.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var e=this._names.indexOf(t);e>=0&&(this._names.splice(e,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var dt=[null];function ft(t,e){this._groups=t,this._parents=e}function pt(){return new ft([[document.documentElement]],dt)}ft.prototype=pt.prototype={constructor:ft,select:function(t){"function"!=typeof t&&(t=o(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var a,u,c=e[i],s=c.length,h=r[i]=new Array(s),l=0;l<s;++l)(a=c[l])&&(u=t.call(a,a.__data__,l,c))&&("__data__"in a&&(u.__data__=a.__data__),h[l]=u);return new ft(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return null==(e=t.apply(this,arguments))?[]:Array.isArray(e)?e:Array.from(e);var e}}(t):u(t);for(var e=this._groups,n=e.length,r=[],i=[],o=0;o<n;++o)for(var a,c=e[o],s=c.length,h=0;h<s;++h)(a=c[h])&&(r.push(t.call(a,a.__data__,h,c)),i.push(a));return new ft(r,i)},selectChild:function(t){return this.select(null==t?l:function(t){return function(){return h.call(this.children,t)}}("function"==typeof t?t:s(t)))},selectChildren:function(t){return this.selectAll(null==t?f:function(t){return function(){return d.call(this.children,t)}}("function"==typeof t?t:s(t)))},filter:function(t){"function"!=typeof t&&(t=c(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o,a=e[i],u=a.length,s=r[i]=[],h=0;h<u;++h)(o=a[h])&&t.call(o,o.__data__,h,a)&&s.push(o);return new ft(r,this._parents)},data:function(t,e){if(!arguments.length)return Array.from(this,m);var n,r=e?v:g,i=this._parents,o=this._groups;"function"!=typeof t&&(n=t,t=function(){return n});for(var a=o.length,u=new Array(a),c=new Array(a),s=new Array(a),h=0;h<a;++h){var l=i[h],d=o[h],f=d.length,p=w(t.call(l,l&&l.__data__,h,i)),y=p.length,b=c[h]=new Array(y),_=u[h]=new Array(y);r(l,d,b,_,s[h]=new Array(f),p,e);for(var x,k,E=0,A=0;E<y;++E)if(x=b[E]){for(E>=A&&(A=E+1);!(k=_[A])&&++A<y;);x._next=k||null}}return(u=new ft(u,i))._enter=c,u._exit=s,u},enter:function(){return new ft(this._enter||this._groups.map(p),this._parents)},exit:function(){return new ft(this._exit||this._groups.map(p),this._parents)},join:function(t,e,n){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=e&&(i=e(i))&&(i=i.selection()),null==n?o.remove():n(o),r&&i?r.merge(i).order():i},merge:function(t){for(var e=t.selection?t.selection():t,n=this._groups,r=e._groups,i=n.length,o=r.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var s,h=n[c],l=r[c],d=h.length,f=u[c]=new Array(d),p=0;p<d;++p)(s=h[p]||l[p])&&(f[p]=s);for(;c<i;++c)u[c]=n[c];return new ft(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,e=-1,n=t.length;++e<n;)for(var r,i=t[e],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function e(e,n){return e&&n?t(e.__data__,n.__data__):!e-!n}t||(t=b);for(var n=this._groups,r=n.length,i=new Array(r),o=0;o<r;++o){for(var a,u=n[o],c=u.length,s=i[o]=new Array(c),h=0;h<c;++h)(a=u[h])&&(s[h]=a);s.sort(e)}return new ft(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r=t[e],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(const e of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var e=this._groups,n=0,r=e.length;n<r;++n)for(var i,o=e[n],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,e){var n=k(t);if(arguments.length<2){var r=this.node();return n.local?r.getAttributeNS(n.space,n.local):r.getAttribute(n)}return this.each((null==e?n.local?A:E:"function"==typeof e?n.local?G:M:n.local?L:S)(n,e))},style:function(t,e,n){return arguments.length>1?this.each((null==e?O:"function"==typeof e?z:j)(t,e,null==n?"":n)):C(this.node(),t)},property:function(t,e){return arguments.length>1?this.each((null==e?D:"function"==typeof e?I:P)(t,e)):this.node()[t]},classed:function(t,e){var n=U(t+"");if(arguments.length<2){for(var r=T(this.node()),i=-1,o=n.length;++i<o;)if(!r.contains(n[i]))return!1;return!0}return this.each(("function"==typeof e?W:e?F:K)(n,e))},text:function(t){return arguments.length?this.each(null==t?Y:("function"==typeof t?$:X)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?V:("function"==typeof t?J:H)(t)):this.node().innerHTML},raise:function(){return this.each(Q)},lower:function(){return this.each(Z)},append:function(t){var e="function"==typeof t?t:nt(t);return this.select((function(){return this.appendChild(e.apply(this,arguments))}))},insert:function(t,e){var n="function"==typeof t?t:nt(t),r=null==e?rt:"function"==typeof e?e:o(e);return this.select((function(){return this.insertBefore(n.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?at:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,e,n){var r,i,o=function(t){return t.trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");return n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),{type:t,name:e}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=e?ct:ut,r=0;r<a;++r)this.each(u(o[r],e,n));return this}var u=this.node().__on;if(u)for(var c,s=0,h=u.length;s<h;++s)for(r=0,c=u[s];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,e){return this.each(("function"==typeof e?lt:ht)(t,e))},[Symbol.iterator]:function*(){for(var t=this._groups,e=0,n=t.length;e<n;++e)for(var r,i=t[e],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};const yt=pt;var gt={value:()=>{}};function vt(){for(var t,e=0,n=arguments.length,r={};e<n;++e){if(!(t=arguments[e]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new mt(r)}function mt(t){this._=t}function wt(t,e){for(var n,r=0,i=t.length;r<i;++r)if((n=t[r]).name===e)return n.value}function bt(t,e,n){for(var r=0,i=t.length;r<i;++r)if(t[r].name===e){t[r]=gt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=n&&t.push({name:e,value:n}),t}mt.prototype=vt.prototype={constructor:mt,on:function(t,e){var n,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var e="",n=t.indexOf(".");if(n>=0&&(e=t.slice(n+1),t=t.slice(0,n)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=e&&"function"!=typeof e)throw new Error("invalid callback: "+e);for(;++a<u;)if(n=(t=o[a]).type)i[n]=bt(i[n],t.name,e);else if(null==e)for(n in i)i[n]=bt(i[n],t.name,null);return this}for(;++a<u;)if((n=(t=o[a]).type)&&(n=wt(i[n],t.name)))return n},copy:function(){var t={},e=this._;for(var n in e)t[n]=e[n].slice();return new mt(t)},call:function(t,e){if((n=arguments.length-2)>0)for(var n,r,i=new Array(n),o=0;o<n;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,n=(r=this._[t]).length;o<n;++o)r[o].value.apply(e,i)},apply:function(t,e,n){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(e,n)}};const _t=vt;var xt,kt,Et=0,At=0,St=0,Lt=1e3,Mt=0,Gt=0,Nt=0,Ot="object"==typeof performance&&performance.now?performance:Date,jt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function zt(){return Gt||(jt(Ct),Gt=Ot.now()+Nt)}function Ct(){Gt=0}function Dt(){this._call=this._time=this._next=null}function Pt(t,e,n){var r=new Dt;return r.restart(t,e,n),r}function It(){Gt=(Mt=Ot.now())+Nt,Et=At=0;try{!function(){zt(),++Et;for(var t,e=xt;e;)(t=Gt-e._time)>=0&&e._call.call(void 0,t),e=e._next;--Et}()}finally{Et=0,function(){for(var t,e,n=xt,r=1/0;n;)n._call?(r>n._time&&(r=n._time),t=n,n=n._next):(e=n._next,n._next=null,n=t?t._next=e:xt=e);kt=t,Tt(r)}(),Gt=0}}function Ut(){var t=Ot.now(),e=t-Mt;e>Lt&&(Nt-=e,Mt=t)}function Tt(t){Et||(At&&(At=clearTimeout(At)),t-Gt>24?(t<1/0&&(At=setTimeout(It,t-Ot.now()-Nt)),St&&(St=clearInterval(St))):(St||(Mt=Ot.now(),St=setInterval(Ut,Lt)),Et=1,jt(It)))}function Bt(t,e,n){var r=new Dt;return e=null==e?0:+e,r.restart((n=>{r.stop(),t(n+e)}),e,n),r}Dt.prototype=Pt.prototype={constructor:Dt,restart:function(t,e,n){if("function"!=typeof t)throw new TypeError("callback is not a function");n=(null==n?zt():+n)+(null==e?0:+e),this._next||kt===this||(kt?kt._next=this:xt=this,kt=this),this._call=t,this._time=n,Tt()},stop:function(){this._call&&(this._call=null,this._time=1/0,Tt())}};var qt=_t("start","end","cancel","interrupt"),Rt=[],Ft=0,Kt=3;function Wt(t,e,n,r,i,o){var a=t.__transition;if(a){if(n in a)return}else t.__transition={};!function(t,e,n){var r,i=t.__transition;function o(c){var s,h,l,d;if(1!==n.state)return u();for(s in i)if((d=i[s]).name===n.name){if(d.state===Kt)return Bt(o);4===d.state?(d.state=6,d.timer.stop(),d.on.call("interrupt",t,t.__data__,d.index,d.group),delete i[s]):+s<e&&(d.state=6,d.timer.stop(),d.on.call("cancel",t,t.__data__,d.index,d.group),delete i[s])}if(Bt((function(){n.state===Kt&&(n.state=4,n.timer.restart(a,n.delay,n.time),a(c))})),n.state=2,n.on.call("start",t,t.__data__,n.index,n.group),2===n.state){for(n.state=Kt,r=new Array(l=n.tween.length),s=0,h=-1;s<l;++s)(d=n.tween[s].value.call(t,t.__data__,n.index,n.group))&&(r[++h]=d);r.length=h+1}}function a(e){for(var i=e<n.duration?n.ease.call(null,e/n.duration):(n.timer.restart(u),n.state=5,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);5===n.state&&(n.on.call("end",t,t.__data__,n.index,n.group),u())}function u(){for(var r in n.state=6,n.timer.stop(),delete i[e],i)return;delete t.__transition}i[e]=n,n.timer=Pt((function(t){n.state=1,n.timer.restart(o,n.delay,n.time),n.delay<=t&&o(t-n.delay)}),0,n.time)}(t,n,{name:e,index:r,group:i,on:qt,tween:Rt,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Ft})}function Yt(t,e){var n=$t(t,e);if(n.state>Ft)throw new Error("too late; already scheduled");return n}function Xt(t,e){var n=$t(t,e);if(n.state>Kt)throw new Error("too late; already running");return n}function $t(t,e){var n=t.__transition;if(!n||!(n=n[e]))throw new Error("transition not found");return n}function Vt(t,e){var n,r,i,o=t.__transition,a=!0;if(o){for(i in e=null==e?null:e+"",o)(n=o[i]).name===e?(r=n.state>2&&n.state<5,n.state=6,n.timer.stop(),n.on.call(r?"interrupt":"cancel",t,t.__data__,n.index,n.group),delete o[i]):a=!1;a&&delete t.__transition}}function Ht(t,e){return t=+t,e=+e,function(n){return t*(1-n)+e*n}}var Jt,Qt=180/Math.PI,Zt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function te(t,e,n,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+e*e))&&(t/=a,e/=a),(c=t*n+e*r)&&(n-=t*c,r-=e*c),(u=Math.sqrt(n*n+r*r))&&(n/=u,r/=u,c/=u),t*r<e*n&&(t=-t,e=-e,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(e,t)*Qt,skewX:Math.atan(c)*Qt,scaleX:a,scaleY:u}}function ee(t,e,n,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,e,null,n);u.push({i:c-4,x:Ht(t,i)},{i:c-2,x:Ht(r,o)})}else(i||o)&&a.push("translate("+i+e+o+n)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,e,n,o){t!==e?(t-e>180?e+=360:e-t>180&&(t+=360),o.push({i:n.push(i(n)+"rotate(",null,r)-2,x:Ht(t,e)})):e&&n.push(i(n)+"rotate("+e+r)}(o.rotate,a.rotate,u,c),function(t,e,n,o){t!==e?o.push({i:n.push(i(n)+"skewX(",null,r)-2,x:Ht(t,e)}):e&&n.push(i(n)+"skewX("+e+r)}(o.skewX,a.skewX,u,c),function(t,e,n,r,o,a){if(t!==n||e!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Ht(t,n)},{i:u-2,x:Ht(e,r)})}else 1===n&&1===r||o.push(i(o)+"scale("+n+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var e,n=-1,r=c.length;++n<r;)u[(e=c[n]).i]=e.x(t);return u.join("")}}}var ne=ee((function(t){const e=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return e.isIdentity?Zt:te(e.a,e.b,e.c,e.d,e.e,e.f)}),"px, ","px)","deg)"),re=ee((function(t){return null==t?Zt:(Jt||(Jt=document.createElementNS("http://www.w3.org/2000/svg","g")),Jt.setAttribute("transform",t),(t=Jt.transform.baseVal.consolidate())?te((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Zt)}),", ",")",")");function ie(t,e){var n,r;return function(){var i=Xt(this,t),o=i.tween;if(o!==n)for(var a=0,u=(r=n=o).length;a<u;++a)if(r[a].name===e){(r=r.slice()).splice(a,1);break}i.tween=r}}function oe(t,e,n){var r,i;if("function"!=typeof n)throw new Error;return function(){var o=Xt(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:e,value:n},c=0,s=i.length;c<s;++c)if(i[c].name===e){i[c]=u;break}c===s&&i.push(u)}o.tween=i}}function ae(t,e,n){var r=t._id;return t.each((function(){var t=Xt(this,r);(t.value||(t.value={}))[e]=n.apply(this,arguments)})),function(t){return $t(t,r).value[e]}}function ue(t,e,n){t.prototype=e.prototype=n,n.constructor=t}function ce(t,e){var n=Object.create(t.prototype);for(var r in e)n[r]=e[r];return n}function se(){}var he=.7,le=1/he,de="\\s*([+-]?\\d+)\\s*",fe="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",pe="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",ye=/^#([0-9a-f]{3,8})$/,ge=new RegExp("^rgb\\("+[de,de,de]+"\\)$"),ve=new RegExp("^rgb\\("+[pe,pe,pe]+"\\)$"),me=new RegExp("^rgba\\("+[de,de,de,fe]+"\\)$"),we=new RegExp("^rgba\\("+[pe,pe,pe,fe]+"\\)$"),be=new RegExp("^hsl\\("+[fe,pe,pe]+"\\)$"),_e=new RegExp("^hsla\\("+[fe,pe,pe,fe]+"\\)$"),xe={aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074};function ke(){return this.rgb().formatHex()}function Ee(){return this.rgb().formatRgb()}function Ae(t){var e,n;return t=(t+"").trim().toLowerCase(),(e=ye.exec(t))?(n=e[1].length,e=parseInt(e[1],16),6===n?Se(e):3===n?new Ge(e>>8&15|e>>4&240,e>>4&15|240&e,(15&e)<<4|15&e,1):8===n?Le(e>>24&255,e>>16&255,e>>8&255,(255&e)/255):4===n?Le(e>>12&15|e>>8&240,e>>8&15|e>>4&240,e>>4&15|240&e,((15&e)<<4|15&e)/255):null):(e=ge.exec(t))?new Ge(e[1],e[2],e[3],1):(e=ve.exec(t))?new Ge(255*e[1]/100,255*e[2]/100,255*e[3]/100,1):(e=me.exec(t))?Le(e[1],e[2],e[3],e[4]):(e=we.exec(t))?Le(255*e[1]/100,255*e[2]/100,255*e[3]/100,e[4]):(e=be.exec(t))?ze(e[1],e[2]/100,e[3]/100,1):(e=_e.exec(t))?ze(e[1],e[2]/100,e[3]/100,e[4]):xe.hasOwnProperty(t)?Se(xe[t]):"transparent"===t?new Ge(NaN,NaN,NaN,0):null}function Se(t){return new Ge(t>>16&255,t>>8&255,255&t,1)}function Le(t,e,n,r){return r<=0&&(t=e=n=NaN),new Ge(t,e,n,r)}function Me(t,e,n,r){return 1===arguments.length?((i=t)instanceof se||(i=Ae(i)),i?new Ge((i=i.rgb()).r,i.g,i.b,i.opacity):new Ge):new Ge(t,e,n,null==r?1:r);var i}function Ge(t,e,n,r){this.r=+t,this.g=+e,this.b=+n,this.opacity=+r}function Ne(){return"#"+je(this.r)+je(this.g)+je(this.b)}function Oe(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function je(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function ze(t,e,n,r){return r<=0?t=e=n=NaN:n<=0||n>=1?t=e=NaN:e<=0&&(t=NaN),new De(t,e,n,r)}function Ce(t){if(t instanceof De)return new De(t.h,t.s,t.l,t.opacity);if(t instanceof se||(t=Ae(t)),!t)return new De;if(t instanceof De)return t;var e=(t=t.rgb()).r/255,n=t.g/255,r=t.b/255,i=Math.min(e,n,r),o=Math.max(e,n,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=e===o?(n-r)/u+6*(n<r):n===o?(r-e)/u+2:(e-n)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new De(a,u,c,t.opacity)}function De(t,e,n,r){this.h=+t,this.s=+e,this.l=+n,this.opacity=+r}function Pe(t,e,n){return 255*(t<60?e+(n-e)*t/60:t<180?n:t<240?e+(n-e)*(240-t)/60:e)}function Ie(t,e,n,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*e+(4-6*o+3*a)*n+(1+3*t+3*o-3*a)*r+a*i)/6}ue(se,Ae,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:ke,formatHex:ke,formatHsl:function(){return Ce(this).formatHsl()},formatRgb:Ee,toString:Ee}),ue(Ge,Me,ce(se,{brighter:function(t){return t=null==t?le:Math.pow(le,t),new Ge(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?he:Math.pow(he,t),new Ge(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Ne,formatHex:Ne,formatRgb:Oe,toString:Oe})),ue(De,(function(t,e,n,r){return 1===arguments.length?Ce(t):new De(t,e,n,null==r?1:r)}),ce(se,{brighter:function(t){return t=null==t?le:Math.pow(le,t),new De(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?he:Math.pow(he,t),new De(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),e=isNaN(t)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*e,i=2*n-r;return new Ge(Pe(t>=240?t-240:t+120,i,r),Pe(t,i,r),Pe(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ue=t=>()=>t;function Te(t,e){var n=e-t;return n?function(t,e){return function(n){return t+n*e}}(t,n):Ue(isNaN(t)?e:t)}const Be=function t(e){var n=function(t){return 1==(t=+t)?Te:function(e,n){return n-e?function(t,e,n){return t=Math.pow(t,n),e=Math.pow(e,n)-t,n=1/n,function(r){return Math.pow(t+r*e,n)}}(e,n,t):Ue(isNaN(e)?n:e)}}(e);function r(t,e){var r=n((t=Me(t)).r,(e=Me(e)).r),i=n(t.g,e.g),o=n(t.b,e.b),a=Te(t.opacity,e.opacity);return function(e){return t.r=r(e),t.g=i(e),t.b=o(e),t.opacity=a(e),t+""}}return r.gamma=t,r}(1);function qe(t){return function(e){var n,r,i=e.length,o=new Array(i),a=new Array(i),u=new Array(i);for(n=0;n<i;++n)r=Me(e[n]),o[n]=r.r||0,a[n]=r.g||0,u[n]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}qe((function(t){var e=t.length-1;return function(n){var r=n<=0?n=0:n>=1?(n=1,e-1):Math.floor(n*e),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<e-1?t[r+2]:2*o-i;return Ie((n-r/e)*e,a,i,o,u)}})),qe((function(t){var e=t.length;return function(n){var r=Math.floor(((n%=1)<0?++n:n)*e),i=t[(r+e-1)%e],o=t[r%e],a=t[(r+1)%e],u=t[(r+2)%e];return Ie((n-r/e)*e,i,o,a,u)}}));var Re=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Fe=new RegExp(Re.source,"g");function Ke(t,e){var n,r,i,o=Re.lastIndex=Fe.lastIndex=0,a=-1,u=[],c=[];for(t+="",e+="";(n=Re.exec(t))&&(r=Fe.exec(e));)(i=r.index)>o&&(i=e.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(n=n[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Ht(n,r)})),o=Fe.lastIndex;return o<e.length&&(i=e.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(e){return t(e)+""}}(c[0].x):function(t){return function(){return t}}(e):(e=c.length,function(t){for(var n,r=0;r<e;++r)u[(n=c[r]).i]=n.x(t);return u.join("")})}function We(t,e){var n;return("number"==typeof e?Ht:e instanceof Ae?Be:(n=Ae(e))?(e=n,Be):Ke)(t,e)}function Ye(t){return function(){this.removeAttribute(t)}}function Xe(t){return function(){this.removeAttributeNS(t.space,t.local)}}function $e(t,e,n){var r,i,o=n+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=e(r=a,n)}}function Ve(t,e,n){var r,i,o=n+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=e(r=a,n)}}function He(t,e,n){var r,i,o;return function(){var a,u,c=n(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=e(r=a,c));this.removeAttribute(t)}}function Je(t,e,n){var r,i,o;return function(){var a,u,c=n(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=e(r=a,c));this.removeAttributeNS(t.space,t.local)}}function Qe(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttributeNS(t.space,t.local,e.call(this,n))}}(t,i)),n}return i._value=e,i}function Ze(t,e){var n,r;function i(){var i=e.apply(this,arguments);return i!==r&&(n=(r=i)&&function(t,e){return function(n){this.setAttribute(t,e.call(this,n))}}(t,i)),n}return i._value=e,i}function tn(t,e){return function(){Yt(this,t).delay=+e.apply(this,arguments)}}function en(t,e){return e=+e,function(){Yt(this,t).delay=e}}function nn(t,e){return function(){Xt(this,t).duration=+e.apply(this,arguments)}}function rn(t,e){return e=+e,function(){Xt(this,t).duration=e}}var on=yt.prototype.constructor;function an(t){return function(){this.style.removeProperty(t)}}var un=0;function cn(t,e,n,r){this._groups=t,this._parents=e,this._name=n,this._id=r}function sn(){return++un}var hn=yt.prototype;cn.prototype=function(t){return yt().transition(t)}.prototype={constructor:cn,select:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=o(t));for(var r=this._groups,i=r.length,a=new Array(i),u=0;u<i;++u)for(var c,s,h=r[u],l=h.length,d=a[u]=new Array(l),f=0;f<l;++f)(c=h[f])&&(s=t.call(c,c.__data__,f,h))&&("__data__"in c&&(s.__data__=c.__data__),d[f]=s,Wt(d[f],e,n,f,d,$t(c,n)));return new cn(a,this._parents,e,n)},selectAll:function(t){var e=this._name,n=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],c=0;c<i;++c)for(var s,h=r[c],l=h.length,d=0;d<l;++d)if(s=h[d]){for(var f,p=t.call(s,s.__data__,d,h),y=$t(s,n),g=0,v=p.length;g<v;++g)(f=p[g])&&Wt(f,e,n,g,p,y);o.push(p),a.push(s)}return new cn(o,a,e,n)},selectChild:hn.selectChild,selectChildren:hn.selectChildren,filter:function(t){"function"!=typeof t&&(t=c(t));for(var e=this._groups,n=e.length,r=new Array(n),i=0;i<n;++i)for(var o,a=e[i],u=a.length,s=r[i]=[],h=0;h<u;++h)(o=a[h])&&t.call(o,o.__data__,h,a)&&s.push(o);return new cn(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var e=this._groups,n=t._groups,r=e.length,i=n.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,s=e[u],h=n[u],l=s.length,d=a[u]=new Array(l),f=0;f<l;++f)(c=s[f]||h[f])&&(d[f]=c);for(;u<r;++u)a[u]=e[u];return new cn(a,this._parents,this._name,this._id)},selection:function(){return new on(this._groups,this._parents)},transition:function(){for(var t=this._name,e=this._id,n=sn(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,s=0;s<c;++s)if(a=u[s]){var h=$t(a,e);Wt(a,t,n,s,u,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new cn(r,this._parents,t,n)},call:hn.call,nodes:hn.nodes,node:hn.node,size:hn.size,empty:hn.empty,each:hn.each,on:function(t,e){var n=this._id;return arguments.length<2?$t(this.node(),n).on.on(t):this.each(function(t,e,n){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||"start"===t}))}(e)?Yt:Xt;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(e,n),a.on=i}}(n,t,e))},attr:function(t,e){var n=k(t),r="transform"===n?re:We;return this.attrTween(t,"function"==typeof e?(n.local?Je:He)(n,r,ae(this,"attr."+t,e)):null==e?(n.local?Xe:Ye)(n):(n.local?Ve:$e)(n,r,e))},attrTween:function(t,e){var n="attr."+t;if(arguments.length<2)return(n=this.tween(n))&&n._value;if(null==e)return this.tween(n,null);if("function"!=typeof e)throw new Error;var r=k(t);return this.tween(n,(r.local?Qe:Ze)(r,e))},style:function(t,e,n){var r="transform"==(t+="")?ne:We;return null==e?this.styleTween(t,function(t,e){var n,r,i;return function(){var o=C(this,t),a=(this.style.removeProperty(t),C(this,t));return o===a?null:o===n&&a===r?i:i=e(n=o,r=a)}}(t,r)).on("end.style."+t,an(t)):"function"==typeof e?this.styleTween(t,function(t,e,n){var r,i,o;return function(){var a=C(this,t),u=n(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=C(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=e(r=a,u))}}(t,r,ae(this,"style."+t,e))).each(function(t,e){var n,r,i,o,a="style."+e,u="end."+a;return function(){var c=Xt(this,t),s=c.on,h=null==c.value[a]?o||(o=an(e)):void 0;s===n&&i===h||(r=(n=s).copy()).on(u,i=h),c.on=r}}(this._id,t)):this.styleTween(t,function(t,e,n){var r,i,o=n+"";return function(){var a=C(this,t);return a===o?null:a===r?i:i=e(r=a,n)}}(t,r,e),n).on("end.style."+t,null)},styleTween:function(t,e,n){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==e)return this.tween(r,null);if("function"!=typeof e)throw new Error;return this.tween(r,function(t,e,n){var r,i;function o(){var o=e.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,e,n){return function(r){this.style.setProperty(t,e.call(this,r),n)}}(t,o,n)),r}return o._value=e,o}(t,e,null==n?"":n))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var e=t(this);this.textContent=null==e?"":e}}(ae(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var e="text";if(arguments.length<1)return(e=this.tween(e))&&e._value;if(null==t)return this.tween(e,null);if("function"!=typeof t)throw new Error;return this.tween(e,function(t){var e,n;function r(){var r=t.apply(this,arguments);return r!==n&&(e=(n=r)&&function(t){return function(e){this.textContent=t.call(this,e)}}(r)),e}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var e=this.parentNode;for(var n in this.__transition)if(+n!==t)return;e&&e.removeChild(this)}}(this._id))},tween:function(t,e){var n=this._id;if(t+="",arguments.length<2){for(var r,i=$t(this.node(),n).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==e?ie:oe)(n,t,e))},delay:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?tn:en)(e,t)):$t(this.node(),e).delay},duration:function(t){var e=this._id;return arguments.length?this.each(("function"==typeof t?nn:rn)(e,t)):$t(this.node(),e).duration},ease:function(t){var e=this._id;return arguments.length?this.each(function(t,e){if("function"!=typeof e)throw new Error;return function(){Xt(this,t).ease=e}}(e,t)):$t(this.node(),e).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,e){return function(){var n=e.apply(this,arguments);if("function"!=typeof n)throw new Error;Xt(this,t).ease=n}}(this._id,t))},end:function(){var t,e,n=this,r=n._id,i=n.size();return new Promise((function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};n.each((function(){var n=Xt(this,r),i=n.on;i!==t&&((e=(t=i).copy())._.cancel.push(u),e._.interrupt.push(u),e._.end.push(c)),n.on=e})),0===i&&o()}))},[Symbol.iterator]:hn[Symbol.iterator]};var ln={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function dn(t,e){for(var n;!(n=t.__transition)||!(n=n[e]);)if(!(t=t.parentNode))throw new Error(`transition ${e} not found`);return n}yt.prototype.interrupt=function(t){return this.each((function(){Vt(this,t)}))},yt.prototype.transition=function(t){var e,n;t instanceof cn?(e=t._id,t=t._name):(e=sn(),(n=ln).time=zt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,s=0;s<c;++s)(a=u[s])&&Wt(a,t,e,s,u,n||dn(a,e));return new cn(r,this._parents,t,e)};const{abs:fn,max:pn,min:yn}=Math;function gn(t){return{type:t}}function vn(t){return"string"==typeof t?new ft([[document.querySelector(t)]],[document.documentElement]):new ft([[t]],dt)}function mn(t,e){if(t=function(t){let e;for(;e=t.sourceEvent;)t=e;return t}(t),void 0===e&&(e=t.currentTarget),e){var n=e.ownerSVGElement||e;if(n.createSVGPoint){var r=n.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(e.getScreenCTM().inverse())).x,r.y]}if(e.getBoundingClientRect){var i=e.getBoundingClientRect();return[t.clientX-i.left-e.clientLeft,t.clientY-i.top-e.clientTop]}}return[t.pageX,t.pageY]}["w","e"].map(gn),["n","s"].map(gn),["n","w","e","s","nw","ne","sw","se"].map(gn);const wn={passive:!1},bn={capture:!0,passive:!1};function _n(t){t.stopImmediatePropagation()}function xn(t){t.preventDefault(),t.stopImmediatePropagation()}function kn(t){var e=t.document.documentElement,n=vn(t).on("dragstart.drag",xn,bn);"onselectstart"in e?n.on("selectstart.drag",xn,bn):(e.__noselect=e.style.MozUserSelect,e.style.MozUserSelect="none")}function En(t,e){var n=t.document.documentElement,r=vn(t).on("dragstart.drag",null);e&&(r.on("click.drag",xn,bn),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in n?r.on("selectstart.drag",null):(n.style.MozUserSelect=n.__noselect,delete n.__noselect)}const An=t=>()=>t;function Sn(t,{sourceEvent:e,subject:n,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:s,dispatch:h}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},subject:{value:n,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:s,enumerable:!0,configurable:!0},_:{value:h}})}function Ln(t){return!t.ctrlKey&&!t.button}function Mn(){return this.parentNode}function Gn(t,e){return null==e?{x:t.x,y:t.y}:e}function Nn(){return navigator.maxTouchPoints||"ontouchstart"in this}function On(t){return function(){return t}}function jn(t){return 1e-6*(t()-.5)}function zn(t){return t.index}function Cn(t,e){var n=t.get(e);if(!n)throw new Error("node not found: "+e);return n}function Dn(t,e,n,r){if(isNaN(e)||isNaN(n))return t;var i,o,a,u,c,s,h,l,d,f=t._root,p={data:r},y=t._x0,g=t._y0,v=t._x1,m=t._y1;if(!f)return t._root=p,t;for(;f.length;)if((s=e>=(o=(y+v)/2))?y=o:v=o,(h=n>=(a=(g+m)/2))?g=a:m=a,i=f,!(f=f[l=h<<1|s]))return i[l]=p,t;if(u=+t._x.call(null,f.data),c=+t._y.call(null,f.data),e===u&&n===c)return p.next=f,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(s=e>=(o=(y+v)/2))?y=o:v=o,(h=n>=(a=(g+m)/2))?g=a:m=a}while((l=h<<1|s)==(d=(c>=a)<<1|u>=o));return i[d]=f,i[l]=p,t}function Pn(t,e,n,r,i){this.node=t,this.x0=e,this.y0=n,this.x1=r,this.y1=i}function In(t){return t[0]}function Un(t){return t[1]}function Tn(t,e,n){var r=new Bn(null==e?In:e,null==n?Un:n,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Bn(t,e,n,r,i,o){this._x=t,this._y=e,this._x0=n,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function qn(t){for(var e={data:t.data},n=e;t=t.next;)n=n.next={data:t.data};return e}Sn.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var Rn=Tn.prototype=Bn.prototype;Rn.copy=function(){var t,e,n=new Bn(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return n;if(!r.length)return n._root=qn(r),n;for(t=[{source:r,target:n._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(e=r.source[i])&&(e.length?t.push({source:e,target:r.target[i]=new Array(4)}):r.target[i]=qn(e));return n},Rn.add=function(t){const e=+this._x.call(null,t),n=+this._y.call(null,t);return Dn(this.cover(e,n),e,n,t)},Rn.addAll=function(t){var e,n,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,s=1/0,h=-1/0,l=-1/0;for(n=0;n<o;++n)isNaN(r=+this._x.call(null,e=t[n]))||isNaN(i=+this._y.call(null,e))||(a[n]=r,u[n]=i,r<c&&(c=r),r>h&&(h=r),i<s&&(s=i),i>l&&(l=i));if(c>h||s>l)return this;for(this.cover(c,s).cover(h,l),n=0;n<o;++n)Dn(this,a[n],u[n],t[n]);return this},Rn.cover=function(t,e){if(isNaN(t=+t)||isNaN(e=+e))return this;var n=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(n))i=(n=Math.floor(t))+1,o=(r=Math.floor(e))+1;else{for(var a,u,c=i-n||1,s=this._root;n>t||t>=i||r>e||e>=o;)switch(u=(e<r)<<1|t<n,(a=new Array(4))[u]=s,s=a,c*=2,u){case 0:i=n+c,o=r+c;break;case 1:n=i-c,o=r+c;break;case 2:i=n+c,r=o-c;break;case 3:n=i-c,r=o-c}this._root&&this._root.length&&(this._root=s)}return this._x0=n,this._y0=r,this._x1=i,this._y1=o,this},Rn.data=function(){var t=[];return this.visit((function(e){if(!e.length)do{t.push(e.data)}while(e=e.next)})),t},Rn.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Rn.find=function(t,e,n){var r,i,o,a,u,c,s,h=this._x0,l=this._y0,d=this._x1,f=this._y1,p=[],y=this._root;for(y&&p.push(new Pn(y,h,l,d,f)),null==n?n=1/0:(h=t-n,l=e-n,d=t+n,f=e+n,n*=n);c=p.pop();)if(!(!(y=c.node)||(i=c.x0)>d||(o=c.y0)>f||(a=c.x1)<h||(u=c.y1)<l))if(y.length){var g=(i+a)/2,v=(o+u)/2;p.push(new Pn(y[3],g,v,a,u),new Pn(y[2],i,v,g,u),new Pn(y[1],g,o,a,v),new Pn(y[0],i,o,g,v)),(s=(e>=v)<<1|t>=g)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-s],p[p.length-1-s]=c)}else{var m=t-+this._x.call(null,y.data),w=e-+this._y.call(null,y.data),b=m*m+w*w;if(b<n){var _=Math.sqrt(n=b);h=t-_,l=e-_,d=t+_,f=e+_,r=y.data}}return r},Rn.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var e,n,r,i,o,a,u,c,s,h,l,d,f=this._root,p=this._x0,y=this._y0,g=this._x1,v=this._y1;if(!f)return this;if(f.length)for(;;){if((s=o>=(u=(p+g)/2))?p=u:g=u,(h=a>=(c=(y+v)/2))?y=c:v=c,e=f,!(f=f[l=h<<1|s]))return this;if(!f.length)break;(e[l+1&3]||e[l+2&3]||e[l+3&3])&&(n=e,d=l)}for(;f.data!==t;)if(r=f,!(f=f.next))return this;return(i=f.next)&&delete f.next,r?(i?r.next=i:delete r.next,this):e?(i?e[l]=i:delete e[l],(f=e[0]||e[1]||e[2]||e[3])&&f===(e[3]||e[2]||e[1]||e[0])&&!f.length&&(n?n[d]=f:this._root=f),this):(this._root=i,this)},Rn.removeAll=function(t){for(var e=0,n=t.length;e<n;++e)this.remove(t[e]);return this},Rn.root=function(){return this._root},Rn.size=function(){var t=0;return this.visit((function(e){if(!e.length)do{++t}while(e=e.next)})),t},Rn.visit=function(t){var e,n,r,i,o,a,u=[],c=this._root;for(c&&u.push(new Pn(c,this._x0,this._y0,this._x1,this._y1));e=u.pop();)if(!t(c=e.node,r=e.x0,i=e.y0,o=e.x1,a=e.y1)&&c.length){var s=(r+o)/2,h=(i+a)/2;(n=c[3])&&u.push(new Pn(n,s,h,o,a)),(n=c[2])&&u.push(new Pn(n,r,h,s,a)),(n=c[1])&&u.push(new Pn(n,s,i,o,h)),(n=c[0])&&u.push(new Pn(n,r,i,s,h))}return this},Rn.visitAfter=function(t){var e,n=[],r=[];for(this._root&&n.push(new Pn(this._root,this._x0,this._y0,this._x1,this._y1));e=n.pop();){var i=e.node;if(i.length){var o,a=e.x0,u=e.y0,c=e.x1,s=e.y1,h=(a+c)/2,l=(u+s)/2;(o=i[0])&&n.push(new Pn(o,a,u,h,l)),(o=i[1])&&n.push(new Pn(o,h,u,c,l)),(o=i[2])&&n.push(new Pn(o,a,l,h,s)),(o=i[3])&&n.push(new Pn(o,h,l,c,s))}r.push(e)}for(;e=r.pop();)t(e.node,e.x0,e.y0,e.x1,e.y1);return this},Rn.x=function(t){return arguments.length?(this._x=t,this):this._x},Rn.y=function(t){return arguments.length?(this._y=t,this):this._y};const Fn=4294967296;function Kn(t){return t.x}function Wn(t){return t.y}var Yn=Math.PI*(3-Math.sqrt(5));function Xn(t){return((t=Math.exp(t))+1/t)/2}const $n=function t(e,n,r){function i(t,i){var o,a,u=t[0],c=t[1],s=t[2],h=i[0],l=i[1],d=i[2],f=h-u,p=l-c,y=f*f+p*p;if(y<1e-12)a=Math.log(d/s)/e,o=function(t){return[u+t*f,c+t*p,s*Math.exp(e*t*a)]};else{var g=Math.sqrt(y),v=(d*d-s*s+r*y)/(2*s*n*g),m=(d*d-s*s-r*y)/(2*d*n*g),w=Math.log(Math.sqrt(v*v+1)-v),b=Math.log(Math.sqrt(m*m+1)-m);a=(b-w)/e,o=function(t){var r,i=t*a,o=Xn(w),h=s/(n*g)*(o*(r=e*i+w,((r=Math.exp(2*r))-1)/(r+1))-function(t){return((t=Math.exp(t))-1/t)/2}(w));return[u+h*f,c+h*p,s*o/Xn(e*i+w)]}}return o.duration=1e3*a*e/Math.SQRT2,o}return i.rho=function(e){var n=Math.max(.001,+e),r=n*n;return t(n,r,r*r)},i}(Math.SQRT2,2,4),Vn=t=>()=>t;function Hn(t,{sourceEvent:e,target:n,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:e,enumerable:!0,configurable:!0},target:{value:n,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function Jn(t,e,n){this.k=t,this.x=e,this.y=n}Jn.prototype={constructor:Jn,scale:function(t){return 1===t?this:new Jn(this.k*t,this.x,this.y)},translate:function(t,e){return 0===t&0===e?this:new Jn(this.k,this.x+this.k*t,this.y+this.k*e)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var Qn=new Jn(1,0,0);function Zn(t){t.stopImmediatePropagation()}function tr(t){t.preventDefault(),t.stopImmediatePropagation()}function er(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function nr(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function rr(){return this.__zoom||Qn}function ir(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function or(){return navigator.maxTouchPoints||"ontouchstart"in this}function ar(t,e,n){var r=t.invertX(e[0][0])-n[0][0],i=t.invertX(e[1][0])-n[1][0],o=t.invertY(e[0][1])-n[0][1],a=t.invertY(e[1][1])-n[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}function ur(t){return ur="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ur(t)}function cr(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,lr(r.key),r)}}function sr(t,e,n){return e&&cr(t.prototype,e),n&&cr(t,n),Object.defineProperty(t,"prototype",{writable:!1}),t}function hr(t,e,n){return(e=lr(e))in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function lr(t){var e=function(t,e){if("object"!=ur(t)||!t)return t;var n=t[Symbol.toPrimitive];if(void 0!==n){var r=n.call(t,"string");if("object"!=ur(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(t)}(t);return"symbol"==ur(e)?e:e+""}Jn.prototype;var dr=sr((function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}));hr(dr,"highlightedNodes",[]),hr(dr,"focusMode",!1),hr(dr,"position",{x:0,y:0,zoom:1}),window.addEventListener("DOMContentLoaded",(function(){document.getElementById("view-save").addEventListener("click",(function(){var t=new URL(window.location),e=Array.from(document.querySelectorAll("#types-form input:checked")).map((function(t){return t.name})),n=Array.from(document.querySelectorAll("#tags-form input:checked")).map((function(t){return t.name})),r=document.getElementById("focus-input").value;e.length>0&&t.searchParams.set("filters",e.join("-")),n.length>0&&t.searchParams.set("tags",n.join("-")),document.querySelector("#focus-check:checked")&&t.searchParams.set("focus",r),window.location.replace(t)}))}));const fr="undefined"!=typeof navigator&&navigator.userAgent.toLowerCase().indexOf("firefox")>0;function pr(t,e,n,r){t.addEventListener?t.addEventListener(e,n,r):t.attachEvent&&t.attachEvent("on".concat(e),n)}function yr(t,e,n,r){t.removeEventListener?t.removeEventListener(e,n,r):t.detachEvent&&t.detachEvent("on".concat(e),n)}function gr(t,e){const n=e.slice(0,e.length-1);for(let e=0;e<n.length;e++)n[e]=t[n[e].toLowerCase()];return n}function vr(t){"string"!=typeof t&&(t="");const e=(t=t.replace(/\s/g,"")).split(",");let n=e.lastIndexOf("");for(;n>=0;)e[n-1]+=",",e.splice(n,1),n=e.lastIndexOf("");return e}const mr={backspace:8,"⌫":8,tab:9,clear:12,enter:13,"↩":13,return:13,esc:27,escape:27,space:32,left:37,up:38,right:39,down:40,del:46,delete:46,ins:45,insert:45,home:36,end:35,pageup:33,pagedown:34,capslock:20,num_0:96,num_1:97,num_2:98,num_3:99,num_4:100,num_5:101,num_6:102,num_7:103,num_8:104,num_9:105,num_multiply:106,num_add:107,num_enter:108,num_subtract:109,num_decimal:110,num_divide:111,"⇪":20,",":188,".":190,"/":191,"`":192,"-":fr?173:189,"=":fr?61:187,";":fr?59:186,"'":222,"[":219,"]":221,"\\":220},wr={"⇧":16,shift:16,"⌥":18,alt:18,option:18,"⌃":17,ctrl:17,control:17,"⌘":91,cmd:91,command:91},br={16:"shiftKey",18:"altKey",17:"ctrlKey",91:"metaKey",shiftKey:16,ctrlKey:17,altKey:18,metaKey:91},_r={16:!1,18:!1,17:!1,91:!1},xr={};for(let t=1;t<20;t++)mr["f".concat(t)]=111+t;let kr=[],Er=null,Ar="all";const Sr=new Map,Lr=t=>mr[t.toLowerCase()]||wr[t.toLowerCase()]||t.toUpperCase().charCodeAt(0);function Mr(t){Ar=t||"all"}function Gr(){return Ar||"all"}function Nr(t){if(void 0===t)Object.keys(xr).forEach((t=>{Array.isArray(xr[t])&&xr[t].forEach((t=>Or(t))),delete xr[t]})),Dr(null);else if(Array.isArray(t))t.forEach((t=>{t.key&&Or(t)}));else if("object"==typeof t)t.key&&Or(t);else if("string"==typeof t){for(var e=arguments.length,n=new Array(e>1?e-1:0),r=1;r<e;r++)n[r-1]=arguments[r];let[i,o]=n;"function"==typeof i&&(o=i,i=""),Or({key:t,scope:i,method:o,splitKey:"+"})}}const Or=t=>{let{key:e,scope:n,method:r,splitKey:i="+"}=t;vr(e).forEach((t=>{const e=t.split(i),o=e.length,a=e[o-1],u="*"===a?"*":Lr(a);if(!xr[u])return;n||(n=Gr());const c=o>1?gr(wr,e):[],s=[];xr[u]=xr[u].filter((t=>{const e=(!r||t.method===r)&&t.scope===n&&function(t,e){const n=t.length>=e.length?t:e,r=t.length>=e.length?e:t;let i=!0;for(let t=0;t<n.length;t++)-1===r.indexOf(n[t])&&(i=!1);return i}(t.mods,c);return e&&s.push(t.element),!e})),s.forEach((t=>Dr(t)))}))};function jr(t,e,n,r){if(e.element!==r)return;let i;if(e.scope===n||"all"===e.scope){i=e.mods.length>0;for(const t in _r)Object.prototype.hasOwnProperty.call(_r,t)&&(!_r[t]&&e.mods.indexOf(+t)>-1||_r[t]&&-1===e.mods.indexOf(+t))&&(i=!1);(0!==e.mods.length||_r[16]||_r[18]||_r[17]||_r[91])&&!i&&"*"!==e.shortcut||(e.keys=[],e.keys=e.keys.concat(kr),!1===e.method(t,e)&&(t.preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation&&t.stopPropagation(),t.cancelBubble&&(t.cancelBubble=!0)))}}function zr(t,e){const n=xr["*"];let r=t.keyCode||t.which||t.charCode;if(!Cr.filter.call(this,t))return;if(93!==r&&224!==r||(r=91),-1===kr.indexOf(r)&&229!==r&&kr.push(r),["ctrlKey","altKey","shiftKey","metaKey"].forEach((e=>{const n=br[e];t[e]&&-1===kr.indexOf(n)?kr.push(n):!t[e]&&kr.indexOf(n)>-1?kr.splice(kr.indexOf(n),1):"metaKey"===e&&t[e]&&3===kr.length&&(t.ctrlKey||t.shiftKey||t.altKey||(kr=kr.slice(kr.indexOf(n))))})),r in _r){_r[r]=!0;for(const t in wr)wr[t]===r&&(Cr[t]=!0);if(!n)return}for(const e in _r)Object.prototype.hasOwnProperty.call(_r,e)&&(_r[e]=t[br[e]]);t.getModifierState&&(!t.altKey||t.ctrlKey)&&t.getModifierState("AltGraph")&&(-1===kr.indexOf(17)&&kr.push(17),-1===kr.indexOf(18)&&kr.push(18),_r[17]=!0,_r[18]=!0);const i=Gr();if(n)for(let r=0;r<n.length;r++)n[r].scope===i&&("keydown"===t.type&&n[r].keydown||"keyup"===t.type&&n[r].keyup)&&jr(t,n[r],i,e);if(!(r in xr))return;const o=xr[r],a=o.length;for(let n=0;n<a;n++)if(("keydown"===t.type&&o[n].keydown||"keyup"===t.type&&o[n].keyup)&&o[n].key){const r=o[n],{splitKey:a}=r,u=r.key.split(a),c=[];for(let t=0;t<u.length;t++)c.push(Lr(u[t]));c.sort().join("")===kr.sort().join("")&&jr(t,r,i,e)}}function Cr(t,e,n){kr=[];const r=vr(t);let i=[],o="all",a=document,u=0,c=!1,s=!0,h="+",l=!1,d=!1;for(void 0===n&&"function"==typeof e&&(n=e),"[object Object]"===Object.prototype.toString.call(e)&&(e.scope&&(o=e.scope),e.element&&(a=e.element),e.keyup&&(c=e.keyup),void 0!==e.keydown&&(s=e.keydown),void 0!==e.capture&&(l=e.capture),"string"==typeof e.splitKey&&(h=e.splitKey),!0===e.single&&(d=!0)),"string"==typeof e&&(o=e),d&&Nr(t,o);u<r.length;u++)i=[],(t=r[u].split(h)).length>1&&(i=gr(wr,t)),(t="*"===(t=t[t.length-1])?"*":Lr(t))in xr||(xr[t]=[]),xr[t].push({keyup:c,keydown:s,scope:o,mods:i,shortcut:r[u],method:n,key:r[u],splitKey:h,element:a});if(void 0!==a&&window){if(!Sr.has(a)){const t=function(){return zr(arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.event,a)},e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.event;zr(t,a),function(t){let e=t.keyCode||t.which||t.charCode;const n=kr.indexOf(e);if(n>=0&&kr.splice(n,1),t.key&&"meta"===t.key.toLowerCase()&&kr.splice(0,kr.length),93!==e&&224!==e||(e=91),e in _r){_r[e]=!1;for(const t in wr)wr[t]===e&&(Cr[t]=!1)}}(t)};Sr.set(a,{keydownListener:t,keyupListenr:e,capture:l}),pr(a,"keydown",t,l),pr(a,"keyup",e,l)}if(!Er){const t=()=>{kr=[]};Er={listener:t,capture:l},pr(window,"focus",t,l)}}}function Dr(t){const e=Object.values(xr).flat();if(e.findIndex((e=>{let{element:n}=e;return n===t}))<0){const{keydownListener:e,keyupListenr:n,capture:r}=Sr.get(t)||{};e&&n&&(yr(t,"keyup",n,r),yr(t,"keydown",e,r),Sr.delete(t))}if((e.length<=0||Sr.size<=0)&&(Object.keys(Sr).forEach((t=>{const{keydownListener:e,keyupListenr:n,capture:r}=Sr.get(t)||{};e&&n&&(yr(t,"keyup",n,r),yr(t,"keydown",e,r),Sr.delete(t))})),Sr.clear(),Object.keys(xr).forEach((t=>delete xr[t])),Er)){const{listener:t,capture:e}=Er;yr(window,"focus",t,e),Er=null}}const Pr={getPressedKeyString:function(){return kr.map((t=>{return e=t,Object.keys(mr).find((t=>mr[t]===e))||(t=>Object.keys(wr).find((e=>wr[e]===t)))(t)||String.fromCharCode(t);var e}))},setScope:Mr,getScope:Gr,deleteScope:function(t,e){let n,r;t||(t=Gr());for(const e in xr)if(Object.prototype.hasOwnProperty.call(xr,e))for(n=xr[e],r=0;r<n.length;)n[r].scope===t?n.splice(r,1).forEach((t=>{let{element:e}=t;return Dr(e)})):r++;Gr()===t&&Mr(e||"all")},getPressedKeyCodes:function(){return kr.slice(0)},getAllKeyCodes:function(){const t=[];return Object.keys(xr).forEach((e=>{xr[e].forEach((e=>{let{key:n,scope:r,mods:i,shortcut:o}=e;t.push({scope:r,shortcut:o,mods:i,keys:n.split("+").map((t=>Lr(t)))})}))})),t},isPressed:function(t){return"string"==typeof t&&(t=Lr(t)),-1!==kr.indexOf(t)},filter:function(t){const e=t.target||t.srcElement,{tagName:n}=e;let r=!0;const i="INPUT"===n&&!["checkbox","radio","range","button","file","reset","submit","color"].includes(e.type);return(e.isContentEditable||(i||"TEXTAREA"===n||"SELECT"===n)&&!e.readOnly)&&(r=!1),r},trigger:function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"all";Object.keys(xr).forEach((n=>{xr[n].filter((n=>n.scope===e&&n.shortcut===t)).forEach((t=>{t&&t.method&&t.method()}))}))},unbind:Nr,keyMap:mr,modifier:wr,modifierMap:br};for(const t in Pr)Object.prototype.hasOwnProperty.call(Pr,t)&&(Cr[t]=Pr[t]);if("undefined"!=typeof window){const t=window.hotkeys;Cr.noConflict=e=>(e&&window.hotkeys===Cr&&(window.hotkeys=t),Cr),window.hotkeys=Cr}const Ir={notFiltered:0,filteredByTimeline:1,filteredByFocus:2,filteredByTag:3,filteredByType:4};var Ur=[];data.nodes=data.nodes.map((function(t){return Ur.push(t.id),t.hidden=Ir.notFiltered,t.isolated=!1,t.highlighted=!1,t}));var Tr=vn("#graph-canvas"),Br=Tr.append("svg"),qr=Tr.node().getBoundingClientRect(),Rr=qr.width,Fr=qr.height;Br.attr("viewBox",[0,0,Rr,Fr]);var Kr=function(t){var e,n=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,c=Pt(l),s=_t("tick","end"),h=function(){let t=1;return()=>(t=(1664525*t+1013904223)%Fn)/Fn}();function l(){d(),s.call("tick",e),n<r&&(c.stop(),s.call("end",e))}function d(r){var c,s,h=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(n+=(o-n)*i,u.forEach((function(t){t(n)})),c=0;c<h;++c)null==(s=t[c]).fx?s.x+=s.vx*=a:(s.x=s.fx,s.vx=0),null==s.fy?s.y+=s.vy*=a:(s.y=s.fy,s.vy=0);return e}function f(){for(var e,n=0,r=t.length;n<r;++n){if((e=t[n]).index=n,null!=e.fx&&(e.x=e.fx),null!=e.fy&&(e.y=e.fy),isNaN(e.x)||isNaN(e.y)){var i=10*Math.sqrt(.5+n),o=n*Yn;e.x=i*Math.cos(o),e.y=i*Math.sin(o)}(isNaN(e.vx)||isNaN(e.vy))&&(e.vx=e.vy=0)}}function p(e){return e.initialize&&e.initialize(t,h),e}return null==t&&(t=[]),f(),e={tick:d,restart:function(){return c.restart(l),e},stop:function(){return c.stop(),e},nodes:function(n){return arguments.length?(t=n,f(),u.forEach(p),e):t},alpha:function(t){return arguments.length?(n=+t,e):n},alphaMin:function(t){return arguments.length?(r=+t,e):r},alphaDecay:function(t){return arguments.length?(i=+t,e):+i},alphaTarget:function(t){return arguments.length?(o=+t,e):o},velocityDecay:function(t){return arguments.length?(a=1-t,e):1-a},randomSource:function(t){return arguments.length?(h=t,u.forEach(p),e):h},force:function(t,n){return arguments.length>1?(null==n?u.delete(t):u.set(t,p(n)),e):u.get(t)},find:function(e,n,r){var i,o,a,u,c,s=0,h=t.length;for(null==r?r=1/0:r*=r,s=0;s<h;++s)(a=(i=e-(u=t[s]).x)*i+(o=n-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,n){return arguments.length>1?(s.on(t,n),e):s.on(t)}}}(data.nodes).force("link",function(t){var e,n,r,i,o,a,u=zn,c=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},s=On(30),h=1;function l(r){for(var i=0,u=t.length;i<h;++i)for(var c,s,l,d,f,p,y,g=0;g<u;++g)s=(c=t[g]).source,d=(l=c.target).x+l.vx-s.x-s.vx||jn(a),f=l.y+l.vy-s.y-s.vy||jn(a),d*=p=((p=Math.sqrt(d*d+f*f))-n[g])/p*r*e[g],f*=p,l.vx-=d*(y=o[g]),l.vy-=f*y,s.vx+=d*(y=1-y),s.vy+=f*y}function d(){if(r){var a,c,s=r.length,h=t.length,l=new Map(r.map(((t,e)=>[u(t,e,r),t])));for(a=0,i=new Array(s);a<h;++a)(c=t[a]).index=a,"object"!=typeof c.source&&(c.source=Cn(l,c.source)),"object"!=typeof c.target&&(c.target=Cn(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(a=0,o=new Array(h);a<h;++a)c=t[a],o[a]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);e=new Array(h),f(),n=new Array(h),p()}}function f(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+c(t[n],n,t)}function p(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+s(t[e],e,t)}return null==t&&(t=[]),l.initialize=function(t,e){r=t,a=e,d()},l.links=function(e){return arguments.length?(t=e,d(),l):t},l.id=function(t){return arguments.length?(u=t,l):u},l.iterations=function(t){return arguments.length?(h=+t,l):h},l.strength=function(t){return arguments.length?(c="function"==typeof t?t:On(+t),f(),l):c},l.distance=function(t){return arguments.length?(s="function"==typeof t?t:On(+t),p(),l):s},l}(data.links).id((function(t){return t.id}))).force("charge",function(){var t,e,n,r,i,o=On(-30),a=1,u=1/0,c=.81;function s(n){var i,o=t.length,a=Tn(t,Kn,Wn).visitAfter(l);for(r=n,i=0;i<o;++i)e=t[i],a.visit(d)}function h(){if(t){var e,n,r=t.length;for(i=new Array(r),e=0;e<r;++e)n=t[e],i[n.index]=+o(n,e,t)}}function l(t){var e,n,r,o,a,u=0,c=0;if(t.length){for(r=o=a=0;a<4;++a)(e=t[a])&&(n=Math.abs(e.value))&&(u+=e.value,c+=n,r+=n*e.x,o+=n*e.y);t.x=r/c,t.y=o/c}else{(e=t).x=e.data.x,e.y=e.data.y;do{u+=i[e.data.index]}while(e=e.next)}t.value=u}function d(t,o,s,h){if(!t.value)return!0;var l=t.x-e.x,d=t.y-e.y,f=h-o,p=l*l+d*d;if(f*f/c<p)return p<u&&(0===l&&(p+=(l=jn(n))*l),0===d&&(p+=(d=jn(n))*d),p<a&&(p=Math.sqrt(a*p)),e.vx+=l*t.value*r/p,e.vy+=d*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==e||t.next)&&(0===l&&(p+=(l=jn(n))*l),0===d&&(p+=(d=jn(n))*d),p<a&&(p=Math.sqrt(a*p)));do{t.data!==e&&(f=i[t.data.index]*r/p,e.vx+=l*f,e.vy+=d*f)}while(t=t.next)}}return s.initialize=function(e,r){t=e,n=r,h()},s.strength=function(t){return arguments.length?(o="function"==typeof t?t:On(+t),h(),s):o},s.distanceMin=function(t){return arguments.length?(a=t*t,s):Math.sqrt(a)},s.distanceMax=function(t){return arguments.length?(u=t*t,s):Math.sqrt(u)},s.theta=function(t){return arguments.length?(c=t*t,s):Math.sqrt(c)},s}()).force("center",function(t,e){var n,r=1;function i(){var i,o,a=n.length,u=0,c=0;for(i=0;i<a;++i)u+=(o=n[i]).x,c+=o.y;for(u=(u/a-t)*r,c=(c/a-e)*r,i=0;i<a;++i)(o=n[i]).x-=u,o.y-=c}return null==t&&(t=0),null==e&&(e=0),i.initialize=function(t){n=t},i.x=function(e){return arguments.length?(t=+e,i):t},i.y=function(t){return arguments.length?(e=+t,i):e},i.strength=function(t){return arguments.length?(r=+t,i):r},i}()).force("forceX",function(t){var e,n,r,i=On(.1);function o(t){for(var i,o=0,a=e.length;o<a;++o)(i=e[o]).vx+=(r[o]-i.x)*n[o]*t}function a(){if(e){var o,a=e.length;for(n=new Array(a),r=new Array(a),o=0;o<a;++o)n[o]=isNaN(r[o]=+t(e[o],o,e))?0:+i(e[o],o,e)}}return"function"!=typeof t&&(t=On(null==t?0:+t)),o.initialize=function(t){e=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:On(+t),a(),o):i},o.x=function(e){return arguments.length?(t="function"==typeof e?e:On(+e),a(),o):t},o}()).force("forceY",function(t){var e,n,r,i=On(.1);function o(t){for(var i,o=0,a=e.length;o<a;++o)(i=e[o]).vy+=(r[o]-i.y)*n[o]*t}function a(){if(e){var o,a=e.length;for(n=new Array(a),r=new Array(a),o=0;o<a;++o)n[o]=isNaN(r[o]=+t(e[o],o,e))?0:+i(e[o],o,e)}}return"function"!=typeof t&&(t=On(null==t?0:+t)),o.initialize=function(t){e=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:On(+t),a(),o):i},o.y=function(e){return arguments.length?(t="function"==typeof e?e:On(+e),a(),o):t},o}());Kr.force("center").x(.5*Rr).y(.5*Fr),window.updateForces=function(){Kr.force("charge").strength(-Math.abs(graphProperties.attraction_force)).distanceMax(graphProperties.attraction_distance_max),Kr.force("forceX").strength(graphProperties.attraction_vertical),Kr.force("forceY").strength(graphProperties.attraction_horizontal),Kr.alpha(1).restart()},updateForces(),Cr("space",(function(t){t.preventDefault(),updateForces()})),Kr.on("tick",(function(){Wr.links.attr("x1",(function(t){return t.source.x})).attr("y1",(function(t){return t.source.y})).attr("x2",(function(t){return t.target.x})).attr("y2",(function(t){return t.target.y})),Wr.nodes.attr("transform",(function(t){return"translate("+t.x+","+t.y+")"})),vn("#load-bar-value").style("flex-basis",100*Kr.alpha()+"%"),Zr()}));var Wr={},Yr=new Set(["jpg","jpeg","png"]);function Xr(t,e,n){for(var r=[],i=2*Math.PI/t,o=0;o<t;o++){var a=o*i,u=(o+1)*i,c=0+e*Math.cos(a),s=0+e*Math.sin(a),h=0+e*Math.cos(u),l=0+e*Math.sin(u),d="M ".concat(c," ").concat(s," A ").concat(e," ").concat(e," 0 0 1 ").concat(h," ").concat(l," L ").concat(0," ").concat(0," Z"),f=0+(e+n)*Math.cos(a),p=0+(e+n)*Math.sin(a),y=0+(e+n)*Math.cos(u),g=0+(e+n)*Math.sin(u),v="M ".concat(f," ").concat(p," A ").concat(e+n," ").concat(e+n," 0 0 1 ").concat(y," ").concat(g," L ").concat(0," ").concat(0," Z");r.push({segment:d,border:v})}return r}function $r(t){var e=Wr.nodes.filter((function(t){return t.hidden===Ir.notFiltered})).data().map((function(t){return t.id}));return{nodes:Wr.nodes.filter((function(e){return t.includes(e.id)})),links:Wr.links.filter((function(n){return!(!t.includes(n.source.id)&&!t.includes(n.target.id)||!e.includes(n.source.id)||!e.includes(n.target.id))}))}}function Vr(t,e){var n=[],r=[];Ur.forEach((function(e){t.includes(e)?r.push(e):n.push(e)})),function(t,e){if(hideNodeNetwork(t),function(t){var e,n=ai(t);try{for(n.s();!(e=n.n()).done;){var r=e.value;li.querySelectorAll('[data-index="'+r+'"]').forEach((function(t){t.style.display="none"}))}}catch(t){n.e(t)}finally{n.f()}}(t),void 0===e)throw new Error("Need priority");Wr.nodes.data().map((function(n){var r=n.id,i=n.hidden;return t.includes(r)&&i<=e&&(n.hidden=e),n}))}(n,e),Hr(r,e)}function Hr(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Ir.notFiltered,n=[];Wr.nodes.data().map((function(r){var i=r.id,o=r.hidden;return t.includes(i)&&o<=e&&(n.push(i),r.hidden=Ir.notFiltered),r})),displayNodeNetwork(n),function(t){var e,n=ai(t=t.filter((function(t){if(ti.find((function(e){return e.id===t})).hidden===Ir.notFiltered)return!0})));try{for(n.s();!(e=n.n()).done;){var r=e.value;li.querySelectorAll('[data-index="'+r+'"]').forEach((function(t){t.style.display=null}))}}catch(t){n.e(t)}finally{n.f()}}(n)}function Jr(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ir.notFiltered;Hr(Ur,t)}function Qr(){if(0!==dr.highlightedNodes.length){var t=$r(dr.highlightedNodes),e=t.nodes,n=t.links;e.selectAll(".border").style("fill",null),n.style("stroke",null),dr.highlightedNodes=[]}}function Zr(){var e=r(data.nodes,(function(t){return t.x})),n=t(data.nodes,(function(t){return t.x})),i=r(data.nodes,(function(t){return t.y})),o=t(data.nodes,(function(t){return t.y})),a=window.innerWidth,u=window.innerHeight,c=dr.position,s=c.x,h=c.y,l=c.zoom,d=r([u,a]),f=n-e;f<d&&(f=d);var p=o-i;if(p<d&&(p=d),0>e||0>i){var y=[(e-s)/l,(i-h)/l,f/l,p/l];Br.attr("viewBox",y).attr("preserveAspectRatio",null)}else{var g=[(0-s)/l,(0-h)/l,f/l,p/l];Br.attr("viewBox",g).attr("preserveAspectRatio","xMinYMin meet")}}Wr.links=Br.append("g").selectAll("line").data(data.links).enter().append("line").attr("stroke",(function(t){return t.color})).attr("title",(function(t){return t.title})).attr("data-source",(function(t){return t.source.id})).attr("data-target",(function(t){return t.target.id})).attr("stroke-dasharray",(function(t){return("dash"===t.shape.stroke||"dotted"===t.shape.stroke)&&t.shape.dashInterval})).attr("filter",(function(t){return"double"===t.shape.stroke&&"url(#double)"})),!0===graphProperties.graph_arrows&&Wr.links.attr("marker-end","url(#arrow)"),Wr.nodes=Br.append("g").selectAll("g").data(data.nodes).enter().append("g").attr("data-node",(function(t){return t.id})).append("a").attr("href",(function(t){return"#"+t.id})).call(function(){var t,e,n,r,i=Ln,o=Mn,a=Gn,u=Nn,c={},s=_t("start","drag","end"),h=0,l=0;function d(t){t.on("mousedown.drag",f).filter(u).on("touchstart.drag",g).on("touchmove.drag",v,wn).on("touchend.drag touchcancel.drag",m).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(a,u){if(!r&&i.call(this,a,u)){var c=w(this,o.call(this,a,u),a,u,"mouse");c&&(vn(a.view).on("mousemove.drag",p,bn).on("mouseup.drag",y,bn),kn(a.view),_n(a),n=!1,t=a.clientX,e=a.clientY,c("start",a))}}function p(r){if(xn(r),!n){var i=r.clientX-t,o=r.clientY-e;n=i*i+o*o>l}c.mouse("drag",r)}function y(t){vn(t.view).on("mousemove.drag mouseup.drag",null),En(t.view,n),xn(t),c.mouse("end",t)}function g(t,e){if(i.call(this,t,e)){var n,r,a=t.changedTouches,u=o.call(this,t,e),c=a.length;for(n=0;n<c;++n)(r=w(this,u,t,e,a[n].identifier,a[n]))&&(_n(t),r("start",t,a[n]))}}function v(t){var e,n,r=t.changedTouches,i=r.length;for(e=0;e<i;++e)(n=c[r[e].identifier])&&(xn(t),n("drag",t,r[e]))}function m(t){var e,n,i=t.changedTouches,o=i.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),e=0;e<o;++e)(n=c[i[e].identifier])&&(_n(t),n("end",t,i[e]))}function w(t,e,n,r,i,o){var u,l,f,p=s.copy(),y=mn(o||n,e);if(null!=(f=a.call(t,new Sn("beforestart",{sourceEvent:n,target:d,identifier:i,active:h,x:y[0],y:y[1],dx:0,dy:0,dispatch:p}),r)))return u=f.x-y[0]||0,l=f.y-y[1]||0,function n(o,a,s){var g,v=y;switch(o){case"start":c[i]=n,g=h++;break;case"end":delete c[i],--h;case"drag":y=mn(s||a,e),g=h}p.call(o,t,new Sn(o,{sourceEvent:a,subject:f,target:d,identifier:i,active:g,x:y[0]+u,y:y[1]+l,dx:y[0]-v[0],dy:y[1]-v[1],dispatch:p}),r)}}return d.filter=function(t){return arguments.length?(i="function"==typeof t?t:An(!!t),d):i},d.container=function(t){return arguments.length?(o="function"==typeof t?t:An(t),d):o},d.subject=function(t){return arguments.length?(a="function"==typeof t?t:An(t),d):a},d.touchable=function(t){return arguments.length?(u="function"==typeof t?t:An(!!t),d):u},d.on=function(){var t=s.on.apply(s,arguments);return t===s?d:t},d.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,d):Math.sqrt(l)},d}().on("start",(function(t,e){t.active||Kr.alphaTarget(.3).restart(),e.fx=e.x,e.fy=e.y})).on("drag",(function(t,e){e.fx=t.x,e.fy=t.y})).on("end",(function(t,e){t.active||Kr.alphaTarget(1e-4),e.fx=null,e.fy=null}))).on("mouseover",(function(t,e){var n=[e.id],r=Wr.links.filter((function(t){return t.source.id!==e.id&&t.target.id!==e.id||(n.push(t.source.id,t.target.id),!1)})),i=Wr.nodes.filter((function(t){return!n.includes(t.id)})),o=Wr.links.filter((function(t){return t.source.id===e.id||t.target.id===e.id}));Wr.nodes.filter((function(t){return!!n.includes(t.id)})).selectAll(".border").style("fill","var(--highlight)"),o.style("stroke","var(--highlight)"),i.attr("opacity",.5),r.attr("stroke-opacity",.5)})).on("mouseout",(function(){var t=hi();Wr.nodes.filter((function(e){var n=e.id;return!t||n!==t})).selectAll(".border").style("fill",null),Wr.links.filter((function(e){return!t||e.source.id!==t&&e.target.id!==t})).style("stroke",null),Wr.nodes.attr("opacity",null),Wr.links.attr("stroke-opacity",null)})),Wr.nodes.each((function(t){var e=vn(this),n=function(t){return Yr.has(t.split(".").at(-1))?"url(#".concat(t,")"):t},r=function(n,r){e.append("circle").attr("class","border").attr("r",t.size+2).attr("fill",n),e.append("circle").attr("r",t.size).attr("fill",r)};if(t.thumbnail)1===t.types.length?r(graphProperties.record_types[t.types[0]].stroke,"url(#".concat(t.thumbnail,")")):(Xr(t.types.length,t.size,2).forEach((function(n,r){var i=n.border,o=graphProperties.record_types[t.types[r]];e.append("path").attr("d",i).attr("fill",o.stroke).attr("class","border")})),e.append("circle").attr("r",t.size).attr("fill","var(--background-gray)"),e.append("circle").attr("r",t.size).attr("fill","url(#".concat(t.thumbnail,")")));else if(1===t.types.length){var i=graphProperties.record_types[t.types[0]];r(i.stroke,n(i.fill))}else Xr(t.types.length,t.size,2).forEach((function(r,i){var o=r.segment,a=r.border,u=graphProperties.record_types[t.types[i]];e.append("path").attr("d",a).attr("fill",u.stroke).attr("class","border"),e.append("path").attr("d",o).attr("fill","var(--background-gray)"),e.append("path").attr("d",o).attr("fill",n(u.fill))}))})),Wr.labels=Wr.nodes.append("text").each((function(t){for(var e=t.label.split(" "),n=vn(this),r="",i=0;i<e.length;i++)(r+=e[i]+" ").length<25&&i!==e.length-1||(n.append("tspan").attr("x",0).attr("dy","1.2em").text(r.slice(0,-1)),r="")})).attr("font-size",graphProperties.graph_text_size).attr("x",0).attr("y",(function(t){return t.size})).attr("dominant-baseline","middle").attr("text-anchor","middle"),window.hideNodeNetwork=function(t){var e=$r(t),n=e.nodes,r=e.links;n.style("display","none"),r.style("display","none")},window.displayNodeNetwork=function(t){var e=$r(t),n=e.nodes,r=e.links;n.style("display",null),r.style("display",null)},window.linksDisplayToggle=function(t){t?Wr.links.style("display",null):Wr.links.style("display","none")},window.labelDisplayToggle=function(t){t?Wr.labels.style("display",null):Wr.labels.style("display","none")},window.labelHighlight=function(t){Wr.nodes.data().map((function(e){return t.includes(e.id)&&(e.highlighted=!0),e})),Wr.nodes.filter((function(e){return t.includes(e.id)})).select("text").style("fill","var(--highlight)")},window.updateFontsize=function(){Wr.labels.attr("font-size",graphProperties.text_size)},window.labelUnlight=function(t){Wr.nodes.data().map((function(e){return t.includes(e.id)&&(e.highlighted=!1),e})),Wr.nodes.filter((function(e){return t.includes(e.id)})).select("text").style("fill",null)},window.labelUnlightAll=function(){data.nodes=data.nodes.map((function(t){return t.highlighted=!1,t})),Wr.labels.style("fill",null)};var ti=Wr.nodes.data(),ei=(Wr.links.data(),.2),ni=ti.reduce((function(t,e){return t+e.size}),0);window.addEventListener("resize",(function(){var t=ni/(window.innerWidth*window.innerHeight);t*=1e3,ei=Math.log2(t)}));var ri=function(){var t,e,n,r=er,i=nr,o=ar,a=ir,u=or,c=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],h=250,l=$n,d=_t("start","zoom","end"),f=500,p=150,y=0,g=10;function v(t){t.property("__zoom",rr).on("wheel.zoom",E,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",L).on("touchmove.zoom",M).on("touchend.zoom touchcancel.zoom",G).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function m(t,e){return(e=Math.max(c[0],Math.min(c[1],e)))===t.k?t:new Jn(e,t.x,t.y)}function w(t,e,n){var r=e[0]-n[0]*t.k,i=e[1]-n[1]*t.k;return r===t.x&&i===t.y?t:new Jn(t.k,r,i)}function b(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function _(t,e,n,r){t.on("start.zoom",(function(){x(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){x(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=x(t,o).event(r),u=i.apply(t,o),c=null==n?b(u):"function"==typeof n?n.apply(t,o):n,s=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),h=t.__zoom,d="function"==typeof e?e.apply(t,o):e,f=l(h.invert(c).concat(s/h.k),d.invert(c).concat(s/d.k));return function(t){if(1===t)t=d;else{var e=f(t),n=s/e[2];t=new Jn(n,c[0]-e[0]*n,c[1]-e[1]*n)}a.zoom(null,t)}}))}function x(t,e,n){return!n&&t.__zooming||new k(t,e)}function k(t,e){this.that=t,this.args=e,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,e),this.taps=0}function E(t,...e){if(r.apply(this,arguments)){var n=x(this,e).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),h=mn(t);if(n.wheel)n.mouse[0][0]===h[0]&&n.mouse[0][1]===h[1]||(n.mouse[1]=i.invert(n.mouse[0]=h)),clearTimeout(n.wheel);else{if(i.k===u)return;n.mouse=[h,i.invert(h)],Vt(this),n.start()}tr(t),n.wheel=setTimeout((function(){n.wheel=null,n.end()}),p),n.zoom("mouse",o(w(m(i,u),n.mouse[0],n.mouse[1]),n.extent,s))}}function A(t,...e){if(!n&&r.apply(this,arguments)){var i=t.currentTarget,a=x(this,e,!0).event(t),u=vn(t.view).on("mousemove.zoom",(function(t){if(tr(t),!a.moved){var e=t.clientX-h,n=t.clientY-l;a.moved=e*e+n*n>y}a.event(t).zoom("mouse",o(w(a.that.__zoom,a.mouse[0]=mn(t,i),a.mouse[1]),a.extent,s))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),En(t.view,a.moved),tr(t),a.event(t).end()}),!0),c=mn(t,i),h=t.clientX,l=t.clientY;kn(t.view),Zn(t),a.mouse=[c,this.__zoom.invert(c)],Vt(this),a.start()}}function S(t,...e){if(r.apply(this,arguments)){var n=this.__zoom,a=mn(t.changedTouches?t.changedTouches[0]:t,this),u=n.invert(a),c=n.k*(t.shiftKey?.5:2),l=o(w(m(n,c),a,u),i.apply(this,e),s);tr(t),h>0?vn(this).transition().duration(h).call(_,l,a,t):vn(this).call(v.transform,l,a,t)}}function L(n,...i){if(r.apply(this,arguments)){var o,a,u,c,s=n.touches,h=s.length,l=x(this,i,n.changedTouches.length===h).event(n);for(Zn(n),a=0;a<h;++a)c=[c=mn(u=s[a],this),this.__zoom.invert(c),u.identifier],l.touch0?l.touch1||l.touch0[2]===c[2]||(l.touch1=c,l.taps=0):(l.touch0=c,o=!0,l.taps=1+!!t);t&&(t=clearTimeout(t)),o&&(l.taps<2&&(e=c[0],t=setTimeout((function(){t=null}),f)),Vt(this),l.start())}}function M(t,...e){if(this.__zooming){var n,r,i,a,u=x(this,e).event(t),c=t.changedTouches,h=c.length;for(tr(t),n=0;n<h;++n)i=mn(r=c[n],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],d=u.touch0[1],f=u.touch1[0],p=u.touch1[1],y=(y=f[0]-l[0])*y+(y=f[1]-l[1])*y,g=(g=p[0]-d[0])*g+(g=p[1]-d[1])*g;r=m(r,Math.sqrt(y/g)),i=[(l[0]+f[0])/2,(l[1]+f[1])/2],a=[(d[0]+p[0])/2,(d[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(w(r,i,a),u.extent,s))}}function G(t,...r){if(this.__zooming){var i,o,a=x(this,r).event(t),u=t.changedTouches,c=u.length;for(Zn(t),n&&clearTimeout(n),n=setTimeout((function(){n=null}),f),i=0;i<c;++i)o=u[i],a.touch0&&a.touch0[2]===o.identifier?delete a.touch0:a.touch1&&a.touch1[2]===o.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(o=mn(o,this),Math.hypot(e[0]-o[0],e[1]-o[1])<g)){var s=vn(this).on("dblclick.zoom");s&&s.apply(this,arguments)}}}return v.transform=function(t,e,n,r){var i=t.selection?t.selection():t;i.property("__zoom",rr),t!==i?_(t,e,n,r):i.interrupt().each((function(){x(this,arguments).event(r).start().zoom(null,"function"==typeof e?e.apply(this,arguments):e).end()}))},v.scaleBy=function(t,e,n,r){v.scaleTo(t,(function(){return this.__zoom.k*("function"==typeof e?e.apply(this,arguments):e)}),n,r)},v.scaleTo=function(t,e,n,r){v.transform(t,(function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==n?b(t):"function"==typeof n?n.apply(this,arguments):n,u=r.invert(a),c="function"==typeof e?e.apply(this,arguments):e;return o(w(m(r,c),a,u),t,s)}),n,r)},v.translateBy=function(t,e,n,r){v.transform(t,(function(){return o(this.__zoom.translate("function"==typeof e?e.apply(this,arguments):e,"function"==typeof n?n.apply(this,arguments):n),i.apply(this,arguments),s)}),null,r)},v.translateTo=function(t,e,n,r,a){v.transform(t,(function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?b(t):"function"==typeof r?r.apply(this,arguments):r;return o(Qn.translate(u[0],u[1]).scale(a.k).translate("function"==typeof e?-e.apply(this,arguments):-e,"function"==typeof n?-n.apply(this,arguments):-n),t,s)}),r,a)},k.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,e){return this.mouse&&"mouse"!==t&&(this.mouse[1]=e.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=e.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=e.invert(this.touch1[0])),this.that.__zoom=e,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var e=vn(this.that).datum();d.call(t,this.that,new Hn(t,{sourceEvent:this.sourceEvent,target:v,type:t,transform:this.that.__zoom,dispatch:d}),e)}},v.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:Vn(+t),v):a},v.filter=function(t){return arguments.length?(r="function"==typeof t?t:Vn(!!t),v):r},v.touchable=function(t){return arguments.length?(u="function"==typeof t?t:Vn(!!t),v):u},v.extent=function(t){return arguments.length?(i="function"==typeof t?t:Vn([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),v):i},v.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],v):[c[0],c[1]]},v.translateExtent=function(t){return arguments.length?(s[0][0]=+t[0][0],s[1][0]=+t[1][0],s[0][1]=+t[0][1],s[1][1]=+t[1][1],v):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},v.constrain=function(t){return arguments.length?(o=t,v):o},v.duration=function(t){return arguments.length?(h=+t,v):h},v.interpolate=function(t){return arguments.length?(l=t,v):l},v.on=function(){var t=d.on.apply(d,arguments);return t===d?v:t},v.clickDistance=function(t){return arguments.length?(y=(t=+t)*t,v):Math.sqrt(y)},v.tapDistance=function(t){return arguments.length?(g=+t,v):g},v}().scaleExtent([1,10]).on("zoom",(function(t){var e=t.transform,n=e.x,r=e.y,i=e.k;dr.position.x=n||0,dr.position.y=r||0,dr.position.zoom=i||1,Zr()}));function ii(){dr.position.zoom=1,dr.position.x=0,dr.position.y=0,Tr.call(ri.transform,Qn.translate(dr.position.y,dr.position.x).scale(dr.position.zoom)),Zr()}function oi(t){var n=ti.find((function(e){return e.id===t}));if(n){var r=n.x,i=n.y,o=e(ti,(function(t){return t.x})),a=e(ti,(function(t){return t.y})),u=1===dr.position.zoom?dr.position.zoom+2*ei:dr.position.zoom;Tr.call(ri.transform,Qn.translate(-(r*u-o),-(i*u-a)).scale(u)),Zr()}}function ai(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=ui(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function ui(t,e){if(t){if("string"==typeof t)return ci(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?ci(t,e):void 0}}function ci(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function si(){var t=document.querySelector(".record.active");t&&t.classList.remove("active")}function hi(){var t=new URL(window.location).hash;if(t)return decodeURI(t.substring(1))}Tr.call(ri),Cr("e,alt+r",(function(t){t.preventDefault(),ii()})),Cr("c",(function(t){t.preventDefault(),oi(hi())})),window.zoomMore=function(){ri.scaleTo(Tr,dr.position.zoom+ei)},window.zoomLess=function(){ri.scaleTo(Tr,dr.position.zoom-ei)},window.zoomReset=ii,window.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("record-container"),e=document.getElementById("close-right-side"),n=hi();n&&i(n);var r=!1;function i(n){var i,o,a,u,c=document.getElementById(n);if(c){si(),r||(e.classList.add("active"),t.classList.add("active")),t.scrollTo({top:0}),si(),c.classList.add("active"),Qr(),o=$r(i=[n]),a=o.nodes,u=o.links,a.selectAll(".border").style("fill","var(--highlight)"),u.style("stroke","var(--highlight)"),dr.highlightedNodes=dr.highlightedNodes.concat(i);var s=c.querySelector("h1").textContent;document.title=s}}e.addEventListener("click",(function(){e.classList.toggle("active"),t.classList.toggle("active"),r=!r})),Cr("escape",(function(){e.classList.remove("active"),t.classList.remove("active"),history.pushState("",document.title,window.location.pathname),Qr()})),window.addEventListener("hashchange",(function(){var e=hi();e?(i(e),oi(e)):(t.classList.remove("active"),Qr())}))}));var li=document.getElementById("index");window.addEventListener("DOMContentLoaded",(function(){var t=li.querySelector(".sorting-select"),e=sorting.records;function n(){for(var n=li.querySelectorAll("li"),r=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o,a,u=[],c=!0,s=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(u.push(r.value),u.length!==e);c=!0);}catch(t){s=!0,i=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return u}}(t,e)||ui(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(t.value.split(":"),2),i=r[0],o=r[1],a=0;a<n.length;a++){var u=e[a][i],c=n[a];"reverse"===o&&(u=n.length-1-u),c.style.order=u}}n(),t.addEventListener("change",n)}));var di=n(841),fi=new(n.n(di)())([],{includeScore:!1,keys:["label"]});function pi(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=yi(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function yi(t,e){if(t){if("string"==typeof t)return gi(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?gi(t,e):void 0}}function gi(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function vi(){var t,e=document.getElementById("index-counter"),n=document.querySelectorAll(".menu-types-list .badge"),r=0,i={},o=pi(data.nodes);try{for(o.s();!(t=o.n()).done;){var a=t.value,u=a.hidden,c=a.type;!0!==u&&(r+=1,i[c]?i[c]+=1:i[c]=1)}}catch(t){o.e(t)}finally{o.f()}var s,h=pi(n);try{for(h.s();!(s=h.n()).done;){var l=s.value;mi(l,i[l.previousElementSibling.name]||0)}}catch(t){h.e(t)}finally{h.f()}mi(e,r)}function mi(t,e){var n,r,i=(n=t.textContent.split("/",2),r=2,function(t){if(Array.isArray(t))return t}(n)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o,a,u=[],c=!0,s=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(u.push(r.value),u.length!==e);c=!0);}catch(t){s=!0,i=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return u}}(n,r)||yi(n,r)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),o=i[0],a=i[1];o=Number(o),a=Number(a)||o,t.textContent=e===a?a:"".concat(e,"/").concat(a)}function wi(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}window.addEventListener("DOMContentLoaded",(function(){var t=[],e=0,n=document.getElementById("search"),r=document.getElementById("search-result-list");function i(){r.childNodes[e].classList.add("outline")}function o(){r.childNodes[e].classList.remove("outline")}n.addEventListener("focus",(function(){fi.setCollection(ti.filter((function(t){return 0===t.hidden}))),n.addEventListener("input",(function(){if(r.innerHTML="",e=0,t=[],""!==n.value){t=fi.search(n.value);for(var o=0;o<Math.min(5,t.length);o++){var a=t[o].item,u=a.id,c=a.label,s=a.types,h=document.createElement("li");h.classList.add("search-result-item"),h.innerHTML='\n <a href="#'.concat(u,'">\n <span class="record-type-points">\n ').concat(s.map((function(t){return'<span style="color:var(--n_'.concat(t,')">⬤</span>')})).join(" "),'\n </span>\n <span class="record-title">').concat(c,"</span>\n </a>"),r.appendChild(h)}i()}}))})),Cr("s",(function(t){t.preventDefault(),n.focus()})),document.addEventListener("keydown",(function(r){if(0!==t.length)switch(r.key){case"ArrowUp":r.preventDefault(),e>0&&(o(),e--,i()),0===e&&n.focus();break;case"ArrowDown":if(r.preventDefault(),4===e||e===t.length-1)break;o(),e++,i(),1===e&&n.blur();break;case"Enter":r.preventDefault(),window.location.hash=t[e].item.id,n.blur()}}))})),n(165);var bi=timeline,_i=bi.begin,xi=bi.end;function ki(t){return new Date(1e3*t).toLocaleDateString(graphProperties.lang)}function Ei(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o,a,u=[],c=!0,s=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(u.push(r.value),u.length!==e);c=!0);}catch(t){s=!0,i=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return u}}(t,e)||Ai(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Ai(t,e){if(t){if("string"==typeof t)return Si(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Si(t,e):void 0}}function Si(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}function Li(t,e){if(t){if("string"==typeof t)return Mi(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Mi(t,e):void 0}}function Mi(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}window.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("timeline-checkbox"),e=document.getElementById("timeline-form"),n=document.getElementById("timeline-ticks");if(e){var r=e.querySelector("output"),i=e.querySelector('input[type="range"]');t.checked=!1,t.addEventListener("change",(function(){t.checked?(e.classList.add("active"),a(),o(),window.addEventListener("resize",a),i.addEventListener("input",o)):(e.classList.remove("active"),window.removeEventListener("resize",a),i.removeEventListener("input",o),Jr(Ir.filteredByTimeline),vi())}))}function o(){var t=i.value;r.value=ki(t);var e,n=[],o=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return wi(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?wi(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}(data.nodes);try{for(o.s();!(e=o.n()).done;){var a=e.value,u=a.begin,c=a.end,s=a.id;void 0===c&&(c=xi),void 0===u&&(u=_i),t>=u&&t<=c&&n.push(s)}}catch(t){o.e(t)}finally{o.f()}Vr(n,Ir.filteredByTimeline),vi()}function a(){var t=Math.round(e.offsetWidth/100),r=Math.round((xi-_i)/t);n.setAttribute("style","--list-length: ".concat(t+1,";")),n.innerHTML="";var a=function(t){var e=document.createElement("option");e.value=t,e.textContent=ki(t),e.addEventListener("click",(function(){i.value=t,o()})),n.appendChild(e)};a(_i);for(var u=1;u<=t;u++)a(u!==t?_i+r*u:xi)}})),window.addEventListener("DOMContentLoaded",(function(){for(var t,e=document.getElementById("types-form"),n=e.querySelectorAll("input"),r=0,i=Object.entries(typeList);r<i.length;r++){var o=Ei(i[r],2),a=o[0],u=o[1].active;e.querySelector('[name="'.concat(a,'"]')).checked=u}f();var c,s=null===(t=new URL(window.location).searchParams.get("filters"))||void 0===t?void 0:t.split("-");if(null!=s&&s.length){for(var h=0,l=Object.entries(typeList);h<l.length;h++){var d=Ei(l[h],1)[0];e.querySelector('[name="'.concat(d,'"]')).checked=s.includes(d)}f()}function f(){var t=new FormData(e);t=Object.fromEntries(t);var n=new Set;t=Object.entries(typeList).filter((function(e){var n=Ei(e,1)[0];return!!t[n]})).forEach((function(t){Ei(t,2)[1].nodes.forEach((function(t){return n.add(t)}))})),Vr(Array.from(n),Ir.filteredByType)}e.addEventListener("change",f);var p,y=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=Ai(t))){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}(n);try{var g=function(){var t=p.value,r=t.name;t.checked,t.parentElement.addEventListener("click",(function(t){t.altKey&&(t.stopPropagation(),t.preventDefault(),c===r?(v(),c=void 0):(function(t){n.forEach((function(e){return e.checked=t===e.name})),e.dispatchEvent(new Event("change"))}(r),c=r))}))};for(y.s();!(p=y.n()).done;)g()}catch(t){y.e(t)}finally{y.f()}function v(){e.querySelectorAll("input:not(:checked)").forEach((function(t){return t.checked=!0})),e.dispatchEvent(new Event("change"))}hotkeys("alt+r",(function(t){t.preventDefault(),v()}))})),window.addEventListener("DOMContentLoaded",(function(){var t,e=document.getElementById("tags-form");if(e){var n=document.querySelector(".menu-tags .sorting-select"),r=sorting.tags;c(),s(),n.addEventListener("change",c),e.addEventListener("change",s);var i=null===(t=new URL(window.location).searchParams.get("tags"))||void 0===t?void 0:t.split("-");if(null!=i&&i.length){var o,a=function(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=Li(t))){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}(i);try{for(a.s();!(o=a.n()).done;){var u=o.value;e.querySelector('input[name="'.concat(u,'"]')).checked=!0}}catch(t){a.e(t)}finally{a.f()}e.dispatchEvent(new Event("change"))}Cr("alt+r",(function(t){t.preventDefault(),e.querySelectorAll("input:checked").forEach((function(t){return t.checked=!1})),e.dispatchEvent(new Event("change"))})),window.activeTag=function(t){var n=e.querySelector('input[name="'.concat(t,'"]'));n.checked=!n.checked,e.dispatchEvent(new Event("change"))}}function c(){for(var t=e.querySelectorAll("label"),i=function(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=n){var r,i,o,a,u=[],c=!0,s=!1;try{if(o=(n=n.call(t)).next,0===e){if(Object(n)!==n)return;c=!1}else for(;!(c=(r=o.call(n)).done)&&(u.push(r.value),u.length!==e);c=!0);}catch(t){s=!0,i=t}finally{try{if(!c&&null!=n.return&&(a=n.return(),Object(a)!==a))return}finally{if(s)throw i}}return u}}(t,e)||Li(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}(n.value.split(":"),2),o=i[0],a=i[1],u=0;u<t.length;u++){var c=r[u][o],s=t[u];"reverse"===a&&(c=t.length-1-c),s.style.order=c}}function s(){var t=new FormData(e);t=Object.fromEntries(t);var n=new Set;tagList.filter((function(e){var n=e.name;return!!t[n]})).forEach((function(t){t.nodes.forEach((function(t){return n.add(t)}))})),0!==n.size?Vr(Array.from(n),Ir.filteredByTag):Jr(Ir.filteredByTag)}}));var Gi=n(934),Ni=n.n(Gi),Oi=n(563);function ji(t,e){var n="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!n){if(Array.isArray(t)||(n=function(t,e){if(t){if("string"==typeof t)return zi(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return"Object"===n&&t.constructor&&(n=t.constructor.name),"Map"===n||"Set"===n?Array.from(t):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?zi(t,e):void 0}}(t))||e&&t&&"number"==typeof t.length){n&&(t=n);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){u=!0,o=t},f:function(){try{a||null==n.return||n.return()}finally{if(u)throw o}}}}function zi(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n<e;n++)r[n]=t[n];return r}var Ci=function(){var t,e=new(Ni()),n=ji(data.nodes);try{for(n.s();!(t=n.n()).done;){var r=t.value,i=r.id,o=r.label;e.hasNode(i)||e.addNode(i,{label:o})}}catch(t){n.e(t)}finally{n.f()}var a,u=ji(data.links);try{for(u.s();!(a=u.n()).done;){var c=a.value,s=c.source,h=c.target;e.hasEdge(s.id,h.id)||e.addEdge(s.id,h.id)}}catch(t){u.e(t)}finally{u.f()}return e}();window.addEventListener("DOMContentLoaded",(function(){var t=document.getElementById("focus-check"),e=document.getElementById("focus-mode-select"),n=document.getElementById("focus-input");if(!1!==focusIsActive){var r;t.checked=!1;var i=new URL(window.location).searchParams,o=Number(i.get("focus"));!1===isNaN(o)&&o>0&&(n.value=o,a()),Cr("f",(function(e){e.preventDefault(),t.checked=!t.checked,t.dispatchEvent(new Event("change"))})),Cr("alt+r",(function(e){e.preventDefault(),t.checked=!1,t.dispatchEvent(new Event("change"))})),t.addEventListener("change",(function(){t.checked?a():(n.classList.remove("active"),n.removeEventListener("input",u),e.removeEventListener("change",c),Jr(Ir.filteredByFocus))}))}function a(){void 0!==hi()?(c(),e.addEventListener("change",c),u(),n.classList.add("active"),n.addEventListener("input",u),n.focus()):t.checked=!1}function u(){var t=hi(),e=[];(0,Oi.g)(Ci,t,(function(t,r,i){return e.push(t),i>=n.valueAsNumber}),{mode:r}),Vr(e,Ir.filteredByFocus)}function c(){r=e.value,u()}})),n(192)})()})();
</script>
</body>
</html>