plebeiangraphlibrary 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,17 +2,16 @@ import { default as Line } from '../HelperClasses/Line';
2
2
  import { default as Point } from '../HelperClasses/Point';
3
3
  import { default as _Node } from './_Node';
4
4
  import { default as Edge } from './Edge';
5
- interface Graph {
6
- nodes: Map<number, _Node>;
7
- edges: Map<number, Edge>;
8
- }
9
5
  /**
10
6
  * The main graph object: contains nodes and edges that get modified with different
11
7
  * operations (layout, clustering, etc.).
12
8
  */
13
9
  declare class Graph {
10
+ nodes: Map<number, _Node>;
11
+ edges: Map<number, Edge>;
12
+ /** Next edge ID for add_edge; avoids collisions when edges are removed. */
13
+ private _nextEdgeId;
14
14
  /**
15
- *
16
15
  * Construct a graph object (no initializing)
17
16
  *
18
17
  * @param nodes - Map of all the nodes associated with the graph
@@ -25,20 +24,21 @@ declare class Graph {
25
24
  printData(): void;
26
25
  /**
27
26
  * Initializes the graph and constructs the node adjacency list.
27
+ * Async to avoid blocking the main thread on large graphs.
28
28
  */
29
29
  initialize(): Promise<void>;
30
30
  /**
31
- *
32
- * This is the official create method to make a graph based on a set of nodes and edges
33
- * It also auto-initializes the graph and sets all the adjacency lists in memory.
31
+ * Official create method to make a graph based on a set of nodes and edges.
32
+ * Auto-initializes the graph and sets all adjacency lists in memory.
34
33
  *
35
34
  * @param nodes - map of nodes
36
35
  * @param edges - map of edges
37
- * @returns
36
+ * @returns initialized graph
38
37
  */
39
38
  static create(nodes: Map<number, _Node>, edges: Map<number, Edge>): Promise<Graph>;
40
39
  /**
41
- * Constructs the adjacency associated with the graph
40
+ * Constructs the adjacency list representation for the graph.
41
+ * Async to allow yielding on large graphs and avoid hanging the browser.
42
42
  */
43
43
  constructAdjacencyList(): Promise<void>;
44
44
  /**
@@ -92,6 +92,8 @@ declare class Graph {
92
92
  };
93
93
  /**
94
94
  * Get the position of the nodes in the graph.
95
+ * Nodes without a defined `data.pos` are skipped.
96
+ *
95
97
  * @returns The position map (node ID to Point)
96
98
  */
97
99
  get_position_map(): Map<number, Point>;
package/Build/pgl.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class gn{constructor(e,n,i){this.start=e,this.end=n,this.data={...i}}}class jt{constructor(e,n){this.nodes=e,this.edges=n}printData(){const e="This is a graph with "+this.nodes.size+" nodes and "+this.edges.size+" edges";console.log(e)}async initialize(){await this.constructAdjacencyList()}static async create(e,n){const i=new jt(e,n);return await i.initialize(),i}async constructAdjacencyList(){this.edges.forEach(e=>{const n=e.start,i=e.end;this.nodes.get(n)&&this.nodes.get(n).neighbours.push(i),this.nodes.get(i)&&this.nodes.get(i).neighbours.push(n)});for(const e of this.nodes.keys()){const n=this.nodes.get(e).neighbours,i=[...new Set(n)],r=i.indexOf(e);r>-1&&i.splice(r,1),this.nodes.get(e).neighbours=i}}add_node(e,n){this.nodes.set(e,n)}add_edge(e,n,i){const r=new gn(e,n,i);this.edges.set(this.edges.size,r);const s=this.nodes.get(e),a=this.nodes.get(n);s&&s.neighbours.push(n),a&&a.neighbours.push(e)}get_adjacency(){const e=new Map;for(const n of this.nodes.keys())e.set(n,this.nodes.get(n).neighbours);return e}apply_position_map(e){for(let n of e.keys())this.nodes.get(n).data={...this.nodes.get(n).data,pos:e.get(n)}}apply_edge_pos_maps(e){for(let n of e.keys())this.edges.get(n).data={...this.edges.get(n).data,ldata:e.get(n)}}get_edge_map(){const e=new Map;for(const n of this.edges.keys()){const i=this.edges.get(n).data.ldata;i!=null&&e.set(n,i)}return e}apply_drawing_maps(e){e.pmap&&this.apply_position_map(e.pmap),e.emap&&this.apply_edge_pos_maps(e.emap)}get_map(){return{pmap:this.get_position_map(),emap:this.get_edge_map()}}get_position_map(){const e=new Map;for(const n of this.nodes.keys())e.set(n,this.nodes.get(n).data.pos);return e}get_node_ids_order(){return Array.from(this.nodes.keys())}get_adjacency_matrix(){const e=this.get_node_ids_order(),n=e.length,i=new Float32Array(n*n),r=this.get_adjacency(),s=new Map;e.forEach((a,o)=>s.set(a,o));for(let a=0;a<n;a++){const o=e[a],c=r.get(o)??[];for(const l of c){const h=s.get(l);h!==void 0&&(i[a*n+h]=1)}}return{matrix:i,nodeIds:e}}}class In{constructor(e){this.data={...e},this.neighbours=[]}}async function _c(t,e){const n=t.get_adjacency(),i=new Map,r=new Set([e]),s=[e];for(i.set(e,-1);s.length>0;){const a=s.shift(),o=n.get(a);for(let c=0;c<o.length;c++){const l=o[c];r.has(l)||(r.add(l),s.push(l),i.set(l,a))}}return i}async function Rs(t,e){const n=t.get_adjacency(),i=new Map,r=await _c(t,e);for(const s of n.keys()){if(!r.has(s))continue;let a=0,o=r.get(s);for(;o!==void 0&&o!==-1;)o=r.get(o),a+=1;i.set(s,a)}return i}async function Ch(t){const e=[...t.nodes.keys()];if(e.length===0)return{start:0,end:0,distance:0};if(e.length===1)return{start:e[0],end:e[0],distance:0};const n=t.get_adjacency(),i=e.filter(l=>{var h;return(((h=n.get(l))==null?void 0:h.length)??0)>0}),r=i.length>0?i:e;let s=r[Math.floor(Math.random()*r.length)],a=await Rs(t,s),o=-1;for(const l of a.keys()){const h=a.get(l);h>o&&(s=l,o=h)}const c=s;a=await Rs(t,s),o=-1;for(const l of a.keys()){const h=a.get(l);h>o&&(s=l,o=h)}return{start:c,end:s,distance:o}}async function Ph(t,e){const n=new Map,i=new Map;e.forEach(a=>{const o=t.nodes.get(a);n.set(a,o)});let r=0;for(const a of t.edges.keys()){const o=t.edges.get(a);e.includes(o.start)&&e.includes(o.end)&&(i.set(r,o),r+=1)}return await jt.create(n,i)}const Hr={GraphDiameter:Ch,Dijkstra:Rs,BFSSearch:_c,SelectSubgraph:Ph},Dh={nodes:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],edges:[[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,10],[0,11],[0,12],[0,13],[0,17],[0,19],[0,21],[0,31],[1,2],[1,3],[1,7],[1,13],[1,17],[1,19],[1,21],[1,30],[2,3],[2,7],[2,8],[2,9],[2,13],[2,27],[2,28],[2,32],[3,7],[3,12],[3,13],[4,6],[4,10],[5,6],[5,10],[5,16],[6,16],[8,30],[8,32],[8,33],[9,33],[13,33],[14,32],[14,33],[15,32],[15,33],[18,32],[18,33],[19,33],[20,32],[20,33],[22,32],[22,33],[23,25],[23,27],[23,29],[23,32],[23,33],[24,25],[24,27],[24,31],[25,31],[26,29],[26,33],[27,33],[28,31],[28,33],[29,32],[29,33],[30,32],[30,33],[31,32],[31,33],[32,33]]},Lh={nodes:[{id:0,px:.09083423378081436,py:1.164162667707135,member:0},{id:1,px:-.5395391223661004,py:.8787097882002372,member:0},{id:2,px:.25483951690897244,py:-.011894166387290125,member:0},{id:3,px:.5292273814873625,py:.8137715604013231,member:0},{id:4,px:.6759740200024705,py:2.010590015934319,member:3},{id:5,px:.6648725961138767,py:2.3765595730406712,member:3},{id:6,px:-.015476857282255526,py:2.421851366492045,member:3},{id:7,px:.9923183157183725,py:.7358251458599251,member:0},{id:8,px:-.6148021363450372,py:-.03465499210385469,member:1},{id:9,px:.24714516178546894,py:-1.012380550604274,member:0},{id:10,px:1.3293288757439443,py:1.8641805845025743,member:3},{id:11,px:-.6571791278403557,py:2.2163816367270526,member:0},{id:12,px:1.5181044222926994,py:1.3282665066698078,member:0},{id:13,px:-.2979203330003603,py:.18438685313887027,member:0},{id:14,px:-1.7502345807734376,py:-1.0935551887354324,member:1},{id:15,px:-1.630224787934251,py:-1.5015879850995024,member:1},{id:16,px:.5585243394360673,py:3.5,member:3},{id:17,px:-.9776584881745712,py:1.799718659872538,member:0},{id:18,px:-1.385649185975611,py:-1.870388302312794,member:1},{id:19,px:-.9638464461397331,py:.24226946279518707,member:0},{id:20,px:-1.0268125129631975,py:-2.1543990524894148,member:1},{id:21,px:-1.3061680833745626,py:1.527228276383933,member:0},{id:22,px:-.5552461198316926,py:-2.2498070887997685,member:1},{id:23,px:.8262268914348979,py:-1.804253160744954,member:2},{id:24,px:1.9952840970427212,py:-1.0382885070400036,member:2},{id:25,px:1.9207660053211613,py:-.5823795272244723,member:2},{id:26,px:-.1664715343791652,py:-2.6527209168204373,member:1},{id:27,px:.9961959436268844,py:-1.0143754028553023,member:2},{id:28,px:.6488880579857091,py:-1.024671500275854,member:2},{id:29,px:.2398196340697841,py:-2.171491081802323,member:1},{id:30,px:-1.3348117368940753,py:-.31290471156377053,member:1},{id:31,px:.6901260074375327,py:-.2526601933356052,member:2},{id:32,px:-.6030949145287146,py:-1.0927507849665647,member:1},{id:33,px:-.3533395323856202,py:-1.1887389845640028,member:1}],edges:[[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,10],[0,11],[0,12],[0,13],[0,17],[0,19],[0,21],[0,31],[1,2],[1,3],[1,7],[1,13],[1,17],[1,19],[1,21],[1,30],[2,3],[2,7],[2,8],[2,9],[2,13],[2,27],[2,28],[2,32],[3,7],[3,12],[3,13],[4,6],[4,10],[5,6],[5,10],[5,16],[6,16],[8,30],[8,32],[8,33],[9,33],[13,33],[14,32],[14,33],[15,32],[15,33],[18,32],[18,33],[19,33],[20,32],[20,33],[22,32],[22,33],[23,25],[23,27],[23,29],[23,32],[23,33],[24,25],[24,27],[24,31],[25,31],[26,29],[26,33],[27,33],[28,31],[28,33],[29,32],[29,33],[30,32],[30,33],[31,32],[31,33],[32,33]]},Ih={1:[1,2,8,9,397,401,408,851,852],2:[2,3,8,9,10,401,408,416,1],3:[3,4,9,10,11,408,416,424,2],4:[4,5,10,11,12,416,424,432,3],5:[5,6,11,12,13,432,738,4],6:[6,7,12,13,14,432,440,448,5],7:[7,13,14,440,448,6],8:[8,9,15,16,852,853,1,2],9:[9,10,15,16,17,1,2,3,8],10:[10,11,16,17,18,2,3,4,9],11:[11,12,17,18,19,3,4,5,10],12:[12,13,18,19,20,731,732,738,4,5,6,11],13:[13,14,19,20,21,5,6,7,12],14:[14,20,21,6,7,13],15:[15,16,22,23,853,8,9],16:[16,17,22,23,24,8,9,10,15],17:[17,18,23,24,25,9,10,11,16],18:[18,19,24,25,26,10,11,12,17],19:[19,20,25,26,27,732,733,11,12,13,18],20:[20,21,26,27,28,12,13,14,19],21:[21,27,28,13,14,20],22:[22,23,29,30,15,16],23:[23,24,29,30,31,15,16,17,22],24:[24,25,30,31,32,16,17,18,23],25:[25,26,31,32,33,17,18,19,24],26:[26,27,32,33,34,733,734,18,19,20,25],27:[27,28,33,34,35,19,20,21,26],28:[28,34,35,20,21,27],29:[29,30,36,37,22,23],30:[30,31,36,37,38,22,23,24,29],31:[31,32,37,38,39,23,24,25,30],32:[32,33,38,39,40,24,25,26,31],33:[33,34,39,40,41,734,735,25,26,27,32],34:[34,35,40,41,42,26,27,28,33],35:[35,41,42,27,28,34],36:[36,37,43,44,29,30],37:[37,38,43,44,45,29,30,31,36],38:[38,39,44,45,46,30,31,32,37],39:[39,40,45,46,47,31,32,33,38],40:[40,41,46,47,48,735,736,32,33,34,39],41:[41,42,47,48,49,33,34,35,40],42:[42,48,49,34,35,41],43:[43,44,50,51,36,37],44:[44,45,50,51,52,36,37,38,43],45:[45,46,51,52,53,37,38,39,44],46:[46,47,52,53,54,38,39,40,45],47:[47,48,53,54,55,736,39,40,41,46],48:[48,49,54,55,56,40,41,42,47],49:[49,55,56,41,42,48],50:[50,51,57,58,43,44],51:[51,52,57,58,59,43,44,45,50],52:[52,53,58,59,60,44,45,46,51],53:[53,54,59,60,61,45,46,47,52],54:[54,55,60,61,62,736,748,46,47,48,53],55:[55,56,61,62,63,47,48,49,54],56:[56,62,63,48,49,55],57:[57,58,64,65,50,51],58:[58,59,64,65,66,50,51,52,57],59:[59,60,65,66,67,51,52,53,58],60:[60,61,66,67,68,52,53,54,59],61:[61,62,67,68,69,747,748,53,54,55,60],62:[62,63,68,69,70,54,55,56,61],63:[63,69,70,55,56,62],64:[64,65,71,72,57,58],65:[65,66,71,72,73,57,58,59,64],66:[66,67,72,73,74,58,59,60,65],67:[67,68,73,74,75,59,60,61,66],68:[68,69,74,75,76,746,747,60,61,62,67],69:[69,70,75,76,77,61,62,63,68],70:[70,76,77,62,63,69],71:[71,72,78,79,869,64,65],72:[72,73,78,79,80,64,65,66,71],73:[73,74,79,80,81,65,66,67,72],74:[74,75,80,81,82,66,67,68,73],75:[75,76,81,82,83,745,746,67,68,69,74],76:[76,77,82,83,84,68,69,70,75],77:[77,83,84,69,70,76],78:[78,79,85,86,868,869,71,72],79:[79,80,85,86,87,71,72,73,78],80:[80,81,86,87,88,72,73,74,79],81:[81,82,87,88,89,73,74,75,80],82:[82,83,88,89,90,744,745,750,74,75,76,81],83:[83,84,89,90,91,75,76,77,82],84:[84,90,91,76,77,83],85:[85,86,483,487,494,867,868,78,79],86:[86,87,487,494,502,78,79,80,85],87:[87,88,494,502,510,79,80,81,86],88:[88,89,502,510,518,80,81,82,87],89:[89,90,518,750,81,82,83,88],90:[90,91,518,526,534,82,83,84,89],91:[91,526,534,83,84,90],92:[92,93,99,100,483,487,494,887,888],93:[93,94,99,100,101,487,494,502,92],94:[94,95,100,101,102,494,502,510,93],95:[95,96,101,102,103,502,510,518,94],96:[96,97,102,103,104,518,763,95],97:[97,98,103,104,105,518,526,534,96],98:[98,104,105,526,534,97],99:[99,100,106,107,888,889,92,93],100:[100,101,106,107,108,92,93,94,99],101:[101,102,107,108,109,93,94,95,100],102:[102,103,108,109,110,94,95,96,101],103:[103,104,109,110,111,756,757,763,95,96,97,102],104:[104,105,110,111,112,96,97,98,103],105:[105,111,112,97,98,104],106:[106,107,113,114,889,99,100],107:[107,108,113,114,115,99,100,101,106],108:[108,109,114,115,116,100,101,102,107],109:[109,110,115,116,117,101,102,103,108],110:[110,111,116,117,118,757,758,102,103,104,109],111:[111,112,117,118,119,103,104,105,110],112:[112,118,119,104,105,111],113:[113,114,120,121,106,107],114:[114,115,120,121,122,106,107,108,113],115:[115,116,121,122,123,107,108,109,114],116:[116,117,122,123,124,108,109,110,115],117:[117,118,123,124,125,758,759,109,110,111,116],118:[118,119,124,125,126,110,111,112,117],119:[119,125,126,111,112,118],120:[120,121,127,128,113,114],121:[121,122,127,128,129,113,114,115,120],122:[122,123,128,129,130,114,115,116,121],123:[123,124,129,130,131,115,116,117,122],124:[124,125,130,131,132,759,760,116,117,118,123],125:[125,126,131,132,133,117,118,119,124],126:[126,132,133,118,119,125],127:[127,128,134,135,120,121],128:[128,129,134,135,136,120,121,122,127],129:[129,130,135,136,137,121,122,123,128],130:[130,131,136,137,138,122,123,124,129],131:[131,132,137,138,139,760,761,123,124,125,130],132:[132,133,138,139,140,124,125,126,131],133:[133,139,140,125,126,132],134:[134,135,141,142,127,128],135:[135,136,141,142,143,127,128,129,134],136:[136,137,142,143,144,128,129,130,135],137:[137,138,143,144,145,129,130,131,136],138:[138,139,144,145,146,761,130,131,132,137],139:[139,140,145,146,147,131,132,133,138],140:[140,146,147,132,133,139],141:[141,142,148,149,134,135],142:[142,143,148,149,150,134,135,136,141],143:[143,144,149,150,151,135,136,137,142],144:[144,145,150,151,152,136,137,138,143],145:[145,146,151,152,153,761,773,137,138,139,144],146:[146,147,152,153,154,138,139,140,145],147:[147,153,154,139,140,146],148:[148,149,155,156,141,142],149:[149,150,155,156,157,141,142,143,148],150:[150,151,156,157,158,142,143,144,149],151:[151,152,157,158,159,143,144,145,150],152:[152,153,158,159,160,772,773,144,145,146,151],153:[153,154,159,160,161,145,146,147,152],154:[154,160,161,146,147,153],155:[155,156,162,163,148,149],156:[156,157,162,163,164,148,149,150,155],157:[157,158,163,164,165,149,150,151,156],158:[158,159,164,165,166,150,151,152,157],159:[159,160,165,166,167,771,772,151,152,153,158],160:[160,161,166,167,168,152,153,154,159],161:[161,167,168,153,154,160],162:[162,163,169,170,905,155,156],163:[163,164,169,170,171,155,156,157,162],164:[164,165,170,171,172,156,157,158,163],165:[165,166,171,172,173,157,158,159,164],166:[166,167,172,173,174,770,771,158,159,160,165],167:[167,168,173,174,175,159,160,161,166],168:[168,174,175,160,161,167],169:[169,170,176,177,904,905,162,163],170:[170,171,176,177,178,162,163,164,169],171:[171,172,177,178,179,163,164,165,170],172:[172,173,178,179,180,164,165,166,171],173:[173,174,179,180,181,769,770,775,165,166,167,172],174:[174,175,180,181,182,166,167,168,173],175:[175,181,182,167,168,174],176:[176,177,569,573,580,903,904,169,170],177:[177,178,573,580,588,169,170,171,176],178:[178,179,580,588,596,170,171,172,177],179:[179,180,588,596,604,171,172,173,178],180:[180,181,604,775,172,173,174,179],181:[181,182,604,612,620,173,174,175,180],182:[182,612,620,174,175,181],183:[183,184,190,191,569,573,580,923,924],184:[184,185,190,191,192,573,580,588,183],185:[185,186,191,192,193,580,588,596,184],186:[186,187,192,193,194,588,596,604,185],187:[187,188,193,194,195,604,788,186],188:[188,189,194,195,196,604,612,620,187],189:[189,195,196,612,620,188],190:[190,191,197,198,924,925,183,184],191:[191,192,197,198,199,183,184,185,190],192:[192,193,198,199,200,184,185,186,191],193:[193,194,199,200,201,185,186,187,192],194:[194,195,200,201,202,781,782,788,186,187,188,193],195:[195,196,201,202,203,187,188,189,194],196:[196,202,203,188,189,195],197:[197,198,204,205,925,190,191],198:[198,199,204,205,206,190,191,192,197],199:[199,200,205,206,207,191,192,193,198],200:[200,201,206,207,208,192,193,194,199],201:[201,202,207,208,209,782,783,193,194,195,200],202:[202,203,208,209,210,194,195,196,201],203:[203,209,210,195,196,202],204:[204,205,211,212,197,198],205:[205,206,211,212,213,197,198,199,204],206:[206,207,212,213,214,198,199,200,205],207:[207,208,213,214,215,199,200,201,206],208:[208,209,214,215,216,783,784,200,201,202,207],209:[209,210,215,216,217,201,202,203,208],210:[210,216,217,202,203,209],211:[211,212,218,219,204,205],212:[212,213,218,219,220,204,205,206,211],213:[213,214,219,220,221,205,206,207,212],214:[214,215,220,221,222,206,207,208,213],215:[215,216,221,222,223,784,785,207,208,209,214],216:[216,217,222,223,224,208,209,210,215],217:[217,223,224,209,210,216],218:[218,219,225,226,211,212],219:[219,220,225,226,227,211,212,213,218],220:[220,221,226,227,228,212,213,214,219],221:[221,222,227,228,229,213,214,215,220],222:[222,223,228,229,230,785,786,214,215,216,221],223:[223,224,229,230,231,215,216,217,222],224:[224,230,231,216,217,223],225:[225,226,232,233,218,219],226:[226,227,232,233,234,218,219,220,225],227:[227,228,233,234,235,219,220,221,226],228:[228,229,234,235,236,220,221,222,227],229:[229,230,235,236,237,786,221,222,223,228],230:[230,231,236,237,238,222,223,224,229],231:[231,237,238,223,224,230],232:[232,233,239,240,225,226],233:[233,234,239,240,241,225,226,227,232],234:[234,235,240,241,242,226,227,228,233],235:[235,236,241,242,243,227,228,229,234],236:[236,237,242,243,244,786,798,228,229,230,235],237:[237,238,243,244,245,229,230,231,236],238:[238,244,245,230,231,237],239:[239,240,246,247,232,233],240:[240,241,246,247,248,232,233,234,239],241:[241,242,247,248,249,233,234,235,240],242:[242,243,248,249,250,234,235,236,241],243:[243,244,249,250,251,797,798,235,236,237,242],244:[244,245,250,251,252,236,237,238,243],245:[245,251,252,237,238,244],246:[246,247,253,254,239,240],247:[247,248,253,254,255,239,240,241,246],248:[248,249,254,255,256,240,241,242,247],249:[249,250,255,256,257,241,242,243,248],250:[250,251,256,257,258,796,797,242,243,244,249],251:[251,252,257,258,259,243,244,245,250],252:[252,258,259,244,245,251],253:[253,254,260,261,941,246,247],254:[254,255,260,261,262,246,247,248,253],255:[255,256,261,262,263,247,248,249,254],256:[256,257,262,263,264,248,249,250,255],257:[257,258,263,264,265,795,796,249,250,251,256],258:[258,259,264,265,266,250,251,252,257],259:[259,265,266,251,252,258],260:[260,261,267,268,940,941,253,254],261:[261,262,267,268,269,253,254,255,260],262:[262,263,268,269,270,254,255,256,261],263:[263,264,269,270,271,255,256,257,262],264:[264,265,270,271,272,794,795,800,256,257,258,263],265:[265,266,271,272,273,257,258,259,264],266:[266,272,273,258,259,265],267:[267,268,655,659,666,939,940,260,261],268:[268,269,659,666,674,260,261,262,267],269:[269,270,666,674,682,261,262,263,268],270:[270,271,674,682,690,262,263,264,269],271:[271,272,690,800,263,264,265,270],272:[272,273,690,698,706,264,265,266,271],273:[273,698,706,265,266,272],274:[274,275,281,282,655,659,666,954,955],275:[275,276,281,282,283,659,666,674,274],276:[276,277,282,283,284,666,674,682,275],277:[277,278,283,284,285,674,682,690,276],278:[278,279,284,285,286,690,812,277],279:[279,280,285,286,287,690,698,706,278],280:[280,286,287,698,706,279],281:[281,282,288,289,955,956,274,275],282:[282,283,288,289,290,274,275,276,281],283:[283,284,289,290,291,275,276,277,282],284:[284,285,290,291,292,276,277,278,283],285:[285,286,291,292,293,806,807,812,277,278,279,284],286:[286,287,292,293,294,278,279,280,285],287:[287,293,294,279,280,286],288:[288,289,295,296,956,281,282],289:[289,290,295,296,297,281,282,283,288],290:[290,291,296,297,298,282,283,284,289],291:[291,292,297,298,299,283,284,285,290],292:[292,293,298,299,300,807,808,284,285,286,291],293:[293,294,299,300,301,285,286,287,292],294:[294,300,301,286,287,293],295:[295,296,302,303,288,289],296:[296,297,302,303,304,288,289,290,295],297:[297,298,303,304,305,289,290,291,296],298:[298,299,304,305,306,290,291,292,297],299:[299,300,305,306,307,808,809,291,292,293,298],300:[300,301,306,307,308,292,293,294,299],301:[301,307,308,293,294,300],302:[302,303,309,310,295,296],303:[303,304,309,310,311,295,296,297,302],304:[304,305,310,311,312,296,297,298,303],305:[305,306,311,312,313,297,298,299,304],306:[306,307,312,313,314,809,810,298,299,300,305],307:[307,308,313,314,315,299,300,301,306],308:[308,314,315,300,301,307],309:[309,310,316,317,302,303],310:[310,311,316,317,318,302,303,304,309],311:[311,312,317,318,319,303,304,305,310],312:[312,313,318,319,320,304,305,306,311],313:[313,314,319,320,321,723,810,305,306,307,312],314:[314,315,320,321,322,306,307,308,313],315:[315,321,322,307,308,314],316:[316,317,323,324,309,310],317:[317,318,323,324,325,309,310,311,316],318:[318,319,324,325,326,310,311,312,317],319:[319,320,325,326,327,311,312,313,318],320:[320,321,326,327,328,723,312,313,314,319],321:[321,322,327,328,329,313,314,315,320],322:[322,328,329,314,315,321],323:[323,324,330,331,316,317],324:[324,325,330,331,332,316,317,318,323],325:[325,326,331,332,333,317,318,319,324],326:[326,327,332,333,334,318,319,320,325],327:[327,328,333,334,335,722,723,319,320,321,326],328:[328,329,334,335,336,320,321,322,327],329:[329,335,336,321,322,328],330:[330,331,337,338,323,324],331:[331,332,337,338,339,323,324,325,330],332:[332,333,338,339,340,324,325,326,331],333:[333,334,339,340,341,325,326,327,332],334:[334,335,340,341,342,721,722,326,327,328,333],335:[335,336,341,342,343,327,328,329,334],336:[336,342,343,328,329,335],337:[337,338,344,345,330,331],338:[338,339,344,345,346,330,331,332,337],339:[339,340,345,346,347,331,332,333,338],340:[340,341,346,347,348,332,333,334,339],341:[341,342,347,348,349,720,721,333,334,335,340],342:[342,343,348,349,350,334,335,336,341],343:[343,349,350,335,336,342],344:[344,345,351,352,833,337,338],345:[345,346,351,352,353,337,338,339,344],346:[346,347,352,353,354,338,339,340,345],347:[347,348,353,354,355,339,340,341,346],348:[348,349,354,355,356,719,720,340,341,342,347],349:[349,350,355,356,357,341,342,343,348],350:[350,356,357,342,343,349],351:[351,352,358,359,832,833,344,345],352:[352,353,358,359,360,344,345,346,351],353:[353,354,359,360,361,345,346,347,352],354:[354,355,360,361,362,346,347,348,353],355:[355,356,361,362,363,718,719,725,347,348,349,354],356:[356,357,362,363,364,348,349,350,355],357:[357,363,364,349,350,356],358:[358,359,397,401,408,831,832,351,352],359:[359,360,401,408,416,351,352,353,358],360:[360,361,408,416,424,352,353,354,359],361:[361,362,416,424,432,353,354,355,360],362:[362,363,432,725,354,355,356,361],363:[363,364,432,440,448,355,356,357,362],364:[364,440,448,356,357,363],365:[365,366,369,370,455,456,541,542,627,628,813,834,870,906,958,967,979,991],366:[366,367,369,370,371,455,456,457,541,542,543,627,628,629,813,834,870,906,958,959,967,968,979,980,991,992,365],367:[367,368,370,371,372,456,457,458,542,543,544,628,629,630,958,959,960,967,968,969,979,980,981,991,992,993,366],368:[368,371,372,457,458,543,544,629,630,957,959,960,968,969,980,981,992,993,367],369:[369,370,373,374,813,815,834,836,958,961,967,970,365,366],370:[370,371,373,374,375,813,815,834,836,958,959,961,962,967,968,970,971,365,366,367,369],371:[371,372,374,375,376,958,959,960,961,962,967,968,969,970,971,366,367,368,370],372:[372,375,376,957,959,960,962,968,969,971,367,368,371],373:[373,374,377,378,815,817,836,838,961,965,970,974,369,370],374:[374,375,377,378,379,815,817,836,838,961,962,965,970,971,974,369,370,371,373],375:[375,376,378,379,380,961,962,965,970,971,974,370,371,372,374],376:[376,380,371,372,375],377:[377,378,381,382,817,819,820,822,838,840,842,965,974,373,374],378:[378,379,381,382,383,817,822,838,842,961,962,965,970,971,974,373,374,375,377],379:[379,380,383,384,374,375,378],380:[380,384,375,376,379],381:[381,382,385,386,817,822,825,838,842,845,965,974,377,378],382:[382,383,386,387,377,378,381],383:[383,384,387,388,378,379,382],384:[384,388,379,380,383],385:[385,386,389,390,822,825,827,842,845,847,381],386:[386,387,390,391,381,382,385],387:[387,388,391,392,382,383,386],388:[388,392,383,384,387],389:[389,390,393,394,825,827,829,845,847,849,385],390:[390,391,394,395,385,386,389],391:[391,392,395,396,386,387,390],392:[392,396,387,388,391],393:[393,394,397,398,827,829,847,849,389],394:[394,395,398,399,389,390,393],395:[395,396,399,400,390,391,394],396:[396,400,391,392,395],397:[397,398,401,829,831,849,851,1,358,393],398:[398,399,401,402,393,394,397],399:[399,400,402,403,404,394,395,398],400:[400,404,395,396,399],401:[401,402,408,1,2,358,359,397,398],402:[402,403,408,409,410,398,399,401],403:[403,404,410,411,399,402],404:[404,405,411,399,400,403],405:[405,406,411,412,404],406:[406,407,412,413,405],407:[407,413,414,415,406],408:[408,409,416,1,2,3,358,359,360,401,402],409:[409,410,416,417,402,408],410:[410,411,417,418,402,403,409],411:[411,412,418,419,403,404,405,410],412:[412,413,419,420,405,406,411],413:[413,414,420,421,406,407,412],414:[414,415,421,422,407,413],415:[415,422,423,407,414],416:[416,417,424,2,3,4,359,360,361,408,409],417:[417,418,424,425,409,410,416],418:[418,419,425,426,410,411,417],419:[419,420,426,427,411,412,418],420:[420,421,427,428,412,413,419],421:[421,422,428,429,413,414,420],422:[422,423,429,430,414,415,421],423:[423,430,431,415,422],424:[424,425,432,3,4,360,361,416,417],425:[425,426,432,433,417,418,424],426:[426,427,433,434,435,418,419,425],427:[427,428,435,419,420,426],428:[428,429,435,436,420,421,427],429:[429,430,436,437,421,422,428],430:[430,431,437,438,422,423,429],431:[431,438,439,423,430],432:[432,433,440,441,725,738,4,5,6,361,362,363,424,425],433:[433,434,441,442,724,725,737,738,425,426,432],434:[434,435,442,443,724,737,426,433],435:[435,436,443,444,716,724,729,737,426,427,428,434],436:[436,437,444,445,715,716,728,729,428,429,435],437:[437,438,445,446,714,715,727,728,429,430,436],438:[438,439,446,447,713,714,726,727,430,431,437],439:[439,447,713,726,431,438],440:[440,441,448,449,6,7,363,364,432],441:[441,442,449,450,432,433,440],442:[442,443,450,451,433,434,441],443:[443,444,451,452,434,435,442],444:[444,445,452,453,435,436,443],445:[445,446,453,454,436,437,444],446:[446,447,454,437,438,445],447:[447,454,438,439,446],448:[448,449,6,7,363,364,440],449:[449,450,440,441,448],450:[450,451,441,442,449],451:[451,452,442,443,450],452:[452,453,443,444,451],453:[453,454,444,445,452],454:[454,445,446,447,453],455:[455,456,459,460,834,854,870,872,967,976,979,982,365,366],456:[456,457,459,460,461,834,854,870,872,967,968,976,977,979,980,982,983,365,366,367,455],457:[457,458,460,461,462,967,968,969,976,977,979,980,981,982,983,366,367,368,456],458:[458,461,462,957,968,969,977,980,981,983,367,368,457],459:[459,460,463,464,854,855,872,874,976,978,982,986,455,456],460:[460,461,463,464,465,854,855,872,874,976,977,978,982,983,986,455,456,457,459],461:[461,462,464,465,466,976,977,978,982,983,986,456,457,458,460],462:[462,466,457,458,461],463:[463,464,467,468,855,856,857,858,874,876,878,978,986,459,460],464:[464,465,467,468,469,855,858,874,878,976,977,978,982,983,986,459,460,461,463],465:[465,466,469,470,460,461,464],466:[466,470,461,462,465],467:[467,468,471,472,855,858,861,874,878,881,978,986,463,464],468:[468,469,472,473,463,464,467],469:[469,470,473,474,464,465,468],470:[470,474,465,466,469],471:[471,472,475,476,858,861,863,878,881,883,467],472:[472,473,476,477,467,468,471],473:[473,474,477,478,468,469,472],474:[474,478,469,470,473],475:[475,476,479,480,861,863,865,881,883,885,471],476:[476,477,480,481,471,472,475],477:[477,478,481,482,472,473,476],478:[478,482,473,474,477],479:[479,480,483,484,863,865,883,885,475],480:[480,481,484,485,475,476,479],481:[481,482,485,486,476,477,480],482:[482,486,477,478,481],483:[483,484,487,865,867,885,887,85,92,479],484:[484,485,487,488,479,480,483],485:[485,486,488,489,490,480,481,484],486:[486,490,481,482,485],487:[487,488,494,85,86,92,93,483,484],488:[488,489,494,495,496,484,485,487],489:[489,490,496,497,485,488],490:[490,491,497,485,486,489],491:[491,492,497,498,490],492:[492,493,498,499,491],493:[493,499,500,501,492],494:[494,495,502,85,86,87,92,93,94,487,488],495:[495,496,502,503,488,494],496:[496,497,503,504,488,489,495],497:[497,498,504,505,489,490,491,496],498:[498,499,505,506,491,492,497],499:[499,500,506,507,492,493,498],500:[500,501,507,508,493,499],501:[501,508,509,493,500],502:[502,503,510,86,87,88,93,94,95,494,495],503:[503,504,510,511,495,496,502],504:[504,505,511,512,496,497,503],505:[505,506,512,513,497,498,504],506:[506,507,513,514,498,499,505],507:[507,508,514,515,499,500,506],508:[508,509,515,516,500,501,507],509:[509,516,517,501,508],510:[510,511,518,87,88,94,95,502,503],511:[511,512,518,519,503,504,510],512:[512,513,519,520,521,504,505,511],513:[513,514,521,505,506,512],514:[514,515,521,522,506,507,513],515:[515,516,522,523,507,508,514],516:[516,517,523,524,508,509,515],517:[517,524,525,509,516],518:[518,519,526,527,750,763,88,89,90,95,96,97,510,511],519:[519,520,527,528,749,750,762,763,511,512,518],520:[520,521,528,529,749,762,512,519],521:[521,522,529,530,742,749,754,762,512,513,514,520],522:[522,523,530,531,741,742,753,754,514,515,521],523:[523,524,531,532,740,741,752,753,515,516,522],524:[524,525,532,533,739,740,751,752,516,517,523],525:[525,533,739,751,517,524],526:[526,527,534,535,90,91,97,98,518],527:[527,528,535,536,518,519,526],528:[528,529,536,537,519,520,527],529:[529,530,537,538,520,521,528],530:[530,531,538,539,521,522,529],531:[531,532,539,540,522,523,530],532:[532,533,540,523,524,531],533:[533,540,524,525,532],534:[534,535,90,91,97,98,526],535:[535,536,526,527,534],536:[536,537,527,528,535],537:[537,538,528,529,536],538:[538,539,529,530,537],539:[539,540,530,531,538],540:[540,531,532,533,539],541:[541,542,545,546,870,890,906,908,979,988,991,994,365,366],542:[542,543,545,546,547,870,890,906,908,979,980,988,989,991,992,994,995,365,366,367,541],543:[543,544,546,547,548,979,980,981,988,989,991,992,993,994,995,366,367,368,542],544:[544,547,548,957,980,981,989,992,993,995,367,368,543],545:[545,546,549,550,890,891,908,910,988,990,994,998,541,542],546:[546,547,549,550,551,890,891,908,910,988,989,990,994,995,998,541,542,543,545],547:[547,548,550,551,552,988,989,990,994,995,998,542,543,544,546],548:[548,552,543,544,547],549:[549,550,553,554,891,892,893,894,910,912,914,990,998,545,546],550:[550,551,553,554,555,891,894,910,914,988,989,990,994,995,998,545,546,547,549],551:[551,552,555,556,546,547,550],552:[552,556,547,548,551],553:[553,554,557,558,891,894,897,910,914,917,990,998,549,550],554:[554,555,558,559,549,550,553],555:[555,556,559,560,550,551,554],556:[556,560,551,552,555],557:[557,558,561,562,894,897,899,914,917,919,553],558:[558,559,562,563,553,554,557],559:[559,560,563,564,554,555,558],560:[560,564,555,556,559],561:[561,562,565,566,897,899,901,917,919,921,557],562:[562,563,566,567,557,558,561],563:[563,564,567,568,558,559,562],564:[564,568,559,560,563],565:[565,566,569,570,899,901,919,921,561],566:[566,567,570,571,561,562,565],567:[567,568,571,572,562,563,566],568:[568,572,563,564,567],569:[569,570,573,901,903,921,923,176,183,565],570:[570,571,573,574,565,566,569],571:[571,572,574,575,576,566,567,570],572:[572,576,567,568,571],573:[573,574,580,176,177,183,184,569,570],574:[574,575,580,581,582,570,571,573],575:[575,576,582,583,571,574],576:[576,577,583,571,572,575],577:[577,578,583,584,576],578:[578,579,584,585,577],579:[579,585,586,587,578],580:[580,581,588,176,177,178,183,184,185,573,574],581:[581,582,588,589,574,580],582:[582,583,589,590,574,575,581],583:[583,584,590,591,575,576,577,582],584:[584,585,591,592,577,578,583],585:[585,586,592,593,578,579,584],586:[586,587,593,594,579,585],587:[587,594,595,579,586],588:[588,589,596,177,178,179,184,185,186,580,581],589:[589,590,596,597,581,582,588],590:[590,591,597,598,582,583,589],591:[591,592,598,599,583,584,590],592:[592,593,599,600,584,585,591],593:[593,594,600,601,585,586,592],594:[594,595,601,602,586,587,593],595:[595,602,603,587,594],596:[596,597,604,178,179,185,186,588,589],597:[597,598,604,605,589,590,596],598:[598,599,605,606,607,590,591,597],599:[599,600,607,591,592,598],600:[600,601,607,608,592,593,599],601:[601,602,608,609,593,594,600],602:[602,603,609,610,594,595,601],603:[603,610,611,595,602],604:[604,605,612,613,775,788,179,180,181,186,187,188,596,597],605:[605,606,613,614,774,775,787,788,597,598,604],606:[606,607,614,615,774,787,598,605],607:[607,608,615,616,767,774,779,787,598,599,600,606],608:[608,609,616,617,766,767,778,779,600,601,607],609:[609,610,617,618,765,766,777,778,601,602,608],610:[610,611,618,619,764,765,776,777,602,603,609],611:[611,619,764,776,603,610],612:[612,613,620,621,181,182,188,189,604],613:[613,614,621,622,604,605,612],614:[614,615,622,623,605,606,613],615:[615,616,623,624,606,607,614],616:[616,617,624,625,607,608,615],617:[617,618,625,626,608,609,616],618:[618,619,626,609,610,617],619:[619,626,610,611,618],620:[620,621,181,182,188,189,612],621:[621,622,612,613,620],622:[622,623,613,614,621],623:[623,624,614,615,622],624:[624,625,615,616,623],625:[625,626,616,617,624],626:[626,617,618,619,625],627:[627,628,631,632,813,906,926,942,958,991,1e3,1003,365,366],628:[628,629,631,632,633,813,906,926,942,958,959,991,992,1e3,1001,1003,1004,365,366,367,627],629:[629,630,632,633,634,958,959,960,991,992,993,1e3,1001,1003,1004,366,367,368,628],630:[630,633,634,957,959,960,992,993,1001,1004,367,368,629],631:[631,632,635,636,926,927,942,943,1e3,1002,1003,1005,627,628],632:[632,633,635,636,637,926,927,942,943,1e3,1001,1002,1003,1004,1005,627,628,629,631],633:[633,634,636,637,638,1e3,1001,1002,1003,1004,1005,628,629,630,632],634:[634,638,629,630,633],635:[635,636,639,640,927,928,929,930,943,944,945,1002,1005,631,632],636:[636,637,639,640,641,927,930,943,945,1e3,1001,1002,1003,1004,1005,631,632,633,635],637:[637,638,641,642,632,633,636],638:[638,642,633,634,637],639:[639,640,643,644,927,930,933,943,945,948,1002,1005,635,636],640:[640,641,644,645,635,636,639],641:[641,642,645,646,636,637,640],642:[642,646,637,638,641],643:[643,644,647,648,930,933,935,945,948,950,639],644:[644,645,648,649,639,640,643],645:[645,646,649,650,640,641,644],646:[646,650,641,642,645],647:[647,648,651,652,933,935,937,948,950,952,643],648:[648,649,652,653,643,644,647],649:[649,650,653,654,644,645,648],650:[650,654,645,646,649],651:[651,652,655,656,935,937,950,952,647],652:[652,653,656,657,647,648,651],653:[653,654,657,658,648,649,652],654:[654,658,649,650,653],655:[655,656,659,937,939,952,954,267,274,651],656:[656,657,659,660,651,652,655],657:[657,658,660,661,662,652,653,656],658:[658,662,653,654,657],659:[659,660,666,267,268,274,275,655,656],660:[660,661,666,667,668,656,657,659],661:[661,662,668,669,657,660],662:[662,663,669,657,658,661],663:[663,664,669,670,662],664:[664,665,670,671,663],665:[665,671,672,673,664],666:[666,667,674,267,268,269,274,275,276,659,660],667:[667,668,674,675,660,666],668:[668,669,675,676,660,661,667],669:[669,670,676,677,661,662,663,668],670:[670,671,677,678,663,664,669],671:[671,672,678,679,664,665,670],672:[672,673,679,680,665,671],673:[673,680,681,665,672],674:[674,675,682,268,269,270,275,276,277,666,667],675:[675,676,682,683,667,668,674],676:[676,677,683,684,668,669,675],677:[677,678,684,685,669,670,676],678:[678,679,685,686,670,671,677],679:[679,680,686,687,671,672,678],680:[680,681,687,688,672,673,679],681:[681,688,689,673,680],682:[682,683,690,269,270,276,277,674,675],683:[683,684,690,691,675,676,682],684:[684,685,691,692,693,676,677,683],685:[685,686,693,677,678,684],686:[686,687,693,694,678,679,685],687:[687,688,694,695,679,680,686],688:[688,689,695,696,680,681,687],689:[689,696,697,681,688],690:[690,691,698,699,800,812,270,271,272,277,278,279,682,683],691:[691,692,699,700,799,800,811,812,683,684,690],692:[692,693,700,701,799,811,684,691],693:[693,694,701,702,792,799,804,811,684,685,686,692],694:[694,695,702,703,791,792,803,804,686,687,693],695:[695,696,703,704,790,791,802,803,687,688,694],696:[696,697,704,705,789,790,801,802,688,689,695],697:[697,705,789,801,689,696],698:[698,699,706,707,272,273,279,280,690],699:[699,700,707,708,690,691,698],700:[700,701,708,709,691,692,699],701:[701,702,709,710,692,693,700],702:[702,703,710,711,693,694,701],703:[703,704,711,712,694,695,702],704:[704,705,712,695,696,703],705:[705,712,696,697,704],706:[706,707,272,273,279,280,698],707:[707,708,698,699,706],708:[708,709,699,700,707],709:[709,710,700,701,708],710:[710,711,701,702,709],711:[711,712,702,703,710],712:[712,703,704,705,711],713:[713,714,438,439],714:[714,715,437,438,713],715:[715,716,436,437,714],716:[716,717,724,435,436,715],717:[717,718,724,725,716],718:[718,719,725,355,717],719:[719,720,348,355,718],720:[720,721,341,348,719],721:[721,722,334,341,720],722:[722,723,327,334,721],723:[723,810,313,320,327,722],724:[724,725,433,434,435,716,717],725:[725,355,362,432,433,717,718,724],726:[726,727,438,439],727:[727,728,437,438,726],728:[728,729,436,437,727],729:[729,730,737,435,436,728],730:[730,731,737,738,729],731:[731,732,738,12,730],732:[732,733,12,19,731],733:[733,734,19,26,732],734:[734,735,26,33,733],735:[735,736,33,40,734],736:[736,748,40,47,54,735],737:[737,738,433,434,435,729,730],738:[738,5,12,432,433,730,731,737],739:[739,740,524,525],740:[740,741,523,524,739],741:[741,742,522,523,740],742:[742,743,749,521,522,741],743:[743,744,749,750,742],744:[744,745,750,82,743],745:[745,746,75,82,744],746:[746,747,68,75,745],747:[747,748,61,68,746],748:[748,54,61,736,747],749:[749,750,519,520,521,742,743],750:[750,82,89,518,519,743,744,749],751:[751,752,524,525],752:[752,753,523,524,751],753:[753,754,522,523,752],754:[754,755,762,521,522,753],755:[755,756,762,763,754],756:[756,757,763,103,755],757:[757,758,103,110,756],758:[758,759,110,117,757],759:[759,760,117,124,758],760:[760,761,124,131,759],761:[761,773,131,138,145,760],762:[762,763,519,520,521,754,755],763:[763,96,103,518,519,755,756,762],764:[764,765,610,611],765:[765,766,609,610,764],766:[766,767,608,609,765],767:[767,768,774,607,608,766],768:[768,769,774,775,767],769:[769,770,775,173,768],770:[770,771,166,173,769],771:[771,772,159,166,770],772:[772,773,152,159,771],773:[773,145,152,761,772],774:[774,775,605,606,607,767,768],775:[775,173,180,604,605,768,769,774],776:[776,777,610,611],777:[777,778,609,610,776],778:[778,779,608,609,777],779:[779,780,787,607,608,778],780:[780,781,787,788,779],781:[781,782,788,194,780],782:[782,783,194,201,781],783:[783,784,201,208,782],784:[784,785,208,215,783],785:[785,786,215,222,784],786:[786,798,222,229,236,785],787:[787,788,605,606,607,779,780],788:[788,187,194,604,605,780,781,787],789:[789,790,696,697],790:[790,791,695,696,789],791:[791,792,694,695,790],792:[792,793,799,693,694,791],793:[793,794,799,800,792],794:[794,795,800,264,793],795:[795,796,257,264,794],796:[796,797,250,257,795],797:[797,798,243,250,796],798:[798,236,243,786,797],799:[799,800,691,692,693,792,793],800:[800,264,271,690,691,793,794,799],801:[801,802,696,697],802:[802,803,695,696,801],803:[803,804,694,695,802],804:[804,805,811,693,694,803],805:[805,806,811,812,804],806:[806,807,812,285,805],807:[807,808,285,292,806],808:[808,809,292,299,807],809:[809,810,299,306,808],810:[810,306,313,723,809],811:[811,812,691,692,693,804,805],812:[812,278,285,690,691,805,806,811],813:[813,815,816,942,958,961,963,1003,365,366,369,370,627,628],814:[814,817,818,824,943,947,966],815:[815,816,817,958,961,963,965,369,370,373,374,813],816:[816,817,818,942,943,958,961,963,965,966,1003,1005,813,815],817:[817,818,819,820,821,822,823,824,961,963,965,966,373,374,377,378,381,814,815,816],818:[818,820,821,824,943,944,947,963,965,966,1005,814,816,817],819:[819,820,838,840,377,817],820:[820,821,377,817,818,819],821:[821,943,944,817,818,820],822:[822,823,825,826,965,377,378,381,385,817],823:[823,824,825,826,965,817,822],824:[824,965,966,814,817,818,823],825:[825,826,827,828,381,385,389,822,823],826:[826,827,828,822,823,825],827:[827,828,829,830,385,389,393,825,826],828:[828,829,830,825,826,827],829:[829,830,831,832,389,393,397,827,828],830:[830,832,833,827,828,829],831:[831,832,358,397,829],832:[832,833,351,358,829,830,831],833:[833,344,351,830,832],834:[834,836,837,854,967,970,972,976,365,366,369,370,455,456],835:[835,838,839,844,855,860,975],836:[836,837,838,967,970,972,974,369,370,373,374,834],837:[837,838,839,854,855,967,970,972,974,975,976,978,834,836],838:[838,839,840,841,842,843,844,970,972,974,975,373,374,377,378,381,819,835,836,837],839:[839,840,841,844,855,857,860,972,974,975,978,835,837,838],840:[840,841,377,819,838,839],841:[841,855,857,838,839,840],842:[842,843,845,846,974,377,378,381,385,838],843:[843,844,845,846,974,838,842],844:[844,974,975,835,838,839,843],845:[845,846,847,848,381,385,389,842,843],846:[846,847,848,842,843,845],847:[847,848,849,850,385,389,393,845,846],848:[848,849,850,845,846,847],849:[849,850,851,852,389,393,397,847,848],850:[850,852,853,847,848,849],851:[851,852,1,397,849],852:[852,853,1,8,849,850,851],853:[853,8,15,850,852],854:[854,855,967,972,976,978,455,456,459,460,834,837],855:[855,856,857,858,859,860,972,975,976,978,459,460,463,464,467,835,837,839,841,854],856:[856,857,874,876,463,855],857:[857,463,839,841,855,856],858:[858,859,861,862,978,463,464,467,471,855],859:[859,860,861,862,978,855,858],860:[860,975,978,835,839,855,859],861:[861,862,863,864,467,471,475,858,859],862:[862,863,864,858,859,861],863:[863,864,865,866,471,475,479,861,862],864:[864,865,866,861,862,863],865:[865,866,867,868,475,479,483,863,864],866:[866,868,869,863,864,865],867:[867,868,85,483,865],868:[868,869,78,85,865,866,867],869:[869,71,78,866,868],870:[870,872,873,890,979,982,984,988,365,366,455,456,541,542],871:[871,874,875,880,891,896,987],872:[872,873,874,979,982,984,986,455,456,459,460,870],873:[873,874,875,890,891,979,982,984,986,987,988,990,870,872],874:[874,875,876,877,878,879,880,982,984,986,987,459,460,463,464,467,856,871,872,873],875:[875,876,877,880,891,893,896,984,986,987,990,871,873,874],876:[876,877,463,856,874,875],877:[877,891,893,874,875,876],878:[878,879,881,882,986,463,464,467,471,874],879:[879,880,881,882,986,874,878],880:[880,986,987,871,874,875,879],881:[881,882,883,884,467,471,475,878,879],882:[882,883,884,878,879,881],883:[883,884,885,886,471,475,479,881,882],884:[884,885,886,881,882,883],885:[885,886,887,888,475,479,483,883,884],886:[886,888,889,883,884,885],887:[887,888,92,483,885],888:[888,889,92,99,885,886,887],889:[889,99,106,886,888],890:[890,891,979,984,988,990,541,542,545,546,870,873],891:[891,892,893,894,895,896,984,987,988,990,545,546,549,550,553,871,873,875,877,890],892:[892,893,910,912,549,891],893:[893,549,875,877,891,892],894:[894,895,897,898,990,549,550,553,557,891],895:[895,896,897,898,990,891,894],896:[896,987,990,871,875,891,895],897:[897,898,899,900,553,557,561,894,895],898:[898,899,900,894,895,897],899:[899,900,901,902,557,561,565,897,898],900:[900,901,902,897,898,899],901:[901,902,903,904,561,565,569,899,900],902:[902,904,905,899,900,901],903:[903,904,176,569,901],904:[904,905,169,176,901,902,903],905:[905,162,169,902,904],906:[906,908,909,926,991,994,996,1e3,365,366,541,542,627,628],907:[907,910,911,916,927,932,999],908:[908,909,910,991,994,996,998,541,542,545,546,906],909:[909,910,911,926,927,991,994,996,998,999,1e3,1002,906,908],910:[910,911,912,913,914,915,916,994,996,998,999,545,546,549,550,553,892,907,908,909],911:[911,912,913,916,927,929,932,996,998,999,1002,907,909,910],912:[912,913,549,892,910,911],913:[913,927,929,910,911,912],914:[914,915,917,918,998,549,550,553,557,910],915:[915,916,917,918,998,910,914],916:[916,998,999,907,910,911,915],917:[917,918,919,920,553,557,561,914,915],918:[918,919,920,914,915,917],919:[919,920,921,922,557,561,565,917,918],920:[920,921,922,917,918,919],921:[921,922,923,924,561,565,569,919,920],922:[922,924,925,919,920,921],923:[923,924,183,569,921],924:[924,925,183,190,921,922,923],925:[925,190,197,922,924],926:[926,927,991,996,1e3,1002,627,628,631,632,906,909],927:[927,928,929,930,931,932,996,999,1e3,1002,631,632,635,636,639,907,909,911,913,926],928:[928,929,943,944,635,927],929:[929,635,911,913,927,928],930:[930,931,933,934,1002,635,636,639,643,927],931:[931,932,933,934,1002,927,930],932:[932,999,1002,907,911,927,931],933:[933,934,935,936,639,643,647,930,931],934:[934,935,936,930,931,933],935:[935,936,937,938,643,647,651,933,934],936:[936,937,938,933,934,935],937:[937,938,939,940,647,651,655,935,936],938:[938,940,941,935,936,937],939:[939,940,267,655,937],940:[940,941,260,267,937,938,939],941:[941,253,260,938,940],942:[942,943,958,963,1003,1005,627,628,631,632,813,816],943:[943,944,945,946,947,963,966,1003,1005,631,632,635,636,639,814,816,818,821,928,942],944:[944,635,818,821,928,943],945:[945,946,948,949,1005,635,636,639,643,943],946:[946,947,948,949,1005,943,945],947:[947,966,1005,814,818,943,946],948:[948,949,950,951,639,643,647,945,946],949:[949,950,951,945,946,948],950:[950,951,952,953,643,647,651,948,949],951:[951,952,953,948,949,950],952:[952,953,954,955,647,651,655,950,951],953:[953,955,956,950,951,952],954:[954,955,274,655,952],955:[955,956,274,281,952,953,954],956:[956,281,288,953,955],957:[957,960,969,981,993,368,372,458,544,630],958:[958,959,961,962,963,964,1003,1004,365,366,367,369,370,371,627,628,629,813,815,816,942],959:[959,960,961,962,963,964,1003,1004,366,367,368,370,371,372,628,629,630,958],960:[960,962,964,1004,367,368,371,372,629,630,957,959],961:[961,962,963,964,965,966,369,370,371,373,374,375,378,813,815,816,817,958,959],962:[962,963,964,965,966,370,371,372,374,375,378,958,959,960,961],963:[963,964,965,966,1003,1004,1005,813,815,816,817,818,942,943,958,959,961,962],964:[964,965,966,1003,1004,1005,958,959,960,961,962,963],965:[965,966,373,374,375,377,378,381,815,816,817,818,822,823,824,961,962,963,964],966:[966,1003,1004,1005,814,816,817,818,824,943,947,961,962,963,964,965],967:[967,968,970,971,972,973,976,977,365,366,367,369,370,371,455,456,457,834,836,837,854],968:[968,969,970,971,972,973,976,977,366,367,368,370,371,372,456,457,458,967],969:[969,971,973,977,367,368,371,372,457,458,957,968],970:[970,971,972,973,974,975,369,370,371,373,374,375,378,834,836,837,838,967,968],971:[971,972,973,974,975,370,371,372,374,375,378,967,968,969,970],972:[972,973,974,975,976,977,978,834,836,837,838,839,854,855,967,968,970,971],973:[973,974,975,976,977,978,967,968,969,970,971,972],974:[974,975,373,374,375,377,378,381,836,837,838,839,842,843,844,970,971,972,973],975:[975,976,977,978,835,837,838,839,844,855,860,970,971,972,973,974],976:[976,977,978,455,456,457,459,460,461,464,834,837,854,855,967,968,972,973,975],977:[977,978,456,457,458,460,461,464,967,968,969,972,973,975,976],978:[978,459,460,461,463,464,467,837,839,854,855,858,859,860,972,973,975,976,977],979:[979,980,982,983,984,985,988,989,365,366,367,455,456,457,541,542,543,870,872,873,890],980:[980,981,982,983,984,985,988,989,366,367,368,456,457,458,542,543,544,979],981:[981,983,985,989,367,368,457,458,543,544,957,980],982:[982,983,984,985,986,987,455,456,457,459,460,461,464,870,872,873,874,979,980],983:[983,984,985,986,987,456,457,458,460,461,464,979,980,981,982],984:[984,985,986,987,988,989,990,870,872,873,874,875,890,891,979,980,982,983],985:[985,986,987,988,989,990,979,980,981,982,983,984],986:[986,987,459,460,461,463,464,467,872,873,874,875,878,879,880,982,983,984,985],987:[987,988,989,990,871,873,874,875,880,891,896,982,983,984,985,986],988:[988,989,990,541,542,543,545,546,547,550,870,873,890,891,979,980,984,985,987],989:[989,990,542,543,544,546,547,550,979,980,981,984,985,987,988],990:[990,545,546,547,549,550,553,873,875,890,891,894,895,896,984,985,987,988,989],991:[991,992,994,995,996,997,1e3,1001,365,366,367,541,542,543,627,628,629,906,908,909,926],992:[992,993,994,995,996,997,1e3,1001,366,367,368,542,543,544,628,629,630,991],993:[993,995,997,1001,367,368,543,544,629,630,957,992],994:[994,995,996,997,998,999,541,542,543,545,546,547,550,906,908,909,910,991,992],995:[995,996,997,998,999,542,543,544,546,547,550,991,992,993,994],996:[996,997,998,999,1e3,1001,1002,906,908,909,910,911,926,927,991,992,994,995],997:[997,998,999,1e3,1001,1002,991,992,993,994,995,996],998:[998,999,545,546,547,549,550,553,908,909,910,911,914,915,916,994,995,996,997],999:[999,1e3,1001,1002,907,909,910,911,916,927,932,994,995,996,997,998],1e3:[1e3,1001,1002,627,628,629,631,632,633,636,906,909,926,927,991,992,996,997,999],1001:[1001,1002,628,629,630,632,633,636,991,992,993,996,997,999,1e3],1002:[1002,631,632,633,635,636,639,909,911,926,927,930,931,932,996,997,999,1e3,1001],1003:[1003,1004,1005,627,628,629,631,632,633,636,813,816,942,943,958,959,963,964,966],1004:[1004,1005,628,629,630,632,633,636,958,959,960,963,964,966,1003],1005:[1005,631,632,633,635,636,639,816,818,942,943,945,946,947,963,964,966,1003,1004]};async function Uh(t,e){const n=new Map;for(let s=0;s<t.length;s++){const a=new In(t[s].data);n.set(t[s],a)}const i=new Map;for(let s=0;s<e.length;s++){const a=new gn(e[s][0],e[s][1],e[s].data);i.set(s,a)}return await jt.create(n,i)}const vc={ConstructGraphNodeEdgesList:Uh};class mt{constructor(e,n,i){this.x=e,this.y=n,this.z=i}translate(e){this.x=this.x+e.x,this.y=this.y+e.y,this.z=this.z+e.z}}function Nh(t){let e=0;for(let i=0;i<t.length;i++)e=e+t[i];const n=e/t.length;return Number.isNaN(n)?0:n}function Fh(t,e){return Math.pow(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)+Math.pow(t.z-e.z,2),.5)}function Oh(t,e){return Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)+Math.pow(t.z-e.z,2)}function zh(t,e){var n=new Array(e),i=t.length,r=new Array(i);if(e>i)throw new RangeError("getRandom: more elements taken than available");for(;e--;){var s=Math.floor(Math.random()*i);n[e]=t[s in r?r[s]:s],r[s]=--i in r?r[i]:i}return n}function Bh(t,e){const n=new Map;let i;for(const r of t.keys())i=Math.random(),i<e&&n.set(r,t.get(r));return n}const Et={calculateAverage:Nh,calculateDistance:Fh,calculateSquaredDistance:Oh,getRandomSubset:zh,getRandomSubset_map:Bh};let kr=class{constructor(e){this.points=[],e.forEach(n=>{const i=new mt(n.x,n.y,n.z);this.points.push(i)})}};function xc(t,e,n){const i=new mt(t.x,t.y,t.z),r=new mt(e.x,e.y,e.z),s=[];for(let o=0;o<=n;o++){const c=o/n,l=c*i.x+(1-c)*r.x,h=c*i.y+(1-c)*r.y,f=c*i.z+(1-c)*r.z,d=new mt(l,h,f);s.push(d)}return new kr(s)}function Hh(t,e,n){const i=Et.calculateDistance(t,e),r=Math.round(i/n)+2;return xc(t,e,r)}function kh(t){let e=0,n=0,i=0;return t.forEach(s=>{e+=s.x,n+=s.y,i+=s.z}),e=e/t.length,n=n/t.length,i=i/t.length,new mt(e,n,i)}const wi={line_from_start_end_divisions:xc,line_from_start_end_distance:Hh,centroid:kh};async function Vh(t,e,n=1e3,i=1,r=1){const s=t.get_adjacency(),a=new Map,o=new Map;let c,l;for(const y of s.keys())c=Math.random()*n,l=Math.random()*n,a.set(y,c),o.set(y,l);for(let y=0;y<e;y++){let v,P,b,w,R,S,x,C,L,D,U,X,V,K;for(const G of s.keys()){const te=s.get(G);v=a.get(G),P=o.get(G),b=[],w=[],te.forEach(he=>{const re=a.get(he),Se=o.get(he);b.push(re),w.push(Se)}),U=Et.calculateAverage(b),X=Et.calculateAverage(w),R=[],S=[];let ie,ve,Le,Xe;for(const he of t.nodes.keys())he!=G&&(Le=a.get(he),Xe=o.get(he),ie=Le-v,ve=Xe-P,S.push(ie),R.push(ve));L=r*1/(Et.calculateAverage(S)*Et.calculateAverage(S)),D=r*1/(Et.calculateAverage(R)*Et.calculateAverage(R)),x=i*(U-v),C=i*(X-P),V=i*(0-v),K=i*(0-P);const q=L+V+x+v,Q=D+K+C+P;a.set(G,q),o.set(G,Q)}}let h=new Map;for(const y of a.keys())h.set(y,new mt(a.get(y),0,o.get(y)));const f=[],d=[],u=[];let g;for(const y of h.keys())g=h.get(y),f.push(g.x),d.push(g.y),u.push(g.z);const _=Et.calculateAverage(f),p=Et.calculateAverage(d),m=Et.calculateAverage(u),T=new mt(-_,-p,-m);return h=Sc(h,T),h}function Gh(t){const e=t.get_adjacency(),n=new Map,i=new Map;for(const s of e.keys())n.set(s,Math.random()*200),i.set(s,Math.random()*200);const r=new Map;for(const s of n.keys())r.set(s,new mt(n.get(s),0,i.get(s)));return r}function Mc(t,e){const n=new Map;let i,r,s;for(const a of t.edges.keys()){i=t.edges.get(a),r=t.nodes.get(i.start).data.pos,s=t.nodes.get(i.end).data.pos;const o=wi.line_from_start_end_distance(r,s,e);n.set(a,o)}return n}function Wh(t,e){const n=new Map;let i,r,s;for(const a of t.edges.keys()){i=t.edges.get(a),r=t.nodes.get(i.start).data.pos,s=t.nodes.get(i.end).data.pos;const o=wi.line_from_start_end_divisions(r,s,e);n.set(a,o)}return n}async function yc(t,e,n){const i=new Map;for(let T of t.keys())i.set(T,structuredClone(t.get(T)));let r,s,a,o,c,l,h,f,d,u,g,_,p,m;for(let T=0;T<e;T++)for(let y of i.keys()){r=i.get(y);for(let v=1;v<r.points.length-1;v++){a=[],o=[],c=[],l=r.points[v];for(let b of i.keys())if(b!=y){s=i.get(b);for(let w=1;w<s.points.length-1;w++)h=s.points[w],f=Et.calculateSquaredDistance(l,h),f<=Math.pow(n,2)&&(d=h.x-l.x,u=h.y-l.y,g=h.z-l.z,a.push(d),o.push(u),c.push(g))}_=l.x+.8*(Et.calculateAverage(a)||0),p=l.y+.8*(Et.calculateAverage(o)||0),m=l.z+.8*(Et.calculateAverage(c)||0);const P=new mt(_,p,m);r.points[v]=P}}return i}function Xh(t,e){const n=new Map;for(let i of t.keys())n.set(i,structuredClone(t.get(i)));for(const i of n.keys()){const r=n.get(i);let s,a;for(let o=0;o<r.points.length;o++)s=r.points[o],a=e*Math.sin(Math.PI*o/(r.points.length-1)),s.y=s.y+a}return n}function qh(t,e,n){let i=0,r,s;const a=o=>{const c=o[e];return typeof c=="number"?c:Number(c)||0};for(let o of t.nodes.values())r=a(o.data),r>=i&&(i=r);for(const o of t.nodes.values())r=a(o.data),s=i>0?r/i*n:0,s=Math.max(0,s),s=Math.min(n,s),o.data.pos.y=s}async function $h(t,e,n,i){const r=t.get_adjacency(),s=await Hr.Dijkstra(t,e),a=Math.max(...s.values()),o=new Map;for(let g=0;g<=a;g++){const _=[];for(const p of s.keys())g==s.get(p)&&_.push(p);o.set(g,_)}const c=new Map,l=i.x||0,h=i.y||0,f=i.z||0;for(const g of r.keys()){const _=s.get(g)*n,p=o.get(s.get(g)),m=2*Math.PI*(p.indexOf(g)/p.length),T=Math.sin(m)*_,y=Math.cos(m)*_,v=new mt(T+l,-_+h,y+f);c.set(g,v)}t.apply_position_map(c);const d=Mc(t,1),u=await yc(d,12,5);return{pmap:c,emap:u}}function Yh(t,e){const n=t.get_map(),i=Sc(n.pmap,e),r=jh(n.emap,e);t.apply_drawing_maps({pmap:i,emap:r})}function Sc(t,e){const n=new Map;for(let i of t.keys()){const r=t.get(i);r.translate(e),n.set(i,r)}return n}function jh(t,e){const n=new Map;let i,r,s;for(let a of t.keys()){i=[],r=t.get(a);for(let o of r.points)o.translate(e),i.push(o);s=new kr(i),n.set(a,s)}return n}function Zh(t,e){let n,i,r,s;for(const a of t.edges.keys())n=t.edges.get(a),i=t.nodes.get(n.start).data.pos,r=t.nodes.get(n.end).data.pos,s=wi.line_from_start_end_distance(i,r,e),n.data.ldata=s}function Kh(t,e){let n,i,r,s;for(const a of t.edges.keys())n=t.edges.get(a),i=t.nodes.get(n.start).data.pos,r=t.nodes.get(n.end).data.pos,s=wi.line_from_start_end_divisions(i,r,e),n.data.ldata=s}const Ec={SimulateKamadaKawai:Vh,DrawEdgeLines:Mc,DrawEdgeLinesDivisions:Wh,DrawEdgeBundling:yc,HivePlot:$h,DisplaceEdgeInY:Xh,MoveGraph:Yh,InstanciateRandomPositions:Gh,DisplaceVertices:qh,UpdateEdgeLinesDist:Zh,UpdateEdgeLinesDivs:Kh};async function Jh(t){const e=t.split(/\r?\n/),n=[],i=new Set;for(const c of e){const l=c.trim();if(!l||l.startsWith("#"))continue;const h=l.split(/\s+/);if(h.length<2)continue;const f=parseInt(h[0],10),d=parseInt(h[1],10);Number.isNaN(f)||Number.isNaN(d)||(n.push([f,d]),i.add(f),i.add(d))}const r=new Map,s=new mt(0,0,0);for(const c of i)r.set(c,new In({pos:s}));const a=new Map;return n.forEach(([c,l],h)=>{a.set(h,new gn(c,l,{}))}),await jt.create(r,a)}async function Qh(){const t=Dh;return await vc.ConstructGraphNodeEdgesList(t.nodes,t.edges)}async function ef(){const t=Lh,e=new Map,n=new Map;t.nodes.forEach(s=>{const a=s.id,o=new mt(s.px*50,0,s.py*50),c=s.member,l=new In({pos:o,size:10,info:"Node Info",modularity:c});e.set(a,l)});for(let s=0;s<t.edges.length;s++){const a=t.edges[s],o=a[0],c=a[1],l=new gn(o,c,{});n.set(s,l)}const i=await jt.create(e,n),r=Ec.DrawEdgeLines(i,20);return i.apply_edge_pos_maps(r),i}async function tf(t){const e=t.split(/\r?\n/),n=[],i=new Set;for(const f of e){const d=f.trim();if(!(!d||d.startsWith("#"))){if(d.startsWith("v ")){const u=d.slice(2).trim().split(/\s+/);if(u.length>=3){const g=parseFloat(u[0]),_=parseFloat(u[1]),p=parseFloat(u[2]);!Number.isNaN(g)&&!Number.isNaN(_)&&!Number.isNaN(p)&&n.push(g,_,p)}continue}if(d.startsWith("f ")){const u=d.slice(2).trim().split(/\s+/),g=[];for(const _ of u){const p=parseInt(_.split("/")[0],10);!Number.isNaN(p)&&p>=1&&g.push(p-1)}for(let _=0;_<g.length;_++){const p=g[_],m=g[(_+1)%g.length];if(p===m)continue;const T=p<m?`${p},${m}`:`${m},${p}`;i.add(T)}}}}const r=n.length/3,s=new Map,a=new mt(0,0,0);for(let f=0;f<r;f++)s.set(f,new In({pos:a}));const o=new Map;let c=0;for(const f of i){const[d,u]=f.split(",").map(g=>parseInt(g,10));o.set(c++,new gn(d,u,{}))}const l=await jt.create(s,o),h=new Float32Array(n);return{graph:l,positions:h}}async function nf(){const t=Ih,e=new Set;for(const l of Object.keys(t)){const h=parseInt(l,10);Number.isNaN(h)||e.add(h);for(const f of t[l])e.add(f)}const n=new Set;for(const l of Object.keys(t)){const h=parseInt(l,10);if(!Number.isNaN(h))for(const f of t[l]){const d=Math.min(h,f),u=Math.max(h,f);n.add(`${d},${u}`)}}const i=new Map,r=new mt(0,0,0),s=[...e].sort((l,h)=>l-h);for(const l of s)i.set(l,new In({pos:r}));const a=new Map;let o=0;for(const l of n){const[h,f]=l.split(",").map(d=>parseInt(d,10));a.set(o++,new gn(h,f,{}))}return await jt.create(i,a)}const rf={LoadZKC:Qh,LoadZKCSimulated:ef,LoadGraphFromEdgeListText:Jh,LoadGraphFromObjText:tf,LoadDwt1005:nf};/**
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class gn{constructor(e,n,i){this.start=e,this.end=n,this.data={...i}}}class jt{constructor(e,n){this.nodes=e,this.edges=n,this._nextEdgeId=n.size>0?Math.max(...n.keys())+1:0}printData(){const e="This is a graph with "+this.nodes.size+" nodes and "+this.edges.size+" edges";console.log(e)}async initialize(){await this.constructAdjacencyList()}static async create(e,n){const i=new jt(e,n);return await i.initialize(),i}async constructAdjacencyList(){this.edges.forEach(e=>{const n=e.start,i=e.end;this.nodes.get(n)&&this.nodes.get(n).neighbours.push(i),this.nodes.get(i)&&this.nodes.get(i).neighbours.push(n)}),await Promise.resolve();for(const e of this.nodes.keys()){const n=this.nodes.get(e).neighbours,i=[...new Set(n)],r=i.indexOf(e);r>-1&&i.splice(r,1),this.nodes.get(e).neighbours=i}}add_node(e,n){this.nodes.set(e,n)}add_edge(e,n,i){const r=new gn(e,n,i),s=this._nextEdgeId++;this.edges.set(s,r);const a=this.nodes.get(e),o=this.nodes.get(n);a&&a.neighbours.push(n),o&&o.neighbours.push(e)}get_adjacency(){const e=new Map;for(const n of this.nodes.keys())e.set(n,this.nodes.get(n).neighbours);return e}apply_position_map(e){for(let n of e.keys())this.nodes.get(n).data={...this.nodes.get(n).data,pos:e.get(n)}}apply_edge_pos_maps(e){for(let n of e.keys())this.edges.get(n).data={...this.edges.get(n).data,ldata:e.get(n)}}get_edge_map(){const e=new Map;for(const n of this.edges.keys()){const i=this.edges.get(n).data.ldata;i!=null&&e.set(n,i)}return e}apply_drawing_maps(e){e.pmap&&this.apply_position_map(e.pmap),e.emap&&this.apply_edge_pos_maps(e.emap)}get_map(){return{pmap:this.get_position_map(),emap:this.get_edge_map()}}get_position_map(){var n,i;const e=new Map;for(const r of this.nodes.keys()){const s=(i=(n=this.nodes.get(r))==null?void 0:n.data)==null?void 0:i.pos;s!=null&&e.set(r,s)}return e}get_node_ids_order(){return Array.from(this.nodes.keys())}get_adjacency_matrix(){const e=this.get_node_ids_order(),n=e.length,i=new Float32Array(n*n),r=this.get_adjacency(),s=new Map;e.forEach((a,o)=>s.set(a,o));for(let a=0;a<n;a++){const o=e[a],c=r.get(o)??[];for(const l of c){const h=s.get(l);h!==void 0&&(i[a*n+h]=1)}}return{matrix:i,nodeIds:e}}}class In{constructor(e){this.data={...e},this.neighbours=[]}}async function _c(t,e){const n=t.get_adjacency(),i=new Map,r=new Set([e]),s=[e];for(i.set(e,-1);s.length>0;){const a=s.shift(),o=n.get(a);for(let c=0;c<o.length;c++){const l=o[c];r.has(l)||(r.add(l),s.push(l),i.set(l,a))}}return i}async function Rs(t,e){const n=t.get_adjacency(),i=new Map,r=await _c(t,e);for(const s of n.keys()){if(!r.has(s))continue;let a=0,o=r.get(s);for(;o!==void 0&&o!==-1;)o=r.get(o),a+=1;i.set(s,a)}return i}async function Ch(t){const e=[...t.nodes.keys()];if(e.length===0)return{start:0,end:0,distance:0};if(e.length===1)return{start:e[0],end:e[0],distance:0};const n=t.get_adjacency(),i=e.filter(l=>{var h;return(((h=n.get(l))==null?void 0:h.length)??0)>0}),r=i.length>0?i:e;let s=r[Math.floor(Math.random()*r.length)],a=await Rs(t,s),o=-1;for(const l of a.keys()){const h=a.get(l);h>o&&(s=l,o=h)}const c=s;a=await Rs(t,s),o=-1;for(const l of a.keys()){const h=a.get(l);h>o&&(s=l,o=h)}return{start:c,end:s,distance:o}}async function Ph(t,e){const n=new Map,i=new Map;e.forEach(a=>{const o=t.nodes.get(a);n.set(a,o)});let r=0;for(const a of t.edges.keys()){const o=t.edges.get(a);e.includes(o.start)&&e.includes(o.end)&&(i.set(r,o),r+=1)}return await jt.create(n,i)}const Hr={GraphDiameter:Ch,Dijkstra:Rs,BFSSearch:_c,SelectSubgraph:Ph},Dh={nodes:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],edges:[[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,10],[0,11],[0,12],[0,13],[0,17],[0,19],[0,21],[0,31],[1,2],[1,3],[1,7],[1,13],[1,17],[1,19],[1,21],[1,30],[2,3],[2,7],[2,8],[2,9],[2,13],[2,27],[2,28],[2,32],[3,7],[3,12],[3,13],[4,6],[4,10],[5,6],[5,10],[5,16],[6,16],[8,30],[8,32],[8,33],[9,33],[13,33],[14,32],[14,33],[15,32],[15,33],[18,32],[18,33],[19,33],[20,32],[20,33],[22,32],[22,33],[23,25],[23,27],[23,29],[23,32],[23,33],[24,25],[24,27],[24,31],[25,31],[26,29],[26,33],[27,33],[28,31],[28,33],[29,32],[29,33],[30,32],[30,33],[31,32],[31,33],[32,33]]},Lh={nodes:[{id:0,px:.09083423378081436,py:1.164162667707135,member:0},{id:1,px:-.5395391223661004,py:.8787097882002372,member:0},{id:2,px:.25483951690897244,py:-.011894166387290125,member:0},{id:3,px:.5292273814873625,py:.8137715604013231,member:0},{id:4,px:.6759740200024705,py:2.010590015934319,member:3},{id:5,px:.6648725961138767,py:2.3765595730406712,member:3},{id:6,px:-.015476857282255526,py:2.421851366492045,member:3},{id:7,px:.9923183157183725,py:.7358251458599251,member:0},{id:8,px:-.6148021363450372,py:-.03465499210385469,member:1},{id:9,px:.24714516178546894,py:-1.012380550604274,member:0},{id:10,px:1.3293288757439443,py:1.8641805845025743,member:3},{id:11,px:-.6571791278403557,py:2.2163816367270526,member:0},{id:12,px:1.5181044222926994,py:1.3282665066698078,member:0},{id:13,px:-.2979203330003603,py:.18438685313887027,member:0},{id:14,px:-1.7502345807734376,py:-1.0935551887354324,member:1},{id:15,px:-1.630224787934251,py:-1.5015879850995024,member:1},{id:16,px:.5585243394360673,py:3.5,member:3},{id:17,px:-.9776584881745712,py:1.799718659872538,member:0},{id:18,px:-1.385649185975611,py:-1.870388302312794,member:1},{id:19,px:-.9638464461397331,py:.24226946279518707,member:0},{id:20,px:-1.0268125129631975,py:-2.1543990524894148,member:1},{id:21,px:-1.3061680833745626,py:1.527228276383933,member:0},{id:22,px:-.5552461198316926,py:-2.2498070887997685,member:1},{id:23,px:.8262268914348979,py:-1.804253160744954,member:2},{id:24,px:1.9952840970427212,py:-1.0382885070400036,member:2},{id:25,px:1.9207660053211613,py:-.5823795272244723,member:2},{id:26,px:-.1664715343791652,py:-2.6527209168204373,member:1},{id:27,px:.9961959436268844,py:-1.0143754028553023,member:2},{id:28,px:.6488880579857091,py:-1.024671500275854,member:2},{id:29,px:.2398196340697841,py:-2.171491081802323,member:1},{id:30,px:-1.3348117368940753,py:-.31290471156377053,member:1},{id:31,px:.6901260074375327,py:-.2526601933356052,member:2},{id:32,px:-.6030949145287146,py:-1.0927507849665647,member:1},{id:33,px:-.3533395323856202,py:-1.1887389845640028,member:1}],edges:[[0,1],[0,2],[0,3],[0,4],[0,5],[0,6],[0,7],[0,8],[0,10],[0,11],[0,12],[0,13],[0,17],[0,19],[0,21],[0,31],[1,2],[1,3],[1,7],[1,13],[1,17],[1,19],[1,21],[1,30],[2,3],[2,7],[2,8],[2,9],[2,13],[2,27],[2,28],[2,32],[3,7],[3,12],[3,13],[4,6],[4,10],[5,6],[5,10],[5,16],[6,16],[8,30],[8,32],[8,33],[9,33],[13,33],[14,32],[14,33],[15,32],[15,33],[18,32],[18,33],[19,33],[20,32],[20,33],[22,32],[22,33],[23,25],[23,27],[23,29],[23,32],[23,33],[24,25],[24,27],[24,31],[25,31],[26,29],[26,33],[27,33],[28,31],[28,33],[29,32],[29,33],[30,32],[30,33],[31,32],[31,33],[32,33]]},Ih={1:[1,2,8,9,397,401,408,851,852],2:[2,3,8,9,10,401,408,416,1],3:[3,4,9,10,11,408,416,424,2],4:[4,5,10,11,12,416,424,432,3],5:[5,6,11,12,13,432,738,4],6:[6,7,12,13,14,432,440,448,5],7:[7,13,14,440,448,6],8:[8,9,15,16,852,853,1,2],9:[9,10,15,16,17,1,2,3,8],10:[10,11,16,17,18,2,3,4,9],11:[11,12,17,18,19,3,4,5,10],12:[12,13,18,19,20,731,732,738,4,5,6,11],13:[13,14,19,20,21,5,6,7,12],14:[14,20,21,6,7,13],15:[15,16,22,23,853,8,9],16:[16,17,22,23,24,8,9,10,15],17:[17,18,23,24,25,9,10,11,16],18:[18,19,24,25,26,10,11,12,17],19:[19,20,25,26,27,732,733,11,12,13,18],20:[20,21,26,27,28,12,13,14,19],21:[21,27,28,13,14,20],22:[22,23,29,30,15,16],23:[23,24,29,30,31,15,16,17,22],24:[24,25,30,31,32,16,17,18,23],25:[25,26,31,32,33,17,18,19,24],26:[26,27,32,33,34,733,734,18,19,20,25],27:[27,28,33,34,35,19,20,21,26],28:[28,34,35,20,21,27],29:[29,30,36,37,22,23],30:[30,31,36,37,38,22,23,24,29],31:[31,32,37,38,39,23,24,25,30],32:[32,33,38,39,40,24,25,26,31],33:[33,34,39,40,41,734,735,25,26,27,32],34:[34,35,40,41,42,26,27,28,33],35:[35,41,42,27,28,34],36:[36,37,43,44,29,30],37:[37,38,43,44,45,29,30,31,36],38:[38,39,44,45,46,30,31,32,37],39:[39,40,45,46,47,31,32,33,38],40:[40,41,46,47,48,735,736,32,33,34,39],41:[41,42,47,48,49,33,34,35,40],42:[42,48,49,34,35,41],43:[43,44,50,51,36,37],44:[44,45,50,51,52,36,37,38,43],45:[45,46,51,52,53,37,38,39,44],46:[46,47,52,53,54,38,39,40,45],47:[47,48,53,54,55,736,39,40,41,46],48:[48,49,54,55,56,40,41,42,47],49:[49,55,56,41,42,48],50:[50,51,57,58,43,44],51:[51,52,57,58,59,43,44,45,50],52:[52,53,58,59,60,44,45,46,51],53:[53,54,59,60,61,45,46,47,52],54:[54,55,60,61,62,736,748,46,47,48,53],55:[55,56,61,62,63,47,48,49,54],56:[56,62,63,48,49,55],57:[57,58,64,65,50,51],58:[58,59,64,65,66,50,51,52,57],59:[59,60,65,66,67,51,52,53,58],60:[60,61,66,67,68,52,53,54,59],61:[61,62,67,68,69,747,748,53,54,55,60],62:[62,63,68,69,70,54,55,56,61],63:[63,69,70,55,56,62],64:[64,65,71,72,57,58],65:[65,66,71,72,73,57,58,59,64],66:[66,67,72,73,74,58,59,60,65],67:[67,68,73,74,75,59,60,61,66],68:[68,69,74,75,76,746,747,60,61,62,67],69:[69,70,75,76,77,61,62,63,68],70:[70,76,77,62,63,69],71:[71,72,78,79,869,64,65],72:[72,73,78,79,80,64,65,66,71],73:[73,74,79,80,81,65,66,67,72],74:[74,75,80,81,82,66,67,68,73],75:[75,76,81,82,83,745,746,67,68,69,74],76:[76,77,82,83,84,68,69,70,75],77:[77,83,84,69,70,76],78:[78,79,85,86,868,869,71,72],79:[79,80,85,86,87,71,72,73,78],80:[80,81,86,87,88,72,73,74,79],81:[81,82,87,88,89,73,74,75,80],82:[82,83,88,89,90,744,745,750,74,75,76,81],83:[83,84,89,90,91,75,76,77,82],84:[84,90,91,76,77,83],85:[85,86,483,487,494,867,868,78,79],86:[86,87,487,494,502,78,79,80,85],87:[87,88,494,502,510,79,80,81,86],88:[88,89,502,510,518,80,81,82,87],89:[89,90,518,750,81,82,83,88],90:[90,91,518,526,534,82,83,84,89],91:[91,526,534,83,84,90],92:[92,93,99,100,483,487,494,887,888],93:[93,94,99,100,101,487,494,502,92],94:[94,95,100,101,102,494,502,510,93],95:[95,96,101,102,103,502,510,518,94],96:[96,97,102,103,104,518,763,95],97:[97,98,103,104,105,518,526,534,96],98:[98,104,105,526,534,97],99:[99,100,106,107,888,889,92,93],100:[100,101,106,107,108,92,93,94,99],101:[101,102,107,108,109,93,94,95,100],102:[102,103,108,109,110,94,95,96,101],103:[103,104,109,110,111,756,757,763,95,96,97,102],104:[104,105,110,111,112,96,97,98,103],105:[105,111,112,97,98,104],106:[106,107,113,114,889,99,100],107:[107,108,113,114,115,99,100,101,106],108:[108,109,114,115,116,100,101,102,107],109:[109,110,115,116,117,101,102,103,108],110:[110,111,116,117,118,757,758,102,103,104,109],111:[111,112,117,118,119,103,104,105,110],112:[112,118,119,104,105,111],113:[113,114,120,121,106,107],114:[114,115,120,121,122,106,107,108,113],115:[115,116,121,122,123,107,108,109,114],116:[116,117,122,123,124,108,109,110,115],117:[117,118,123,124,125,758,759,109,110,111,116],118:[118,119,124,125,126,110,111,112,117],119:[119,125,126,111,112,118],120:[120,121,127,128,113,114],121:[121,122,127,128,129,113,114,115,120],122:[122,123,128,129,130,114,115,116,121],123:[123,124,129,130,131,115,116,117,122],124:[124,125,130,131,132,759,760,116,117,118,123],125:[125,126,131,132,133,117,118,119,124],126:[126,132,133,118,119,125],127:[127,128,134,135,120,121],128:[128,129,134,135,136,120,121,122,127],129:[129,130,135,136,137,121,122,123,128],130:[130,131,136,137,138,122,123,124,129],131:[131,132,137,138,139,760,761,123,124,125,130],132:[132,133,138,139,140,124,125,126,131],133:[133,139,140,125,126,132],134:[134,135,141,142,127,128],135:[135,136,141,142,143,127,128,129,134],136:[136,137,142,143,144,128,129,130,135],137:[137,138,143,144,145,129,130,131,136],138:[138,139,144,145,146,761,130,131,132,137],139:[139,140,145,146,147,131,132,133,138],140:[140,146,147,132,133,139],141:[141,142,148,149,134,135],142:[142,143,148,149,150,134,135,136,141],143:[143,144,149,150,151,135,136,137,142],144:[144,145,150,151,152,136,137,138,143],145:[145,146,151,152,153,761,773,137,138,139,144],146:[146,147,152,153,154,138,139,140,145],147:[147,153,154,139,140,146],148:[148,149,155,156,141,142],149:[149,150,155,156,157,141,142,143,148],150:[150,151,156,157,158,142,143,144,149],151:[151,152,157,158,159,143,144,145,150],152:[152,153,158,159,160,772,773,144,145,146,151],153:[153,154,159,160,161,145,146,147,152],154:[154,160,161,146,147,153],155:[155,156,162,163,148,149],156:[156,157,162,163,164,148,149,150,155],157:[157,158,163,164,165,149,150,151,156],158:[158,159,164,165,166,150,151,152,157],159:[159,160,165,166,167,771,772,151,152,153,158],160:[160,161,166,167,168,152,153,154,159],161:[161,167,168,153,154,160],162:[162,163,169,170,905,155,156],163:[163,164,169,170,171,155,156,157,162],164:[164,165,170,171,172,156,157,158,163],165:[165,166,171,172,173,157,158,159,164],166:[166,167,172,173,174,770,771,158,159,160,165],167:[167,168,173,174,175,159,160,161,166],168:[168,174,175,160,161,167],169:[169,170,176,177,904,905,162,163],170:[170,171,176,177,178,162,163,164,169],171:[171,172,177,178,179,163,164,165,170],172:[172,173,178,179,180,164,165,166,171],173:[173,174,179,180,181,769,770,775,165,166,167,172],174:[174,175,180,181,182,166,167,168,173],175:[175,181,182,167,168,174],176:[176,177,569,573,580,903,904,169,170],177:[177,178,573,580,588,169,170,171,176],178:[178,179,580,588,596,170,171,172,177],179:[179,180,588,596,604,171,172,173,178],180:[180,181,604,775,172,173,174,179],181:[181,182,604,612,620,173,174,175,180],182:[182,612,620,174,175,181],183:[183,184,190,191,569,573,580,923,924],184:[184,185,190,191,192,573,580,588,183],185:[185,186,191,192,193,580,588,596,184],186:[186,187,192,193,194,588,596,604,185],187:[187,188,193,194,195,604,788,186],188:[188,189,194,195,196,604,612,620,187],189:[189,195,196,612,620,188],190:[190,191,197,198,924,925,183,184],191:[191,192,197,198,199,183,184,185,190],192:[192,193,198,199,200,184,185,186,191],193:[193,194,199,200,201,185,186,187,192],194:[194,195,200,201,202,781,782,788,186,187,188,193],195:[195,196,201,202,203,187,188,189,194],196:[196,202,203,188,189,195],197:[197,198,204,205,925,190,191],198:[198,199,204,205,206,190,191,192,197],199:[199,200,205,206,207,191,192,193,198],200:[200,201,206,207,208,192,193,194,199],201:[201,202,207,208,209,782,783,193,194,195,200],202:[202,203,208,209,210,194,195,196,201],203:[203,209,210,195,196,202],204:[204,205,211,212,197,198],205:[205,206,211,212,213,197,198,199,204],206:[206,207,212,213,214,198,199,200,205],207:[207,208,213,214,215,199,200,201,206],208:[208,209,214,215,216,783,784,200,201,202,207],209:[209,210,215,216,217,201,202,203,208],210:[210,216,217,202,203,209],211:[211,212,218,219,204,205],212:[212,213,218,219,220,204,205,206,211],213:[213,214,219,220,221,205,206,207,212],214:[214,215,220,221,222,206,207,208,213],215:[215,216,221,222,223,784,785,207,208,209,214],216:[216,217,222,223,224,208,209,210,215],217:[217,223,224,209,210,216],218:[218,219,225,226,211,212],219:[219,220,225,226,227,211,212,213,218],220:[220,221,226,227,228,212,213,214,219],221:[221,222,227,228,229,213,214,215,220],222:[222,223,228,229,230,785,786,214,215,216,221],223:[223,224,229,230,231,215,216,217,222],224:[224,230,231,216,217,223],225:[225,226,232,233,218,219],226:[226,227,232,233,234,218,219,220,225],227:[227,228,233,234,235,219,220,221,226],228:[228,229,234,235,236,220,221,222,227],229:[229,230,235,236,237,786,221,222,223,228],230:[230,231,236,237,238,222,223,224,229],231:[231,237,238,223,224,230],232:[232,233,239,240,225,226],233:[233,234,239,240,241,225,226,227,232],234:[234,235,240,241,242,226,227,228,233],235:[235,236,241,242,243,227,228,229,234],236:[236,237,242,243,244,786,798,228,229,230,235],237:[237,238,243,244,245,229,230,231,236],238:[238,244,245,230,231,237],239:[239,240,246,247,232,233],240:[240,241,246,247,248,232,233,234,239],241:[241,242,247,248,249,233,234,235,240],242:[242,243,248,249,250,234,235,236,241],243:[243,244,249,250,251,797,798,235,236,237,242],244:[244,245,250,251,252,236,237,238,243],245:[245,251,252,237,238,244],246:[246,247,253,254,239,240],247:[247,248,253,254,255,239,240,241,246],248:[248,249,254,255,256,240,241,242,247],249:[249,250,255,256,257,241,242,243,248],250:[250,251,256,257,258,796,797,242,243,244,249],251:[251,252,257,258,259,243,244,245,250],252:[252,258,259,244,245,251],253:[253,254,260,261,941,246,247],254:[254,255,260,261,262,246,247,248,253],255:[255,256,261,262,263,247,248,249,254],256:[256,257,262,263,264,248,249,250,255],257:[257,258,263,264,265,795,796,249,250,251,256],258:[258,259,264,265,266,250,251,252,257],259:[259,265,266,251,252,258],260:[260,261,267,268,940,941,253,254],261:[261,262,267,268,269,253,254,255,260],262:[262,263,268,269,270,254,255,256,261],263:[263,264,269,270,271,255,256,257,262],264:[264,265,270,271,272,794,795,800,256,257,258,263],265:[265,266,271,272,273,257,258,259,264],266:[266,272,273,258,259,265],267:[267,268,655,659,666,939,940,260,261],268:[268,269,659,666,674,260,261,262,267],269:[269,270,666,674,682,261,262,263,268],270:[270,271,674,682,690,262,263,264,269],271:[271,272,690,800,263,264,265,270],272:[272,273,690,698,706,264,265,266,271],273:[273,698,706,265,266,272],274:[274,275,281,282,655,659,666,954,955],275:[275,276,281,282,283,659,666,674,274],276:[276,277,282,283,284,666,674,682,275],277:[277,278,283,284,285,674,682,690,276],278:[278,279,284,285,286,690,812,277],279:[279,280,285,286,287,690,698,706,278],280:[280,286,287,698,706,279],281:[281,282,288,289,955,956,274,275],282:[282,283,288,289,290,274,275,276,281],283:[283,284,289,290,291,275,276,277,282],284:[284,285,290,291,292,276,277,278,283],285:[285,286,291,292,293,806,807,812,277,278,279,284],286:[286,287,292,293,294,278,279,280,285],287:[287,293,294,279,280,286],288:[288,289,295,296,956,281,282],289:[289,290,295,296,297,281,282,283,288],290:[290,291,296,297,298,282,283,284,289],291:[291,292,297,298,299,283,284,285,290],292:[292,293,298,299,300,807,808,284,285,286,291],293:[293,294,299,300,301,285,286,287,292],294:[294,300,301,286,287,293],295:[295,296,302,303,288,289],296:[296,297,302,303,304,288,289,290,295],297:[297,298,303,304,305,289,290,291,296],298:[298,299,304,305,306,290,291,292,297],299:[299,300,305,306,307,808,809,291,292,293,298],300:[300,301,306,307,308,292,293,294,299],301:[301,307,308,293,294,300],302:[302,303,309,310,295,296],303:[303,304,309,310,311,295,296,297,302],304:[304,305,310,311,312,296,297,298,303],305:[305,306,311,312,313,297,298,299,304],306:[306,307,312,313,314,809,810,298,299,300,305],307:[307,308,313,314,315,299,300,301,306],308:[308,314,315,300,301,307],309:[309,310,316,317,302,303],310:[310,311,316,317,318,302,303,304,309],311:[311,312,317,318,319,303,304,305,310],312:[312,313,318,319,320,304,305,306,311],313:[313,314,319,320,321,723,810,305,306,307,312],314:[314,315,320,321,322,306,307,308,313],315:[315,321,322,307,308,314],316:[316,317,323,324,309,310],317:[317,318,323,324,325,309,310,311,316],318:[318,319,324,325,326,310,311,312,317],319:[319,320,325,326,327,311,312,313,318],320:[320,321,326,327,328,723,312,313,314,319],321:[321,322,327,328,329,313,314,315,320],322:[322,328,329,314,315,321],323:[323,324,330,331,316,317],324:[324,325,330,331,332,316,317,318,323],325:[325,326,331,332,333,317,318,319,324],326:[326,327,332,333,334,318,319,320,325],327:[327,328,333,334,335,722,723,319,320,321,326],328:[328,329,334,335,336,320,321,322,327],329:[329,335,336,321,322,328],330:[330,331,337,338,323,324],331:[331,332,337,338,339,323,324,325,330],332:[332,333,338,339,340,324,325,326,331],333:[333,334,339,340,341,325,326,327,332],334:[334,335,340,341,342,721,722,326,327,328,333],335:[335,336,341,342,343,327,328,329,334],336:[336,342,343,328,329,335],337:[337,338,344,345,330,331],338:[338,339,344,345,346,330,331,332,337],339:[339,340,345,346,347,331,332,333,338],340:[340,341,346,347,348,332,333,334,339],341:[341,342,347,348,349,720,721,333,334,335,340],342:[342,343,348,349,350,334,335,336,341],343:[343,349,350,335,336,342],344:[344,345,351,352,833,337,338],345:[345,346,351,352,353,337,338,339,344],346:[346,347,352,353,354,338,339,340,345],347:[347,348,353,354,355,339,340,341,346],348:[348,349,354,355,356,719,720,340,341,342,347],349:[349,350,355,356,357,341,342,343,348],350:[350,356,357,342,343,349],351:[351,352,358,359,832,833,344,345],352:[352,353,358,359,360,344,345,346,351],353:[353,354,359,360,361,345,346,347,352],354:[354,355,360,361,362,346,347,348,353],355:[355,356,361,362,363,718,719,725,347,348,349,354],356:[356,357,362,363,364,348,349,350,355],357:[357,363,364,349,350,356],358:[358,359,397,401,408,831,832,351,352],359:[359,360,401,408,416,351,352,353,358],360:[360,361,408,416,424,352,353,354,359],361:[361,362,416,424,432,353,354,355,360],362:[362,363,432,725,354,355,356,361],363:[363,364,432,440,448,355,356,357,362],364:[364,440,448,356,357,363],365:[365,366,369,370,455,456,541,542,627,628,813,834,870,906,958,967,979,991],366:[366,367,369,370,371,455,456,457,541,542,543,627,628,629,813,834,870,906,958,959,967,968,979,980,991,992,365],367:[367,368,370,371,372,456,457,458,542,543,544,628,629,630,958,959,960,967,968,969,979,980,981,991,992,993,366],368:[368,371,372,457,458,543,544,629,630,957,959,960,968,969,980,981,992,993,367],369:[369,370,373,374,813,815,834,836,958,961,967,970,365,366],370:[370,371,373,374,375,813,815,834,836,958,959,961,962,967,968,970,971,365,366,367,369],371:[371,372,374,375,376,958,959,960,961,962,967,968,969,970,971,366,367,368,370],372:[372,375,376,957,959,960,962,968,969,971,367,368,371],373:[373,374,377,378,815,817,836,838,961,965,970,974,369,370],374:[374,375,377,378,379,815,817,836,838,961,962,965,970,971,974,369,370,371,373],375:[375,376,378,379,380,961,962,965,970,971,974,370,371,372,374],376:[376,380,371,372,375],377:[377,378,381,382,817,819,820,822,838,840,842,965,974,373,374],378:[378,379,381,382,383,817,822,838,842,961,962,965,970,971,974,373,374,375,377],379:[379,380,383,384,374,375,378],380:[380,384,375,376,379],381:[381,382,385,386,817,822,825,838,842,845,965,974,377,378],382:[382,383,386,387,377,378,381],383:[383,384,387,388,378,379,382],384:[384,388,379,380,383],385:[385,386,389,390,822,825,827,842,845,847,381],386:[386,387,390,391,381,382,385],387:[387,388,391,392,382,383,386],388:[388,392,383,384,387],389:[389,390,393,394,825,827,829,845,847,849,385],390:[390,391,394,395,385,386,389],391:[391,392,395,396,386,387,390],392:[392,396,387,388,391],393:[393,394,397,398,827,829,847,849,389],394:[394,395,398,399,389,390,393],395:[395,396,399,400,390,391,394],396:[396,400,391,392,395],397:[397,398,401,829,831,849,851,1,358,393],398:[398,399,401,402,393,394,397],399:[399,400,402,403,404,394,395,398],400:[400,404,395,396,399],401:[401,402,408,1,2,358,359,397,398],402:[402,403,408,409,410,398,399,401],403:[403,404,410,411,399,402],404:[404,405,411,399,400,403],405:[405,406,411,412,404],406:[406,407,412,413,405],407:[407,413,414,415,406],408:[408,409,416,1,2,3,358,359,360,401,402],409:[409,410,416,417,402,408],410:[410,411,417,418,402,403,409],411:[411,412,418,419,403,404,405,410],412:[412,413,419,420,405,406,411],413:[413,414,420,421,406,407,412],414:[414,415,421,422,407,413],415:[415,422,423,407,414],416:[416,417,424,2,3,4,359,360,361,408,409],417:[417,418,424,425,409,410,416],418:[418,419,425,426,410,411,417],419:[419,420,426,427,411,412,418],420:[420,421,427,428,412,413,419],421:[421,422,428,429,413,414,420],422:[422,423,429,430,414,415,421],423:[423,430,431,415,422],424:[424,425,432,3,4,360,361,416,417],425:[425,426,432,433,417,418,424],426:[426,427,433,434,435,418,419,425],427:[427,428,435,419,420,426],428:[428,429,435,436,420,421,427],429:[429,430,436,437,421,422,428],430:[430,431,437,438,422,423,429],431:[431,438,439,423,430],432:[432,433,440,441,725,738,4,5,6,361,362,363,424,425],433:[433,434,441,442,724,725,737,738,425,426,432],434:[434,435,442,443,724,737,426,433],435:[435,436,443,444,716,724,729,737,426,427,428,434],436:[436,437,444,445,715,716,728,729,428,429,435],437:[437,438,445,446,714,715,727,728,429,430,436],438:[438,439,446,447,713,714,726,727,430,431,437],439:[439,447,713,726,431,438],440:[440,441,448,449,6,7,363,364,432],441:[441,442,449,450,432,433,440],442:[442,443,450,451,433,434,441],443:[443,444,451,452,434,435,442],444:[444,445,452,453,435,436,443],445:[445,446,453,454,436,437,444],446:[446,447,454,437,438,445],447:[447,454,438,439,446],448:[448,449,6,7,363,364,440],449:[449,450,440,441,448],450:[450,451,441,442,449],451:[451,452,442,443,450],452:[452,453,443,444,451],453:[453,454,444,445,452],454:[454,445,446,447,453],455:[455,456,459,460,834,854,870,872,967,976,979,982,365,366],456:[456,457,459,460,461,834,854,870,872,967,968,976,977,979,980,982,983,365,366,367,455],457:[457,458,460,461,462,967,968,969,976,977,979,980,981,982,983,366,367,368,456],458:[458,461,462,957,968,969,977,980,981,983,367,368,457],459:[459,460,463,464,854,855,872,874,976,978,982,986,455,456],460:[460,461,463,464,465,854,855,872,874,976,977,978,982,983,986,455,456,457,459],461:[461,462,464,465,466,976,977,978,982,983,986,456,457,458,460],462:[462,466,457,458,461],463:[463,464,467,468,855,856,857,858,874,876,878,978,986,459,460],464:[464,465,467,468,469,855,858,874,878,976,977,978,982,983,986,459,460,461,463],465:[465,466,469,470,460,461,464],466:[466,470,461,462,465],467:[467,468,471,472,855,858,861,874,878,881,978,986,463,464],468:[468,469,472,473,463,464,467],469:[469,470,473,474,464,465,468],470:[470,474,465,466,469],471:[471,472,475,476,858,861,863,878,881,883,467],472:[472,473,476,477,467,468,471],473:[473,474,477,478,468,469,472],474:[474,478,469,470,473],475:[475,476,479,480,861,863,865,881,883,885,471],476:[476,477,480,481,471,472,475],477:[477,478,481,482,472,473,476],478:[478,482,473,474,477],479:[479,480,483,484,863,865,883,885,475],480:[480,481,484,485,475,476,479],481:[481,482,485,486,476,477,480],482:[482,486,477,478,481],483:[483,484,487,865,867,885,887,85,92,479],484:[484,485,487,488,479,480,483],485:[485,486,488,489,490,480,481,484],486:[486,490,481,482,485],487:[487,488,494,85,86,92,93,483,484],488:[488,489,494,495,496,484,485,487],489:[489,490,496,497,485,488],490:[490,491,497,485,486,489],491:[491,492,497,498,490],492:[492,493,498,499,491],493:[493,499,500,501,492],494:[494,495,502,85,86,87,92,93,94,487,488],495:[495,496,502,503,488,494],496:[496,497,503,504,488,489,495],497:[497,498,504,505,489,490,491,496],498:[498,499,505,506,491,492,497],499:[499,500,506,507,492,493,498],500:[500,501,507,508,493,499],501:[501,508,509,493,500],502:[502,503,510,86,87,88,93,94,95,494,495],503:[503,504,510,511,495,496,502],504:[504,505,511,512,496,497,503],505:[505,506,512,513,497,498,504],506:[506,507,513,514,498,499,505],507:[507,508,514,515,499,500,506],508:[508,509,515,516,500,501,507],509:[509,516,517,501,508],510:[510,511,518,87,88,94,95,502,503],511:[511,512,518,519,503,504,510],512:[512,513,519,520,521,504,505,511],513:[513,514,521,505,506,512],514:[514,515,521,522,506,507,513],515:[515,516,522,523,507,508,514],516:[516,517,523,524,508,509,515],517:[517,524,525,509,516],518:[518,519,526,527,750,763,88,89,90,95,96,97,510,511],519:[519,520,527,528,749,750,762,763,511,512,518],520:[520,521,528,529,749,762,512,519],521:[521,522,529,530,742,749,754,762,512,513,514,520],522:[522,523,530,531,741,742,753,754,514,515,521],523:[523,524,531,532,740,741,752,753,515,516,522],524:[524,525,532,533,739,740,751,752,516,517,523],525:[525,533,739,751,517,524],526:[526,527,534,535,90,91,97,98,518],527:[527,528,535,536,518,519,526],528:[528,529,536,537,519,520,527],529:[529,530,537,538,520,521,528],530:[530,531,538,539,521,522,529],531:[531,532,539,540,522,523,530],532:[532,533,540,523,524,531],533:[533,540,524,525,532],534:[534,535,90,91,97,98,526],535:[535,536,526,527,534],536:[536,537,527,528,535],537:[537,538,528,529,536],538:[538,539,529,530,537],539:[539,540,530,531,538],540:[540,531,532,533,539],541:[541,542,545,546,870,890,906,908,979,988,991,994,365,366],542:[542,543,545,546,547,870,890,906,908,979,980,988,989,991,992,994,995,365,366,367,541],543:[543,544,546,547,548,979,980,981,988,989,991,992,993,994,995,366,367,368,542],544:[544,547,548,957,980,981,989,992,993,995,367,368,543],545:[545,546,549,550,890,891,908,910,988,990,994,998,541,542],546:[546,547,549,550,551,890,891,908,910,988,989,990,994,995,998,541,542,543,545],547:[547,548,550,551,552,988,989,990,994,995,998,542,543,544,546],548:[548,552,543,544,547],549:[549,550,553,554,891,892,893,894,910,912,914,990,998,545,546],550:[550,551,553,554,555,891,894,910,914,988,989,990,994,995,998,545,546,547,549],551:[551,552,555,556,546,547,550],552:[552,556,547,548,551],553:[553,554,557,558,891,894,897,910,914,917,990,998,549,550],554:[554,555,558,559,549,550,553],555:[555,556,559,560,550,551,554],556:[556,560,551,552,555],557:[557,558,561,562,894,897,899,914,917,919,553],558:[558,559,562,563,553,554,557],559:[559,560,563,564,554,555,558],560:[560,564,555,556,559],561:[561,562,565,566,897,899,901,917,919,921,557],562:[562,563,566,567,557,558,561],563:[563,564,567,568,558,559,562],564:[564,568,559,560,563],565:[565,566,569,570,899,901,919,921,561],566:[566,567,570,571,561,562,565],567:[567,568,571,572,562,563,566],568:[568,572,563,564,567],569:[569,570,573,901,903,921,923,176,183,565],570:[570,571,573,574,565,566,569],571:[571,572,574,575,576,566,567,570],572:[572,576,567,568,571],573:[573,574,580,176,177,183,184,569,570],574:[574,575,580,581,582,570,571,573],575:[575,576,582,583,571,574],576:[576,577,583,571,572,575],577:[577,578,583,584,576],578:[578,579,584,585,577],579:[579,585,586,587,578],580:[580,581,588,176,177,178,183,184,185,573,574],581:[581,582,588,589,574,580],582:[582,583,589,590,574,575,581],583:[583,584,590,591,575,576,577,582],584:[584,585,591,592,577,578,583],585:[585,586,592,593,578,579,584],586:[586,587,593,594,579,585],587:[587,594,595,579,586],588:[588,589,596,177,178,179,184,185,186,580,581],589:[589,590,596,597,581,582,588],590:[590,591,597,598,582,583,589],591:[591,592,598,599,583,584,590],592:[592,593,599,600,584,585,591],593:[593,594,600,601,585,586,592],594:[594,595,601,602,586,587,593],595:[595,602,603,587,594],596:[596,597,604,178,179,185,186,588,589],597:[597,598,604,605,589,590,596],598:[598,599,605,606,607,590,591,597],599:[599,600,607,591,592,598],600:[600,601,607,608,592,593,599],601:[601,602,608,609,593,594,600],602:[602,603,609,610,594,595,601],603:[603,610,611,595,602],604:[604,605,612,613,775,788,179,180,181,186,187,188,596,597],605:[605,606,613,614,774,775,787,788,597,598,604],606:[606,607,614,615,774,787,598,605],607:[607,608,615,616,767,774,779,787,598,599,600,606],608:[608,609,616,617,766,767,778,779,600,601,607],609:[609,610,617,618,765,766,777,778,601,602,608],610:[610,611,618,619,764,765,776,777,602,603,609],611:[611,619,764,776,603,610],612:[612,613,620,621,181,182,188,189,604],613:[613,614,621,622,604,605,612],614:[614,615,622,623,605,606,613],615:[615,616,623,624,606,607,614],616:[616,617,624,625,607,608,615],617:[617,618,625,626,608,609,616],618:[618,619,626,609,610,617],619:[619,626,610,611,618],620:[620,621,181,182,188,189,612],621:[621,622,612,613,620],622:[622,623,613,614,621],623:[623,624,614,615,622],624:[624,625,615,616,623],625:[625,626,616,617,624],626:[626,617,618,619,625],627:[627,628,631,632,813,906,926,942,958,991,1e3,1003,365,366],628:[628,629,631,632,633,813,906,926,942,958,959,991,992,1e3,1001,1003,1004,365,366,367,627],629:[629,630,632,633,634,958,959,960,991,992,993,1e3,1001,1003,1004,366,367,368,628],630:[630,633,634,957,959,960,992,993,1001,1004,367,368,629],631:[631,632,635,636,926,927,942,943,1e3,1002,1003,1005,627,628],632:[632,633,635,636,637,926,927,942,943,1e3,1001,1002,1003,1004,1005,627,628,629,631],633:[633,634,636,637,638,1e3,1001,1002,1003,1004,1005,628,629,630,632],634:[634,638,629,630,633],635:[635,636,639,640,927,928,929,930,943,944,945,1002,1005,631,632],636:[636,637,639,640,641,927,930,943,945,1e3,1001,1002,1003,1004,1005,631,632,633,635],637:[637,638,641,642,632,633,636],638:[638,642,633,634,637],639:[639,640,643,644,927,930,933,943,945,948,1002,1005,635,636],640:[640,641,644,645,635,636,639],641:[641,642,645,646,636,637,640],642:[642,646,637,638,641],643:[643,644,647,648,930,933,935,945,948,950,639],644:[644,645,648,649,639,640,643],645:[645,646,649,650,640,641,644],646:[646,650,641,642,645],647:[647,648,651,652,933,935,937,948,950,952,643],648:[648,649,652,653,643,644,647],649:[649,650,653,654,644,645,648],650:[650,654,645,646,649],651:[651,652,655,656,935,937,950,952,647],652:[652,653,656,657,647,648,651],653:[653,654,657,658,648,649,652],654:[654,658,649,650,653],655:[655,656,659,937,939,952,954,267,274,651],656:[656,657,659,660,651,652,655],657:[657,658,660,661,662,652,653,656],658:[658,662,653,654,657],659:[659,660,666,267,268,274,275,655,656],660:[660,661,666,667,668,656,657,659],661:[661,662,668,669,657,660],662:[662,663,669,657,658,661],663:[663,664,669,670,662],664:[664,665,670,671,663],665:[665,671,672,673,664],666:[666,667,674,267,268,269,274,275,276,659,660],667:[667,668,674,675,660,666],668:[668,669,675,676,660,661,667],669:[669,670,676,677,661,662,663,668],670:[670,671,677,678,663,664,669],671:[671,672,678,679,664,665,670],672:[672,673,679,680,665,671],673:[673,680,681,665,672],674:[674,675,682,268,269,270,275,276,277,666,667],675:[675,676,682,683,667,668,674],676:[676,677,683,684,668,669,675],677:[677,678,684,685,669,670,676],678:[678,679,685,686,670,671,677],679:[679,680,686,687,671,672,678],680:[680,681,687,688,672,673,679],681:[681,688,689,673,680],682:[682,683,690,269,270,276,277,674,675],683:[683,684,690,691,675,676,682],684:[684,685,691,692,693,676,677,683],685:[685,686,693,677,678,684],686:[686,687,693,694,678,679,685],687:[687,688,694,695,679,680,686],688:[688,689,695,696,680,681,687],689:[689,696,697,681,688],690:[690,691,698,699,800,812,270,271,272,277,278,279,682,683],691:[691,692,699,700,799,800,811,812,683,684,690],692:[692,693,700,701,799,811,684,691],693:[693,694,701,702,792,799,804,811,684,685,686,692],694:[694,695,702,703,791,792,803,804,686,687,693],695:[695,696,703,704,790,791,802,803,687,688,694],696:[696,697,704,705,789,790,801,802,688,689,695],697:[697,705,789,801,689,696],698:[698,699,706,707,272,273,279,280,690],699:[699,700,707,708,690,691,698],700:[700,701,708,709,691,692,699],701:[701,702,709,710,692,693,700],702:[702,703,710,711,693,694,701],703:[703,704,711,712,694,695,702],704:[704,705,712,695,696,703],705:[705,712,696,697,704],706:[706,707,272,273,279,280,698],707:[707,708,698,699,706],708:[708,709,699,700,707],709:[709,710,700,701,708],710:[710,711,701,702,709],711:[711,712,702,703,710],712:[712,703,704,705,711],713:[713,714,438,439],714:[714,715,437,438,713],715:[715,716,436,437,714],716:[716,717,724,435,436,715],717:[717,718,724,725,716],718:[718,719,725,355,717],719:[719,720,348,355,718],720:[720,721,341,348,719],721:[721,722,334,341,720],722:[722,723,327,334,721],723:[723,810,313,320,327,722],724:[724,725,433,434,435,716,717],725:[725,355,362,432,433,717,718,724],726:[726,727,438,439],727:[727,728,437,438,726],728:[728,729,436,437,727],729:[729,730,737,435,436,728],730:[730,731,737,738,729],731:[731,732,738,12,730],732:[732,733,12,19,731],733:[733,734,19,26,732],734:[734,735,26,33,733],735:[735,736,33,40,734],736:[736,748,40,47,54,735],737:[737,738,433,434,435,729,730],738:[738,5,12,432,433,730,731,737],739:[739,740,524,525],740:[740,741,523,524,739],741:[741,742,522,523,740],742:[742,743,749,521,522,741],743:[743,744,749,750,742],744:[744,745,750,82,743],745:[745,746,75,82,744],746:[746,747,68,75,745],747:[747,748,61,68,746],748:[748,54,61,736,747],749:[749,750,519,520,521,742,743],750:[750,82,89,518,519,743,744,749],751:[751,752,524,525],752:[752,753,523,524,751],753:[753,754,522,523,752],754:[754,755,762,521,522,753],755:[755,756,762,763,754],756:[756,757,763,103,755],757:[757,758,103,110,756],758:[758,759,110,117,757],759:[759,760,117,124,758],760:[760,761,124,131,759],761:[761,773,131,138,145,760],762:[762,763,519,520,521,754,755],763:[763,96,103,518,519,755,756,762],764:[764,765,610,611],765:[765,766,609,610,764],766:[766,767,608,609,765],767:[767,768,774,607,608,766],768:[768,769,774,775,767],769:[769,770,775,173,768],770:[770,771,166,173,769],771:[771,772,159,166,770],772:[772,773,152,159,771],773:[773,145,152,761,772],774:[774,775,605,606,607,767,768],775:[775,173,180,604,605,768,769,774],776:[776,777,610,611],777:[777,778,609,610,776],778:[778,779,608,609,777],779:[779,780,787,607,608,778],780:[780,781,787,788,779],781:[781,782,788,194,780],782:[782,783,194,201,781],783:[783,784,201,208,782],784:[784,785,208,215,783],785:[785,786,215,222,784],786:[786,798,222,229,236,785],787:[787,788,605,606,607,779,780],788:[788,187,194,604,605,780,781,787],789:[789,790,696,697],790:[790,791,695,696,789],791:[791,792,694,695,790],792:[792,793,799,693,694,791],793:[793,794,799,800,792],794:[794,795,800,264,793],795:[795,796,257,264,794],796:[796,797,250,257,795],797:[797,798,243,250,796],798:[798,236,243,786,797],799:[799,800,691,692,693,792,793],800:[800,264,271,690,691,793,794,799],801:[801,802,696,697],802:[802,803,695,696,801],803:[803,804,694,695,802],804:[804,805,811,693,694,803],805:[805,806,811,812,804],806:[806,807,812,285,805],807:[807,808,285,292,806],808:[808,809,292,299,807],809:[809,810,299,306,808],810:[810,306,313,723,809],811:[811,812,691,692,693,804,805],812:[812,278,285,690,691,805,806,811],813:[813,815,816,942,958,961,963,1003,365,366,369,370,627,628],814:[814,817,818,824,943,947,966],815:[815,816,817,958,961,963,965,369,370,373,374,813],816:[816,817,818,942,943,958,961,963,965,966,1003,1005,813,815],817:[817,818,819,820,821,822,823,824,961,963,965,966,373,374,377,378,381,814,815,816],818:[818,820,821,824,943,944,947,963,965,966,1005,814,816,817],819:[819,820,838,840,377,817],820:[820,821,377,817,818,819],821:[821,943,944,817,818,820],822:[822,823,825,826,965,377,378,381,385,817],823:[823,824,825,826,965,817,822],824:[824,965,966,814,817,818,823],825:[825,826,827,828,381,385,389,822,823],826:[826,827,828,822,823,825],827:[827,828,829,830,385,389,393,825,826],828:[828,829,830,825,826,827],829:[829,830,831,832,389,393,397,827,828],830:[830,832,833,827,828,829],831:[831,832,358,397,829],832:[832,833,351,358,829,830,831],833:[833,344,351,830,832],834:[834,836,837,854,967,970,972,976,365,366,369,370,455,456],835:[835,838,839,844,855,860,975],836:[836,837,838,967,970,972,974,369,370,373,374,834],837:[837,838,839,854,855,967,970,972,974,975,976,978,834,836],838:[838,839,840,841,842,843,844,970,972,974,975,373,374,377,378,381,819,835,836,837],839:[839,840,841,844,855,857,860,972,974,975,978,835,837,838],840:[840,841,377,819,838,839],841:[841,855,857,838,839,840],842:[842,843,845,846,974,377,378,381,385,838],843:[843,844,845,846,974,838,842],844:[844,974,975,835,838,839,843],845:[845,846,847,848,381,385,389,842,843],846:[846,847,848,842,843,845],847:[847,848,849,850,385,389,393,845,846],848:[848,849,850,845,846,847],849:[849,850,851,852,389,393,397,847,848],850:[850,852,853,847,848,849],851:[851,852,1,397,849],852:[852,853,1,8,849,850,851],853:[853,8,15,850,852],854:[854,855,967,972,976,978,455,456,459,460,834,837],855:[855,856,857,858,859,860,972,975,976,978,459,460,463,464,467,835,837,839,841,854],856:[856,857,874,876,463,855],857:[857,463,839,841,855,856],858:[858,859,861,862,978,463,464,467,471,855],859:[859,860,861,862,978,855,858],860:[860,975,978,835,839,855,859],861:[861,862,863,864,467,471,475,858,859],862:[862,863,864,858,859,861],863:[863,864,865,866,471,475,479,861,862],864:[864,865,866,861,862,863],865:[865,866,867,868,475,479,483,863,864],866:[866,868,869,863,864,865],867:[867,868,85,483,865],868:[868,869,78,85,865,866,867],869:[869,71,78,866,868],870:[870,872,873,890,979,982,984,988,365,366,455,456,541,542],871:[871,874,875,880,891,896,987],872:[872,873,874,979,982,984,986,455,456,459,460,870],873:[873,874,875,890,891,979,982,984,986,987,988,990,870,872],874:[874,875,876,877,878,879,880,982,984,986,987,459,460,463,464,467,856,871,872,873],875:[875,876,877,880,891,893,896,984,986,987,990,871,873,874],876:[876,877,463,856,874,875],877:[877,891,893,874,875,876],878:[878,879,881,882,986,463,464,467,471,874],879:[879,880,881,882,986,874,878],880:[880,986,987,871,874,875,879],881:[881,882,883,884,467,471,475,878,879],882:[882,883,884,878,879,881],883:[883,884,885,886,471,475,479,881,882],884:[884,885,886,881,882,883],885:[885,886,887,888,475,479,483,883,884],886:[886,888,889,883,884,885],887:[887,888,92,483,885],888:[888,889,92,99,885,886,887],889:[889,99,106,886,888],890:[890,891,979,984,988,990,541,542,545,546,870,873],891:[891,892,893,894,895,896,984,987,988,990,545,546,549,550,553,871,873,875,877,890],892:[892,893,910,912,549,891],893:[893,549,875,877,891,892],894:[894,895,897,898,990,549,550,553,557,891],895:[895,896,897,898,990,891,894],896:[896,987,990,871,875,891,895],897:[897,898,899,900,553,557,561,894,895],898:[898,899,900,894,895,897],899:[899,900,901,902,557,561,565,897,898],900:[900,901,902,897,898,899],901:[901,902,903,904,561,565,569,899,900],902:[902,904,905,899,900,901],903:[903,904,176,569,901],904:[904,905,169,176,901,902,903],905:[905,162,169,902,904],906:[906,908,909,926,991,994,996,1e3,365,366,541,542,627,628],907:[907,910,911,916,927,932,999],908:[908,909,910,991,994,996,998,541,542,545,546,906],909:[909,910,911,926,927,991,994,996,998,999,1e3,1002,906,908],910:[910,911,912,913,914,915,916,994,996,998,999,545,546,549,550,553,892,907,908,909],911:[911,912,913,916,927,929,932,996,998,999,1002,907,909,910],912:[912,913,549,892,910,911],913:[913,927,929,910,911,912],914:[914,915,917,918,998,549,550,553,557,910],915:[915,916,917,918,998,910,914],916:[916,998,999,907,910,911,915],917:[917,918,919,920,553,557,561,914,915],918:[918,919,920,914,915,917],919:[919,920,921,922,557,561,565,917,918],920:[920,921,922,917,918,919],921:[921,922,923,924,561,565,569,919,920],922:[922,924,925,919,920,921],923:[923,924,183,569,921],924:[924,925,183,190,921,922,923],925:[925,190,197,922,924],926:[926,927,991,996,1e3,1002,627,628,631,632,906,909],927:[927,928,929,930,931,932,996,999,1e3,1002,631,632,635,636,639,907,909,911,913,926],928:[928,929,943,944,635,927],929:[929,635,911,913,927,928],930:[930,931,933,934,1002,635,636,639,643,927],931:[931,932,933,934,1002,927,930],932:[932,999,1002,907,911,927,931],933:[933,934,935,936,639,643,647,930,931],934:[934,935,936,930,931,933],935:[935,936,937,938,643,647,651,933,934],936:[936,937,938,933,934,935],937:[937,938,939,940,647,651,655,935,936],938:[938,940,941,935,936,937],939:[939,940,267,655,937],940:[940,941,260,267,937,938,939],941:[941,253,260,938,940],942:[942,943,958,963,1003,1005,627,628,631,632,813,816],943:[943,944,945,946,947,963,966,1003,1005,631,632,635,636,639,814,816,818,821,928,942],944:[944,635,818,821,928,943],945:[945,946,948,949,1005,635,636,639,643,943],946:[946,947,948,949,1005,943,945],947:[947,966,1005,814,818,943,946],948:[948,949,950,951,639,643,647,945,946],949:[949,950,951,945,946,948],950:[950,951,952,953,643,647,651,948,949],951:[951,952,953,948,949,950],952:[952,953,954,955,647,651,655,950,951],953:[953,955,956,950,951,952],954:[954,955,274,655,952],955:[955,956,274,281,952,953,954],956:[956,281,288,953,955],957:[957,960,969,981,993,368,372,458,544,630],958:[958,959,961,962,963,964,1003,1004,365,366,367,369,370,371,627,628,629,813,815,816,942],959:[959,960,961,962,963,964,1003,1004,366,367,368,370,371,372,628,629,630,958],960:[960,962,964,1004,367,368,371,372,629,630,957,959],961:[961,962,963,964,965,966,369,370,371,373,374,375,378,813,815,816,817,958,959],962:[962,963,964,965,966,370,371,372,374,375,378,958,959,960,961],963:[963,964,965,966,1003,1004,1005,813,815,816,817,818,942,943,958,959,961,962],964:[964,965,966,1003,1004,1005,958,959,960,961,962,963],965:[965,966,373,374,375,377,378,381,815,816,817,818,822,823,824,961,962,963,964],966:[966,1003,1004,1005,814,816,817,818,824,943,947,961,962,963,964,965],967:[967,968,970,971,972,973,976,977,365,366,367,369,370,371,455,456,457,834,836,837,854],968:[968,969,970,971,972,973,976,977,366,367,368,370,371,372,456,457,458,967],969:[969,971,973,977,367,368,371,372,457,458,957,968],970:[970,971,972,973,974,975,369,370,371,373,374,375,378,834,836,837,838,967,968],971:[971,972,973,974,975,370,371,372,374,375,378,967,968,969,970],972:[972,973,974,975,976,977,978,834,836,837,838,839,854,855,967,968,970,971],973:[973,974,975,976,977,978,967,968,969,970,971,972],974:[974,975,373,374,375,377,378,381,836,837,838,839,842,843,844,970,971,972,973],975:[975,976,977,978,835,837,838,839,844,855,860,970,971,972,973,974],976:[976,977,978,455,456,457,459,460,461,464,834,837,854,855,967,968,972,973,975],977:[977,978,456,457,458,460,461,464,967,968,969,972,973,975,976],978:[978,459,460,461,463,464,467,837,839,854,855,858,859,860,972,973,975,976,977],979:[979,980,982,983,984,985,988,989,365,366,367,455,456,457,541,542,543,870,872,873,890],980:[980,981,982,983,984,985,988,989,366,367,368,456,457,458,542,543,544,979],981:[981,983,985,989,367,368,457,458,543,544,957,980],982:[982,983,984,985,986,987,455,456,457,459,460,461,464,870,872,873,874,979,980],983:[983,984,985,986,987,456,457,458,460,461,464,979,980,981,982],984:[984,985,986,987,988,989,990,870,872,873,874,875,890,891,979,980,982,983],985:[985,986,987,988,989,990,979,980,981,982,983,984],986:[986,987,459,460,461,463,464,467,872,873,874,875,878,879,880,982,983,984,985],987:[987,988,989,990,871,873,874,875,880,891,896,982,983,984,985,986],988:[988,989,990,541,542,543,545,546,547,550,870,873,890,891,979,980,984,985,987],989:[989,990,542,543,544,546,547,550,979,980,981,984,985,987,988],990:[990,545,546,547,549,550,553,873,875,890,891,894,895,896,984,985,987,988,989],991:[991,992,994,995,996,997,1e3,1001,365,366,367,541,542,543,627,628,629,906,908,909,926],992:[992,993,994,995,996,997,1e3,1001,366,367,368,542,543,544,628,629,630,991],993:[993,995,997,1001,367,368,543,544,629,630,957,992],994:[994,995,996,997,998,999,541,542,543,545,546,547,550,906,908,909,910,991,992],995:[995,996,997,998,999,542,543,544,546,547,550,991,992,993,994],996:[996,997,998,999,1e3,1001,1002,906,908,909,910,911,926,927,991,992,994,995],997:[997,998,999,1e3,1001,1002,991,992,993,994,995,996],998:[998,999,545,546,547,549,550,553,908,909,910,911,914,915,916,994,995,996,997],999:[999,1e3,1001,1002,907,909,910,911,916,927,932,994,995,996,997,998],1e3:[1e3,1001,1002,627,628,629,631,632,633,636,906,909,926,927,991,992,996,997,999],1001:[1001,1002,628,629,630,632,633,636,991,992,993,996,997,999,1e3],1002:[1002,631,632,633,635,636,639,909,911,926,927,930,931,932,996,997,999,1e3,1001],1003:[1003,1004,1005,627,628,629,631,632,633,636,813,816,942,943,958,959,963,964,966],1004:[1004,1005,628,629,630,632,633,636,958,959,960,963,964,966,1003],1005:[1005,631,632,633,635,636,639,816,818,942,943,945,946,947,963,964,966,1003,1004]};async function Uh(t,e){const n=new Map;for(let s=0;s<t.length;s++){const a=new In(t[s].data);n.set(t[s],a)}const i=new Map;for(let s=0;s<e.length;s++){const a=new gn(e[s][0],e[s][1],e[s].data);i.set(s,a)}return await jt.create(n,i)}const vc={ConstructGraphNodeEdgesList:Uh};class mt{constructor(e,n,i){this.x=e,this.y=n,this.z=i}translate(e){this.x=this.x+e.x,this.y=this.y+e.y,this.z=this.z+e.z}}function Nh(t){let e=0;for(let i=0;i<t.length;i++)e=e+t[i];const n=e/t.length;return Number.isNaN(n)?0:n}function Fh(t,e){return Math.pow(Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)+Math.pow(t.z-e.z,2),.5)}function Oh(t,e){return Math.pow(t.x-e.x,2)+Math.pow(t.y-e.y,2)+Math.pow(t.z-e.z,2)}function zh(t,e){var n=new Array(e),i=t.length,r=new Array(i);if(e>i)throw new RangeError("getRandom: more elements taken than available");for(;e--;){var s=Math.floor(Math.random()*i);n[e]=t[s in r?r[s]:s],r[s]=--i in r?r[i]:i}return n}function Bh(t,e){const n=new Map;let i;for(const r of t.keys())i=Math.random(),i<e&&n.set(r,t.get(r));return n}const Et={calculateAverage:Nh,calculateDistance:Fh,calculateSquaredDistance:Oh,getRandomSubset:zh,getRandomSubset_map:Bh};let kr=class{constructor(e){this.points=[],e.forEach(n=>{const i=new mt(n.x,n.y,n.z);this.points.push(i)})}};function xc(t,e,n){const i=new mt(t.x,t.y,t.z),r=new mt(e.x,e.y,e.z),s=[];for(let o=0;o<=n;o++){const c=o/n,l=c*i.x+(1-c)*r.x,h=c*i.y+(1-c)*r.y,f=c*i.z+(1-c)*r.z,d=new mt(l,h,f);s.push(d)}return new kr(s)}function Hh(t,e,n){const i=Et.calculateDistance(t,e),r=Math.round(i/n)+2;return xc(t,e,r)}function kh(t){let e=0,n=0,i=0;return t.forEach(s=>{e+=s.x,n+=s.y,i+=s.z}),e=e/t.length,n=n/t.length,i=i/t.length,new mt(e,n,i)}const wi={line_from_start_end_divisions:xc,line_from_start_end_distance:Hh,centroid:kh};async function Vh(t,e,n=1e3,i=1,r=1){const s=t.get_adjacency(),a=new Map,o=new Map;let c,l;for(const y of s.keys())c=Math.random()*n,l=Math.random()*n,a.set(y,c),o.set(y,l);for(let y=0;y<e;y++){let v,P,b,w,R,S,x,C,L,D,U,X,V,K;for(const G of s.keys()){const te=s.get(G);v=a.get(G),P=o.get(G),b=[],w=[],te.forEach(he=>{const re=a.get(he),Se=o.get(he);b.push(re),w.push(Se)}),U=Et.calculateAverage(b),X=Et.calculateAverage(w),R=[],S=[];let ie,ve,Le,Xe;for(const he of t.nodes.keys())he!=G&&(Le=a.get(he),Xe=o.get(he),ie=Le-v,ve=Xe-P,S.push(ie),R.push(ve));L=r*1/(Et.calculateAverage(S)*Et.calculateAverage(S)),D=r*1/(Et.calculateAverage(R)*Et.calculateAverage(R)),x=i*(U-v),C=i*(X-P),V=i*(0-v),K=i*(0-P);const q=L+V+x+v,Q=D+K+C+P;a.set(G,q),o.set(G,Q)}}let h=new Map;for(const y of a.keys())h.set(y,new mt(a.get(y),0,o.get(y)));const f=[],d=[],u=[];let g;for(const y of h.keys())g=h.get(y),f.push(g.x),d.push(g.y),u.push(g.z);const _=Et.calculateAverage(f),p=Et.calculateAverage(d),m=Et.calculateAverage(u),T=new mt(-_,-p,-m);return h=Sc(h,T),h}function Gh(t){const e=t.get_adjacency(),n=new Map,i=new Map;for(const s of e.keys())n.set(s,Math.random()*200),i.set(s,Math.random()*200);const r=new Map;for(const s of n.keys())r.set(s,new mt(n.get(s),0,i.get(s)));return r}function Mc(t,e){const n=new Map;let i,r,s;for(const a of t.edges.keys()){i=t.edges.get(a),r=t.nodes.get(i.start).data.pos,s=t.nodes.get(i.end).data.pos;const o=wi.line_from_start_end_distance(r,s,e);n.set(a,o)}return n}function Wh(t,e){const n=new Map;let i,r,s;for(const a of t.edges.keys()){i=t.edges.get(a),r=t.nodes.get(i.start).data.pos,s=t.nodes.get(i.end).data.pos;const o=wi.line_from_start_end_divisions(r,s,e);n.set(a,o)}return n}async function yc(t,e,n){const i=new Map;for(let T of t.keys())i.set(T,structuredClone(t.get(T)));let r,s,a,o,c,l,h,f,d,u,g,_,p,m;for(let T=0;T<e;T++)for(let y of i.keys()){r=i.get(y);for(let v=1;v<r.points.length-1;v++){a=[],o=[],c=[],l=r.points[v];for(let b of i.keys())if(b!=y){s=i.get(b);for(let w=1;w<s.points.length-1;w++)h=s.points[w],f=Et.calculateSquaredDistance(l,h),f<=Math.pow(n,2)&&(d=h.x-l.x,u=h.y-l.y,g=h.z-l.z,a.push(d),o.push(u),c.push(g))}_=l.x+.8*(Et.calculateAverage(a)||0),p=l.y+.8*(Et.calculateAverage(o)||0),m=l.z+.8*(Et.calculateAverage(c)||0);const P=new mt(_,p,m);r.points[v]=P}}return i}function Xh(t,e){const n=new Map;for(let i of t.keys())n.set(i,structuredClone(t.get(i)));for(const i of n.keys()){const r=n.get(i);let s,a;for(let o=0;o<r.points.length;o++)s=r.points[o],a=e*Math.sin(Math.PI*o/(r.points.length-1)),s.y=s.y+a}return n}function qh(t,e,n){let i=0,r,s;const a=o=>{const c=o[e];return typeof c=="number"?c:Number(c)||0};for(let o of t.nodes.values())r=a(o.data),r>=i&&(i=r);for(const o of t.nodes.values())r=a(o.data),s=i>0?r/i*n:0,s=Math.max(0,s),s=Math.min(n,s),o.data.pos.y=s}async function $h(t,e,n,i){const r=t.get_adjacency(),s=await Hr.Dijkstra(t,e),a=Math.max(...s.values()),o=new Map;for(let g=0;g<=a;g++){const _=[];for(const p of s.keys())g==s.get(p)&&_.push(p);o.set(g,_)}const c=new Map,l=i.x||0,h=i.y||0,f=i.z||0;for(const g of r.keys()){const _=s.get(g)*n,p=o.get(s.get(g)),m=2*Math.PI*(p.indexOf(g)/p.length),T=Math.sin(m)*_,y=Math.cos(m)*_,v=new mt(T+l,-_+h,y+f);c.set(g,v)}t.apply_position_map(c);const d=Mc(t,1),u=await yc(d,12,5);return{pmap:c,emap:u}}function Yh(t,e){const n=t.get_map(),i=Sc(n.pmap,e),r=jh(n.emap,e);t.apply_drawing_maps({pmap:i,emap:r})}function Sc(t,e){const n=new Map;for(let i of t.keys()){const r=t.get(i);r.translate(e),n.set(i,r)}return n}function jh(t,e){const n=new Map;let i,r,s;for(let a of t.keys()){i=[],r=t.get(a);for(let o of r.points)o.translate(e),i.push(o);s=new kr(i),n.set(a,s)}return n}function Zh(t,e){let n,i,r,s;for(const a of t.edges.keys())n=t.edges.get(a),i=t.nodes.get(n.start).data.pos,r=t.nodes.get(n.end).data.pos,s=wi.line_from_start_end_distance(i,r,e),n.data.ldata=s}function Kh(t,e){let n,i,r,s;for(const a of t.edges.keys())n=t.edges.get(a),i=t.nodes.get(n.start).data.pos,r=t.nodes.get(n.end).data.pos,s=wi.line_from_start_end_divisions(i,r,e),n.data.ldata=s}const Ec={SimulateKamadaKawai:Vh,DrawEdgeLines:Mc,DrawEdgeLinesDivisions:Wh,DrawEdgeBundling:yc,HivePlot:$h,DisplaceEdgeInY:Xh,MoveGraph:Yh,InstanciateRandomPositions:Gh,DisplaceVertices:qh,UpdateEdgeLinesDist:Zh,UpdateEdgeLinesDivs:Kh};async function Jh(t){const e=t.split(/\r?\n/),n=[],i=new Set;for(const c of e){const l=c.trim();if(!l||l.startsWith("#"))continue;const h=l.split(/\s+/);if(h.length<2)continue;const f=parseInt(h[0],10),d=parseInt(h[1],10);Number.isNaN(f)||Number.isNaN(d)||(n.push([f,d]),i.add(f),i.add(d))}const r=new Map,s=new mt(0,0,0);for(const c of i)r.set(c,new In({pos:s}));const a=new Map;return n.forEach(([c,l],h)=>{a.set(h,new gn(c,l,{}))}),await jt.create(r,a)}async function Qh(){const t=Dh;return await vc.ConstructGraphNodeEdgesList(t.nodes,t.edges)}async function ef(){const t=Lh,e=new Map,n=new Map;t.nodes.forEach(s=>{const a=s.id,o=new mt(s.px*50,0,s.py*50),c=s.member,l=new In({pos:o,size:10,info:"Node Info",modularity:c});e.set(a,l)});for(let s=0;s<t.edges.length;s++){const a=t.edges[s],o=a[0],c=a[1],l=new gn(o,c,{});n.set(s,l)}const i=await jt.create(e,n),r=Ec.DrawEdgeLines(i,20);return i.apply_edge_pos_maps(r),i}async function tf(t){const e=t.split(/\r?\n/),n=[],i=new Set;for(const f of e){const d=f.trim();if(!(!d||d.startsWith("#"))){if(d.startsWith("v ")){const u=d.slice(2).trim().split(/\s+/);if(u.length>=3){const g=parseFloat(u[0]),_=parseFloat(u[1]),p=parseFloat(u[2]);!Number.isNaN(g)&&!Number.isNaN(_)&&!Number.isNaN(p)&&n.push(g,_,p)}continue}if(d.startsWith("f ")){const u=d.slice(2).trim().split(/\s+/),g=[];for(const _ of u){const p=parseInt(_.split("/")[0],10);!Number.isNaN(p)&&p>=1&&g.push(p-1)}for(let _=0;_<g.length;_++){const p=g[_],m=g[(_+1)%g.length];if(p===m)continue;const T=p<m?`${p},${m}`:`${m},${p}`;i.add(T)}}}}const r=n.length/3,s=new Map,a=new mt(0,0,0);for(let f=0;f<r;f++)s.set(f,new In({pos:a}));const o=new Map;let c=0;for(const f of i){const[d,u]=f.split(",").map(g=>parseInt(g,10));o.set(c++,new gn(d,u,{}))}const l=await jt.create(s,o),h=new Float32Array(n);return{graph:l,positions:h}}async function nf(){const t=Ih,e=new Set;for(const l of Object.keys(t)){const h=parseInt(l,10);Number.isNaN(h)||e.add(h);for(const f of t[l])e.add(f)}const n=new Set;for(const l of Object.keys(t)){const h=parseInt(l,10);if(!Number.isNaN(h))for(const f of t[l]){const d=Math.min(h,f),u=Math.max(h,f);n.add(`${d},${u}`)}}const i=new Map,r=new mt(0,0,0),s=[...e].sort((l,h)=>l-h);for(const l of s)i.set(l,new In({pos:r}));const a=new Map;let o=0;for(const l of n){const[h,f]=l.split(",").map(d=>parseInt(d,10));a.set(o++,new gn(h,f,{}))}return await jt.create(i,a)}const rf={LoadZKC:Qh,LoadZKCSimulated:ef,LoadGraphFromEdgeListText:Jh,LoadGraphFromObjText:tf,LoadDwt1005:nf};/**
2
2
  * @license
3
3
  * Copyright 2010-2024 Three.js Authors
4
4
  * SPDX-License-Identifier: MIT