From 5a210d6e8dc600e2b5b99ea908818d5ed343b8ac Mon Sep 17 00:00:00 2001 From: Ivan Condric <ivcondric@zedat.imp.fu-berlin.de> Date: Fri, 4 Aug 2017 14:32:48 +0200 Subject: [PATCH] =?UTF-8?q?sigmajs=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sigma.js-1.2.0/.gitignore | 6 + sigma.js-1.2.0/.npmignore | 13 + sigma.js-1.2.0/.travis.yml | 3 + sigma.js-1.2.0/CHANGELOG.md | 116 + sigma.js-1.2.0/CONTRIBUTING.draft.md | 47 + sigma.js-1.2.0/Gruntfile.js | 206 + sigma.js-1.2.0/LICENSE.txt | 12 + sigma.js-1.2.0/README.md | 35 + .../examples/add-node-on-click.html | 464 + sigma.js-1.2.0/examples/animate.html | 139 + sigma.js-1.2.0/examples/api-candy.html | 202 + sigma.js-1.2.0/examples/basic.html | 104 + .../examples/custom-edge-renderer.html | 164 + .../examples/custom-node-renderer.html | 239 + sigma.js-1.2.0/examples/data/arctic.gexf | 23819 ++++++++++++++++ sigma.js-1.2.0/examples/data/arctic.json | 1 + .../examples/data/convertcsvcluster.json | 4165 +++ .../data/convertcsvclusterTweetedWith.json | 7654 +++++ .../examples/data/geolocalized.json | 1 + .../examples/data/moroccan-ediaspora.gexf | 4976 ++++ .../examples/data/standard_graph.gexf | 204 + sigma.js-1.2.0/examples/drag-nodes.html | 127 + sigma.js-1.2.0/examples/edge-renderers.html | 112 + sigma.js-1.2.0/examples/events.html | 128 + sigma.js-1.2.0/examples/filters.html | 288 + sigma.js-1.2.0/examples/force.html | 136 + sigma.js-1.2.0/examples/img/img1.png | Bin 0 -> 310100 bytes sigma.js-1.2.0/examples/img/img2.png | Bin 0 -> 64986 bytes sigma.js-1.2.0/examples/img/img3.png | Bin 0 -> 37991 bytes sigma.js-1.2.0/examples/img/img4.png | Bin 0 -> 102662 bytes .../examples/lib/jquery-2.1.1.min.js | 4 + .../examples/load-external-gexf.html | 78 + .../examples/load-external-json-Metrik.html | 79 + ...ad-external-json-Netzwerk - Kopie (2).html | 79 + ...xternal-json-Netzwerk - Kopie - Kopie.html | 146 + .../load-external-json-Netzwerk - Kopie.html | 141 + .../examples/load-external-json-Netzwerk.html | 79 + .../examples/load-external-json-clusters.html | 79 + .../examples/load-external-json.html | 80 + .../examples/load-neo4j-cypher-query.html | 99 + .../examples/neighborhoods-plugin.html | 153 + sigma.js-1.2.0/examples/noverlap.html | 154 + sigma.js-1.2.0/examples/parallel-edges.html | 111 + .../examples/plugin-customEdgeShapes.html | 142 + .../examples/plugin-customShapes.html | 178 + sigma.js-1.2.0/examples/plugin-edgeDots.html | 111 + sigma.js-1.2.0/examples/plugin-snapshot.html | 111 + sigma.js-1.2.0/examples/scrollable-page.html | 114 + sigma.js-1.2.0/examples/share-camera.html | 152 + sigma.js-1.2.0/examples/svg-export.html | 142 + .../examples/svg-freestyle-renderer.html | 166 + sigma.js-1.2.0/examples/svg-renderer.html | 150 + sigma.js-1.2.0/package.json | 34 + .../plugins/sigma.exporters.svg/README.md | 41 + .../sigma.exporters.svg.js | 224 + .../sigma.layout.forceAtlas2/Gruntfile.js | 28 + .../sigma.layout.forceAtlas2/README.md | 79 + .../sigma.layout.forceAtlas2/supervisor.js | 340 + .../tasks/forceAtlas2.js | 127 + .../sigma.layout.forceAtlas2/worker.js | 1129 + .../plugins/sigma.layout.noverlap/README.md | 87 + .../sigma.layout.noverlap.js | 408 + .../plugins/sigma.neo4j.cypher/LICENSE | 553 + .../plugins/sigma.neo4j.cypher/README.md | 58 + .../sigma.neo4j.cypher/sigma.neo4j.cypher.js | 218 + .../plugins/sigma.parsers.gexf/README.md | 29 + .../plugins/sigma.parsers.gexf/gexf-parser.js | 551 + .../sigma.parsers.gexf/sigma.parsers.gexf.js | 112 + .../plugins/sigma.parsers.json/README.md | 29 + .../sigma.parsers.json/sigma.parsers.json.js | 88 + .../plugins/sigma.pathfinding.astar/LICENSE | 25 + .../plugins/sigma.pathfinding.astar/README.md | 27 + .../sigma.pathfinding.astar.js | 134 + .../plugins/sigma.plugins.animate/README.md | 71 + .../sigma.plugins.animate.js | 204 + .../plugins/sigma.plugins.dragNodes/README.md | 36 + .../sigma.plugins.dragNodes.js | 326 + .../plugins/sigma.plugins.filter/README.md | 187 + .../sigma.plugins.filter.js | 504 + .../sigma.plugins.neighborhoods/README.md | 24 + .../sigma.plugins.neighborhoods.js | 186 + .../sigma.plugins.relativeSize/README.md | 8 + .../sigma.plugins.relativeSize.js | 28 + .../README.md | 21 + .../sigma.canvas.edgehovers.dashed.js | 64 + .../sigma.canvas.edgehovers.dotted.js | 64 + .../sigma.canvas.edgehovers.parallel.js | 77 + .../sigma.canvas.edgehovers.tapered.js | 74 + .../sigma.canvas.edges.dashed.js | 64 + .../sigma.canvas.edges.dotted.js | 64 + .../sigma.canvas.edges.parallel.js | 77 + .../sigma.canvas.edges.tapered.js | 77 + .../sigma.renderers.customShapes/README.md | 61 + .../shape-library.js | 162 + .../sigma.renderers.customShapes.js | 236 + .../sigma.renderers.edgeDots/README.md | 38 + .../sigma.canvas.edges.dotCurve.js | 114 + .../sigma.canvas.edges.dotCurvedArrow.js | 145 + .../sigma.renderers.edgeLabels/README.md | 76 + .../sigma.renderers.edgeLabels/settings.js | 41 + .../sigma.canvas.edges.labels.curve.js | 112 + .../sigma.canvas.edges.labels.curvedArrow.js | 25 + .../sigma.canvas.edges.labels.def.js | 96 + .../sigma.renderers.parallelEdges/README.md | 31 + .../sigma.canvas.edgehovers.curve.js | 65 + .../sigma.canvas.edgehovers.curvedArrow.js | 97 + .../sigma.canvas.edges.curve.js | 58 + .../sigma.canvas.edges.curvedArrow.js | 89 + .../sigma.canvas.edges.labels.curve.js | 112 + .../sigma.renderers.parallelEdges/utils.js | 50 + .../sigma.renderers.snapshot/README.md | 36 + .../sigma.renderers.snapshot.js | 122 + .../sigma.statistics.HITS.js | 154 + .../src/captors/sigma.captors.mouse.js | 349 + .../src/captors/sigma.captors.touch.js | 410 + .../src/classes/sigma.classes.camera.js | 240 + .../src/classes/sigma.classes.configurable.js | 116 + .../src/classes/sigma.classes.dispatcher.js | 204 + .../src/classes/sigma.classes.edgequad.js | 832 + .../src/classes/sigma.classes.graph.js | 859 + .../src/classes/sigma.classes.quad.js | 674 + sigma.js-1.2.0/src/conrad.js | 984 + .../src/middlewares/sigma.middlewares.copy.js | 35 + .../middlewares/sigma.middlewares.rescale.js | 189 + .../src/misc/sigma.misc.animation.js | 239 + .../src/misc/sigma.misc.bindDOMEvents.js | 156 + .../src/misc/sigma.misc.bindEvents.js | 509 + .../src/misc/sigma.misc.drawHovers.js | 222 + .../canvas/sigma.canvas.edgehovers.arrow.js | 76 + .../canvas/sigma.canvas.edgehovers.curve.js | 64 + .../sigma.canvas.edgehovers.curvedArrow.js | 96 + .../canvas/sigma.canvas.edgehovers.def.js | 57 + .../canvas/sigma.canvas.edges.arrow.js | 66 + .../canvas/sigma.canvas.edges.curve.js | 57 + .../canvas/sigma.canvas.edges.curvedArrow.js | 88 + .../canvas/sigma.canvas.edges.def.js | 49 + .../canvas/sigma.canvas.extremities.def.js | 38 + .../canvas/sigma.canvas.hovers.def.js | 106 + .../canvas/sigma.canvas.labels.def.js | 44 + .../canvas/sigma.canvas.nodes.def.js | 30 + .../src/renderers/sigma.renderers.canvas.js | 442 + .../src/renderers/sigma.renderers.def.js | 29 + .../src/renderers/sigma.renderers.svg.js | 479 + .../src/renderers/sigma.renderers.webgl.js | 717 + .../renderers/svg/sigma.svg.edges.curve.js | 84 + .../src/renderers/svg/sigma.svg.edges.def.js | 73 + .../src/renderers/svg/sigma.svg.hovers.def.js | 113 + .../src/renderers/svg/sigma.svg.labels.def.js | 80 + .../src/renderers/svg/sigma.svg.nodes.def.js | 58 + .../src/renderers/svg/sigma.svg.utils.js | 31 + .../webgl/sigma.webgl.edges.arrow.js | 391 + .../renderers/webgl/sigma.webgl.edges.def.js | 258 + .../renderers/webgl/sigma.webgl.edges.fast.js | 147 + .../webgl/sigma.webgl.edges.thickLine.js | 255 + .../webgl/sigma.webgl.edges.thickLineCPU.js | 220 + .../webgl/sigma.webgl.edges.thickLineGPU.js | 255 + .../renderers/webgl/sigma.webgl.nodes.def.js | 201 + .../renderers/webgl/sigma.webgl.nodes.fast.js | 176 + sigma.js-1.2.0/src/sigma.core.js | 739 + sigma.js-1.2.0/src/sigma.export.js | 20 + sigma.js-1.2.0/src/sigma.settings.js | 251 + sigma.js-1.2.0/src/utils/sigma.polyfills.js | 77 + sigma.js-1.2.0/src/utils/sigma.utils.js | 1022 + sigma.js-1.2.0/test/qunit/qunit.css | 244 + sigma.js-1.2.0/test/qunit/qunit.js | 2212 ++ sigma.js-1.2.0/test/unit.HITS.js | 270 + sigma.js-1.2.0/test/unit.animation.js | 117 + sigma.js-1.2.0/test/unit.camera.js | 202 + sigma.js-1.2.0/test/unit.configurable.js | 42 + sigma.js-1.2.0/test/unit.core.js | 155 + sigma.js-1.2.0/test/unit.dispatcher.js | 98 + sigma.js-1.2.0/test/unit.edgequad.js | 205 + sigma.js-1.2.0/test/unit.graph.js | 777 + sigma.js-1.2.0/test/unit.html | 54 + sigma.js-1.2.0/test/unit.plugins.filter.js | 428 + sigma.js-1.2.0/test/unit.quad.js | 196 + sigma.js-1.2.0/test/unit.utils.js | 26 + 177 files changed, 72239 insertions(+) create mode 100644 sigma.js-1.2.0/.gitignore create mode 100644 sigma.js-1.2.0/.npmignore create mode 100644 sigma.js-1.2.0/.travis.yml create mode 100644 sigma.js-1.2.0/CHANGELOG.md create mode 100644 sigma.js-1.2.0/CONTRIBUTING.draft.md create mode 100644 sigma.js-1.2.0/Gruntfile.js create mode 100644 sigma.js-1.2.0/LICENSE.txt create mode 100644 sigma.js-1.2.0/README.md create mode 100644 sigma.js-1.2.0/examples/add-node-on-click.html create mode 100644 sigma.js-1.2.0/examples/animate.html create mode 100644 sigma.js-1.2.0/examples/api-candy.html create mode 100644 sigma.js-1.2.0/examples/basic.html create mode 100644 sigma.js-1.2.0/examples/custom-edge-renderer.html create mode 100644 sigma.js-1.2.0/examples/custom-node-renderer.html create mode 100644 sigma.js-1.2.0/examples/data/arctic.gexf create mode 100644 sigma.js-1.2.0/examples/data/arctic.json create mode 100644 sigma.js-1.2.0/examples/data/convertcsvcluster.json create mode 100644 sigma.js-1.2.0/examples/data/convertcsvclusterTweetedWith.json create mode 100644 sigma.js-1.2.0/examples/data/geolocalized.json create mode 100644 sigma.js-1.2.0/examples/data/moroccan-ediaspora.gexf create mode 100644 sigma.js-1.2.0/examples/data/standard_graph.gexf create mode 100644 sigma.js-1.2.0/examples/drag-nodes.html create mode 100644 sigma.js-1.2.0/examples/edge-renderers.html create mode 100644 sigma.js-1.2.0/examples/events.html create mode 100644 sigma.js-1.2.0/examples/filters.html create mode 100644 sigma.js-1.2.0/examples/force.html create mode 100644 sigma.js-1.2.0/examples/img/img1.png create mode 100644 sigma.js-1.2.0/examples/img/img2.png create mode 100644 sigma.js-1.2.0/examples/img/img3.png create mode 100644 sigma.js-1.2.0/examples/img/img4.png create mode 100644 sigma.js-1.2.0/examples/lib/jquery-2.1.1.min.js create mode 100644 sigma.js-1.2.0/examples/load-external-gexf.html create mode 100644 sigma.js-1.2.0/examples/load-external-json-Metrik.html create mode 100644 sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie (2).html create mode 100644 sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie - Kopie.html create mode 100644 sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie.html create mode 100644 sigma.js-1.2.0/examples/load-external-json-Netzwerk.html create mode 100644 sigma.js-1.2.0/examples/load-external-json-clusters.html create mode 100644 sigma.js-1.2.0/examples/load-external-json.html create mode 100644 sigma.js-1.2.0/examples/load-neo4j-cypher-query.html create mode 100644 sigma.js-1.2.0/examples/neighborhoods-plugin.html create mode 100644 sigma.js-1.2.0/examples/noverlap.html create mode 100644 sigma.js-1.2.0/examples/parallel-edges.html create mode 100644 sigma.js-1.2.0/examples/plugin-customEdgeShapes.html create mode 100644 sigma.js-1.2.0/examples/plugin-customShapes.html create mode 100644 sigma.js-1.2.0/examples/plugin-edgeDots.html create mode 100644 sigma.js-1.2.0/examples/plugin-snapshot.html create mode 100644 sigma.js-1.2.0/examples/scrollable-page.html create mode 100644 sigma.js-1.2.0/examples/share-camera.html create mode 100644 sigma.js-1.2.0/examples/svg-export.html create mode 100644 sigma.js-1.2.0/examples/svg-freestyle-renderer.html create mode 100644 sigma.js-1.2.0/examples/svg-renderer.html create mode 100644 sigma.js-1.2.0/package.json create mode 100644 sigma.js-1.2.0/plugins/sigma.exporters.svg/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.exporters.svg/sigma.exporters.svg.js create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/Gruntfile.js create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/supervisor.js create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/tasks/forceAtlas2.js create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/worker.js create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.noverlap/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.layout.noverlap/sigma.layout.noverlap.js create mode 100644 sigma.js-1.2.0/plugins/sigma.neo4j.cypher/LICENSE create mode 100644 sigma.js-1.2.0/plugins/sigma.neo4j.cypher/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.neo4j.cypher/sigma.neo4j.cypher.js create mode 100644 sigma.js-1.2.0/plugins/sigma.parsers.gexf/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.parsers.gexf/gexf-parser.js create mode 100644 sigma.js-1.2.0/plugins/sigma.parsers.gexf/sigma.parsers.gexf.js create mode 100644 sigma.js-1.2.0/plugins/sigma.parsers.json/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.parsers.json/sigma.parsers.json.js create mode 100644 sigma.js-1.2.0/plugins/sigma.pathfinding.astar/LICENSE create mode 100644 sigma.js-1.2.0/plugins/sigma.pathfinding.astar/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.pathfinding.astar/sigma.pathfinding.astar.js create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.animate/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.animate/sigma.plugins.animate.js create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/sigma.plugins.dragNodes.js create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.filter/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.filter/sigma.plugins.filter.js create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/sigma.plugins.neighborhoods.js create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/sigma.plugins.relativeSize.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dashed.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dotted.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.parallel.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.tapered.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dashed.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dotted.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.parallel.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.tapered.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customShapes/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customShapes/shape-library.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.customShapes/sigma.renderers.customShapes.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurve.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurvedArrow.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/settings.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curve.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curvedArrow.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.def.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curve.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curvedArrow.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curve.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curvedArrow.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.labels.curve.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/utils.js create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.snapshot/README.md create mode 100644 sigma.js-1.2.0/plugins/sigma.renderers.snapshot/sigma.renderers.snapshot.js create mode 100644 sigma.js-1.2.0/plugins/sigma.statistics.HITS/sigma.statistics.HITS.js create mode 100644 sigma.js-1.2.0/src/captors/sigma.captors.mouse.js create mode 100644 sigma.js-1.2.0/src/captors/sigma.captors.touch.js create mode 100644 sigma.js-1.2.0/src/classes/sigma.classes.camera.js create mode 100644 sigma.js-1.2.0/src/classes/sigma.classes.configurable.js create mode 100644 sigma.js-1.2.0/src/classes/sigma.classes.dispatcher.js create mode 100644 sigma.js-1.2.0/src/classes/sigma.classes.edgequad.js create mode 100644 sigma.js-1.2.0/src/classes/sigma.classes.graph.js create mode 100644 sigma.js-1.2.0/src/classes/sigma.classes.quad.js create mode 100644 sigma.js-1.2.0/src/conrad.js create mode 100644 sigma.js-1.2.0/src/middlewares/sigma.middlewares.copy.js create mode 100644 sigma.js-1.2.0/src/middlewares/sigma.middlewares.rescale.js create mode 100644 sigma.js-1.2.0/src/misc/sigma.misc.animation.js create mode 100644 sigma.js-1.2.0/src/misc/sigma.misc.bindDOMEvents.js create mode 100644 sigma.js-1.2.0/src/misc/sigma.misc.bindEvents.js create mode 100644 sigma.js-1.2.0/src/misc/sigma.misc.drawHovers.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.arrow.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curve.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.def.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.arrow.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curve.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curvedArrow.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.def.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.extremities.def.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.hovers.def.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.labels.def.js create mode 100644 sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.nodes.def.js create mode 100644 sigma.js-1.2.0/src/renderers/sigma.renderers.canvas.js create mode 100644 sigma.js-1.2.0/src/renderers/sigma.renderers.def.js create mode 100644 sigma.js-1.2.0/src/renderers/sigma.renderers.svg.js create mode 100644 sigma.js-1.2.0/src/renderers/sigma.renderers.webgl.js create mode 100644 sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.curve.js create mode 100644 sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.def.js create mode 100644 sigma.js-1.2.0/src/renderers/svg/sigma.svg.hovers.def.js create mode 100644 sigma.js-1.2.0/src/renderers/svg/sigma.svg.labels.def.js create mode 100644 sigma.js-1.2.0/src/renderers/svg/sigma.svg.nodes.def.js create mode 100644 sigma.js-1.2.0/src/renderers/svg/sigma.svg.utils.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.arrow.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.def.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.fast.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLine.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineCPU.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineGPU.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.def.js create mode 100644 sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.fast.js create mode 100644 sigma.js-1.2.0/src/sigma.core.js create mode 100644 sigma.js-1.2.0/src/sigma.export.js create mode 100644 sigma.js-1.2.0/src/sigma.settings.js create mode 100644 sigma.js-1.2.0/src/utils/sigma.polyfills.js create mode 100644 sigma.js-1.2.0/src/utils/sigma.utils.js create mode 100644 sigma.js-1.2.0/test/qunit/qunit.css create mode 100644 sigma.js-1.2.0/test/qunit/qunit.js create mode 100644 sigma.js-1.2.0/test/unit.HITS.js create mode 100644 sigma.js-1.2.0/test/unit.animation.js create mode 100644 sigma.js-1.2.0/test/unit.camera.js create mode 100644 sigma.js-1.2.0/test/unit.configurable.js create mode 100644 sigma.js-1.2.0/test/unit.core.js create mode 100644 sigma.js-1.2.0/test/unit.dispatcher.js create mode 100644 sigma.js-1.2.0/test/unit.edgequad.js create mode 100644 sigma.js-1.2.0/test/unit.graph.js create mode 100644 sigma.js-1.2.0/test/unit.html create mode 100644 sigma.js-1.2.0/test/unit.plugins.filter.js create mode 100644 sigma.js-1.2.0/test/unit.quad.js create mode 100644 sigma.js-1.2.0/test/unit.utils.js diff --git a/sigma.js-1.2.0/.gitignore b/sigma.js-1.2.0/.gitignore new file mode 100644 index 0000000..1acc8d6 --- /dev/null +++ b/sigma.js-1.2.0/.gitignore @@ -0,0 +1,6 @@ +node_modules/* +build/* +*.tgz +*.log +*.swp +.DS_Store diff --git a/sigma.js-1.2.0/.npmignore b/sigma.js-1.2.0/.npmignore new file mode 100644 index 0000000..cca03a9 --- /dev/null +++ b/sigma.js-1.2.0/.npmignore @@ -0,0 +1,13 @@ +build/* +!build/sigma.require.js +!build/sigma.min.js +!build/plugins/* +test/* +node_modules/* +examples/* +Gruntfile.js +CHANGELOG.md +.travis.yml +.gitignore +*.tgz +*.log diff --git a/sigma.js-1.2.0/.travis.yml b/sigma.js-1.2.0/.travis.yml new file mode 100644 index 0000000..9b1866e --- /dev/null +++ b/sigma.js-1.2.0/.travis.yml @@ -0,0 +1,3 @@ +language: node_js +before_script: + - npm install -g grunt-cli diff --git a/sigma.js-1.2.0/CHANGELOG.md b/sigma.js-1.2.0/CHANGELOG.md new file mode 100644 index 0000000..9c2ca01 --- /dev/null +++ b/sigma.js-1.2.0/CHANGELOG.md @@ -0,0 +1,116 @@ +## sigma.js - changelog: + +#### 1.2.0 - release (Nov 3, 2016) + +- Added the [layout.noverlap](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.noverlap) plugin (thanks to [@apitts](https://github.com/apitts)). +- Added the [renderers.edgeDot](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.edgeDots) plugin (thanks to [@jotunacorn](https://github.com/jotunacorn)). +- Fixed `sigma.require.js` so that Webpack & node.js can require the library. +- Fixed camera zoom weird behavior on retina displays (thanks to [@robindemourat](https://github.com/robindemourat)). + +#### 1.1.0 - release (Feb 17, 2016) + +- Added the SVG renderer. +- Added the `minArrowSize` setting (thanks to [@ssidorchick](https://github.com/ssidorchick)). +- Added an edge quadtree and support for edge events (thanks to [@sheymann](https://github.com/sheymann)). +- Fixed [#362](https://github.com/jacomyal/sigma.js/issues/362): Nodes and edges can now have a number id. +- Added the [renderers.snapshot](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.snapshot) plugin. +- Fixed [#403](https://github.com/jacomyal/sigma.js/issues/403): renderer string container polymorphism. +- Added an event dispatched when instance is killed. +- Added low-level Barnes-Hut optimization to the [layout.forceAltas2](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.forceAtlas2) plugin (thanks to [@jacomyma](https://github.com/jacomyma)). +- Added the `mouseWheelEnabled` setting. +- Added an option to skip quadtree indexation when refreshing an instance. +- Added `defaultEdgeType` and `defaultNodeType` settings. +- Added a `isDragging` flag in click event. +- Added some features to the [layout.forceAltas2](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.layout.forceAtlas2) plugin. +- Fixed resizing related issues. +- Added the [SVG exporter](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.exporters.svg) plugin. +- Fixed some SVG-related bugs (thanks to [@qinfchen](https://github.com/qinfchen)). +- Added the [A*](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.pathfinding.astar) plugin (thanks to [@A----](https://github.com/A----)). +- Changed the `singleHover` setting to default to `true`. +- Added the [cypher](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.parsers.cypher) plugin (thanks to [@sim51](https://github.com/sim51)). +- Added the [parallel edges](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.parallelEdges) plugin (thanks to [@3ch01c](https://github.com/3ch01c)). +- Added HDPI screens support (thanks to [@mdamien](https://github.com/mdamien)). +- Fixed a ForceAtlas2 bug related to the `ajustSizes` setting (thanks to [@rangeonnicolas](https://github.com/rangeonnicolas)). +- Improved `sigma.webgl.nodes.fast` implementaton. +- Added some alternatives to `sigma.webgl.edges.def`. +- Various optimizations. + +#### 1.0.3 - release (August 22, 2014) + +- Fixed [#186](https://github.com/jacomyal/sigma.js/issues/186): NPM sigma package +- New helper `sigma.utils.zoomTo` (thanks to [@josemazo](https://github.com/josemazo)) +- Fixed [#241](https://github.com/jacomyal/sigma.js/issues/241): Improved canvas renderer +- Fixed [#244](https://github.com/jacomyal/sigma.js/issues/244): (min|max)(Node|Edge)Size as strings or numbers +- Cross available in the customShapes plugin (thanks to [@csweaver](https://github.com/csweaver)) +- [Relative size](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.plugins.relativeSize) plugin (thanks to [@tsdaemon](https://github.com/tsdaemon)) +- Fixed y positions from sigma.parsers.gexf (thanks to [@totetmatt](https://github.com/totetmatt)) +- Fixed lag problem for the dragNodes plugin on Firefox (thanks to [@apitts](https://github.com/apitts)) +- Added the `singleHover` settings (thanks to [@patrickmarabeas](https://github.com/patrickmarabeas)) +- Improved dragNodes behaviours with several hovered nodes (thanks to [@patrickmarabeas](https://github.com/patrickmarabeas)) +- Added self-loops rendering for curved edges (thanks to [@ssidorchick](https://github.com/ssidorchick)) +- Updated gexfParser.js version +- [HITS statistics computation](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.statistics.HITS) plugin (thanks to [@mef](https://github.com/mef)) +- Fixed [#299](https://github.com/jacomyal/sigma.js/issues/299): Fixed `npm build` +- Fixed [#332](https://github.com/jacomyal/sigma.js/issues/332): Fixed grunt tasks for building plugins +- Fixed [#347](https://github.com/jacomyal/sigma.js/issues/347): Added polymorphism for the autoRescale setting +- Fixed build for Force-Atlas 2 plugin (thanks to [@luca](https://github.com/luca)) +- Fixed some typos (thanks to [@Tal-Daniel](https://github.com/Tal-Daniel)) +- [Custom edge shapes](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.renderers.customEdgeShapes) plugin (thanks to [@sheymann](https://github.com/sheymann)) +- [Filter API](https://github.com/jacomyal/sigma.js/tree/master/plugins/sigma.plugins.filter) plugin (thanks to [@sheymann](https://github.com/sheymann)) +- Right-click support (thanks to [@sheymann](https://github.com/sheymann)) +- Event data now always dispatched by sigma.core (thanks to [@sheymann](https://github.com/sheymann)) +- Added the `attachBefore` method to `sigma.classes.graph` (thanks to [@sheymann](https://github.com/sheymann)) +- Fixed buggy behaviour with the dragNodes plugin when container is offset (thanks to [@Pie21](https://github.com/Pie21)) +- Updated NPM dev dependencies +- Fixed a leak in `sigma.classes.graph` (details at [#340](https://github.com/jacomyal/sigma.js/issues/340)) +- **WebGL based Force-Atlas 2** + +#### 1.0.2 - release (April 2, 2014) + +- Added Canvas curved edge renderer +- Fully refactored examples +- Fixed [#211](https://github.com/jacomyal/sigma.js/issues/211): Added default camera getter +- Fixes on ForceAtlas2 API (thanks to [@adkatrit](https://github.com/adkatrit)) +- Added Canvas curved arrows edge renderer (thanks to [@ssidorchick](https://github.com/ssidorchick)) +- Fixed [#220](https://github.com/jacomyal/sigma.js/issues/220): WebGL edges batch rendering fixed +- Fixed [#175](https://github.com/jacomyal/sigma.js/issues/175): Disable setAutoSettings in ForceAtlas2 +- Fixed some minor typos (thanks to [@anirvan](https://github.com/anirvan)) +- Added the `sigma.plugins.dragNodes` plugin for the Canvas renderer (thanks to [@josemazo](https://github.com/josemazo)) +- Fixed `gjslint.py does not exist` error (thanks to [@jeroencoumans](https://github.com/jeroencoumans)) +- Made it easier to build for newbies by not requiring global `grunt-cli` (thanks to [@eins78](https://github.com/eins78)) +- Some minor changes on docs and GEXF parser (thanks to [@Yomguithereal](https://github.com/Yomguithereal)) +- Added current version number as `sigma.version` +- Fixed [#236](https://github.com/jacomyal/sigma.js/issues/236): Implemented `kill` renderers method + +#### 1.0.1 - release (February 26, 2014) + +- Custom node shapes and images plug-in (thanks to [@rpeleg1970](https://github.com/rpeleg1970)) +- Fixed [#189](https://github.com/jacomyal/sigma.js/issues/189): Added doubleClick events +- Fixed [#183](https://github.com/jacomyal/sigma.js/issues/183): Avoid using `for in` to iterate over arrays (thanks to [@cdevienne](https://github.com/cdevienne)) +- Added `http-server` dependency (thanks to [@oncletom](https://github.com/oncletom)) +- Minor fix in LICENSE.txt (thanks to [@gdi2290](https://github.com/gdi2290)) +- Added `"hidden"` nodes and edges support +- Fixed typo in `sigma.instances` method (thanks to [@juanpastas](https://github.com/juanpastas)) +- Fixed ForceAtlas2 stopForceAtlas2 method +- Improved captors +- Plus some minor and various fixes... + +#### 1.0.0 - release (January 30, 2014) + +- Finalization: + * Closed issues related to the initial version that were not relevant in this new version + * Fixed some bugs in the new version related to both versions + * Added more plugins and code samples, to solve some actual use-cases + * Fixed a lot of bugs for the release + +#### 1.0.0 - draft (November 27, 2013) + +- Full new version of sigma from scratch, including old features: + * ForceAtlas2 plugin + * GEXF parser + * Canvas renderer +- ...and some new features: + * WebGL renderer + * Touch support +- Also added some unit tests (main classes, core API, ...). +- Architecture fully rewritten diff --git a/sigma.js-1.2.0/CONTRIBUTING.draft.md b/sigma.js-1.2.0/CONTRIBUTING.draft.md new file mode 100644 index 0000000..b770346 --- /dev/null +++ b/sigma.js-1.2.0/CONTRIBUTING.draft.md @@ -0,0 +1,47 @@ +## sigma.js - how to contribute: + +As an open-source project that is maintained by people who cannot work on it on a daily basis, contributions are very welcome! But there are some rules to follow, to prevent maintainers to spend too much time on irrelevant or invalid contributions. + +#### Opening a ticket + +First, here are some basic rules: + + - Make sure your bug or question has not been addressed in another ticket yet. + - If your ticket is related to a bug you've met, please add a simple use-case to help the maintainers reproduce the bug. + +##### A word about labels + +We use three labels to estimate the time a ticket will take us to solve: + + - **cake**: This issue will probably take only some minutes to solve. + - **steak**: This issue will probably take around one or two hours to solve. + - **snake**: This issue will probably take more than two hours to solve. + +#### Submitting a pull-request + +##### What can be submitted + +First, sigma has been designed as a tool. Since two network visualization applications will have different features and interactions if they are developed by different people or for different use cases, the potentially needed features are countless. + +So, sigma aims to make it possible for developers to implement the features they need for their applications through its API, but should not contain itself these features. + +So, basically: + + - If your feature can be implemented with sigma, then you can submit it as a plugin, to help other people use it easily. + - If for some reason you needed to modify sigma to implement your feature, you can submit these modifications to improve sigma. + +But: + + - If you submit new features in sigma that can be developed as plugins, they will probably not be accepted. + +##### Some basic rules + +If you submit modifications to sigma, please ensure that: + + 1. the unit tests still pass + 2. your code respect JSHint and ClosureLint rules + 3. you cleaned your code from commented lines, logs, alerts or other debugging related code. + +You can check these rules by running `grunt` in sigma's directory from your command line. + +Also, if you submit a plugin, please add an example that shows how the plugins works and what it does. diff --git a/sigma.js-1.2.0/Gruntfile.js b/sigma.js-1.2.0/Gruntfile.js new file mode 100644 index 0000000..dd66b1c --- /dev/null +++ b/sigma.js-1.2.0/Gruntfile.js @@ -0,0 +1,206 @@ +var fs = require('fs'); + +module.exports = function(grunt) { + var coreJsFiles = [ + // Core: + 'src/sigma.core.js', + + // Utils: + 'src/conrad.js', + 'src/utils/sigma.utils.js', + 'src/utils/sigma.polyfills.js', + + // Main classes: + 'src/sigma.settings.js', + 'src/classes/sigma.classes.dispatcher.js', + 'src/classes/sigma.classes.configurable.js', + 'src/classes/sigma.classes.graph.js', + 'src/classes/sigma.classes.camera.js', + 'src/classes/sigma.classes.quad.js', + 'src/classes/sigma.classes.edgequad.js', + + // Captors: + 'src/captors/sigma.captors.mouse.js', + 'src/captors/sigma.captors.touch.js', + + // Renderers: + 'src/renderers/sigma.renderers.canvas.js', + 'src/renderers/sigma.renderers.webgl.js', + 'src/renderers/sigma.renderers.svg.js', + 'src/renderers/sigma.renderers.def.js', + + // Sub functions per engine: + 'src/renderers/webgl/sigma.webgl.nodes.def.js', + 'src/renderers/webgl/sigma.webgl.nodes.fast.js', + 'src/renderers/webgl/sigma.webgl.edges.def.js', + 'src/renderers/webgl/sigma.webgl.edges.fast.js', + 'src/renderers/webgl/sigma.webgl.edges.arrow.js', + 'src/renderers/canvas/sigma.canvas.labels.def.js', + 'src/renderers/canvas/sigma.canvas.hovers.def.js', + 'src/renderers/canvas/sigma.canvas.nodes.def.js', + 'src/renderers/canvas/sigma.canvas.edges.def.js', + 'src/renderers/canvas/sigma.canvas.edges.dotCurve.js', + 'src/renderers/canvas/sigma.canvas.edges.arrow.js', + 'src/renderers/canvas/sigma.canvas.edges.dotCurvedArrow.js', + 'src/renderers/canvas/sigma.canvas.edgehovers.def.js', + 'src/renderers/canvas/sigma.canvas.edgehovers.curve.js', + 'src/renderers/canvas/sigma.canvas.edgehovers.arrow.js', + 'src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js', + 'src/renderers/canvas/sigma.canvas.extremities.def.js', + 'src/renderers/svg/sigma.svg.utils.js', + 'src/renderers/svg/sigma.svg.nodes.def.js', + 'src/renderers/svg/sigma.svg.edges.def.js', + 'src/renderers/svg/sigma.svg.edges.curve.js', + 'src/renderers/svg/sigma.svg.labels.def.js', + 'src/renderers/svg/sigma.svg.hovers.def.js', + + // Middlewares: + 'src/middlewares/sigma.middlewares.rescale.js', + 'src/middlewares/sigma.middlewares.copy.js', + + // Miscellaneous: + 'src/misc/sigma.misc.animation.js', + 'src/misc/sigma.misc.bindEvents.js', + 'src/misc/sigma.misc.bindDOMEvents.js', + 'src/misc/sigma.misc.drawHovers.js' + ]; + + var npmJsFiles = coreJsFiles.slice(0); + npmJsFiles.splice(2, 0, 'src/sigma.export.js'); + + var plugins = [ + 'exporters.svg', + 'layout.forceAtlas2', + 'layout.noverlap', + 'neo4j.cypher', + 'parsers.gexf', + 'parsers.json', + 'pathfinding.astar', + 'plugins.animate', + 'plugins.dragNodes', + 'plugins.filter', + 'plugins.neighborhoods', + 'plugins.relativeSize', + 'renderers.customEdgeShapes', + 'renderers.customShapes', + 'renderers.edgeDots', + 'renderers.edgeLabels', + 'renderers.parallelEdges', + 'renderers.snapshot', + 'statistics.HITS' + ]; + + var pluginFiles = [], + subGrunts = {}; + + plugins.forEach(function(p) { + var dir = 'plugins/sigma.' + p + '/'; + + if (fs.existsSync(dir + 'Gruntfile.js')) + subGrunts[p] = { + gruntfile: dir + 'Gruntfile.js' + }; + else + pluginFiles.push(dir + '**/*.js'); + }); + + // Project configuration: + grunt.initConfig({ + pkg: grunt.file.readJSON('package.json'), + grunt: subGrunts, + closureLint: { + app: { + closureLinterPath: '/usr/local/bin', + command: 'gjslint', + src: coreJsFiles, + options: { + stdout: true, + strict: true, + opt: '--disable 6,13' + } + } + }, + jshint: { + all: coreJsFiles, + options: { + '-W055': true, + '-W040': true, + '-W064': true + } + }, + qunit: { + all: { + options: { + urls: [ + './test/unit.html' + ] + } + } + }, + uglify: { + prod: { + files: { + 'build/sigma.min.js': coreJsFiles + }, + options: { + banner: '/* sigma.js - <%= pkg.description %> - Version: <%= pkg.version %> - Author: Alexis Jacomy, Sciences-Po Médialab - License: MIT */\n' + } + }, + plugins: { + files: pluginFiles.reduce(function(res, path) { + var dest = 'build/' + path.replace(/\/\*\*\/\*\.js$/, '.min.js'); + res[dest] = path; + return res; + }, {}) + } + }, + concat: { + options: { + separator: '\n' + }, + dist: { + src: coreJsFiles, + dest: 'build/sigma.js' + }, + require: { + src: npmJsFiles, + dest: 'build/sigma.require.js' + } + }, + sed: { + version: { + recursive: true, + path: 'examples/', + pattern: /<!-- START SIGMA IMPORTS -->[\s\S]*<!-- END SIGMA IMPORTS -->/g, + replacement: ['<!-- START SIGMA IMPORTS -->'].concat(coreJsFiles.map(function(path) { + return '<script src="../' + path + '"></script>'; + }).concat('<!-- END SIGMA IMPORTS -->')).join('\n') + } + }, + zip: { + release: { + dest: 'build/release-v<%= pkg.version %>.zip', + src: [ + 'README.md', + 'build/sigma.min.js', + 'build/plugins/*.min.js' + ], + router: function(filepath) { + return filepath.replace(/build\//, ''); + } + } + } + }); + + require('load-grunt-tasks')(grunt); + + // By default, will check lint, hint, test and minify: + grunt.registerTask('default', ['closureLint', 'jshint', 'qunit', 'sed', 'grunt', 'uglify']); + grunt.registerTask('release', ['closureLint', 'jshint', 'qunit', 'sed', 'grunt', 'uglify', 'zip']); + grunt.registerTask('npmPrePublish', ['uglify:plugins', 'grunt', 'concat:require']); + grunt.registerTask('build', ['uglify', 'grunt', 'concat:require']); + grunt.registerTask('test', ['qunit']); + + // For travis-ci.org, only launch tests: + grunt.registerTask('travis', ['qunit']); +}; diff --git a/sigma.js-1.2.0/LICENSE.txt b/sigma.js-1.2.0/LICENSE.txt new file mode 100644 index 0000000..81739df --- /dev/null +++ b/sigma.js-1.2.0/LICENSE.txt @@ -0,0 +1,12 @@ +Copyright (C) 2013-2014, Alexis Jacomy, http://sigmajs.org + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), +to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/sigma.js-1.2.0/README.md b/sigma.js-1.2.0/README.md new file mode 100644 index 0000000..85376f2 --- /dev/null +++ b/sigma.js-1.2.0/README.md @@ -0,0 +1,35 @@ +[](https://travis-ci.org/jacomyal/sigma.js) + +sigma.js - v1.2.0 +================= + +Sigma is a JavaScript library dedicated to graph drawing, mainly developed by [@jacomyal](https://github.com/jacomyal) and [@Yomguithereal](https://github.com/Yomguithereal). + +### Resources + +[The website](http://sigmajs.org) provides a global overview of the project, and the documentation is available in the [Github Wiki](https://github.com/jacomyal/sigma.js/wiki). + +Also, the `plugins` and `examples` directories contain various use-cases that might help you understand how to use sigma. + +### How to use it + +To use it, clone the repository: + +``` +git clone git@github.com:jacomyal/sigma.js.git +``` + +To build the code: + + - Install [Node.js](http://nodejs.org/). + - Install [gjslint](https://developers.google.com/closure/utilities/docs/linter_howto?hl=en). + - Use `npm install` to install sigma development dependencies. + - Use `npm run build` to minify the code with [Uglify](https://github.com/mishoo/UglifyJS). The minified file `sigma.min.js` will then be accessible in the `build/` folder. + +Also, you can customize the build by adding or removing files from the `coreJsFiles` array in `Gruntfile.js` before applying the grunt task. + +### Contributing + +You can contribute by submitting [issues tickets](http://github.com/jacomyal/sigma.js/issues) and proposing [pull requests](http://github.com/jacomyal/sigma.js/pulls). Make sure that tests and linting pass before submitting any pull request by running the command `grunt`. + +The whole source code is validated by the [Google Closure Linter](https://developers.google.com/closure/utilities/) and [JSHint](http://www.jshint.com/), and the comments are written in [JSDoc](http://en.wikipedia.org/wiki/JSDoc) (tags description is available [here](https://developers.google.com/closure/compiler/docs/js-for-compiler)). diff --git a/sigma.js-1.2.0/examples/add-node-on-click.html b/sigma.js-1.2.0/examples/add-node-on-click.html new file mode 100644 index 0000000..e079660 --- /dev/null +++ b/sigma.js-1.2.0/examples/add-node-on-click.html @@ -0,0 +1,464 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + background: #fff; + height: 600px; + max-width: 800px; + margin: auto; + position: relative; + overflow: hidden; + } + + #disc { + position: absolute; + top: 100%; + bottom: 0; + left: 0; + right: 0; + } + + #ground { + position: absolute; + background: #ccc; + top: 100%; + bottom: 0; + left: 0; + right: 0; + } + </style> + <div id="graph-container"> + <div id="disc"></div> + <div id="ground"></div> + </div> +</div> +<script> +(function() { + 'use strict'; + + var s, + c, + dom, + disc, + ground, + nId = 0, + eId = 0, + radius = 50, + + mouseX, + mouseY, + spaceMode = false, + wheelRatio = 1.1, + + nodeRadius = 10, + inertia = 0.8, + springForce = 0.01, + springLength = 50, + maxDisplacement = 15, + gravity = 1.5; + + + + + /** + * CUSTOM PHYSICS LAYOUT: + * ********************** + */ + sigma.classes.graph.addMethod('computePhysics', function() { + var i, + j, + l = this.nodesArray.length, + + s, + t, + dX, + dY, + d, + v; + + for (i = 0; i < l; i++) { + s = this.nodesArray[i]; + s.dX *= inertia; + s.dY *= inertia; + + s.dY += gravity; + + for (j = i + 1; j < l; j++) { + t = this.nodesArray[j]; + + dX = s.x - t.x; + dY = s.y - t.y; + d = Math.sqrt(dX * dX + dY * dY); + v = ((d < 2 * nodeRadius) ? (2 * nodeRadius - d) / d / 2 : 0) - + ((this.allNeighborsIndex[s.id] || {})[t.id] ? springForce * (d - springLength) : 0); + + t.dX -= v * dX; + t.dY -= v * dY; + s.dX += v * dX; + s.dY += v * dY; + } + } + + for (i = 0; i < l; i++) { + s = this.nodesArray[i]; + s.dX = Math.max(Math.min(s.dX, maxDisplacement), -maxDisplacement); + s.dY = Math.max(Math.min(s.dY, maxDisplacement), -maxDisplacement); + s.x += s.dX; + s.y += s.dY; + + // Collision with the ground: + s.y = Math.min(-nodeRadius, s.y); + } + }); + + + + + /** + * CUSTOM RENDERERS: + * ***************** + */ + sigma.canvas.edges.goo = function(e, s, t, ctx, settings) { + var color = e.color, + p = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + v, + d, + p1 = 5 / 6, + p2 = 1 / 6; + + if (!color) + switch (edgeColor) { + case 'source': + color = s.color || defaultNodeColor; + break; + case 'target': + color = t.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + d = Math.sqrt(Math.pow(t[p + 'x'] - s[p + 'x'], 2) + Math.pow(t[p + 'y'] - s[p + 'y'], 2)); + v = { + x: (t[p + 'x'] - s[p + 'x']) / d, + y: (t[p + 'y'] - s[p + 'y']) / d + }; + + ctx.fillStyle = color; + ctx.beginPath(); + ctx.moveTo( + s[p + 'x'] + v.y * s[p + 'size'], + s[p + 'y'] - v.x * s[p + 'size'] + ); + ctx.bezierCurveTo( + s[p + 'x'] * p1 + t[p + 'x'] * p2 + v.y * e[p + 'size'], + s[p + 'y'] * p1 + t[p + 'y'] * p2 - v.x * e[p + 'size'], + t[p + 'x'] * p1 + s[p + 'x'] * p2 + v.y * e[p + 'size'], + t[p + 'y'] * p1 + s[p + 'y'] * p2 - v.x * e[p + 'size'], + t[p + 'x'] + v.y * t[p + 'size'], + t[p + 'y'] - v.x * t[p + 'size'] + ); + ctx.lineTo( + t[p + 'x'] - v.y * t[p + 'size'], + t[p + 'y'] + v.x * t[p + 'size'] + ); + ctx.bezierCurveTo( + t[p + 'x'] * p1 + s[p + 'x'] * p2 - v.y * e[p + 'size'], + t[p + 'y'] * p1 + s[p + 'y'] * p2 + v.x * e[p + 'size'], + s[p + 'x'] * p1 + t[p + 'x'] * p2 - v.y * e[p + 'size'], + s[p + 'y'] * p1 + t[p + 'y'] * p2 + v.x * e[p + 'size'], + s[p + 'x'] - v.y * s[p + 'size'], + s[p + 'y'] + v.x * s[p + 'size'] + ); + ctx.closePath(); + ctx.fill(); + }; + + sigma.canvas.nodes.goo = function(node, ctx, settings) { + var prefix = settings('prefix') || ''; + + ctx.fillStyle = node.color || settings('defaultNodeColor'); + ctx.beginPath(); + ctx.arc( + node[prefix + 'x'], + node[prefix + 'y'], + node[prefix + 'size'], + 0, + Math.PI * 2, + true + ); + ctx.closePath(); + ctx.fill(); + + ctx.fillStyle = '#fff'; + ctx.beginPath(); + ctx.arc( + node[prefix + 'x'], + node[prefix + 'y'], + node[prefix + 'size'] * 0.5, + 0, + Math.PI * 2, + true + ); + ctx.closePath(); + ctx.fill(); + }; + + + + + /** + * INITIALIZATION SCRIPT: + * ********************** + */ + s = new sigma({ + renderer: { + container: document.getElementById('graph-container'), + type: 'canvas' + }, + settings: { + autoRescale: false, + mouseEnabled: false, + touchEnabled: false, + nodesPowRatio: 1, + edgesPowRatio: 1, + defaultEdgeColor: '#333', + defaultNodeColor: '#333', + edgeColor: 'default' + } + }); + dom = document.querySelector('#graph-container canvas:last-child'); + disc = document.getElementById('disc'); + ground = document.getElementById('ground'); + c = s.camera; + + // Initialize graph: + s.graph.read({ + nodes: [ + { + id: (++nId) + '', + size: nodeRadius, + x: 0, + y: -80, + dX: 0, + dY: 0, + type: 'goo' + }, + { + id: (++nId) + '', + size: nodeRadius, + x: 10, + y: -100, + dX: 0, + dY: 0, + type: 'goo' + }, + { + id: (++nId) + '', + size: nodeRadius, + x: 20, + y: -80, + dX: 0, + dY: 0, + type: 'goo' + } + ], + edges: [ + { + id: (++eId) + '', + source: '1', + target: '2', + type: 'goo' + }, + { + id: (++eId) + '', + source: '1', + target: '3', + type: 'goo' + }, + { + id: (++eId) + '', + source: '2', + target: '3', + type: 'goo' + } + ] + }); + + function frame() { + s.graph.computePhysics(); + s.refresh(); + + if (s.graph.nodes().length) { + var w = dom.offsetWidth, + h = dom.offsetHeight; + + // The "rescale" middleware modifies the position of the nodes, but we + // need here the camera to deal with this. Here is the code: + var xMin = Infinity, + xMax = -Infinity, + yMin = Infinity, + yMax = -Infinity, + margin = 50, + scale; + + s.graph.nodes().forEach(function(n) { + xMin = Math.min(n.x, xMin); + xMax = Math.max(n.x, xMax); + yMin = Math.min(n.y, yMin); + yMax = Math.max(n.y, yMax); + }); + + xMax += margin; + xMin -= margin; + yMax += margin; + yMin -= margin; + + scale = Math.min( + w / Math.max(xMax - xMin, 1), + h / Math.max(yMax - yMin, 1) + ); + + c.goTo({ + x: (xMin + xMax) / 2, + y: (yMin + yMax) / 2, + ratio: 1 / scale + }); + + ground.style.top = + Math.max(h / 2 - Math.min((yMin + yMax) / 2 * scale, h), 0) + 'px'; + disc.style.borderRadius = radius * scale; + disc.style.width = 2 * radius * scale; + disc.style.height = 2 * radius * scale; + disc.style.top = mouseY - radius * scale; + disc.style.left = mouseX - radius * scale; + disc.style.backgroundColor = spaceMode ? '#f99' : '#9cf'; + + } + + requestAnimationFrame(frame); + } + + frame(); + + + + + /** + * EVENTS BINDING: + * *************** + */ + dom.addEventListener('click', function(e) { + // Find neighbors: + var x, + y, + p, + id, + neighbors; + + x = sigma.utils.getX(e) - dom.offsetWidth / 2; + y = sigma.utils.getY(e) - dom.offsetHeight / 2; + + p = c.cameraPosition(x, y); + x = p.x; + y = p.y; + + neighbors = s.graph.nodes().filter(function(n) { + return (Math.sqrt( + Math.pow(n.x - x, 2) + + Math.pow(n.y - y, 2) + ) - n.size) < radius; + }); + + if (!spaceMode) + s.graph.addNode({ + id: (id = (++nId) + ''), + size: nodeRadius, + x: x + Math.random() / 10, + y: y + Math.random() / 10, + dX: 0, + dY: 0, + type: 'goo' + }); + + neighbors.forEach(function(n) { + if (!spaceMode) + s.graph.addEdge({ + id: (++eId) + '', + source: id, + target: n.id, + type: 'goo' + }); + else + s.graph.dropNode(n.id); + }); + }, false); + dom.addEventListener('mousemove', function(e) { + mouseX = sigma.utils.getX(e); + mouseY = sigma.utils.getY(e); + }, false); + dom.addEventListener('DOMMouseScroll', function(e) { + radius *= sigma.utils.getDelta(e) < 0 ? 1 / wheelRatio : wheelRatio; + }, false); + dom.addEventListener('mousewheel', function(e) { + radius *= sigma.utils.getDelta(e) < 0 ? 1 / wheelRatio : wheelRatio; + }, false); + document.addEventListener('keydown', function(e) { + spaceMode = (e.which == 32) ? true : spaceMode; + }); + document.addEventListener('keyup', function(e) { + spaceMode = e.which == 32 ? false : spaceMode; + }); +})(); +</script> diff --git a/sigma.js-1.2.0/examples/animate.html b/sigma.js-1.2.0/examples/animate.html new file mode 100644 index 0000000..fb53976 --- /dev/null +++ b/sigma.js-1.2.0/examples/animate.html @@ -0,0 +1,139 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.plugins.animate/sigma.plugins.animate.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This example shows how to use the sigma.plugins.animate plugin. It + * creates a random graph with two different views: + * + * The circular view displays the nodes on a circle, with each node + * having a random color and a random size. + * + * The grid view displays every nodes with the same size, and on a grid. + * + * Every two seconds, the graph will be animated from a view to the other + * one, in a one second animation. + */ +var i, + s, + o, + L = 10, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }, + step = 0; + +// Generate a random graph: +for (i = 0; i < N; i++) { + o = { + id: 'n' + i, + label: 'Node ' + i, + circular_x: L * Math.cos(Math.PI * 2 * i / N - Math.PI / 2), + circular_y: L * Math.sin(Math.PI * 2 * i / N - Math.PI / 2), + circular_size: Math.random(), + circular_color: '#' + ( + Math.floor(Math.random() * 16777215).toString(16) + '000000' + ).substr(0, 6), + grid_x: i % L, + grid_y: Math.floor(i / L), + grid_size: 1, + grid_color: '#ccc' + }; + + ['x', 'y', 'size', 'color'].forEach(function(val) { + o[val] = o['grid_' + val]; + }); + + g.nodes.push(o); +} + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0) + }); + +// Instantiate sigma: +s = new sigma({ + graph: g, + container: 'graph-container', + settings: { + animationsTime: 1000 + } +}); + +setInterval(function() { + var prefix = ['grid_', 'circular_'][step = +!step]; + sigma.plugins.animate( + s, + { + x: prefix + 'x', + y: prefix + 'y', + size: prefix + 'size', + color: prefix + 'color' + } + ); +}, 2000); +</script> diff --git a/sigma.js-1.2.0/examples/api-candy.html b/sigma.js-1.2.0/examples/api-candy.html new file mode 100644 index 0000000..822f068 --- /dev/null +++ b/sigma.js-1.2.0/examples/api-candy.html @@ -0,0 +1,202 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.layout.forceAtlas2/worker.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/supervisor.js"></script> +<div id="container"> + <style> + #webgl { + top: 0; + bottom: 50%; + left: 0; + right: 50%; + color: #fff; + background: #000; + position: absolute; + } + + #canvas2 { + top: 50%; + bottom: 0; + left: 0; + right: 50%; + color: #000; + background: #eee; + position: absolute; + } + + #canvas1 { + top: 0; + bottom: 0; + left: 50%; + right: 0; + color: #000; + background: #fff; + position: absolute; + } + + .label { + position: absolute; + top: 10px; + left: 10px; + z-index: 1; + font-family: sans-serif; + } + </style> + <div id="webgl"> + <div class="label">WebGL renderer + Camera 1</div> + </div> + <div id="canvas1"> + <div class="label">Canvas renderer + Camera 2</div> + </div> + <div id="canvas2"> + <div class="label">Canvas renderer + Camera 1</div> + </div> +</div> +<script id="example-content"> +/** + * This example spawns three different renderers, two of them sharing + * their camera. Also, a ForceAtlas2 runs on the graph. + * + * It is basically a mashup between some other examples, to show how + * sigma behaves when instantiated in a weird and heavy configuration. + */ + +var i, + s, + o, + N = 100, + E = 500, + C = 5, + d = 0.5, + cs = [], + g = { + nodes: [], + edges: [] + }; + +for (i = 0; i < C; i++) + cs.push({ + id: i, + nodes: [], + color: '#' + ( + Math.floor(Math.random() * 16777215).toString(16) + '000000' + ).substr(0, 6) + }); + +for (i = 0; i < N; i++) { + o = cs[(Math.random() * C) | 0]; + g.nodes.push({ + id: 'n' + i, + label: 'Node' + i, + x: Math.cos(2 * i * Math.PI / N), + y: Math.sin(2 * i * Math.PI / N), + size: 0.5 + 4.5 * Math.random(), + color: o.color + }); + o.nodes.push('n' + i); +} + +for (i = 0; i < E; i++) { + if (Math.random() < 1 - d) + g.edges.push({ + id: 'e' + i, + size: 0.5, + source: 'n' + ((Math.random() * N) | 0), + target: 'n' + ((Math.random() * N) | 0) + }); + else { + o = cs[(Math.random() * C) | 0] + g.edges.push({ + id: 'e' + i, + size: 0.5, + source: o.nodes[(Math.random() * o.nodes.length) | 0], + target: o.nodes[(Math.random() * o.nodes.length) | 0] + }); + } +} + +s = new sigma({ + graph: g, + settings: { + skipErrors: true + } +}); + +// Initialize cameras: +s.addCamera('cam1'), +s.addCamera('cam2'); + +// Initialize the three renderers: +s.addRenderer({ + container: document.getElementById('webgl'), + type: 'webgl', + camera: 'cam1', + settings: { + defaultLabelColor: '#fff' + } +}); + +s.addRenderer({ + container: document.getElementById('canvas2'), + type: 'canvas', + camera: 'cam1', + settings: { + drawEdges: false + } +}); + +s.addRenderer({ + container: document.getElementById('canvas1'), + type: 'canvas', + camera: 'cam2' +}); + +// Start the layout algorithm: +s.startForceAtlas2(); +</script> diff --git a/sigma.js-1.2.0/examples/basic.html b/sigma.js-1.2.0/examples/basic.html new file mode 100644 index 0000000..773f942 --- /dev/null +++ b/sigma.js-1.2.0/examples/basic.html @@ -0,0 +1,104 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This is a basic example on how to instantiate sigma. A random graph is + * generated and stored in the "graph" variable, and then sigma is instantiated + * directly with the graph. + * + * The simple instance of sigma is enough to make it render the graph on the on + * the screen, since the graph is given directly to the constructor. + */ +var i, + s, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +/*for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: '#ccc' + }); +*/ +// Instantiate sigma: +s = new sigma({ + graph: g, + container: 'graph-container' +}); +</script> diff --git a/sigma.js-1.2.0/examples/custom-edge-renderer.html b/sigma.js-1.2.0/examples/custom-edge-renderer.html new file mode 100644 index 0000000..7052b5b --- /dev/null +++ b/sigma.js-1.2.0/examples/custom-edge-renderer.html @@ -0,0 +1,164 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script src="../plugins/sigma.layout.forceAtlas2/worker.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/supervisor.js"></script> +<script> +/** + * This is a basic example on how to develop a custom edge renderer. In + * this example, the renderer will display the edge as a path made of two + * segments, an horizontal one and a vertical one. To make it just a bit + * "more readable", I also used the FA2 plugin (but it is actually still + * not readable). + * + * IMPORTANT: This edge renderer just works with the canvas renderer. If + * you do want to display images with the WebGL renderer, you will have + * to develop a specific WebGL edge renderer. + */ +sigma.utils.pkg('sigma.canvas.edges'); +sigma.canvas.edges.t = function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = edge[prefix + 'size'] || 1; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + source[prefix + 'x'], + target[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); +}; + +// Now, let's use the renderer +var i, + s, + N = 50, + E = 150, + g = { + nodes: [], + edges: [] + }, + colors = [ + '#617db4', + '#668f3c', + '#c6583e', + '#b956af' + ]; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: colors[Math.floor(Math.random() * colors.length)] + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + type: 't' + }); + +// Instantiate sigma: +s = new sigma({ + graph: g, + renderer: { + // IMPORTANT: + // This works only with the canvas renderer, so the + // renderer type set as "canvas" is necessary here. + container: 'graph-container', + type: 'canvas' + } +}); + +// Start the ForceAtlas2 algorithm: +s.startForceAtlas2(); +</script> diff --git a/sigma.js-1.2.0/examples/custom-node-renderer.html b/sigma.js-1.2.0/examples/custom-node-renderer.html new file mode 100644 index 0000000..5e41abd --- /dev/null +++ b/sigma.js-1.2.0/examples/custom-node-renderer.html @@ -0,0 +1,239 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This is a basic example on how to develop a custom node renderer. In + * this example, the renderer will display an image clipped in a disc, + * with a border colored according the node's "color" value. + * + * If a node as the value "image" to its attribute "type", then it will + * displayed with the node renderer "sigma.canvas.nodes.image", with the + * url being its "url" value. + * + * IMPORTANT: This node renderer just works with the canvas renderer. If + * you do want to display images with the WebGL renderer, you will have + * to develop a specific WebGL node renderer. + */ +sigma.utils.pkg('sigma.canvas.nodes'); +sigma.canvas.nodes.image = (function() { + var _cache = {}, + _loading = {}, + _callbacks = {}; + + // Return the renderer itself: + var renderer = function(node, context, settings) { + var args = arguments, + prefix = settings('prefix') || '', + size = node[prefix + 'size'], + color = node.color || settings('defaultNodeColor'), + url = node.url; + + if (_cache[url]) { + context.save(); + + // Draw the clipping disc: + context.beginPath(); + context.arc( + node[prefix + 'x'], + node[prefix + 'y'], + node[prefix + 'size'], + 0, + Math.PI * 2, + true + ); + context.closePath(); + context.clip(); + + // Draw the image + context.drawImage( + _cache[url], + node[prefix + 'x'] - size, + node[prefix + 'y'] - size, + 2 * size, + 2 * size + ); + + // Quit the "clipping mode": + context.restore(); + + // Draw the border: + context.beginPath(); + context.arc( + node[prefix + 'x'], + node[prefix + 'y'], + node[prefix + 'size'], + 0, + Math.PI * 2, + true + ); + context.lineWidth = size / 5; + context.strokeStyle = node.color || settings('defaultNodeColor'); + context.stroke(); + } else { + sigma.canvas.nodes.image.cache(url); + sigma.canvas.nodes.def.apply( + sigma.canvas.nodes, + args + ); + } + }; + + // Let's add a public method to cache images, to make it possible to + // preload images before the initial rendering: + renderer.cache = function(url, callback) { + if (callback) + _callbacks[url] = callback; + + if (_loading[url]) + return; + + var img = new Image(); + + img.onload = function() { + _loading[url] = false; + _cache[url] = img; + + if (_callbacks[url]) { + _callbacks[url].call(this, img); + delete _callbacks[url]; + } + }; + + _loading[url] = true; + img.src = url; + }; + + return renderer; +})(); + +// Now that's the renderer has been implemented, let's generate a graph +// to render: +var i, + s, + img, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }, + urls = [ + 'img/img1.png', + 'img/img2.png', + 'img/img3.png', + 'img/img4.png' + ], + loaded = 0, + colors = [ + '#617db4', + '#668f3c', + '#c6583e', + '#b956af' + ]; + +// Generate a random graph, with ~30% nodes having the type "image": +for (i = 0; i < N; i++) { + img = Math.random() >= 0.7; + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + type: img ? 'image' : 'def', + url: img ? urls[Math.floor(Math.random() * urls.length)] : null, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: colors[Math.floor(Math.random() * colors.length)] + }); +} + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random() + }); + +// Then, wait for all images to be loaded before instanciating sigma: +urls.forEach(function(url) { + sigma.canvas.nodes.image.cache( + url, + function() { + if (++loaded === urls.length) + // Instantiate sigma: + s = new sigma({ + graph: g, + renderer: { + // IMPORTANT: + // This works only with the canvas renderer, so the + // renderer type set as "canvas" is necessary here. + container: document.getElementById('graph-container'), + type: 'canvas' + }, + settings: { + minNodeSize: 8, + maxNodeSize: 16, + } + }); + } + ); +}); +</script> diff --git a/sigma.js-1.2.0/examples/data/arctic.gexf b/sigma.js-1.2.0/examples/data/arctic.gexf new file mode 100644 index 0000000..6c57fa4 --- /dev/null +++ b/sigma.js-1.2.0/examples/data/arctic.gexf @@ -0,0 +1,23819 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gexf xmlns="http://www.gephi.org/gexf" xmlns:viz="http://www.gephi.org/gexf/viz"> + <graph type="static"> + <attributes class="node" type="static"> + <attribute id="0" title="nodedef" type="string"/> + <attribute id="1" title="label" type="string"/> + <attribute id="2" title="occurrences" type="integer"/> + </attributes> + <nodes> + <node id="0" label="1831"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-113.203964" y="30.300962" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n0"/> + <attvalue id="1" value="1831"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1" label="New York"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-81.7245" y="25.771425" z="0.0"/> + <viz:size value="10.138098"/> + <attvalues> + <attvalue id="0" value="n1"/> + <attvalue id="1" value="New York"/> + <attvalue id="2" value="143"/> + </attvalues> + </node> + <node id="2" label="1893"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-115.22559" y="28.346638" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n2"/> + <attvalue id="1" value="1893"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="3" label="Frontier In American History"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-123.03194" y="33.00843" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n3"/> + <attvalue id="1" value="Frontier In American History"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="4" label="1926"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-114.62498" y="49.445946" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n4"/> + <attvalue id="1" value="1926"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="5" label="San Francisco"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-120.99793" y="63.12548" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n5"/> + <attvalue id="1" value="San Francisco"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="6" label="1927"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-129.64749" y="45.982162" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n6"/> + <attvalue id="1" value="1927"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="7" label="Radio Commission"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-144.23775" y="47.882298" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n7"/> + <attvalue id="1" value="Radio Commission"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="8" label="1937"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-100.14781" y="23.726124" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n8"/> + <attvalue id="1" value="1937"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="9" label="1958"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-100.260956" y="32.712933" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n9"/> + <attvalue id="1" value="1958"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="10" label="1969"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-115.39432" y="45.59863" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n10"/> + <attvalue id="1" value="1969"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="11" label="1978"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-117.98709" y="30.771664" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n11"/> + <attvalue id="1" value="1978"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="12" label="New England"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-124.61263" y="28.672318" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n12"/> + <attvalue id="1" value="New England"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="13" label="1986"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-105.058495" y="23.629133" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n13"/> + <attvalue id="1" value="1986"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="14" label="1988"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-118.98926" y="47.566803" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n14"/> + <attvalue id="1" value="1988"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="15" label="1993"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="3.7129924" y="62.988205" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n15"/> + <attvalue id="1" value="1993"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="16" label="National Institute"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="95.67597" y="82.82772" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n16"/> + <attvalue id="1" value="National Institute"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="17" label="21-Avr-08"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-249.59615" y="-119.80488" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n17"/> + <attvalue id="1" value="21-Avr-08"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="18" label="Fibre Optique"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-240.1543" y="-117.69849" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n18"/> + <attvalue id="1" value="Fibre Optique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="19" label="6-Avr-09"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-92.45961" y="-49.047523" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n19"/> + <attvalue id="1" value="6-Avr-09"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="20" label="Agence De Voyages"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-61.669888" y="-43.184402" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n20"/> + <attvalue id="1" value="Agence De Voyages"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="21" label="Compagnie Aérienne"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-80.04082" y="-45.849594" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n21"/> + <attvalue id="1" value="Compagnie Aérienne"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="22" label="Risques Naturels"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="190.3612" y="-193.70375" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n22"/> + <attvalue id="1" value="Risques Naturels"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="23" label="Risque Majeur"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="191.17575" y="-196.10255" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n23"/> + <attvalue id="1" value="Risque Majeur"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="24" label="Risque Technologique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="178.63846" y="-198.8214" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n24"/> + <attvalue id="1" value="Risque Technologique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="25" label="Catastrophe Naturelle"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="158.77385" y="-152.2074" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n25"/> + <attvalue id="1" value="Catastrophe Naturelle"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="26" label="Gestion Des Risques"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="171.00418" y="-191.31535" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n26"/> + <attvalue id="1" value="Gestion Des Risques"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="27" label="Glissement De Terrain"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="125.35982" y="-144.58945" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n27"/> + <attvalue id="1" value="Glissement De Terrain"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="28" label="Plan De Prevention"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="200.5114" y="-198.36298" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n28"/> + <attvalue id="1" value="Plan De Prevention"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="29" label="Plan De Prévention De Risque Naturel"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="201.20938" y="-204.88795" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n29"/> + <attvalue id="1" value="Plan De Prévention De Risque Naturel"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="30" label="Plan De Prévention Des Risques"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="193.56952" y="-188.94383" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n30"/> + <attvalue id="1" value="Plan De Prévention Des Risques"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="31" label="Urss"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-117.52698" y="-196.41893" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n31"/> + <attvalue id="1" value="Urss"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="32" label="Union Pour La Republique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-129.76659" y="-206.34999" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n32"/> + <attvalue id="1" value="Union Pour La Republique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="33" label="Union Soviétique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-82.988655" y="-166.98717" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n33"/> + <attvalue id="1" value="Union Soviétique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="34" label="1002 Area"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-290.44608" y="108.038956" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n34"/> + <attvalue id="1" value="1002 Area"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="35" label="Arctic National Wildlife Refuge"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-299.69208" y="105.892006" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n35"/> + <attvalue id="1" value="Arctic National Wildlife Refuge"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="36" label="Arctic Refuge"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-285.3167" y="92.27745" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n36"/> + <attvalue id="1" value="Arctic Refuge"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="37" label="Barrel Of Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-224.44983" y="86.48012" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n37"/> + <attvalue id="1" value="Barrel Of Oil"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="38" label="Coastal Plain"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-295.55557" y="102.18477" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n38"/> + <attvalue id="1" value="Coastal Plain"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="39" label="National Interest Lands"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-274.71252" y="118.26101" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n39"/> + <attvalue id="1" value="National Interest Lands"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="40" label="Oil Drill"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-280.90048" y="95.79655" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n40"/> + <attvalue id="1" value="Oil Drill"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="41" label="1er Juillet 1909"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-54.401966" y="25.404884" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n41"/> + <attvalue id="1" value="1er Juillet 1909"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="42" label="Archipel Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-27.946346" y="8.071507" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n42"/> + <attvalue id="1" value="Archipel Arctique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="43" label="Bleriot Xi"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-65.0778" y="30.76231" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n43"/> + <attvalue id="1" value="Bleriot Xi"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="44" label="25% Inférieure"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="40.775856" y="27.979546" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n44"/> + <attvalue id="1" value="25% Inférieure"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="45" label="Ice Data"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-1.4867498" y="155.61017" z="0.0"/> + <viz:size value="3.9073772"/> + <attvalues> + <attvalue id="0" value="n45"/> + <attvalue id="1" value="Ice Data"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="46" label="National Snow"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="7.4724064" y="153.55391" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n46"/> + <attvalue id="1" value="National Snow"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="47" label="Nord Géographique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="49.249706" y="55.297237" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n47"/> + <attvalue id="1" value="Nord Géographique"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="48" label="Océan Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="2.79345" y="-15.812569" z="0.0"/> + <viz:size value="6.7346573"/> + <attvalues> + <attvalue id="0" value="n48"/> + <attvalue id="1" value="Océan Arctique"/> + <attvalue id="2" value="73"/> + </attvalues> + </node> + <node id="49" label="Pole Nord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="15.212202" y="10.8002205" z="0.0"/> + <viz:size value="6.6225677"/> + <attvalues> + <attvalue id="0" value="n49"/> + <attvalue id="1" value="Pole Nord"/> + <attvalue id="2" value="78"/> + </attvalues> + </node> + <node id="50" label="Réchauffement Climatique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="51.805546" y="-51.451633" z="0.0"/> + <viz:size value="9.301798"/> + <attvalues> + <attvalue id="0" value="n50"/> + <attvalue id="1" value="Réchauffement Climatique"/> + <attvalue id="2" value="118"/> + </attvalues> + </node> + <node id="51" label="Region Polaire"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="50.921463" y="-8.845099" z="0.0"/> + <viz:size value="5.18996"/> + <attvalues> + <attvalue id="0" value="n51"/> + <attvalue id="1" value="Region Polaire"/> + <attvalue id="2" value="47"/> + </attvalues> + </node> + <node id="52" label="Rétroaction Positive"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="106.74457" y="-51.87078" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n52"/> + <attvalue id="1" value="Rétroaction Positive"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="53" label="Changement Climatique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="68.96944" y="-76.0735" z="0.0"/> + <viz:size value="14.0"/> + <attvalues> + <attvalue id="0" value="n53"/> + <attvalue id="1" value="Changement Climatique"/> + <attvalue id="2" value="209"/> + </attvalues> + </node> + <node id="54" label="-4200 M"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-131.67456" y="248.811" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n54"/> + <attvalue id="1" value="-4200 M"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="55" label="Atacama Large"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-137.16072" y="260.94278" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n55"/> + <attvalue id="1" value="Atacama Large"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="56" label="High Altitude"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-83.937126" y="224.64355" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n56"/> + <attvalue id="1" value="High Altitude"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="57" label="Highest Mountain"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-155.8306" y="224.97762" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n57"/> + <attvalue id="1" value="Highest Mountain"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="58" label="62.809 Km²"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-399.6992" y="-162.15797" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n58"/> + <attvalue id="1" value="62.809 Km²"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="59" label="University Institute Of Technology"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-400.77597" y="-159.47484" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n59"/> + <attvalue id="1" value="University Institute Of Technology"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="60" label="650 000 Ans"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="100.71721" y="-61.060863" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n60"/> + <attvalue id="1" value="650 000 Ans"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="61" label="Calotte Glaciaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="63.844" y="-13.265548" z="0.0"/> + <viz:size value="5.2392035"/> + <attvalues> + <attvalue id="0" value="n61"/> + <attvalue id="1" value="Calotte Glaciaire"/> + <attvalue id="2" value="45"/> + </attvalues> + </node> + <node id="62" label="Carotte De Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="108.66731" y="-26.353434" z="0.0"/> + <viz:size value="4.1604505"/> + <attvalues> + <attvalue id="0" value="n62"/> + <attvalue id="1" value="Carotte De Glace"/> + <attvalue id="2" value="20"/> + </attvalues> + </node> + <node id="63" label="Carottes Glaciaires"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="104.78771" y="-46.73383" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n63"/> + <attvalue id="1" value="Carottes Glaciaires"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="64" label="Dioxyde De Carbone"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="116.40958" y="-90.68923" z="0.0"/> + <viz:size value="4.5483475"/> + <attvalues> + <attvalue id="0" value="n64"/> + <attvalue id="1" value="Dioxyde De Carbone"/> + <attvalue id="2" value="31"/> + </attvalues> + </node> + <node id="65" label="Effet De Serre"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="93.54092" y="-97.69309" z="0.0"/> + <viz:size value="10.682548"/> + <attvalues> + <attvalue id="0" value="n65"/> + <attvalue id="1" value="Effet De Serre"/> + <attvalue id="2" value="143"/> + </attvalues> + </node> + <node id="66" label="Fonte Des Glaces"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="49.531677" y="-21.5393" z="0.0"/> + <viz:size value="4.5907726"/> + <attvalues> + <attvalue id="0" value="n66"/> + <attvalue id="1" value="Fonte Des Glaces"/> + <attvalue id="2" value="31"/> + </attvalues> + </node> + <node id="67" label="Gaz Carbonique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="119.38459" y="-85.68396" z="0.0"/> + <viz:size value="4.195968"/> + <attvalues> + <attvalue id="0" value="n67"/> + <attvalue id="1" value="Gaz Carbonique"/> + <attvalue id="2" value="23"/> + </attvalues> + </node> + <node id="68" label="Activité Humaine"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="110.29548" y="-107.890274" z="0.0"/> + <viz:size value="7.41568"/> + <attvalues> + <attvalue id="0" value="n68"/> + <attvalue id="1" value="Activité Humaine"/> + <attvalue id="2" value="88"/> + </attvalues> + </node> + <node id="69" label="Absolute Zero"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="119.08079" y="253.6447" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n69"/> + <attvalue id="1" value="Absolute Zero"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="70" label="Fahrenheit Scale"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="111.01426" y="275.61844" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n70"/> + <attvalue id="1" value="Fahrenheit Scale"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="71" label="Kelvin Scale"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="124.01802" y="277.55502" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n71"/> + <attvalue id="1" value="Kelvin Scale"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="72" label="Celsius Scale"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="113.57003" y="282.07675" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n72"/> + <attvalue id="1" value="Celsius Scale"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="73" label="Degree Celsius"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="103.74344" y="264.03793" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n73"/> + <attvalue id="1" value="Degree Celsius"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="74" label="Degree Fahrenheit"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="85.60099" y="256.32263" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n74"/> + <attvalue id="1" value="Degree Fahrenheit"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="75" label="Accessibles"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="15.99613" y="-58.732742" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n75"/> + <attvalue id="1" value="Accessibles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="76" label="Base De Donnée"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="140.77444" y="-132.76547" z="0.0"/> + <viz:size value="4.7661777"/> + <attvalues> + <attvalue id="0" value="n76"/> + <attvalue id="1" value="Base De Donnée"/> + <attvalue id="2" value="45"/> + </attvalues> + </node> + <node id="77" label="Égalité De Droit"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="5.7736487" y="-50.460194" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n77"/> + <attvalue id="1" value="Égalité De Droit"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="78" label="Accord Canada"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="1.265272" y="30.87262" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n78"/> + <attvalue id="1" value="Accord Canada"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="79" label="Climatic Change"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-33.626568" y="132.44574" z="0.0"/> + <viz:size value="11.786932"/> + <attvalues> + <attvalue id="0" value="n79"/> + <attvalue id="1" value="Climatic Change"/> + <attvalue id="2" value="170"/> + </attvalues> + </node> + <node id="80" label="Grands Lacs"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="38.744778" y="-98.68034" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n80"/> + <attvalue id="1" value="Grands Lacs"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="81" label="Accord De Marrakech"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-2.8126671" y="-199.34373" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n81"/> + <attvalue id="1" value="Accord De Marrakech"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="82" label="Union Européenne"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="8.102614" y="-141.1017" z="0.0"/> + <viz:size value="7.9891057"/> + <attvalues> + <attvalue id="0" value="n82"/> + <attvalue id="1" value="Union Européenne"/> + <attvalue id="2" value="104"/> + </attvalues> + </node> + <node id="83" label="Accord International"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="21.506575" y="-156.87576" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n83"/> + <attvalue id="1" value="Accord International"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="84" label="Commission Européenne"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="43.230576" y="-163.68697" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n84"/> + <attvalue id="1" value="Commission Européenne"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="85" label="Droit International"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-28.257124" y="-176.47557" z="0.0"/> + <viz:size value="4.0266757"/> + <attvalues> + <attvalue id="0" value="n85"/> + <attvalue id="1" value="Droit International"/> + <attvalue id="2" value="23"/> + </attvalues> + </node> + <node id="86" label="Accumulateur De Froid"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="272.2951" y="-41.721363" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n86"/> + <attvalue id="1" value="Accumulateur De Froid"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="87" label="Température Ambiante"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="230.77887" y="-41.69897" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n87"/> + <attvalue id="1" value="Température Ambiante"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="88" label="Achim Steiner"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="7.936443" y="28.803406" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n88"/> + <attvalue id="1" value="Achim Steiner"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="89" label="Environment Programme"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-33.502987" y="60.505337" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n89"/> + <attvalue id="1" value="Environment Programme"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="90" label="Acide Éthanoïque"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="257.38828" y="-117.25546" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n90"/> + <attvalue id="1" value="Acide Éthanoïque"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="91" label="Quantite De Matiere"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="285.3261" y="-95.294" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n91"/> + <attvalue id="1" value="Quantite De Matiere"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="92" label="Acidification Des Océans"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="102.5896" y="-83.469215" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n92"/> + <attvalue id="1" value="Acidification Des Océans"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="93" label="Emissions De Co2"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="75.59424" y="-111.53292" z="0.0"/> + <viz:size value="4.1604505"/> + <attvalues> + <attvalue id="0" value="n93"/> + <attvalue id="1" value="Emissions De Co2"/> + <attvalue id="2" value="21"/> + </attvalues> + </node> + <node id="94" label="Acteur Économique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="52.711926" y="-214.40945" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n94"/> + <attvalue id="1" value="Acteur Économique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="95" label="Activité Économique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="53.392776" y="-192.1" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n95"/> + <attvalue id="1" value="Activité Économique"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="96" label="Developpement Economique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="38.124172" y="-196.21404" z="0.0"/> + <viz:size value="4.125738"/> + <attvalues> + <attvalue id="0" value="n96"/> + <attvalue id="1" value="Developpement Economique"/> + <attvalue id="2" value="27"/> + </attvalues> + </node> + <node id="97" label="Pouvoir Public"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="80.62474" y="-168.808" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n97"/> + <attvalue id="1" value="Pouvoir Public"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="98" label="Action 21"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="32.30506" y="-123.43781" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n98"/> + <attvalue id="1" value="Action 21"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="99" label="Agenda 21"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="8.346409" y="-53.946445" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n99"/> + <attvalue id="1" value="Agenda 21"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="100" label="Diversité Biologique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="41.57149" y="-121.012146" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n100"/> + <attvalue id="1" value="Diversité Biologique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="101" label="Gestion Des Ressources"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="58.24777" y="-182.14644" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n101"/> + <attvalue id="1" value="Gestion Des Ressources"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="102" label="Action Climat"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="81.44599" y="-107.22689" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n102"/> + <attvalue id="1" value="Action Climat"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="103" label="Amis De La Terre"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="43.23911" y="-132.41507" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n103"/> + <attvalue id="1" value="Amis De La Terre"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="104" label="Energie Renouvelable"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="88.25337" y="-126.477104" z="0.0"/> + <viz:size value="5.2392035"/> + <attvalues> + <attvalue id="0" value="n104"/> + <attvalue id="1" value="Energie Renouvelable"/> + <attvalue id="2" value="53"/> + </attvalues> + </node> + <node id="105" label="Protocole De Kyoto"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="86.91879" y="-102.3703" z="0.0"/> + <viz:size value="3.9357517"/> + <attvalues> + <attvalue id="0" value="n105"/> + <attvalue id="1" value="Protocole De Kyoto"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="106" label="Environnement Canada"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="143.0778" y="-99.226746" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n106"/> + <attvalue id="1" value="Environnement Canada"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="107" label="Espèce Humaine"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="81.9611" y="-113.94411" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n107"/> + <attvalue id="1" value="Espèce Humaine"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="108" label="Réchauffement Global"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="107.261475" y="-70.40018" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n108"/> + <attvalue id="1" value="Réchauffement Global"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="109" label="Ressource Naturelle"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="40.121937" y="-144.76022" z="0.0"/> + <viz:size value="5.7507973"/> + <attvalues> + <attvalue id="0" value="n109"/> + <attvalue id="1" value="Ressource Naturelle"/> + <attvalue id="2" value="62"/> + </attvalues> + </node> + <node id="110" label="Activité Physique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="1.8200616" y="-160.99698" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n110"/> + <attvalue id="1" value="Activité Physique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="111" label="Mode De Vie"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-12.780138" y="-101.711945" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n111"/> + <attvalue id="1" value="Mode De Vie"/> + <attvalue id="2" value="21"/> + </attvalues> + </node> + <node id="112" label="Activité Solaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="110.15552" y="-6.9406853" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n112"/> + <attvalue id="1" value="Activité Solaire"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="113" label="Champ Magnétique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="90.46194" y="48.347385" z="0.0"/> + <viz:size value="4.195968"/> + <attvalues> + <attvalue id="0" value="n113"/> + <attvalue id="1" value="Champ Magnétique"/> + <attvalue id="2" value="23"/> + </attvalues> + </node> + <node id="114" label="Energie Solaire"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="134.36267" y="-104.2932" z="0.0"/> + <viz:size value="4.091856"/> + <attvalues> + <attvalue id="0" value="n114"/> + <attvalue id="1" value="Energie Solaire"/> + <attvalue id="2" value="25"/> + </attvalues> + </node> + <node id="115" label="Eruption Solaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="87.828224" y="24.016247" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n115"/> + <attvalue id="1" value="Eruption Solaire"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="116" label="Vent Solaire"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="97.73283" y="34.52555" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n116"/> + <attvalue id="1" value="Vent Solaire"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="117" label="Activités Humaines"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="101.48369" y="-114.053856" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n117"/> + <attvalue id="1" value="Activités Humaines"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="118" label="Combustible Fossile"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="88.07471" y="-132.56985" z="0.0"/> + <viz:size value="4.125738"/> + <attvalues> + <attvalue id="0" value="n118"/> + <attvalue id="1" value="Combustible Fossile"/> + <attvalue id="2" value="20"/> + </attvalues> + </node> + <node id="119" label="Hemisphere Nord"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="88.799324" y="-12.419462" z="0.0"/> + <viz:size value="4.384874"/> + <attvalues> + <attvalue id="0" value="n119"/> + <attvalue id="1" value="Hemisphere Nord"/> + <attvalue id="2" value="30"/> + </attvalues> + </node> + <node id="120" label="Matiere Organique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="134.571" y="-168.67946" z="0.0"/> + <viz:size value="4.3071337"/> + <attvalues> + <attvalue id="0" value="n120"/> + <attvalue id="1" value="Matiere Organique"/> + <attvalue id="2" value="30"/> + </attvalues> + </node> + <node id="121" label="Administration Bush"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-123.35279" y="-46.29773" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n121"/> + <attvalue id="1" value="Administration Bush"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="122" label="Bush Administration"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-166.01524" y="23.500431" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n122"/> + <attvalue id="1" value="Bush Administration"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="123" label="Adverse Effect"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-280.8506" y="-14.357272" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n123"/> + <attvalue id="1" value="Adverse Effect"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="124" label="Adverse Event"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-284.07852" y="-16.397394" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n124"/> + <attvalue id="1" value="Adverse Event"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="125" label="Adverse Reaction"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-280.13354" y="-18.41333" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n125"/> + <attvalue id="1" value="Adverse Reaction"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="126" label="Affaiblissement"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-13.494583" y="-164.21832" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n126"/> + <attvalue id="1" value="Affaiblissement"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="127" label="Esperance De Vie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-22.28897" y="-149.6507" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n127"/> + <attvalue id="1" value="Esperance De Vie"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="128" label="Affaires Étrangères"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-45.393368" y="-150.26659" z="0.0"/> + <viz:size value="4.384874"/> + <attvalues> + <attvalue id="0" value="n128"/> + <attvalue id="1" value="Affaires Étrangères"/> + <attvalue id="2" value="35"/> + </attvalues> + </node> + <node id="129" label="Affaires Maritimes"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-7.854268" y="-195.56541" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n129"/> + <attvalue id="1" value="Affaires Maritimes"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="130" label="Agence Internationale"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="10.785448" y="-128.09052" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n130"/> + <attvalue id="1" value="Agence Internationale"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="131" label="Energie Fossile"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="61.24001" y="-125.80153" z="0.0"/> + <viz:size value="4.091856"/> + <attvalues> + <attvalue id="0" value="n131"/> + <attvalue id="1" value="Energie Fossile"/> + <attvalue id="2" value="20"/> + </attvalues> + </node> + <node id="132" label="Programme Des Nations"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="19.665848" y="-96.559166" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n132"/> + <attvalue id="1" value="Programme Des Nations"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="133" label="Agence Spatiale"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="101.45006" y="45.662666" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n133"/> + <attvalue id="1" value="Agence Spatiale"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="134" label="Agence Spatiale Européenne"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="87.68519" y="31.538296" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n134"/> + <attvalue id="1" value="Agence Spatiale Européenne"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="135" label="Centre Spatial"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="94.658485" y="66.991135" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n135"/> + <attvalue id="1" value="Centre Spatial"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="136" label="European Space"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="73.30927" y="133.52025" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n136"/> + <attvalue id="1" value="European Space"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="137" label="Space Agencies"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="77.70585" y="130.26492" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n137"/> + <attvalue id="1" value="Space Agencies"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="138" label="Station Spatiale"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="110.16877" y="60.09916" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n138"/> + <attvalue id="1" value="Station Spatiale"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="139" label="Agence Spatiale Russe"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="107.68974" y="64.56931" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n139"/> + <attvalue id="1" value="Agence Spatiale Russe"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="140" label="Space Agency"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="89.43839" y="94.09796" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n140"/> + <attvalue id="1" value="Space Agency"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="141" label="Sustainable Development"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-39.53535" y="45.579334" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n141"/> + <attvalue id="1" value="Sustainable Development"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="142" label="Agent D'Érosion,1"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="139.83403" y="-91.4137" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n142"/> + <attvalue id="1" value="Agent D'Érosion,1"/> + </attvalues> + </node> + <node id="143" label="Azote Kjeldahl"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="135.07076" y="-173.6778" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n143"/> + <attvalue id="1" value="Azote Kjeldahl"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="144" label="Bassin Sédimentaire"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="117.5669" y="-101.914566" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n144"/> + <attvalue id="1" value="Bassin Sédimentaire"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="145" label="Carte Géographie"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="65.13172" y="-105.328285" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n145"/> + <attvalue id="1" value="Carte Géographie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="146" label="Cristal De Glace"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="133.25394" y="-10.979678" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n146"/> + <attvalue id="1" value="Cristal De Glace"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="147" label="Vallee Glaciaire"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="88.578705" y="-62.96597" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n147"/> + <attvalue id="1" value="Vallee Glaciaire"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="148" label="Agricultural Land"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-54.823086" y="117.68389" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n148"/> + <attvalue id="1" value="Agricultural Land"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="149" label="British Columbia"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-74.013336" y="127.44684" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n149"/> + <attvalue id="1" value="British Columbia"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="150" label="Natural Resource"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-36.981384" y="65.24656" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n150"/> + <attvalue id="1" value="Natural Resource"/> + <attvalue id="2" value="20"/> + </attvalues> + </node> + <node id="151" label="Agricultural Science"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-41.926064" y="71.96111" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n151"/> + <attvalue id="1" value="Agricultural Science"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="152" label="Agriculture Biologique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="150.32199" y="-204.59464" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n152"/> + <attvalue id="1" value="Agriculture Biologique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="153" label="Engrais Chimique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="156.01869" y="-199.17804" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n153"/> + <attvalue id="1" value="Engrais Chimique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="154" label="Exploitation Agricole"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="136.77686" y="-206.95612" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n154"/> + <attvalue id="1" value="Exploitation Agricole"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="155" label="Produit Chimique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="164.49692" y="-167.40256" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n155"/> + <attvalue id="1" value="Produit Chimique"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="156" label="Agriculture Durable"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="96.3345" y="-181.89757" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n156"/> + <attvalue id="1" value="Agriculture Durable"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="157" label="Agriculture Intensive"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="129.10211" y="-195.82751" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n157"/> + <attvalue id="1" value="Agriculture Intensive"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="158" label="Agroalimentaire Canada"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="133.12955" y="-121.461334" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n158"/> + <attvalue id="1" value="Agroalimentaire Canada"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="159" label="Centre De Recherche"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="159.55566" y="-77.203255" z="0.0"/> + <viz:size value="4.0266757"/> + <attvalues> + <attvalue id="0" value="n159"/> + <attvalue id="1" value="Centre De Recherche"/> + <attvalue id="2" value="27"/> + </attvalues> + </node> + <node id="160" label="Air Humide"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="196.04442" y="-48.697674" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n160"/> + <attvalue id="1" value="Air Humide"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="161" label="Pression Atmosphérique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="215.11195" y="-61.049625" z="0.0"/> + <viz:size value="3.8284607"/> + <attvalues> + <attvalue id="0" value="n161"/> + <attvalue id="1" value="Pression Atmosphérique"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="162" label="Air Quality"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-131.28079" y="115.120995" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n162"/> + <attvalue id="1" value="Air Quality"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="163" label="Environmental Protection"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-120.85718" y="94.67263" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n163"/> + <attvalue id="1" value="Environmental Protection"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="164" label="Protection Agency"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-136.2817" y="112.61331" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n164"/> + <attvalue id="1" value="Protection Agency"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="165" label="Aire De Répartition"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="9.323195" y="-106.14036" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n165"/> + <attvalue id="1" value="Aire De Répartition"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="166" label="Amérique Du Nord"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-15.5951" y="-70.99995" z="0.0"/> + <viz:size value="5.0446563"/> + <attvalues> + <attvalue id="0" value="n166"/> + <attvalue id="1" value="Amérique Du Nord"/> + <attvalue id="2" value="51"/> + </attvalues> + </node> + <node id="167" label="Espece Menacee"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="20.318104" y="-113.60013" z="0.0"/> + <viz:size value="4.125738"/> + <attvalues> + <attvalue id="0" value="n167"/> + <attvalue id="1" value="Espece Menacee"/> + <attvalue id="2" value="23"/> + </attvalues> + </node> + <node id="168" label="Tigre De Siberie"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-8.057831" y="-108.49691" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n168"/> + <attvalue id="1" value="Tigre De Siberie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="169" label="Aire Marine Protégée"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="31.34712" y="-149.70459" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n169"/> + <attvalue id="1" value="Aire Marine Protégée"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="170" label="Parc National"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-30.850708" y="-65.585205" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n170"/> + <attvalue id="1" value="Parc National"/> + <attvalue id="2" value="25"/> + </attvalues> + </node> + <node id="171" label="Port Méthanier"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-9.711485" y="-176.35077" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n171"/> + <attvalue id="1" value="Port Méthanier"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="172" label="Ressources Halieutiques"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="22.371199" y="-193.59839" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n172"/> + <attvalue id="1" value="Ressources Halieutiques"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="173" label="Ajustement Structurel"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="62.330505" y="-186.74092" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n173"/> + <attvalue id="1" value="Ajustement Structurel"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="174" label="Court Terme"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="54.086452" y="-149.3213" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n174"/> + <attvalue id="1" value="Court Terme"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="175" label="Banque Mondiale"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="22.261864" y="-182.39842" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n175"/> + <attvalue id="1" value="Banque Mondiale"/> + <attvalue id="2" value="19"/> + </attvalues> + </node> + <node id="176" label="Al Gore"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-62.334923" y="99.12342" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n176"/> + <attvalue id="1" value="Al Gore"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="177" label="Carbon Dioxide"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-55.47324" y="125.11609" z="0.0"/> + <viz:size value="4.7661777"/> + <attvalues> + <attvalue id="0" value="n177"/> + <attvalue id="1" value="Carbon Dioxide"/> + <attvalue id="2" value="41"/> + </attvalues> + </node> + <node id="178" label="Climate Crisis"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-60.82279" y="106.278145" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n178"/> + <attvalue id="1" value="Climate Crisis"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="179" label="Inconvenient Truth"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-34.581684" y="96.97511" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n179"/> + <attvalue id="1" value="Inconvenient Truth"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="180" label="Alain Hubert"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-16.196047" y="143.98354" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n180"/> + <attvalue id="1" value="Alain Hubert"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="181" label="International Polar"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-9.027923" y="141.83066" z="0.0"/> + <viz:size value="3.9073772"/> + <attvalues> + <attvalue id="0" value="n181"/> + <attvalue id="1" value="International Polar"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="182" label="North Pole"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-55.8565" y="171.90884" z="0.0"/> + <viz:size value="4.7661777"/> + <attvalues> + <attvalue id="0" value="n182"/> + <attvalue id="1" value="North Pole"/> + <attvalue id="2" value="40"/> + </attvalues> + </node> + <node id="183" label="Polar Explorer"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-58.83079" y="186.69232" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n183"/> + <attvalue id="1" value="Polar Explorer"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="184" label="Polar Foundation"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-11.981268" y="147.11038" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n184"/> + <attvalue id="1" value="Polar Foundation"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="185" label="Sea Of Ice"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-43.91012" y="184.19289" z="0.0"/> + <viz:size value="4.7215033"/> + <attvalues> + <attvalue id="0" value="n185"/> + <attvalue id="1" value="Sea Of Ice"/> + <attvalue id="2" value="44"/> + </attvalues> + </node> + <node id="186" label="Alaska"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-335.87674" y="271.785" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n186"/> + <attvalue id="1" value="Alaska"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="187" label="Alaska Halibut"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-331.9837" y="276.51868" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n187"/> + <attvalue id="1" value="Alaska Halibut"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="188" label="Alaska Salmon"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-331.75302" y="268.96106" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n188"/> + <attvalue id="1" value="Alaska Salmon"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="189" label="Alaska State"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-341.2595" y="274.59564" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n189"/> + <attvalue id="1" value="Alaska State"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="190" label="Fishing Alaska"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-327.06616" y="273.94238" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n190"/> + <attvalue id="1" value="Fishing Alaska"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="191" label="Salmon Fishing"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-315.93274" y="271.08054" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n191"/> + <attvalue id="1" value="Salmon Fishing"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="192" label="Alaska Fishing"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-316.6231" y="256.39114" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n192"/> + <attvalue id="1" value="Alaska Fishing"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="193" label="Alaska Pipeline"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-237.4198" y="107.65163" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n193"/> + <attvalue id="1" value="Alaska Pipeline"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="194" label="North Slope"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-219.62532" y="100.35476" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n194"/> + <attvalue id="1" value="North Slope"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="195" label="Prudhoe Bay"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-238.55441" y="116.0038" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n195"/> + <attvalue id="1" value="Prudhoe Bay"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="196" label="Alenia Space"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="90.396576" y="135.07115" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n196"/> + <attvalue id="1" value="Alenia Space"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="197" label="Aléoutiennes"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-9.177194" y="-52.399147" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n197"/> + <attvalue id="1" value="Aléoutiennes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="198" label="Aleutian Island"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-65.21715" y="33.476093" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n198"/> + <attvalue id="1" value="Aleutian Island"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="199" label="Iles Aleoutiennes"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-27.585207" y="-85.09149" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n199"/> + <attvalue id="1" value="Iles Aleoutiennes"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="200" label="Ocean Pacifique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-20.703178" y="-57.3704" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n200"/> + <attvalue id="1" value="Ocean Pacifique"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="201" label="Pacifique Nord"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-7.7832313" y="-80.22035" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n201"/> + <attvalue id="1" value="Pacifique Nord"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="202" label="Zone De Subduction"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="175.17549" y="-63.39597" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n202"/> + <attvalue id="1" value="Zone De Subduction"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="203" label="Bering Sea"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-93.04061" y="113.73422" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n203"/> + <attvalue id="1" value="Bering Sea"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="204" label="Alexei Miller"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-189.61142" y="26.57744" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n204"/> + <attvalue id="1" value="Alexei Miller"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="205" label="Gas Giants"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-166.21169" y="98.2658" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n205"/> + <attvalue id="1" value="Gas Giants"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="206" label="Gas Pipeline"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-225.5377" y="75.32106" z="0.0"/> + <viz:size value="3.9651115"/> + <attvalues> + <attvalue id="0" value="n206"/> + <attvalue id="1" value="Gas Pipeline"/> + <attvalue id="2" value="18"/> + </attvalues> + </node> + <node id="207" label="Gas Price"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-200.47496" y="60.168285" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n207"/> + <attvalue id="1" value="Gas Price"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="208" label="Russian Gas"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-199.72371" y="53.06446" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n208"/> + <attvalue id="1" value="Russian Gas"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="209" label="Gas Company"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-218.79456" y="67.846054" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n209"/> + <attvalue id="1" value="Gas Company"/> + <attvalue id="2" value="19"/> + </attvalues> + </node> + <node id="210" label="Alfred Wegener"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="15.00172" y="131.04428" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n210"/> + <attvalue id="1" value="Alfred Wegener"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="211" label="Earth Science"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="32.90166" y="122.29744" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n211"/> + <attvalue id="1" value="Earth Science"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="212" label="Marine Research"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="11.911555" y="74.68962" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n212"/> + <attvalue id="1" value="Marine Research"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="213" label="Alliage Métallique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="257.434" y="-35.680717" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n213"/> + <attvalue id="1" value="Alliage Métallique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="214" label="Alliance Atlantique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-39.934994" y="-125.71489" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n214"/> + <attvalue id="1" value="Alliance Atlantique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="215" label="Secretaire General"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-41.43826" y="-144.65887" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n215"/> + <attvalue id="1" value="Secretaire General"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="216" label="Atlantique Nord"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-1.6801682" y="-57.740322" z="0.0"/> + <viz:size value="4.269332"/> + <attvalues> + <attvalue id="0" value="n216"/> + <attvalue id="1" value="Atlantique Nord"/> + <attvalue id="2" value="27"/> + </attvalues> + </node> + <node id="217" label="Guerre Froide"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-68.49608" y="-159.41794" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n217"/> + <attvalue id="1" value="Guerre Froide"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="218" label="Alopex Lagopus"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-78.20123" y="9.323242" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n218"/> + <attvalue id="1" value="Alopex Lagopus"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="219" label="Arctic Region"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-99.799706" y="187.88002" z="0.0"/> + <viz:size value="4.0266757"/> + <attvalues> + <attvalue id="0" value="n219"/> + <attvalue id="1" value="Arctic Region"/> + <attvalue id="2" value="21"/> + </attvalues> + </node> + <node id="220" label="Alta"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-197.4808" y="223.2079" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n220"/> + <attvalue id="1" value="Alta"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="221" label="International Airports"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-188.97466" y="214.70929" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n221"/> + <attvalue id="1" value="International Airports"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="222" label="Américains Du Nord"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="4.6196346" y="-68.271065" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n222"/> + <attvalue id="1" value="Américains Du Nord"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="223" label="American Geophysical"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="1.2567267" y="97.28115" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n223"/> + <attvalue id="1" value="American Geophysical"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="224" label="Geophysical Research"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="25.073666" y="127.86718" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n224"/> + <attvalue id="1" value="Geophysical Research"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="225" label="Solid Earth"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="27.373497" y="137.12082" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n225"/> + <attvalue id="1" value="Solid Earth"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="226" label="American Physical Society"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-41.715275" y="150.24199" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n226"/> + <attvalue id="1" value="American Physical Society"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="227" label="American Scientist"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-139.39792" y="107.20272" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n227"/> + <attvalue id="1" value="American Scientist"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="228" label="American University"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-66.0597" y="93.93784" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n228"/> + <attvalue id="1" value="American University"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="229" label="Amérique Du Sud"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-38.86054" y="-70.56831" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n229"/> + <attvalue id="1" value="Amérique Du Sud"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="230" label="Carnet De Voyage"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-88.62595" y="-72.87346" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n230"/> + <attvalue id="1" value="Carnet De Voyage"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="231" label="Amirauté Britannique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="13.064561" y="-94.058495" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n231"/> + <attvalue id="1" value="Amirauté Britannique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="232" label="Navire De Guerre"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-50.81818" y="-168.48856" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n232"/> + <attvalue id="1" value="Navire De Guerre"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="233" label="Carte Marine"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="87.726135" y="1.6453468" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n233"/> + <attvalue id="1" value="Carte Marine"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="234" label="Droit Humain"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="6.183718" y="-131.93776" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n234"/> + <attvalue id="1" value="Droit Humain"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="235" label="Amplitude Thermique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="135.643" y="-75.64238" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n235"/> + <attvalue id="1" value="Amplitude Thermique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="236" label="Climat Continental"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="133.87773" y="-78.25943" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n236"/> + <attvalue id="1" value="Climat Continental"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="237" label="Analyse De Données"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="154.12535" y="-96.907555" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n237"/> + <attvalue id="1" value="Analyse De Données"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="238" label="Science Humaine"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="160.291" y="-47.19645" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n238"/> + <attvalue id="1" value="Science Humaine"/> + <attvalue id="2" value="19"/> + </attvalues> + </node> + <node id="239" label="Université De Québec"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="120.21439" y="-19.814877" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n239"/> + <attvalue id="1" value="Université De Québec"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="240" label="Analyse De Sol"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="160.36038" y="-188.96693" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n240"/> + <attvalue id="1" value="Analyse De Sol"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="241" label="Élément Nutritif"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="124.02254" y="-184.91066" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n241"/> + <attvalue id="1" value="Élément Nutritif"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="242" label="Engrais Azoté"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="145.18445" y="-189.71812" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n242"/> + <attvalue id="1" value="Engrais Azoté"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="243" label="Analyse Qualitative Globale Simplifiée Des Impacts"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="37.117363" y="-154.41173" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n243"/> + <attvalue id="1" value="Analyse Qualitative Globale Simplifiée Des Impacts"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="244" label="Decroissance Soutenable"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="45.78917" y="-157.13383" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n244"/> + <attvalue id="1" value="Decroissance Soutenable"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="245" label="Dérèglement Climatique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="88.41255" y="-116.5716" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n245"/> + <attvalue id="1" value="Dérèglement Climatique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="246" label="Fragmentation Écologique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="70.92576" y="-143.68958" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n246"/> + <attvalue id="1" value="Fragmentation Écologique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="247" label="Objectifs Du Millénaire"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="12.4458685" y="-165.5086" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n247"/> + <attvalue id="1" value="Objectifs Du Millénaire"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="248" label="Programme Des Nations Unies"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="9.056396" y="-123.401535" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n248"/> + <attvalue id="1" value="Programme Des Nations Unies"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="249" label="Analyses De Cycle De Vie"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="109.0696" y="-152.85701" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n249"/> + <attvalue id="1" value="Analyses De Cycle De Vie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="250" label="Impact Environnemental"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="97.254196" y="-157.21738" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n250"/> + <attvalue id="1" value="Impact Environnemental"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="251" label="Management Environnemental"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="91.11483" y="-179.4232" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n251"/> + <attvalue id="1" value="Management Environnemental"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="252" label="Bilan Environnemental"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="89.022064" y="-150.6653" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n252"/> + <attvalue id="1" value="Bilan Environnemental"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="253" label="Bonne Pratique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="102.633675" y="-176.08763" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n253"/> + <attvalue id="1" value="Bonne Pratique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="254" label="Ann Bancroft"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-22.485003" y="139.81525" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n254"/> + <attvalue id="1" value="Ann Bancroft"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="255" label="Liv Arnesen"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-23.124985" y="158.08711" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n255"/> + <attvalue id="1" value="Liv Arnesen"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="256" label="Pole Expedition"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-58.390255" y="199.47104" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n256"/> + <attvalue id="1" value="Pole Expedition"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="257" label="Année Polaire Internationale"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="103.003006" y="-23.960472" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n257"/> + <attvalue id="1" value="Année Polaire Internationale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="258" label="Communaute Scientifique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="150.47658" y="-55.86362" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n258"/> + <attvalue id="1" value="Communaute Scientifique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="259" label="Emile Victor"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="52.9865" y="19.471155" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n259"/> + <attvalue id="1" value="Emile Victor"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="260" label="Annuaire Sciences"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="164.51122" y="-17.858986" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n260"/> + <attvalue id="1" value="Annuaire Sciences"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="261" label="Science De La Nature"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="154.6033" y="-40.537548" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n261"/> + <attvalue id="1" value="Science De La Nature"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="262" label="Sciences De La Terre"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="152.73366" y="-0.066033475" z="0.0"/> + <viz:size value="4.091856"/> + <attvalues> + <attvalue id="0" value="n262"/> + <attvalue id="1" value="Sciences De La Terre"/> + <attvalue id="2" value="25"/> + </attvalues> + </node> + <node id="263" label="Anomalie Magnétique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="150.07298" y="-15.702199" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n263"/> + <attvalue id="1" value="Anomalie Magnétique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="264" label="Croûte Océanique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="178.68779" y="-65.692856" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n264"/> + <attvalue id="1" value="Croûte Océanique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="265" label="Dorsale Océanique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="191.68584" y="-58.511658" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n265"/> + <attvalue id="1" value="Dorsale Océanique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="266" label="Marge Continentale"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="141.21425" y="-67.624016" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n266"/> + <attvalue id="1" value="Marge Continentale"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="267" label="Nord Magnétique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="60.190495" y="63.161922" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n267"/> + <attvalue id="1" value="Nord Magnétique"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="268" label="Anwr"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-291.7128" y="97.115425" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n268"/> + <attvalue id="1" value="Anwr"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="269" label="Anwr Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-279.8924" y="103.712296" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n269"/> + <attvalue id="1" value="Anwr Oil"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="270" label="Arctic National"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-267.39056" y="92.25091" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n270"/> + <attvalue id="1" value="Arctic National"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="271" label="National Wildlife Refuge"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-283.95236" y="88.35038" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n271"/> + <attvalue id="1" value="National Wildlife Refuge"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="272" label="Oil Companies"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-243.50465" y="88.31894" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n272"/> + <attvalue id="1" value="Oil Companies"/> + <attvalue id="2" value="18"/> + </attvalues> + </node> + <node id="273" label="Refuge To Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-292.62045" y="94.92121" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n273"/> + <attvalue id="1" value="Refuge To Oil"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="274" label="Anwr Drilling"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-284.91733" y="99.35841" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n274"/> + <attvalue id="1" value="Anwr Drilling"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="275" label="National Wildlife"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-278.74994" y="110.035324" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n275"/> + <attvalue id="1" value="National Wildlife"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="276" label="Wildlife Refuge"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-269.86737" y="101.480644" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n276"/> + <attvalue id="1" value="Wildlife Refuge"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="277" label="Aptenodytes Forsteri"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="31.055836" y="99.80726" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n277"/> + <attvalue id="1" value="Aptenodytes Forsteri"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="278" label="Archéologie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="183.63559" y="-45.625885" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n278"/> + <attvalue id="1" value="Archéologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="279" label="Arctique Canadien"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-3.9445589" y="-4.471882" z="0.0"/> + <viz:size value="4.3456545"/> + <attvalues> + <attvalue id="0" value="n279"/> + <attvalue id="1" value="Arctique Canadien"/> + <attvalue id="2" value="25"/> + </attvalues> + </node> + <node id="280" label="Bris De Glace"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-5.8347754" y="-21.578403" z="0.0"/> + <viz:size value="4.195968"/> + <attvalues> + <attvalue id="0" value="n280"/> + <attvalue id="1" value="Bris De Glace"/> + <attvalue id="2" value="31"/> + </attvalues> + </node> + <node id="281" label="Grand Nord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-39.57299" y="-27.606646" z="0.0"/> + <viz:size value="5.18996"/> + <attvalues> + <attvalue id="0" value="n281"/> + <attvalue id="1" value="Grand Nord"/> + <attvalue id="2" value="51"/> + </attvalues> + </node> + <node id="282" label="Ile De Baffin"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-59.04784" y="52.553104" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n282"/> + <attvalue id="1" value="Ile De Baffin"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="283" label="Terre De Baffin"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-45.948204" y="47.96359" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n283"/> + <attvalue id="1" value="Terre De Baffin"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="284" label="Territoires Du Nord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-43.98641" y="-3.272884" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n284"/> + <attvalue id="1" value="Territoires Du Nord"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="285" label="Archives Climatiques"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="102.780754" y="-42.972824" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n285"/> + <attvalue id="1" value="Archives Climatiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="286" label="Laboratoire Des Sciences"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="148.07843" y="-12.8848715" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n286"/> + <attvalue id="1" value="Laboratoire Des Sciences"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="287" label="Période Glaciaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="127.866875" y="-28.618502" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n287"/> + <attvalue id="1" value="Période Glaciaire"/> + <attvalue id="2" value="20"/> + </attvalues> + </node> + <node id="288" label="Archives Du Climat"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="101.5711" y="-44.95117" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n288"/> + <attvalue id="1" value="Archives Du Climat"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="289" label="Laboratoire Des Sciences Du Climat"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="96.76218" y="-9.049139" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n289"/> + <attvalue id="1" value="Laboratoire Des Sciences Du Climat"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="290" label="Dominique Raynaud"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="96.9847" y="-15.121114" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n290"/> + <attvalue id="1" value="Dominique Raynaud"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="291" label="Arctic Bay"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-119.66502" y="213.10405" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n291"/> + <attvalue id="1" value="Arctic Bay"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="292" label="Arctic Circle"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-126.737595" y="202.34866" z="0.0"/> + <viz:size value="4.125738"/> + <attvalues> + <attvalue id="0" value="n292"/> + <attvalue id="1" value="Arctic Circle"/> + <attvalue id="2" value="25"/> + </attvalues> + </node> + <node id="293" label="Baffin Island"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-111.485565" y="192.40678" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n293"/> + <attvalue id="1" value="Baffin Island"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="294" label="Canadian Arctic"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-94.57012" y="208.20892" z="0.0"/> + <viz:size value="4.0266757"/> + <attvalues> + <attvalue id="0" value="n294"/> + <attvalue id="1" value="Canadian Arctic"/> + <attvalue id="2" value="21"/> + </attvalues> + </node> + <node id="295" label="High Arctic"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-108.33184" y="210.53252" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n295"/> + <attvalue id="1" value="High Arctic"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="296" label="Arctic Ocean"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-93.28997" y="190.84187" z="0.0"/> + <viz:size value="5.18996"/> + <attvalues> + <attvalue id="0" value="n296"/> + <attvalue id="1" value="Arctic Ocean"/> + <attvalue id="2" value="47"/> + </attvalues> + </node> + <node id="297" label="Midnight Sun"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-151.48566" y="222.3814" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n297"/> + <attvalue id="1" value="Midnight Sun"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="298" label="Arctic Climate"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-71.06557" y="172.55275" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n298"/> + <attvalue id="1" value="Arctic Climate"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="299" label="Climate System"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-31.028963" y="145.8912" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n299"/> + <attvalue id="1" value="Climate System"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="300" label="Global Climate"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-21.659771" y="123.040016" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n300"/> + <attvalue id="1" value="Global Climate"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="301" label="Arctic Expedition"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-75.893456" y="197.4442" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n301"/> + <attvalue id="1" value="Arctic Expedition"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="302" label="Polar Expedition"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-69.1988" y="207.21591" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n302"/> + <attvalue id="1" value="Polar Expedition"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="303" label="Arctic Explorer"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-86.27269" y="199.84595" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n303"/> + <attvalue id="1" value="Arctic Explorer"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="304" label="Northwest Passage"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-75.07605" y="211.81693" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n304"/> + <attvalue id="1" value="Northwest Passage"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="305" label="Arctic Haze"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-35.80109" y="195.26086" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n305"/> + <attvalue id="1" value="Arctic Haze"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="306" label="Arctic Research"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-64.82288" y="192.68219" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n306"/> + <attvalue id="1" value="Arctic Research"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="307" label="Atmospheric Administration"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="22.788795" y="198.62018" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n307"/> + <attvalue id="1" value="Atmospheric Administration"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="308" label="Atmospheric Chemistry"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-49.887466" y="159.8329" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n308"/> + <attvalue id="1" value="Atmospheric Chemistry"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="309" label="National Oceanic"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="16.61615" y="206.01147" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n309"/> + <attvalue id="1" value="National Oceanic"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="310" label="Arctic Ice"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-27.917944" y="188.4113" z="0.0"/> + <viz:size value="3.8284607"/> + <attvalues> + <attvalue id="0" value="n310"/> + <attvalue id="1" value="Arctic Ice"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="311" label="Arctic Sea"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-10.068048" y="179.75276" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n311"/> + <attvalue id="1" value="Arctic Sea"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="312" label="Ice Sheet"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-16.38151" y="182.17133" z="0.0"/> + <viz:size value="4.2322693"/> + <attvalues> + <attvalue id="0" value="n312"/> + <attvalue id="1" value="Ice Sheet"/> + <attvalue id="2" value="28"/> + </attvalues> + </node> + <node id="313" label="National Parks"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-170.17097" y="161.3763" z="0.0"/> + <viz:size value="4.195968"/> + <attvalues> + <attvalue id="0" value="n313"/> + <attvalue id="1" value="National Parks"/> + <attvalue id="2" value="31"/> + </attvalues> + </node> + <node id="314" label="Arctic Norway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-110.29215" y="200.05023" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n314"/> + <attvalue id="1" value="Arctic Norway"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="315" label="International Arctic"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-76.86737" y="186.35866" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n315"/> + <attvalue id="1" value="International Arctic"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="316" label="Northern Light"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-117.78721" y="154.91376" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n316"/> + <attvalue id="1" value="Northern Light"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="317" label="Norwegian Polar"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-56.37995" y="181.46701" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n317"/> + <attvalue id="1" value="Norwegian Polar"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="318" label="Atlantic Ocean"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-97.00306" y="147.84337" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n318"/> + <attvalue id="1" value="Atlantic Ocean"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="319" label="Lomonosov Ridge"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-50.756573" y="155.02829" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n319"/> + <attvalue id="1" value="Lomonosov Ridge"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="320" label="Arctic Red"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-156.28389" y="183.47563" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n320"/> + <attvalue id="1" value="Arctic Red"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="321" label="Beaufort Sea"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-142.64174" y="161.16742" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n321"/> + <attvalue id="1" value="Beaufort Sea"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="322" label="Mackenzie River"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-183.5263" y="174.83626" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n322"/> + <attvalue id="1" value="Mackenzie River"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="323" label="Northwest Territories"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-156.98174" y="163.5819" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n323"/> + <attvalue id="1" value="Northwest Territories"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="324" label="Geological Survey"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-41.72142" y="110.47517" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n324"/> + <attvalue id="1" value="Geological Survey"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="325" label="Polar Research"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-24.83641" y="162.25723" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n325"/> + <attvalue id="1" value="Polar Research"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="326" label="Arctic Science"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-73.76362" y="190.57797" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n326"/> + <attvalue id="1" value="Arctic Science"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="327" label="Arctic Resources"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-81.83812" y="184.4488" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n327"/> + <attvalue id="1" value="Arctic Resources"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="328" label="Arctic Summer"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-27.644634" y="184.24844" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n328"/> + <attvalue id="1" value="Arctic Summer"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="329" label="Ice Records"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-16.24161" y="186.46007" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n329"/> + <attvalue id="1" value="Ice Records"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="330" label="Arcticnet"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-69.9575" y="182.43434" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n330"/> + <attvalue id="1" value="Arcticnet"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="331" label="Centre Of Excellence"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-89.95464" y="177.64325" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n331"/> + <attvalue id="1" value="Centre Of Excellence"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="332" label="Network Of Centres Of Excellence"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-95.11385" y="158.78987" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n332"/> + <attvalue id="1" value="Network Of Centres Of Excellence"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="333" label="Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="11.449857" y="-19.621204" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n333"/> + <attvalue id="1" value="Arctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="334" label="Ours Polaire"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-17.325356" y="-33.27089" z="0.0"/> + <viz:size value="4.269332"/> + <attvalues> + <attvalue id="0" value="n334"/> + <attvalue id="1" value="Ours Polaire"/> + <attvalue id="2" value="26"/> + </attvalues> + </node> + <node id="335" label="Cercle Polaire"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-48.095364" y="-36.490795" z="0.0"/> + <viz:size value="4.7661777"/> + <attvalues> + <attvalue id="0" value="n335"/> + <attvalue id="1" value="Cercle Polaire"/> + <attvalue id="2" value="40"/> + </attvalues> + </node> + <node id="336" label="Haut Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-21.528183" y="-16.880508" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n336"/> + <attvalue id="1" value="Haut Arctique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="337" label="Arktika 2007"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-13.903978" y="58.9643" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n337"/> + <attvalue id="1" value="Arktika 2007"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="338" label="Law Of Sea"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-49.472965" y="21.847624" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n338"/> + <attvalue id="1" value="Law Of Sea"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="339" label="Mission Arctique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="33.099888" y="-33.06869" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n339"/> + <attvalue id="1" value="Mission Arctique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="340" label="Natural Resources Ministry"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-64.134834" y="76.44806" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n340"/> + <attvalue id="1" value="Natural Resources Ministry"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="341" label="Armée Américaine"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-120.0226" y="-12.212815" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n341"/> + <attvalue id="1" value="Armée Américaine"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="342" label="Arthur Chilingarov"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-42.612797" y="209.39426" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n342"/> + <attvalue id="1" value="Arthur Chilingarov"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="343" label="Helge Sander"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-40.501266" y="229.61453" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n343"/> + <attvalue id="1" value="Helge Sander"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="344" label="Asie Centrale"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-34.89877" y="-120.127" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n344"/> + <attvalue id="1" value="Asie Centrale"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="345" label="Astrophysique"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="192.97144" y="-15.115118" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n345"/> + <attvalue id="1" value="Astrophysique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="346" label="Cnrs Umr"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="211.2819" y="6.151988" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n346"/> + <attvalue id="1" value="Cnrs Umr"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="347" label="Mecanique Celeste"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="189.8597" y="-2.4442487" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n347"/> + <attvalue id="1" value="Mecanique Celeste"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="348" label="Observatoire De Paris"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="178.01636" y="-20.110973" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n348"/> + <attvalue id="1" value="Observatoire De Paris"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="349" label="Telescope Spatial"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="160.5798" y="-8.242595" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n349"/> + <attvalue id="1" value="Telescope Spatial"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="350" label="Atlantic Drift"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-99.43756" y="167.53937" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n350"/> + <attvalue id="1" value="Atlantic Drift"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="351" label="North Atlantic"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-64.40833" y="104.184166" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n351"/> + <attvalue id="1" value="North Atlantic"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="352" label="Atlantique Au Pacifique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-47.839554" y="-106.264366" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n352"/> + <attvalue id="1" value="Atlantique Au Pacifique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="353" label="Canal De Panama"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-50.865807" y="-194.60582" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n353"/> + <attvalue id="1" value="Canal De Panama"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="354" label="Chemin De Fer"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-35.73194" y="-87.048325" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n354"/> + <attvalue id="1" value="Chemin De Fer"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="355" label="Marine Soviétique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-60.67849" y="-155.855" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n355"/> + <attvalue id="1" value="Marine Soviétique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="356" label="Bruno Peyron"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-10.747266" y="-7.0994005" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n356"/> + <attvalue id="1" value="Bruno Peyron"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="357" label="Cap Lizard"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-34.374657" y="-17.676392" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n357"/> + <attvalue id="1" value="Cap Lizard"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="358" label="Atmosphère"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-35.732864" y="157.42235" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n358"/> + <attvalue id="1" value="Atmosphère"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="359" label="Atmosphere Composition"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-57.718567" y="152.6606" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n359"/> + <attvalue id="1" value="Atmosphere Composition"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="360" label="Atmospheric Research"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-41.769897" y="164.66273" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n360"/> + <attvalue id="1" value="Atmospheric Research"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="361" label="Earth System"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-3.845854" y="139.00998" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n361"/> + <attvalue id="1" value="Earth System"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="362" label="Upper Atmosphere"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-31.719908" y="169.38554" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n362"/> + <attvalue id="1" value="Upper Atmosphere"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="363" label="Atmosphère Terrestre"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="122.939224" y="-40.128826" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n363"/> + <attvalue id="1" value="Atmosphère Terrestre"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="364" label="Aurore Boréale"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-4.432619" y="16.882296" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n364"/> + <attvalue id="1" value="Aurore Boréale"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="365" label="Composition Chimique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="170.05028" y="-113.44334" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n365"/> + <attvalue id="1" value="Composition Chimique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="366" label="Rayonnement Solaire"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="154.5624" y="-106.82185" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n366"/> + <attvalue id="1" value="Rayonnement Solaire"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="367" label="National Weather"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="5.08101" y="227.72704" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n367"/> + <attvalue id="1" value="National Weather"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="368" label="Global Change"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-35.831654" y="152.65" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n368"/> + <attvalue id="1" value="Global Change"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="369" label="August Peterman"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="4.8993335" y="105.2187" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n369"/> + <attvalue id="1" value="August Peterman"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="370" label="Nuit Polaire"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-11.027645" y="24.769274" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n370"/> + <attvalue id="1" value="Nuit Polaire"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="371" label="Aurora Borealis"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-97.41561" y="155.59187" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n371"/> + <attvalue id="1" value="Aurora Borealis"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="372" label="Magnetic Field"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-2.8049726" y="149.24353" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n372"/> + <attvalue id="1" value="Magnetic Field"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="373" label="Aurore Polaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="77.101395" y="33.875526" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n373"/> + <attvalue id="1" value="Aurore Polaire"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="374" label="Pole Magnetique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="73.325775" y="60.481773" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n374"/> + <attvalue id="1" value="Pole Magnetique"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="375" label="Aurores Boréales"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="100.03674" y="21.777388" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n375"/> + <attvalue id="1" value="Aurores Boréales"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="376" label="Axel Heiberg"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-95.12263" y="219.29913" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n376"/> + <attvalue id="1" value="Axel Heiberg"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="377" label="Ellesmere Island"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-86.02097" y="214.66623" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n377"/> + <attvalue id="1" value="Ellesmere Island"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="378" label="Hydrocarbure Aromatique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="109.989365" y="-188.51434" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n378"/> + <attvalue id="1" value="Hydrocarbure Aromatique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="379" label="Métaux Lourds"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="131.66563" y="-187.17117" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n379"/> + <attvalue id="1" value="Métaux Lourds"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="380" label="Azote Liquide"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="222.25716" y="-13.575581" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n380"/> + <attvalue id="1" value="Azote Liquide"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="381" label="Baffin Bay"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-79.369484" y="151.77296" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n381"/> + <attvalue id="1" value="Baffin Bay"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="382" label="Baie De Baffin"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-19.066738" y="10.270861" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n382"/> + <attvalue id="1" value="Baie De Baffin"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="383" label="Baie De Disko"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-13.535161" y="14.788718" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n383"/> + <attvalue id="1" value="Baie De Disko"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="385" label="Knud Rasmussen"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-78.57332" y="111.59102" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n385"/> + <attvalue id="1" value="Knud Rasmussen"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="386" label="Universités Canadiennes"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="56.770393" y="11.248558" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n386"/> + <attvalue id="1" value="Universités Canadiennes"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="387" label="Baie Disko"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-32.4329" y="-38.737713" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n387"/> + <attvalue id="1" value="Baie Disko"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="388" label="Europe Du Nord"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-89.12617" y="-88.50067" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n388"/> + <attvalue id="1" value="Europe Du Nord"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="389" label="Balbuzard Pêcheur"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-28.54275" y="-93.02308" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n389"/> + <attvalue id="1" value="Balbuzard Pêcheur"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="390" label="Baleine Bleue"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="2.9959354" y="-113.29308" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n390"/> + <attvalue id="1" value="Baleine Bleue"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="391" label="Mammifere Marin"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-10.603199" y="-129.96988" z="0.0"/> + <viz:size value="3.9073772"/> + <attvalues> + <attvalue id="0" value="n391"/> + <attvalue id="1" value="Mammifere Marin"/> + <attvalue id="2" value="17"/> + </attvalues> + </node> + <node id="392" label="Nageoire Caudale"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="23.112679" y="-135.34761" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n392"/> + <attvalue id="1" value="Nageoire Caudale"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="393" label="Baleine Grise"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-19.350264" y="-106.0015" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n393"/> + <attvalue id="1" value="Baleine Grise"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="394" label="Petit Rorqual"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-10.847951" y="-112.97877" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n394"/> + <attvalue id="1" value="Petit Rorqual"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="395" label="Balises"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="159.80191" y="-145.55705" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n395"/> + <attvalue id="1" value="Balises"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="396" label="Ballon Dirigeable"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="26.310966" y="13.946579" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n396"/> + <attvalue id="1" value="Ballon Dirigeable"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="397" label="Louis Etienne"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="28.13527" y="-1.3279884" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n397"/> + <attvalue id="1" value="Louis Etienne"/> + <attvalue id="2" value="18"/> + </attvalues> + </node> + <node id="398" label="Pole Airship"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="22.873318" y="3.2718608" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n398"/> + <attvalue id="1" value="Pole Airship"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="399" label="Ballon Stratosphérique"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="148.19206" y="54.038837" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n399"/> + <attvalue id="1" value="Ballon Stratosphérique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="400" label="Etudes Spatiales"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="111.13378" y="53.390965" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n400"/> + <attvalue id="1" value="Etudes Spatiales"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="401" label="Baltic Sea"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-146.42409" y="84.8764" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n401"/> + <attvalue id="1" value="Baltic Sea"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="402" label="Bande Côtière"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="27.035393" y="-103.89623" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n402"/> + <attvalue id="1" value="Bande Côtière"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="403" label="Chaîne De Montagnes"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="131.35992" y="-70.13891" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n403"/> + <attvalue id="1" value="Chaîne De Montagnes"/> + <attvalue id="2" value="18"/> + </attvalues> + </node> + <node id="404" label="Banquise"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="25.10112" y="-25.959925" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n404"/> + <attvalue id="1" value="Banquise"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="405" label="Glacial Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-10.968628" y="-12.03476" z="0.0"/> + <viz:size value="4.1604505"/> + <attvalues> + <attvalue id="0" value="n405"/> + <attvalue id="1" value="Glacial Arctique"/> + <attvalue id="2" value="20"/> + </attvalues> + </node> + <node id="406" label="Ours Blanc"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-10.544866" y="-42.540047" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n406"/> + <attvalue id="1" value="Ours Blanc"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="407" label="Banquise Continentale"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="53.320606" y="-3.7276556" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n407"/> + <attvalue id="1" value="Banquise Continentale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="408" label="Calotte Polaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="77.350136" y="-6.895287" z="0.0"/> + <viz:size value="4.269332"/> + <attvalues> + <attvalue id="0" value="n408"/> + <attvalue id="1" value="Calotte Polaire"/> + <attvalue id="2" value="23"/> + </attvalues> + </node> + <node id="409" label="Océan Glacial"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-17.56222" y="-19.361746" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n409"/> + <attvalue id="1" value="Océan Glacial"/> + <attvalue id="2" value="23"/> + </attvalues> + </node> + <node id="410" label="Banquise Permanente"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="4.7878776" y="1.2775079" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n410"/> + <attvalue id="1" value="Banquise Permanente"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="411" label="Détroit De Béring"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-35.338623" y="-42.67936" z="0.0"/> + <viz:size value="3.9954286"/> + <attvalues> + <attvalue id="0" value="n411"/> + <attvalue id="1" value="Détroit De Béring"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="412" label="Frédéric Lasserre"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-41.367714" y="-11.191591" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n412"/> + <attvalue id="1" value="Frédéric Lasserre"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="413" label="Barents"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-143.28409" y="209.46739" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n413"/> + <attvalue id="1" value="Barents"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="414" label="Barents Region"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-166.21114" y="191.34964" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n414"/> + <attvalue id="1" value="Barents Region"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="415" label="Josef Land"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-95.72454" y="232.41396" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n415"/> + <attvalue id="1" value="Josef Land"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="416" label="Kara Sea"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-120.43739" y="208.5851" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n416"/> + <attvalue id="1" value="Kara Sea"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="417" label="North Norway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-148.41727" y="214.55252" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n417"/> + <attvalue id="1" value="North Norway"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="418" label="Novaya Zemlya"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-129.0915" y="170.75887" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n418"/> + <attvalue id="1" value="Novaya Zemlya"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="419" label="Admiral Scheer"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-156.23521" y="219.09123" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n419"/> + <attvalue id="1" value="Admiral Scheer"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="420" label="Barent Sea"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-187.14664" y="184.4735" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n420"/> + <attvalue id="1" value="Barent Sea"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="421" label="Kola Peninsula"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-203.64352" y="249.29506" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n421"/> + <attvalue id="1" value="Kola Peninsula"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="422" label="Baril De Pétrole"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-40.765606" y="-154.20474" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n422"/> + <attvalue id="1" value="Baril De Pétrole"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="423" label="Hausse Des Prix"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-36.36143" y="-166.57997" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n423"/> + <attvalue id="1" value="Hausse Des Prix"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="424" label="Petrole Brut"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-33.19895" y="-158.61313" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n424"/> + <attvalue id="1" value="Petrole Brut"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="425" label="Barrage Hydroélectrique"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="59.168156" y="-177.78139" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n425"/> + <attvalue id="1" value="Barrage Hydroélectrique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="426" label="Centrale Electrique"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="49.589497" y="-166.27478" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n426"/> + <attvalue id="1" value="Centrale Electrique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="427" label="Centrale Nucléaire"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="22.703867" y="-158.97726" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n427"/> + <attvalue id="1" value="Centrale Nucléaire"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="428" label="Metre Cube"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="19.015085" y="-179.41298" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n428"/> + <attvalue id="1" value="Metre Cube"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="429" label="Oil Price"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-207.08775" y="74.73017" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n429"/> + <attvalue id="1" value="Oil Price"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="430" label="Peak Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-126.7081" y="57.006065" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n430"/> + <attvalue id="1" value="Peak Oil"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="431" label="Barriere De Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="81.15972" y="9.338229" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n431"/> + <attvalue id="1" value="Barriere De Glace"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="432" label="Bas Niveau"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-41.10987" y="10.37062" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n432"/> + <attvalue id="1" value="Bas Niveau"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="433" label="Basse Pression"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="205.54623" y="-54.838284" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n433"/> + <attvalue id="1" value="Basse Pression"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="434" label="Capteur De Pression"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="232.74602" y="-63.458157" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n434"/> + <attvalue id="1" value="Capteur De Pression"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="435" label="Haute Pression"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="191.11574" y="-114.793045" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n435"/> + <attvalue id="1" value="Haute Pression"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="436" label="Carte Géologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="147.21048" y="-80.48178" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n436"/> + <attvalue id="1" value="Carte Géologique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="437" label="Compagnie Pétrolière"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-34.14809" y="-179.04109" z="0.0"/> + <viz:size value="3.9357517"/> + <attvalues> + <attvalue id="0" value="n437"/> + <attvalue id="1" value="Compagnie Pétrolière"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="438" label="Croûte Continentale"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="183.9422" y="-75.21974" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n438"/> + <attvalue id="1" value="Croûte Continentale"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="439" label="Bateau De Pêche"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="44.173386" y="-204.78471" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n439"/> + <attvalue id="1" value="Bateau De Pêche"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="440" label="Libre De Droit"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="159.09518" y="-135.1882" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n440"/> + <attvalue id="1" value="Libre De Droit"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="441" label="Navire De Pêche"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="11.837637" y="-206.09175" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n441"/> + <attvalue id="1" value="Navire De Pêche"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="442" label="Bathymétrie"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="34.909325" y="83.251366" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n442"/> + <attvalue id="1" value="Bathymétrie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="443" label="Coastal Zone"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-6.4859943" y="124.4449" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n443"/> + <attvalue id="1" value="Coastal Zone"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="444" label="Fond Marin"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="17.204386" y="-75.43884" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n444"/> + <attvalue id="1" value="Fond Marin"/> + <attvalue id="2" value="25"/> + </attvalues> + </node> + <node id="445" label="Geophysical Data"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="37.98542" y="156.4542" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n445"/> + <attvalue id="1" value="Geophysical Data"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="446" label="Canadian Hydrographic"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="19.862669" y="163.26822" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n446"/> + <attvalue id="1" value="Canadian Hydrographic"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="447" label="Cartes Shom"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="83.64585" y="4.9812284" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n447"/> + <attvalue id="1" value="Cartes Shom"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="448" label="Bay Alaska"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-249.95671" y="166.7797" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n448"/> + <attvalue id="1" value="Bay Alaska"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="449" label="Bay Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-214.16371" y="103.91077" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n449"/> + <attvalue id="1" value="Bay Oil"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="450" label="Oil Field"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-226.9742" y="105.216705" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n450"/> + <attvalue id="1" value="Oil Field"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="451" label="Bilan Carbone"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="81.63801" y="-118.86459" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n451"/> + <attvalue id="1" value="Bilan Carbone"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="452" label="Equivalent Co2"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="37.754116" y="-37.71268" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n452"/> + <attvalue id="1" value="Equivalent Co2"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="453" label="Cycle De Vie"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="124.23212" y="-161.74812" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n453"/> + <attvalue id="1" value="Cycle De Vie"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="454" label="Bilan De Masse Glaciaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="85.76359" y="-22.019499" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n454"/> + <attvalue id="1" value="Bilan De Masse Glaciaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="455" label="Clark Ross"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="61.3171" y="72.87103" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n455"/> + <attvalue id="1" value="Clark Ross"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="456" label="Risque Naturel"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="178.42004" y="-176.16869" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n456"/> + <attvalue id="1" value="Risque Naturel"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="457" label="Terre Adelie"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="79.94074" y="26.22889" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n457"/> + <attvalue id="1" value="Terre Adelie"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="458" label="Protection De La Nature"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="69.823006" y="-161.99498" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n458"/> + <attvalue id="1" value="Protection De La Nature"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="459" label="Bilan Radiatif"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="124.07555" y="-81.07613" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n459"/> + <attvalue id="1" value="Bilan Radiatif"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="460" label="Circulation Atmosphérique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="147.71547" y="-42.991055" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n460"/> + <attvalue id="1" value="Circulation Atmosphérique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="461" label="Forcage Radiatif"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="92.26332" y="-88.31502" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n461"/> + <attvalue id="1" value="Forcage Radiatif"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="462" label="Biogeochemical Cycle"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-78.27921" y="125.217575" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n462"/> + <attvalue id="1" value="Biogeochemical Cycle"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="463" label="Fossil Fuel"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-74.39737" y="120.56222" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n463"/> + <attvalue id="1" value="Fossil Fuel"/> + <attvalue id="2" value="21"/> + </attvalues> + </node> + <node id="464" label="Living Organism"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-99.77965" y="104.11883" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n464"/> + <attvalue id="1" value="Living Organism"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="465" label="Carbon Cycle"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-60.68" y="141.0575" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n465"/> + <attvalue id="1" value="Carbon Cycle"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="466" label="Biological Invasions"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-32.00605" y="-54.659523" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n466"/> + <attvalue id="1" value="Biological Invasions"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="467" label="Invasive Species"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-4.4008265" y="-87.570435" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n467"/> + <attvalue id="1" value="Invasive Species"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="468" label="Biologie Marine"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="122.780975" y="-67.55721" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n468"/> + <attvalue id="1" value="Biologie Marine"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="469" label="Histoire Naturelle"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="79.07554" y="-61.151848" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n469"/> + <attvalue id="1" value="Histoire Naturelle"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="470" label="Biomes Of The World"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-108.79275" y="255.31097" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n470"/> + <attvalue id="1" value="Biomes Of The World"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="471" label="Boreal Forest"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-102.65517" y="238.57388" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n471"/> + <attvalue id="1" value="Boreal Forest"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="472" label="Biosphère"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-109.00426" y="152.46007" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n472"/> + <attvalue id="1" value="Biosphère"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="473" label="Unesco Biosphere"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-141.73677" y="173.09775" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n473"/> + <attvalue id="1" value="Unesco Biosphere"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="474" label="World Biosphere"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-149.79973" y="170.54303" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n474"/> + <attvalue id="1" value="World Biosphere"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="475" label="Biosphere Reserve"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-137.85042" y="168.1342" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n475"/> + <attvalue id="1" value="Biosphere Reserve"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="476" label="Biosphere Programme"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-81.51529" y="165.39622" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n476"/> + <attvalue id="1" value="Biosphere Programme"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="477" label="International Geosphere"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-66.293274" y="162.98517" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n477"/> + <attvalue id="1" value="International Geosphere"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="478" label="Birds Of North"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-165.60274" y="124.96221" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n478"/> + <attvalue id="1" value="Birds Of North"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="479" label="National Geographic"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-151.67918" y="122.74399" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n479"/> + <attvalue id="1" value="National Geographic"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="480" label="Bloc Erratique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="48.372036" y="-45.074894" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n480"/> + <attvalue id="1" value="Bloc Erratique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="481" label="Bœuf Musqué"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-28.002087" y="-35.691505" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n481"/> + <attvalue id="1" value="Bœuf Musqué"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="482" label="Lièvre Arctique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-49.65462" y="-45.55826" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n482"/> + <attvalue id="1" value="Lièvre Arctique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="483" label="Loup Arctique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-21.950285" y="-23.762115" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n483"/> + <attvalue id="1" value="Loup Arctique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="484" label="Régions Arctiques"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="5.922357" y="-43.04267" z="0.0"/> + <viz:size value="3.9073772"/> + <attvalues> + <attvalue id="0" value="n484"/> + <attvalue id="1" value="Régions Arctiques"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="485" label="Canadian Boreal"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-86.50778" y="221.42963" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n485"/> + <attvalue id="1" value="Canadian Boreal"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="486" label="Far North"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-140.76205" y="225.08432" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n486"/> + <attvalue id="1" value="Far North"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="487" label="Boreogadus Saida"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-45.21583" y="0.24102971" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n487"/> + <attvalue id="1" value="Boreogadus Saida"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="488" label="Fisheries Research"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-54.99161" y="97.23923" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n488"/> + <attvalue id="1" value="Fisheries Research"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="489" label="Gadus Morhua"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-29.022581" y="-73.91799" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n489"/> + <attvalue id="1" value="Gadus Morhua"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="490" label="Boris Gryzlov"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-105.16471" y="-75.2077" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n490"/> + <attvalue id="1" value="Boris Gryzlov"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="491" label="Vladimir Putin"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-170.36725" y="-14.164149" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n491"/> + <attvalue id="1" value="Vladimir Putin"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="492" label="Bouclier Antimissile"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-80.26435" y="-133.6778" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n492"/> + <attvalue id="1" value="Bouclier Antimissile"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="493" label="Dmitri Medvedev"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-81.48239" y="-152.02992" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n493"/> + <attvalue id="1" value="Dmitri Medvedev"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="494" label="Missile Balistique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="7.512925" y="-73.08438" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n494"/> + <attvalue id="1" value="Missile Balistique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="495" label="Vladimir Poutine"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-77.317245" y="-146.26772" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n495"/> + <attvalue id="1" value="Vladimir Poutine"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="496" label="Bouclier Canadien"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="33.3086" y="-91.143616" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n496"/> + <attvalue id="1" value="Bouclier Canadien"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="497" label="Forêt Boréale"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-1.0352039" y="-99.25935" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n497"/> + <attvalue id="1" value="Forêt Boréale"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="498" label="Eau Douce"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="97.88906" y="-111.56336" z="0.0"/> + <viz:size value="4.677367"/> + <attvalues> + <attvalue id="0" value="n498"/> + <attvalue id="1" value="Eau Douce"/> + <attvalue id="2" value="38"/> + </attvalues> + </node> + <node id="499" label="Brent Boddy"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-6.490277" y="107.57498" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n499"/> + <attvalue id="1" value="Brent Boddy"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="500" label="Richard Weber"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-29.691254" y="160.20241" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n500"/> + <attvalue id="1" value="Richard Weber"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="501" label="Brise-Glace Nucléaire"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-1.7740644" y="-66.14966" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n501"/> + <attvalue id="1" value="Brise-Glace Nucléaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="502" label="Plateau Continental"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-4.913478" y="-97.13884" z="0.0"/> + <viz:size value="4.058827"/> + <attvalues> + <attvalue id="0" value="n502"/> + <attvalue id="1" value="Plateau Continental"/> + <attvalue id="2" value="22"/> + </attvalues> + </node> + <node id="503" label="200 Metres"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-16.09078" y="-77.83837" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n503"/> + <attvalue id="1" value="200 Metres"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="504" label="Déchet Nucléaire"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="40.996166" y="-180.05772" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n504"/> + <attvalue id="1" value="Déchet Nucléaire"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="505" label="Marine Russe"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-58.521927" y="-125.97707" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n505"/> + <attvalue id="1" value="Marine Russe"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="506" label="Brise-Glace Russe"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="33.7876" y="-6.056961" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n506"/> + <attvalue id="1" value="Brise-Glace Russe"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="507" label="Brume Légère"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="218.01897" y="-44.12393" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n507"/> + <attvalue id="1" value="Brume Légère"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="508" label="Jules Verne"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="31.455957" y="68.274254" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n508"/> + <attvalue id="1" value="Jules Verne"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="509" label="Bulles De Gaz Emprisonnées"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="121.70205" y="-56.795902" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n509"/> + <attvalue id="1" value="Bulles De Gaz Emprisonnées"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="510" label="Temps Géologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="156.57741" y="-53.376427" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n510"/> + <attvalue id="1" value="Temps Géologique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="511" label="Variation Climatique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="118.13572" y="-62.619797" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n511"/> + <attvalue id="1" value="Variation Climatique"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="512" label="Degre Celsius"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="154.9319" y="-33.536896" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n512"/> + <attvalue id="1" value="Degre Celsius"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="513" label="Pole Sud"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="56.75266" y="32.941185" z="0.0"/> + <viz:size value="4.3071337"/> + <attvalues> + <attvalue id="0" value="n513"/> + <attvalue id="1" value="Pole Sud"/> + <attvalue id="2" value="31"/> + </attvalues> + </node> + <node id="514" label="Calottes Glaciaires"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="87.61527" y="-59.170044" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n514"/> + <attvalue id="1" value="Calottes Glaciaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="515" label="Circulation Océanique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="95.19509" y="-40.297474" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n515"/> + <attvalue id="1" value="Circulation Océanique"/> + <attvalue id="2" value="17"/> + </attvalues> + </node> + <node id="516" label="Cambridge Bay"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-133.01428" y="142.89021" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n516"/> + <attvalue id="1" value="Cambridge Bay"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="517" label="Government Of Nunavut"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-156.54333" y="178.75804" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n517"/> + <attvalue id="1" value="Government Of Nunavut"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="518" label="Cambrien Moyen"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="54.290367" y="-98.53827" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n518"/> + <attvalue id="1" value="Cambrien Moyen"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="519" label="Chaine Alimentaire"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="111.42585" y="-150.45306" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n519"/> + <attvalue id="1" value="Chaine Alimentaire"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="520" label="Canada"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-109.16078" y="73.91147" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n520"/> + <attvalue id="1" value="Canada"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="521" label="Council Of Canada"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-111.80225" y="118.21503" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n521"/> + <attvalue id="1" value="Council Of Canada"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="522" label="Canada Lynx"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-108.80483" y="274.54285" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n522"/> + <attvalue id="1" value="Canada Lynx"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="523" label="Canadian Inuit"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-122.87207" y="240.34895" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n523"/> + <attvalue id="1" value="Canadian Inuit"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="524" label="Northern Quebec"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-135.48871" y="288.73755" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n524"/> + <attvalue id="1" value="Northern Quebec"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="525" label="Cape Dorset"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-121.2565" y="168.41785" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n525"/> + <attvalue id="1" value="Cape Dorset"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="526" label="Inuit Circumpolar"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-112.76871" y="235.5684" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n526"/> + <attvalue id="1" value="Inuit Circumpolar"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="527" label="Inuit Eskimo"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-123.93674" y="233.3654" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n527"/> + <attvalue id="1" value="Inuit Eskimo"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="528" label="Inuit People"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-121.5493" y="245.66493" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n528"/> + <attvalue id="1" value="Inuit People"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="529" label="Canal De Suez"> + <viz:color b="0" g="0" r="204"/> + <viz:position x="-21.679745" y="-261.7919" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n529"/> + <attvalue id="1" value="Canal De Suez"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="530" label="Ferdinand De Lesseps"> + <viz:color b="0" g="0" r="204"/> + <viz:position x="-26.169043" y="-274.80466" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n530"/> + <attvalue id="1" value="Ferdinand De Lesseps"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="531" label="Voie Navigable"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="32.606987" y="-251.5194" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n531"/> + <attvalue id="1" value="Voie Navigable"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="532" label="Cap Nord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-75.42066" y="-32.980324" z="0.0"/> + <viz:size value="3.9073772"/> + <attvalues> + <attvalue id="0" value="n532"/> + <attvalue id="1" value="Cap Nord"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="533" label="Soleil De Minuit"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-81.20916" y="-41.334705" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n533"/> + <attvalue id="1" value="Soleil De Minuit"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="534" label="Voyage Au Cap"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-92.44086" y="-30.962975" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n534"/> + <attvalue id="1" value="Voyage Au Cap"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="535" label="Express Côtier"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-81.90167" y="-23.537132" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n535"/> + <attvalue id="1" value="Express Côtier"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="536" label="Fjord Norvégien"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-96.103615" y="-33.41182" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n536"/> + <attvalue id="1" value="Fjord Norvégien"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="537" label="Iles Lofoten"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-88.36166" y="-43.471027" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n537"/> + <attvalue id="1" value="Iles Lofoten"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="538" label="Océan Glacial Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="7.9066005" y="-23.902601" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n538"/> + <attvalue id="1" value="Océan Glacial Arctique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="539" label="Capacité Calorifique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="305.32745" y="-74.27046" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n539"/> + <attvalue id="1" value="Capacité Calorifique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="540" label="Energie Interne"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="308.9007" y="-76.966675" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n540"/> + <attvalue id="1" value="Energie Interne"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="541" label="Gaz Parfait"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="284.47354" y="-69.73749" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n541"/> + <attvalue id="1" value="Gaz Parfait"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="542" label="Capelan"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-105.11293" y="35.343567" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n542"/> + <attvalue id="1" value="Capelan"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="543" label="Capitale De La Norvège"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-77.6244" y="-35.901134" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n543"/> + <attvalue id="1" value="Capitale De La Norvège"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="544" label="Sonde De Temperature"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="249.72887" y="-59.63564" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n544"/> + <attvalue id="1" value="Sonde De Temperature"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="545" label="Cara"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-134.3509" y="28.420305" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n545"/> + <attvalue id="1" value="Cara"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="546" label="Radio Association"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-149.70007" y="29.25913" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n546"/> + <attvalue id="1" value="Radio Association"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="547" label="Carbon Capture"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-75.19188" y="132.46771" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n547"/> + <attvalue id="1" value="Carbon Capture"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="548" label="Carbon Sequestration"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-85.66309" y="138.82304" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n548"/> + <attvalue id="1" value="Carbon Sequestration"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="549" label="Co2 Emission"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-62.182003" y="112.9305" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n549"/> + <attvalue id="1" value="Co2 Emission"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="550" label="Carburant Fossile"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="89.85036" y="-123.73451" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n550"/> + <attvalue id="1" value="Carburant Fossile"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="551" label="Caribou Des Bois"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="14.196902" y="-108.49593" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n551"/> + <attvalue id="1" value="Caribou Des Bois"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="552" label="Periode Interglaciaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="111.746704" y="-54.35936" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n552"/> + <attvalue id="1" value="Periode Interglaciaire"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="553" label="Carottes De Glace"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="127.87867" y="-65.40417" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n553"/> + <attvalue id="1" value="Carottes De Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="554" label="Echelle De Temps"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="161.02779" y="-68.209656" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n554"/> + <attvalue id="1" value="Echelle De Temps"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="555" label="Histoire Géologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="131.2721" y="-72.449196" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n555"/> + <attvalue id="1" value="Histoire Géologique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="556" label="Information Géographique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="178.8051" y="-130.62141" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n556"/> + <attvalue id="1" value="Information Géographique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="557" label="Cartes"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="168.77068" y="-139.18716" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n557"/> + <attvalue id="1" value="Cartes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="558" label="Cartographier"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="177.75119" y="-136.54893" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n558"/> + <attvalue id="1" value="Cartographier"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="559" label="Eruption Volcanique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="169.27652" y="-70.69856" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n559"/> + <attvalue id="1" value="Eruption Volcanique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="560" label="Cellule Photovoltaïque"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="170.2312" y="-99.51719" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n560"/> + <attvalue id="1" value="Cellule Photovoltaïque"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="561" label="Celsius Temperature"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="117.31124" y="285.03616" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n561"/> + <attvalue id="1" value="Celsius Temperature"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="562" label="Cendre Volcanique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="174.10703" y="-60.8976" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n562"/> + <attvalue id="1" value="Cendre Volcanique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="563" label="Center For Coastal And Ocean Mapping"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="92.07818" y="202.96669" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n563"/> + <attvalue id="1" value="Center For Coastal And Ocean Mapping"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="564" label="Hydrographic Survey"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="63.305996" y="194.14592" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n564"/> + <attvalue id="1" value="Hydrographic Survey"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="565" label="Ocean Engineering"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="93.25121" y="174.13698" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n565"/> + <attvalue id="1" value="Ocean Engineering"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="566" label="Colin Ware"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="100.08755" y="213.05421" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n566"/> + <attvalue id="1" value="Colin Ware"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="567" label="Gaz Naturel"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="2.9591236" y="-153.98979" z="0.0"/> + <viz:size value="4.633785"/> + <attvalues> + <attvalue id="0" value="n567"/> + <attvalue id="1" value="Gaz Naturel"/> + <attvalue id="2" value="35"/> + </attvalues> + </node> + <node id="568" label="Dechet Radioactif"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="35.024815" y="-177.86584" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n568"/> + <attvalue id="1" value="Dechet Radioactif"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="569" label="Energie Nucléaire"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="28.33479" y="-152.03627" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n569"/> + <attvalue id="1" value="Energie Nucléaire"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="570" label="Centre National"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="146.29778" y="-60.730835" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n570"/> + <attvalue id="1" value="Centre National"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="571" label="Recherche Scientifique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="156.01476" y="-58.419464" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n571"/> + <attvalue id="1" value="Recherche Scientifique"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="572" label="Fusee Ariane"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="102.06293" y="100.38955" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n572"/> + <attvalue id="1" value="Fusee Ariane"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="573" label="Cercle Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-12.648043" y="-26.292545" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n573"/> + <attvalue id="1" value="Cercle Arctique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="574" label="Cercle Polaire Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-28.144634" y="12.571481" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n574"/> + <attvalue id="1" value="Cercle Polaire Arctique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="575" label="Najwa Nimri"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-59.646294" y="-40.818794" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n575"/> + <attvalue id="1" value="Najwa Nimri"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="576" label="Êtres Vivants"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="138.45549" y="-163.0018" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n576"/> + <attvalue id="1" value="Êtres Vivants"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="577" label="Niveau Trophique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="120.211754" y="-176.06378" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n577"/> + <attvalue id="1" value="Niveau Trophique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="578" label="Reseau Trophique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="119.82963" y="-178.5241" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n578"/> + <attvalue id="1" value="Reseau Trophique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="579" label="Securite Alimentaire"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="40.803635" y="-169.41653" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n579"/> + <attvalue id="1" value="Securite Alimentaire"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="580" label="Chaîne Trophique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="135.82802" y="-180.91064" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n580"/> + <attvalue id="1" value="Chaîne Trophique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="581" label="Milieu Aquatique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="126.25013" y="-166.03941" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n581"/> + <attvalue id="1" value="Milieu Aquatique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="582" label="Organisme Vivant"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="163.0502" y="-155.2352" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n582"/> + <attvalue id="1" value="Organisme Vivant"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="583" label="Chaînes Alimentaires"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="124.482956" y="-171.32698" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n583"/> + <attvalue id="1" value="Chaînes Alimentaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="584" label="Plantes Vertes"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="151.08374" y="-186.69221" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n584"/> + <attvalue id="1" value="Plantes Vertes"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="585" label="Regime Alimentaire"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="21.273415" y="-137.66597" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n585"/> + <attvalue id="1" value="Regime Alimentaire"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="586" label="Champ"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-101.39203" y="26.05654" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n586"/> + <attvalue id="1" value="Champ"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="587" label="Champ Magnetique Terrestre"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="66.58705" y="65.671875" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n587"/> + <attvalue id="1" value="Champ Magnetique Terrestre"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="588" label="Effet Dynamo"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="103.922295" y="55.75887" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n588"/> + <attvalue id="1" value="Effet Dynamo"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="589" label="Déclinaison Magnétique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="67.63762" y="57.953472" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n589"/> + <attvalue id="1" value="Déclinaison Magnétique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="590" label="Pole Geographique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="70.528145" y="52.676525" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n590"/> + <attvalue id="1" value="Pole Geographique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="591" label="Climate Change"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="61.9745" y="-26.363234" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n591"/> + <attvalue id="1" value="Climate Change"/> + <attvalue id="2" value="13"/> + </attvalues> + </node> + <node id="592" label="Pays Industrialise"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="61.88606" y="-135.06197" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n592"/> + <attvalue id="1" value="Pays Industrialise"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="593" label="Changement Climatique Global"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="65.21751" y="-56.626457" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n593"/> + <attvalue id="1" value="Changement Climatique Global"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="594" label="Periode Geologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="128.1124" y="-24.041624" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n594"/> + <attvalue id="1" value="Periode Geologique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="595" label="Changements Climatiques"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="60.694916" y="-86.49017" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n595"/> + <attvalue id="1" value="Changements Climatiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="596" label="Charge De Recherche"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="183.62527" y="-90.0684" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n596"/> + <attvalue id="1" value="Charge De Recherche"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="597" label="Chauffage Solaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="137.78467" y="-101.37691" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n597"/> + <attvalue id="1" value="Chauffage Solaire"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="598" label="Eau Chaude"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="143.46294" y="-109.080345" z="0.0"/> + <viz:size value="3.8537014"/> + <attvalues> + <attvalue id="0" value="n598"/> + <attvalue id="1" value="Eau Chaude"/> + <attvalue id="2" value="17"/> + </attvalues> + </node> + <node id="599" label="Chef De Gouvernement"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-70.43985" y="-149.25372" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n599"/> + <attvalue id="1" value="Chef De Gouvernement"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="600" label="Chien De Traineau"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-78.47189" y="-56.950916" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n600"/> + <attvalue id="1" value="Chien De Traineau"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="601" label="Chiens"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-96.5703" y="-61.418472" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n601"/> + <attvalue id="1" value="Chiens"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="602" label="Christophe Colomb"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-53.56652" y="-85.56801" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n602"/> + <attvalue id="1" value="Christophe Colomb"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="603" label="Continent Américain"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-56.446632" y="-50.51715" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n603"/> + <attvalue id="1" value="Continent Américain"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="604" label="Chtokman"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-63.945625" y="-136.74088" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n604"/> + <attvalue id="1" value="Chtokman"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="605" label="Gisement De Chtokman"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-83.6301" y="-125.250694" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n605"/> + <attvalue id="1" value="Gisement De Chtokman"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="606" label="Groupe Pétrolier"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-44.222153" y="-173.88199" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n606"/> + <attvalue id="1" value="Groupe Pétrolier"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="607" label="Courant Marin"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="64.52222" y="-47.272095" z="0.0"/> + <viz:size value="4.125738"/> + <attvalues> + <attvalue id="0" value="n607"/> + <attvalue id="1" value="Courant Marin"/> + <attvalue id="2" value="24"/> + </attvalues> + </node> + <node id="608" label="Courant Océanique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="90.229805" y="-48.753513" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n608"/> + <attvalue id="1" value="Courant Océanique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="609" label="Gradient De Pression"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="188.77667" y="-37.280792" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n609"/> + <attvalue id="1" value="Gradient De Pression"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="610" label="Circulation Thermohaline"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="63.18314" y="-28.778925" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n610"/> + <attvalue id="1" value="Circulation Thermohaline"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="611" label="Circulation Océanique Mondiale"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="59.19115" y="-42.595802" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n611"/> + <attvalue id="1" value="Circulation Océanique Mondiale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="612" label="Circum-Arctic Resource Appraisal"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-153.85434" y="146.04613" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n612"/> + <attvalue id="1" value="Circum-Arctic Resource Appraisal"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="613" label="East Greenland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-102.59778" y="169.49907" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n613"/> + <attvalue id="1" value="East Greenland"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="614" label="Geologic Province"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-107.94266" y="129.07162" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n614"/> + <attvalue id="1" value="Geologic Province"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="615" label="Natural Gas Liquids"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-219.55466" y="95.46819" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n615"/> + <attvalue id="1" value="Natural Gas Liquids"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="616" label="West Siberian"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-93.18664" y="153.60341" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n616"/> + <attvalue id="1" value="West Siberian"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="617" label="Circumpolar Conference"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-114.674805" y="222.73817" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n617"/> + <attvalue id="1" value="Circumpolar Conference"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="618" label="Indigenous Peoples"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-181.57336" y="245.0985" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n618"/> + <attvalue id="1" value="Indigenous Peoples"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="619" label="Sheila Watt"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-100.223885" y="212.74124" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n619"/> + <attvalue id="1" value="Sheila Watt"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="620" label="Cirque Glaciaire"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-45.143333" y="-73.075485" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n620"/> + <attvalue id="1" value="Cirque Glaciaire"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="621" label="Magnetic Pole"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-6.8819118" y="166.684" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n621"/> + <attvalue id="1" value="Magnetic Pole"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="622" label="North Magnetic"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-1.3557836" y="162.19028" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n622"/> + <attvalue id="1" value="North Magnetic"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="623" label="Classification Périodique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="179.78976" y="-165.062" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n623"/> + <attvalue id="1" value="Classification Périodique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="624" label="Element Chimique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="146.63463" y="-144.42465" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n624"/> + <attvalue id="1" value="Element Chimique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="625" label="Clathrates"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-29.898321" y="148.09604" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n625"/> + <attvalue id="1" value="Clathrates"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="626" label="Ice Cores"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-16.643745" y="169.29863" z="0.0"/> + <viz:size value="3.8284607"/> + <attvalues> + <attvalue id="0" value="n626"/> + <attvalue id="1" value="Ice Cores"/> + <attvalue id="2" value="14"/> + </attvalues> + </node> + <node id="627" label="Liquid Water"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="83.79232" y="159.21884" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n627"/> + <attvalue id="1" value="Liquid Water"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="628" label="Methane Hydrate"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-73.30065" y="143.46008" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n628"/> + <attvalue id="1" value="Methane Hydrate"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="629" label="Gas Hydrates"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-57.256115" y="145.84" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n629"/> + <attvalue id="1" value="Gas Hydrates"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="630" label="Claude Bourguignon"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="183.0097" y="-144.28722" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n630"/> + <attvalue id="1" value="Claude Bourguignon"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="631" label="Claude Gascard"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="42.57959" y="-19.2765" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n631"/> + <attvalue id="1" value="Claude Gascard"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="632" label="Environmental Studies"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="33.5256" y="-23.761608" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n632"/> + <attvalue id="1" value="Environmental Studies"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="633" label="Climat"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="68.44751" y="-44.9711" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n633"/> + <attvalue id="1" value="Climat"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="634" label="Climat Polaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="25.25794" y="-19.810629" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n634"/> + <attvalue id="1" value="Climat Polaire"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="635" label="Nobel De La Paix"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="71.01096" y="-40.280216" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n635"/> + <attvalue id="1" value="Nobel De La Paix"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="636" label="Hemisphere Sud"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="108.98824" y="-11.219891" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n636"/> + <attvalue id="1" value="Hemisphere Sud"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="637" label="Climate Variation"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-21.794317" y="137.74098" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n637"/> + <attvalue id="1" value="Climate Variation"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="638" label="Greenland Ice"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-13.990662" y="164.3936" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n638"/> + <attvalue id="1" value="Greenland Ice"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="639" label="Climatologie"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="150.00949" y="-70.709" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n639"/> + <attvalue id="1" value="Climatologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="640" label="Prévision Météorologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="181.14847" y="-82.1311" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n640"/> + <attvalue id="1" value="Prévision Météorologique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="641" label="Prévisions Météo"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="196.87547" y="-63.339222" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n641"/> + <attvalue id="1" value="Prévisions Météo"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="642" label="Station Météo"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="206.01726" y="-70.63429" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n642"/> + <attvalue id="1" value="Station Météo"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="643" label="Club De Rome"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="68.38774" y="-150.69373" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n643"/> + <attvalue id="1" value="Club De Rome"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="644" label="Croissance Démographique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="70.876884" y="-195.29323" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n644"/> + <attvalue id="1" value="Croissance Démographique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="645" label="Croissance Economique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="51.89487" y="-184.3356" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n645"/> + <attvalue id="1" value="Croissance Economique"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="646" label="Ecole Polytechnique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="218.69693" y="19.090603" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n646"/> + <attvalue id="1" value="Ecole Polytechnique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="647" label="Laboratoire De Physique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="180.03604" y="12.186318" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n647"/> + <attvalue id="1" value="Laboratoire De Physique"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="648" label="Universite De Paris"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="197.60924" y="-12.900554" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n648"/> + <attvalue id="1" value="Universite De Paris"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="649" label="Co2 Sequestration"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-75.34734" y="136.3035" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n649"/> + <attvalue id="1" value="Co2 Sequestration"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="650" label="Coastal Erosion"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-23.242178" y="111.104935" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n650"/> + <attvalue id="1" value="Coastal Erosion"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="651" label="Commission Océanographique Intergouvernementale"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="47.75137" y="-63.802376" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n651"/> + <attvalue id="1" value="Commission Océanographique Intergouvernementale"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="652" label="Communication Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="4.4652705" y="271.67856" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n652"/> + <attvalue id="1" value="Communication Satellite"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="653" label="Geostationary Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="30.339075" y="260.11758" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n653"/> + <attvalue id="1" value="Geostationary Satellite"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="654" label="Industrie Pétrolière"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-35.310726" y="-192.59389" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n654"/> + <attvalue id="1" value="Industrie Pétrolière"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="655" label="Plateforme Pétrolière"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-28.452824" y="-203.25288" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n655"/> + <attvalue id="1" value="Plateforme Pétrolière"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="656" label="Produits Pétroliers"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-35.850243" y="-181.70802" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n656"/> + <attvalue id="1" value="Produits Pétroliers"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="657" label="Secteur Pétrolier"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-39.70909" y="-190.51521" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n657"/> + <attvalue id="1" value="Secteur Pétrolier"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="658" label="Comportement Mécanique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="291.40973" y="39.50002" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n658"/> + <attvalue id="1" value="Comportement Mécanique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="659" label="Loi De Comportement"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="280.96048" y="27.984623" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n659"/> + <attvalue id="1" value="Loi De Comportement"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="660" label="Mécanique Des Solides"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="297.48953" y="49.26788" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n660"/> + <attvalue id="1" value="Mécanique Des Solides"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="661" label="Simulation Numérique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="251.70052" y="24.584482" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n661"/> + <attvalue id="1" value="Simulation Numérique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="662" label="Genie Civil"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="284.4446" y="53.241592" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n662"/> + <attvalue id="1" value="Genie Civil"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="663" label="Genie Mecanique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="292.59305" y="46.572163" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n663"/> + <attvalue id="1" value="Genie Mecanique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="664" label="Laboratoire De Mécanique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="284.58737" y="44.16256" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n664"/> + <attvalue id="1" value="Laboratoire De Mécanique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="665" label="Comportement Mécanique Du Matériau Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="96.18807" y="19.526917" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n665"/> + <attvalue id="1" value="Comportement Mécanique Du Matériau Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="666" label="Instrument Scientifique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="123.26934" y="26.738035" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n666"/> + <attvalue id="1" value="Instrument Scientifique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="667" label="James Forbes"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="68.663956" y="28.16849" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n667"/> + <attvalue id="1" value="James Forbes"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="668" label="Compose Organique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="138.37418" y="-193.36118" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n668"/> + <attvalue id="1" value="Compose Organique"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="669" label="Compose Organique Volatil"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="154.13136" y="-171.27144" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n669"/> + <attvalue id="1" value="Compose Organique Volatil"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="670" label="Compréhension Du Système Climatique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="86.59361" y="-93.225235" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n670"/> + <attvalue id="1" value="Compréhension Du Système Climatique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="671" label="Concentration Atmosphérique En Gaz À Effet De Serre"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="119.98044" y="-130.01036" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n671"/> + <attvalue id="1" value="Concentration Atmosphérique En Gaz À Effet De Serre"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="672" label="Puits De Carbone"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="102.57844" y="-104.6321" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n672"/> + <attvalue id="1" value="Puits De Carbone"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="673" label="Condensat De Bose-Einstein"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="185.84184" y="9.17875" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n673"/> + <attvalue id="1" value="Condensat De Bose-Einstein"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="674" label="Laboratoire Kastler"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="193.35065" y="7.273209" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n674"/> + <attvalue id="1" value="Laboratoire Kastler"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="675" label="Zero Absolu"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="132.00774" y="56.533424" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n675"/> + <attvalue id="1" value="Zero Absolu"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="676" label="Condensats"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="163.05983" y="-22.032373" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n676"/> + <attvalue id="1" value="Condensats"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="677" label="Conditions Extrêmes"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="153.34976" y="-89.00495" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n677"/> + <attvalue id="1" value="Conditions Extrêmes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="678" label="Lost Planet"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="166.53304" y="-92.36742" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n678"/> + <attvalue id="1" value="Lost Planet"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="679" label="Natural Repair"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="172.51678" y="-97.0645" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n679"/> + <attvalue id="1" value="Natural Repair"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="680" label="Rayonnement Ultraviolet"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="167.13646" y="-94.52675" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n680"/> + <attvalue id="1" value="Rayonnement Ultraviolet"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="681" label="Conditions Météorologiques"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="161.91292" y="-84.59136" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n681"/> + <attvalue id="1" value="Conditions Météorologiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="682" label="Station Météorologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="196.75195" y="-79.57893" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n682"/> + <attvalue id="1" value="Station Météorologique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="683" label="Convention De Varsovie"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="19.341225" y="-98.78386" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n683"/> + <attvalue id="1" value="Convention De Varsovie"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="684" label="Conférence"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-121.83492" y="68.741585" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n684"/> + <attvalue id="1" value="Conférence"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="685" label="International Conference"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-111.7804" y="92.667305" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n685"/> + <attvalue id="1" value="International Conference"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="686" label="Technology Conference"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-127.51585" y="82.27467" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n686"/> + <attvalue id="1" value="Technology Conference"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="687" label="Conférence De Rio"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="42.016724" y="-125.41207" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n687"/> + <attvalue id="1" value="Conférence De Rio"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="688" label="Déclaration De Rio"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="66.14435" y="-116.24796" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n688"/> + <attvalue id="1" value="Déclaration De Rio"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="689" label="Sommet De La Terre"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="30.042974" y="-106.18135" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n689"/> + <attvalue id="1" value="Sommet De La Terre"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="690" label="Conference On Environment"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-79.69603" y="78.79561" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n690"/> + <attvalue id="1" value="Conference On Environment"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="691" label="Conflits"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-50.0983" y="-146.80722" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n691"/> + <attvalue id="1" value="Conflits"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="692" label="Resolution De Conflit"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-87.15796" y="-66.38087" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n692"/> + <attvalue id="1" value="Resolution De Conflit"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="693" label="Connaissance Scientifique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="119.41061" y="-111.399635" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n693"/> + <attvalue id="1" value="Connaissance Scientifique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="694" label="Conseil De L'Arctique,1"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-9.385765" y="-54.80676" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n694"/> + <attvalue id="1" value="Conseil De L'Arctique,1"/> + </attvalues> + </node> + <node id="695" label="Peuple Autochtone"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-26.057545" y="-50.27682" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n695"/> + <attvalue id="1" value="Peuple Autochtone"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="696" label="Conservation De La Nature"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="36.766163" y="-127.91372" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n696"/> + <attvalue id="1" value="Conservation De La Nature"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="697" label="Reserve Naturelle"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="46.828514" y="-175.52783" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n697"/> + <attvalue id="1" value="Reserve Naturelle"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="698" label="Union Internationale"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="61.430122" y="-103.13128" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n698"/> + <attvalue id="1" value="Union Internationale"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="699" label="Consommation"> + <viz:color b="0" g="0" r="204"/> + <viz:position x="-408.40356" y="-139.17337" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n699"/> + <attvalue id="1" value="Consommation"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="700" label="Centre Technique Régional"> + <viz:color b="0" g="0" r="204"/> + <viz:position x="-407.43222" y="-141.89677" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n700"/> + <attvalue id="1" value="Centre Technique Régional"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="701" label="Constante Des Gaz Parfaits"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="299.32526" y="-80.733116" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n701"/> + <attvalue id="1" value="Constante Des Gaz Parfaits"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="702" label="Loi De Mariotte"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="252.27394" y="-67.76462" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n702"/> + <attvalue id="1" value="Loi De Mariotte"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="703" label="Loi Des Gaz Parfaits"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="290.0505" y="-78.54428" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n703"/> + <attvalue id="1" value="Loi Des Gaz Parfaits"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="704" label="Volume Molaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="278.51328" y="-84.197205" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n704"/> + <attvalue id="1" value="Volume Molaire"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="705" label="Contamination Radioactive"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-59.63734" y="-109.43337" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n705"/> + <attvalue id="1" value="Contamination Radioactive"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="706" label="Convention De Bâle"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="40.26651" y="-211.08865" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n706"/> + <attvalue id="1" value="Convention De Bâle"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="707" label="Dechet Dangereux"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="61.834133" y="-232.77502" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n707"/> + <attvalue id="1" value="Dechet Dangereux"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="708" label="Gestion Des Déchets"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="69.288216" y="-223.05225" z="0.0"/> + <viz:size value="3.8800173"/> + <attvalues> + <attvalue id="0" value="n708"/> + <attvalue id="1" value="Gestion Des Déchets"/> + <attvalue id="2" value="16"/> + </attvalues> + </node> + <node id="709" label="Convention De Genève"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-2.9048069" y="-174.2285" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n709"/> + <attvalue id="1" value="Convention De Genève"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="710" label="Convention Internationale"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="2.7315416" y="-188.21317" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n710"/> + <attvalue id="1" value="Convention Internationale"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="711" label="Convention De Montego"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-20.192936" y="-161.75531" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n711"/> + <attvalue id="1" value="Convention De Montego"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="712" label="Eaux Territoriales"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-20.757126" y="-188.8572" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n712"/> + <attvalue id="1" value="Eaux Territoriales"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="713" label="Zone Économique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-25.319233" y="-173.86949" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n713"/> + <attvalue id="1" value="Zone Économique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="714" label="Zone Économique Exclusive"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-21.851797" y="-169.0556" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n714"/> + <attvalue id="1" value="Zone Économique Exclusive"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="715" label="Convention Des Nations"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-29.742476" y="-133.99895" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n715"/> + <attvalue id="1" value="Convention Des Nations"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="716" label="Convention Des Nations Unies Sur Le Droit De La Mer"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-17.73833" y="-156.26024" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n716"/> + <attvalue id="1" value="Convention Des Nations Unies Sur Le Droit De La Mer"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="717" label="Convention Des Nations Unies Sur Le Droit De La Mer De 1982"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-30.902071" y="-186.2753" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n717"/> + <attvalue id="1" value="Convention Des Nations Unies Sur Le Droit De La Mer De 1982"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="718" label="Convention On Climate"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-66.879944" y="70.31145" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n718"/> + <attvalue id="1" value="Convention On Climate"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="719" label="Coopération"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-60.72319" y="40.968204" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n719"/> + <attvalue id="1" value="Coopération"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="720" label="International Cooperation"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-39.578094" y="32.47109" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n720"/> + <attvalue id="1" value="International Cooperation"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="721" label="International Organization"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-47.392315" y="35.695564" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n721"/> + <attvalue id="1" value="International Organization"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="722" label="Coopération Internationale"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="12.293242" y="-110.90361" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n722"/> + <attvalue id="1" value="Coopération Internationale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="723" label="Cooperative Institute For Research"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="10.343129" y="172.62207" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n723"/> + <attvalue id="1" value="Cooperative Institute For Research"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="724" label="Geophysical Union"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="8.100718" y="94.81285" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n724"/> + <attvalue id="1" value="Geophysical Union"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="725" label="Courants Marins"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="79.91367" y="-83.52748" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n725"/> + <attvalue id="1" value="Courants Marins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="726" label="Energie Marine"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="82.22798" y="-104.94305" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n726"/> + <attvalue id="1" value="Energie Marine"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="727" label="Courants Marins Chauds"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="36.77767" y="-28.19615" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n727"/> + <attvalue id="1" value="Courants Marins Chauds"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="728" label="Rayon Solaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="129.48923" y="-49.379208" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n728"/> + <attvalue id="1" value="Rayon Solaire"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="729" label="Courants Marins Froids"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-22.714336" y="-95.07324" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n729"/> + <attvalue id="1" value="Courants Marins Froids"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="730" label="Courbe Isotherme"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="63.2309" y="-23.937544" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n730"/> + <attvalue id="1" value="Courbe Isotherme"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="731" label="Peuple Indigène"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-13.349658" y="-82.81359" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n731"/> + <attvalue id="1" value="Peuple Indigène"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="732" label="Science Naturelle"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="131.71928" y="-33.319416" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n732"/> + <attvalue id="1" value="Science Naturelle"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="733" label="Cout De Production"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="78.74421" y="-190.2988" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n733"/> + <attvalue id="1" value="Cout De Production"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="734" label="Coûts Supplémentaires"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="77.0238" y="-184.28424" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n734"/> + <attvalue id="1" value="Coûts Supplémentaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="735" label="Couverture Végétale"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="135.19527" y="-200.11278" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n735"/> + <attvalue id="1" value="Couverture Végétale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="736" label="Terre Agricole"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="114.11686" y="-181.83147" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n736"/> + <attvalue id="1" value="Terre Agricole"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="737" label="Crépuscule Nautique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="213.95967" y="-146.44943" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n737"/> + <attvalue id="1" value="Crépuscule Nautique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="738" label="Lever De Soleil"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="197.03763" y="-138.81877" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n738"/> + <attvalue id="1" value="Lever De Soleil"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="739" label="Crevasses"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-181.58629" y="164.75209" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n739"/> + <attvalue id="1" value="Crevasses"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="740" label="Crise Ecologique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="61.039497" y="-120.97116" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n740"/> + <attvalue id="1" value="Crise Ecologique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="741" label="Croisiere Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-66.62704" y="4.8015614" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n741"/> + <attvalue id="1" value="Croisiere Arctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="742" label="Polar Star"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-141.39766" y="103.32398" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n742"/> + <attvalue id="1" value="Polar Star"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="743" label="Croissance De La Population"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="68.54918" y="-203.07622" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n743"/> + <attvalue id="1" value="Croissance De La Population"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="744" label="Croissance Végétale"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="111.99759" y="-134.8616" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n744"/> + <attvalue id="1" value="Croissance Végétale"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="745" label="Croyances Animistes Traditionnelles"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-67.06014" y="-70.543816" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n745"/> + <attvalue id="1" value="Croyances Animistes Traditionnelles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="746" label="Perdrix Des Neiges"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-60.571205" y="-54.64168" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n746"/> + <attvalue id="1" value="Perdrix Des Neiges"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="747" label="Laponie Finlandaise"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-68.37747" y="-59.32782" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n747"/> + <attvalue id="1" value="Laponie Finlandaise"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="748" label="Laponie Suédoise"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-73.55738" y="-48.30083" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n748"/> + <attvalue id="1" value="Laponie Suédoise"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="749" label="Ours Brun"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-59.48362" y="-61.6491" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n749"/> + <attvalue id="1" value="Ours Brun"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="750" label="Cryosat 2"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="5.722161" y="167.9762" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n750"/> + <attvalue id="1" value="Cryosat 2"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="751" label="Earth Explorer"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-114.96387" y="147.31326" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n751"/> + <attvalue id="1" value="Earth Explorer"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="752" label="Earth Observation"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="51.36721" y="130.81984" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n752"/> + <attvalue id="1" value="Earth Observation"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="753" label="Polar Ice"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-12.25438" y="184.30421" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n753"/> + <attvalue id="1" value="Polar Ice"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="754" label="Radar Altimeter"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="21.379436" y="170.49101" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n754"/> + <attvalue id="1" value="Radar Altimeter"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="755" label="Cryosphère"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-15.607028" y="155.37567" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n755"/> + <attvalue id="1" value="Cryosphère"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="756" label="Cyberdocumentaire"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="20.800661" y="-47.603615" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n756"/> + <attvalue id="1" value="Cyberdocumentaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="757" label="Roger Brunet"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="38.819298" y="-68.37569" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n757"/> + <attvalue id="1" value="Roger Brunet"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="758" label="Route Commerciale"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="30.28192" y="-85.728874" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n758"/> + <attvalue id="1" value="Route Commerciale"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="759" label="Revendication Territoriale"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="8.855694" y="-83.48118" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n759"/> + <attvalue id="1" value="Revendication Territoriale"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="760" label="Cycle Biogéochimique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="133.18228" y="-116.4676" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n760"/> + <attvalue id="1" value="Cycle Biogéochimique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="761" label="Cycle De Doha"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="8.915166" y="-201.50029" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n761"/> + <attvalue id="1" value="Cycle De Doha"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="762" label="Danemark"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-175.21513" y="-166.12798" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n762"/> + <attvalue id="1" value="Danemark"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="763" label="Insel Fünen"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-201.37614" y="-181.42183" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n763"/> + <attvalue id="1" value="Insel Fünen"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="764" label="Insel Seeland"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-199.81836" y="-184.15172" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n764"/> + <attvalue id="1" value="Insel Seeland"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="765" label="Pays Scandinave"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-95.676704" y="-113.60478" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n765"/> + <attvalue id="1" value="Pays Scandinave"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="766" label="Danger"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-113.498535" y="60.928207" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n766"/> + <attvalue id="1" value="Danger"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="767" label="Décennie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-107.33428" y="12.979818" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n767"/> + <attvalue id="1" value="Décennie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="768" label="Traitement Des Déchets"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="75.72075" y="-250.85735" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n768"/> + <attvalue id="1" value="Traitement Des Déchets"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="769" label="Déchet Industriel"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="70.97853" y="-258.26083" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n769"/> + <attvalue id="1" value="Déchet Industriel"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="770" label="Recyclage Des Déchets"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="70.67164" y="-263.0822" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n770"/> + <attvalue id="1" value="Recyclage Des Déchets"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="771" label="Tri Selectif"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="69.520134" y="-252.84091" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n771"/> + <attvalue id="1" value="Tri Selectif"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="772" label="Agence Nationale"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="154.52783" y="-127.43115" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n772"/> + <attvalue id="1" value="Agence Nationale"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="773" label="Déchets"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="63.81986" y="-244.14682" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n773"/> + <attvalue id="1" value="Déchets"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="774" label="Declaration De Doha"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="2.1963513" y="-197.44995" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n774"/> + <attvalue id="1" value="Declaration De Doha"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="775" label="Déformations"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="20.778921" y="143.187" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n775"/> + <attvalue id="1" value="Déformations"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="776" label="Geodetic Surveying"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="22.787306" y="256.44968" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n776"/> + <attvalue id="1" value="Geodetic Surveying"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="777" label="Institutes Of Technology"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="108.25207" y="119.42958" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n777"/> + <attvalue id="1" value="Institutes Of Technology"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="778" label="Dégradation De L'Environnement,1"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="78.002335" y="-166.57123" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n778"/> + <attvalue id="1" value="Dégradation De L'Environnement,1"/> + </attvalues> + </node> + <node id="779" label="Dégradation Des Sols"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="101.62584" y="-170.43292" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n779"/> + <attvalue id="1" value="Dégradation Des Sols"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="780" label="Dégradations Écologiques"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="46.50808" y="-159.57059" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n780"/> + <attvalue id="1" value="Dégradations Écologiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="781" label="Générations Futures"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="48.68833" y="-130.23868" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n781"/> + <attvalue id="1" value="Générations Futures"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="782" label="Gilles Labarthe"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="34.1384" y="-191.4039" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n782"/> + <attvalue id="1" value="Gilles Labarthe"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="783" label="Dégradations Sanitaires"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-30.717054" y="-5.6482596" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n783"/> + <attvalue id="1" value="Dégradations Sanitaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="784" label="Degre Centigrade"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="91.80559" y="-54.688114" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n784"/> + <attvalue id="1" value="Degre Centigrade"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="785" label="Deh Cho"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-201.40286" y="166.71332" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n785"/> + <attvalue id="1" value="Deh Cho"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="786" label="Mackenzie Valley"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-205.86168" y="155.85452" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n786"/> + <attvalue id="1" value="Mackenzie Valley"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="787" label="Valley Pipeline"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-208.26807" y="149.94714" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n787"/> + <attvalue id="1" value="Valley Pipeline"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="788" label="Delta De La Léna"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="31.135117" y="-58.630207" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n788"/> + <attvalue id="1" value="Delta De La Léna"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="789" label="Goélette Tara"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="26.71245" y="-17.648607" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n789"/> + <attvalue id="1" value="Goélette Tara"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="790" label="Department Of Physics"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="12.174031" y="86.10851" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n790"/> + <attvalue id="1" value="Department Of Physics"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="791" label="Graduate Student"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-40.54152" y="94.71225" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n791"/> + <attvalue id="1" value="Graduate Student"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="792" label="Dépôts Rocheux"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="122.68339" y="-44.98089" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n792"/> + <attvalue id="1" value="Dépôts Rocheux"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="793" label="Glacier Rocheux"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="77.11172" y="-15.679613" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n793"/> + <attvalue id="1" value="Glacier Rocheux"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="794" label="Dérèglements Climatiques"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="110.23258" y="-118.973274" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n794"/> + <attvalue id="1" value="Dérèglements Climatiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="795" label="Dérèglements Écologiques"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="37.039272" y="-101.13818" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n795"/> + <attvalue id="1" value="Dérèglements Écologiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="796" label="Classe Dominante"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="35.597485" y="-109.27895" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n796"/> + <attvalue id="1" value="Classe Dominante"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="797" label="Dérive Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="15.027658" y="-10.642487" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n797"/> + <attvalue id="1" value="Dérive Arctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="798" label="Pont Alexandre"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="16.136503" y="-6.105955" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n798"/> + <attvalue id="1" value="Pont Alexandre"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="799" label="Dérive Transpolaire"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="9.530531" y="-8.245452" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n799"/> + <attvalue id="1" value="Dérive Transpolaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="800" label="Eaux Libres"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="67.54322" y="-101.41988" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n800"/> + <attvalue id="1" value="Eaux Libres"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="801" label="Mission Banquise"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="10.026979" y="-1.1967485" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n801"/> + <attvalue id="1" value="Mission Banquise"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="802" label="Désertification"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="-37.75751" y="113.044426" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n802"/> + <attvalue id="1" value="Désertification"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="803" label="Land Degradation"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="-52.08292" y="115.212395" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n803"/> + <attvalue id="1" value="Land Degradation"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="804" label="Destruction"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-111.14598" y="25.675028" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n804"/> + <attvalue id="1" value="Destruction"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="805" label="Détroit De Behring"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-47.759315" y="-57.11927" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n805"/> + <attvalue id="1" value="Détroit De Behring"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="806" label="Sibérie Orientale"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-29.470104" y="-75.87666" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n806"/> + <attvalue id="1" value="Sibérie Orientale"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="807" label="Vitus Bering"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-56.028717" y="-23.50201" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n807"/> + <attvalue id="1" value="Vitus Bering"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="808" label="Détroit De Fram"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-6.220417" y="-35.586487" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n808"/> + <attvalue id="1" value="Détroit De Fram"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="809" label="Détroit De Nares"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="7.2388062" y="23.048285" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n809"/> + <attvalue id="1" value="Détroit De Nares"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="810" label="Aperture Radar"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="44.31361" y="93.85906" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n810"/> + <attvalue id="1" value="Aperture Radar"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="811" label="Dette Écologique."> + <viz:color b="51" g="51" r="255"/> + <viz:position x="51.723442" y="-151.76697" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n811"/> + <attvalue id="1" value="Dette Écologique."/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="812" label="Qualite De Vie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="5.574284" y="-177.29112" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n812"/> + <attvalue id="1" value="Qualite De Vie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="813" label="Developpement Humain"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="25.24227" y="-175.58377" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n813"/> + <attvalue id="1" value="Developpement Humain"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="814" label="Developpement Local"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="35.17026" y="-186.86665" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n814"/> + <attvalue id="1" value="Developpement Local"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="815" label="Différence De Densité"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="155.67677" y="-86.86745" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n815"/> + <attvalue id="1" value="Différence De Densité"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="816" label="Eau Froide"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="166.76927" y="-118.24211" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n816"/> + <attvalue id="1" value="Eau Froide"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="817" label="Eau Salée"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="139.16997" y="-86.839165" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n817"/> + <attvalue id="1" value="Eau Salée"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="818" label="Discover North"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-161.207" y="193.45311" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n818"/> + <attvalue id="1" value="Discover North"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="819" label="Disko Bay"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-76.76011" y="179.91618" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n819"/> + <attvalue id="1" value="Disko Bay"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="820" label="Disparition"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="26.462664" y="-125.76172" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n820"/> + <attvalue id="1" value="Disparition"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="821" label="Disparition De La Banquise D'Été,1"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="51.90621" y="-61.165367" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n821"/> + <attvalue id="1" value="Disparition De La Banquise D'Été,1"/> + </attvalues> + </node> + <node id="822" label="Tara Expéditions"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="17.375713" y="-3.8585522" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n822"/> + <attvalue id="1" value="Tara Expéditions"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="823" label="Diversite Culturelle"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="65.36968" y="-180.09264" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n823"/> + <attvalue id="1" value="Diversite Culturelle"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="824" label="Identité Culturelle"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="80.365425" y="-170.8904" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n824"/> + <attvalue id="1" value="Identité Culturelle"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="825" label="Russie Unie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-97.96596" y="-142.18752" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n825"/> + <attvalue id="1" value="Russie Unie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="826" label="Project For Ice"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="0.54255176" y="126.68907" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n826"/> + <attvalue id="1" value="Project For Ice"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="827" label="Domm"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-109.09103" y="19.570175" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n827"/> + <attvalue id="1" value="Domm"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="828" label="Données Climatiques"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="129.11292" y="-96.719284" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n828"/> + <attvalue id="1" value="Données Climatiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="829" label="Données Environnementales"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="145.63068" y="-159.54759" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n829"/> + <attvalue id="1" value="Données Environnementales"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="830" label="Données Géographiques"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="179.40852" y="-141.37683" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n830"/> + <attvalue id="1" value="Données Géographiques"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="831" label="Gestion Des Données"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="178.22528" y="-159.42949" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n831"/> + <attvalue id="1" value="Gestion Des Données"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="832" label="Données Scientifiques"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="123.72653" y="-113.9477" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n832"/> + <attvalue id="1" value="Données Scientifiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="833" label="Dorsale De Lomonossov"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="2.9201856" y="-78.01184" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n833"/> + <attvalue id="1" value="Dorsale De Lomonossov"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="834" label="Plaque Tectonique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="175.02483" y="-55.98623" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n834"/> + <attvalue id="1" value="Plaque Tectonique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="835" label="Plaque Continentale"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="190.27965" y="-68.29249" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n835"/> + <attvalue id="1" value="Plaque Continentale"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="836" label="Dorsales Lomonossov"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="3.9735816" y="-45.558617" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n836"/> + <attvalue id="1" value="Dorsales Lomonossov"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="837" label="Drapeau De La Russie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-1.9269056" y="-60.467316" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n837"/> + <attvalue id="1" value="Drapeau De La Russie"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="838" label="Exploration Polaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="9.070678" y="5.685348" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n838"/> + <attvalue id="1" value="Exploration Polaire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="839" label="Navire De Recherche"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="7.384124" y="-26.281437" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n839"/> + <attvalue id="1" value="Navire De Recherche"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="840" label="Drapeau Russe En Titane"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-26.547232" y="-68.05379" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n840"/> + <attvalue id="1" value="Drapeau Russe En Titane"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="841" label="Explorateur Polaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="5.152131" y="48.412567" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n841"/> + <attvalue id="1" value="Explorateur Polaire"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="842" label="Droit"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-37.650738" y="-197.6607" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n842"/> + <attvalue id="1" value="Droit"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="843" label="Droit De La Mer"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-23.03955" y="-145.45616" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n843"/> + <attvalue id="1" value="Droit De La Mer"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="844" label="Droit De Passage"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="147.37573" y="-225.11084" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n844"/> + <attvalue id="1" value="Droit De Passage"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="845" label="Durablement Pollué"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="80.86123" y="-226.87175" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n845"/> + <attvalue id="1" value="Durablement Pollué"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="846" label="Reserve Naturelle Regionale"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="75.02886" y="-211.81967" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n846"/> + <attvalue id="1" value="Reserve Naturelle Regionale"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="847" label="Observation System"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="68.11775" y="147.90143" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n847"/> + <attvalue id="1" value="Observation System"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="848" label="Earth Observing"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="35.65285" y="141.03775" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n848"/> + <attvalue id="1" value="Earth Observing"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="849" label="Earth Sciences"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="14.9169855" y="102.99505" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n849"/> + <attvalue id="1" value="Earth Sciences"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="850" label="Earth Summit"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-47.285645" y="54.47885" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n850"/> + <attvalue id="1" value="Earth Summit"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="851" label="East Antarctica"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-9.807365" y="174.98557" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n851"/> + <attvalue id="1" value="East Antarctica"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="852" label="Ice Shelf"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-20.910875" y="192.31764" z="0.0"/> + <viz:size value="3.804327"/> + <attvalues> + <attvalue id="0" value="n852"/> + <attvalue id="1" value="Ice Shelf"/> + <attvalue id="2" value="12"/> + </attvalues> + </node> + <node id="853" label="East Iceland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-155.4933" y="189.1732" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n853"/> + <attvalue id="1" value="East Iceland"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="854" label="East Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-189.00587" y="62.662277" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n854"/> + <attvalue id="1" value="East Oil"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="855" label="East Siberian"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-110.81129" y="225.40796" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n855"/> + <attvalue id="1" value="East Siberian"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="856" label="Eastern Arctic"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-91.620155" y="195.27538" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n856"/> + <attvalue id="1" value="Eastern Arctic"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="857" label="Eaux Douces"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="101.13671" y="-146.24721" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n857"/> + <attvalue id="1" value="Eaux Douces"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="858" label="Plante Aquatique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="139.03444" y="-157.33931" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n858"/> + <attvalue id="1" value="Plante Aquatique"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="859" label="Eau Liquide"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="155.82997" y="-5.7764835" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n859"/> + <attvalue id="1" value="Eau Liquide"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="860" label="Sonde Voyager"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="154.62616" y="19.848589" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n860"/> + <attvalue id="1" value="Sonde Voyager"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="861" label="Space Science"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="112.92149" y="112.6525" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n861"/> + <attvalue id="1" value="Space Science"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="862" label="Formation Géologique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="122.24764" y="-141.43163" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n862"/> + <attvalue id="1" value="Formation Géologique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="863" label="Global Surveyor"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="121.062225" y="70.328384" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n863"/> + <attvalue id="1" value="Global Surveyor"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="864" label="Eaux De Fonte"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="83.76388" y="-42.55187" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n864"/> + <attvalue id="1" value="Eaux De Fonte"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="865" label="Ère Quaternaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="139.94081" y="-36.073387" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n865"/> + <attvalue id="1" value="Ère Quaternaire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="866" label="Fonte Des Neiges"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="82.30643" y="-44.7361" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n866"/> + <attvalue id="1" value="Fonte Des Neiges"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="867" label="Lac Glaciaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="110.84691" y="-21.93367" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n867"/> + <attvalue id="1" value="Lac Glaciaire"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="868" label="Eaux Intérieures"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="27.332901" y="-173.31288" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n868"/> + <attvalue id="1" value="Eaux Intérieures"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="869" label="Eaux Internationales"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-5.1327734" y="-171.45468" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n869"/> + <attvalue id="1" value="Eaux Internationales"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="870" label="Ligne De Base"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-29.122618" y="-164.37231" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n870"/> + <attvalue id="1" value="Ligne De Base"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="871" label="Échantillons De Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="113.428604" y="-35.62047" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n871"/> + <attvalue id="1" value="Échantillons De Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="872" label="Ecological Footprint"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="18.693914" y="-56.448235" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n872"/> + <attvalue id="1" value="Ecological Footprint"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="873" label="Ecologie"> + <viz:color b="51" g="204" r="0"/> + <viz:position x="75.064766" y="-121.18708" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n873"/> + <attvalue id="1" value="Ecologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="874" label="Écologie Pratique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="115.14588" y="-124.128716" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n874"/> + <attvalue id="1" value="Écologie Pratique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="875" label="Écologie Des Populations"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="135.21071" y="-149.51874" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n875"/> + <attvalue id="1" value="Écologie Des Populations"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="876" label="Habitat Écologique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="95.073494" y="-173.32501" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n876"/> + <attvalue id="1" value="Habitat Écologique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="877" label="Ecologie Profonde"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="64.3064" y="-118.6398" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n877"/> + <attvalue id="1" value="Ecologie Profonde"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="878" label="Écologisme"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="77.89612" y="-135.1429" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n878"/> + <attvalue id="1" value="Écologisme"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="879" label="Economie Gestion"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="215.9291" y="-5.96012" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n879"/> + <attvalue id="1" value="Economie Gestion"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="880" label="Écosystème"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="104.98737" y="-138.01811" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n880"/> + <attvalue id="1" value="Écosystème"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="881" label="Écosystèmes"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="64.835464" y="-137.61786" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n881"/> + <attvalue id="1" value="Écosystèmes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="882" label="Gestion Durable"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="57.75469" y="-200.93199" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n882"/> + <attvalue id="1" value="Gestion Durable"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="883" label="Milieu Naturel"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="74.04148" y="-175.50519" z="0.0"/> + <viz:size value="3.9073772"/> + <attvalues> + <attvalue id="0" value="n883"/> + <attvalue id="1" value="Milieu Naturel"/> + <attvalue id="2" value="15"/> + </attvalues> + </node> + <node id="884" label="Écosystèmes Marins"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="58.37052" y="-83.98966" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n884"/> + <attvalue id="1" value="Écosystèmes Marins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="885" label="Marine Science"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="46.841347" y="40.260735" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n885"/> + <attvalue id="1" value="Marine Science"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="886" label="Écotourisme Québec"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-45.964718" y="-95.81033" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n886"/> + <attvalue id="1" value="Écotourisme Québec"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="887" label="Écoulement"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="210.55989" y="-22.050102" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n887"/> + <attvalue id="1" value="Écoulement"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="888" label="Mecanique Des Fluides"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="278.5342" y="33.96362" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n888"/> + <attvalue id="1" value="Mecanique Des Fluides"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="889" label="Nombre De Reynolds"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="265.90732" y="19.444027" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n889"/> + <attvalue id="1" value="Nombre De Reynolds"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="890" label="Edp Sciences"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="67.00736" y="70.53533" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n890"/> + <attvalue id="1" value="Edp Sciences"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="891" label="Educapoles"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="11.144131" y="90.69534" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n891"/> + <attvalue id="1" value="Educapoles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="892" label="Polar Science"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-14.627259" y="160.04025" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n892"/> + <attvalue id="1" value="Polar Science"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="893" label="Fondation Polaire Internationale"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="59.461113" y="5.7854533" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n893"/> + <attvalue id="1" value="Fondation Polaire Internationale"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="894" label="Effect Of Global Warming"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-27.734083" y="167.0516" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n894"/> + <attvalue id="1" value="Effect Of Global Warming"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="895" label="Effet De Serre Anthropique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="93.9755" y="-121.45745" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n895"/> + <attvalue id="1" value="Effet De Serre Anthropique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="896" label="Pays Nordique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-71.66175" y="-118.37368" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n896"/> + <attvalue id="1" value="Pays Nordique"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="897" label="Reaction Chimique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="216.23396" y="-123.268616" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n897"/> + <attvalue id="1" value="Reaction Chimique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="898" label="Élévation Température"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-27.196436" y="171.9694" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n898"/> + <attvalue id="1" value="Élévation Température"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="899" label="Weather Services"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-14.640592" y="232.97093" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n899"/> + <attvalue id="1" value="Weather Services"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="900" label="Elliptic Orbit"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="-19.202227" y="252.2542" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n900"/> + <attvalue id="1" value="Elliptic Orbit"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="901" label="Empreinte Écologique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="81.85977" y="-129.94612" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n901"/> + <attvalue id="1" value="Empreinte Écologique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="902" label="Hectares Globaux"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="60.629135" y="-128.16586" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n902"/> + <attvalue id="1" value="Hectares Globaux"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="903" label="Empreinte Energetique"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="61.166225" y="-113.82703" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n903"/> + <attvalue id="1" value="Empreinte Energetique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="904" label="Energie Primaire"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="57.8311" y="-147.20485" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n904"/> + <attvalue id="1" value="Energie Primaire"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="905" label="Energy Conference"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-117.16386" y="133.87375" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n905"/> + <attvalue id="1" value="Energy Conference"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="906" label="Energy Source"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-103.12554" y="136.29105" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n906"/> + <attvalue id="1" value="Energy Source"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="907" label="Energy Technology"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-127.45953" y="131.4192" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n907"/> + <attvalue id="1" value="Energy Technology"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="908" label="International Energy"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-144.46208" y="110.12537" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n908"/> + <attvalue id="1" value="International Energy"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="909" label="Solar Energy"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-123.50092" y="138.78441" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n909"/> + <attvalue id="1" value="Solar Energy"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="910" label="Energy Technology Laboratory"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-57.999554" y="138.66016" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n910"/> + <attvalue id="1" value="Energy Technology Laboratory"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="911" label="Environmental Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="34.208244" y="236.64723" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n911"/> + <attvalue id="1" value="Environmental Satellite"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="912" label="Geostationary Operational"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="30.567636" y="244.06238" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n912"/> + <attvalue id="1" value="Geostationary Operational"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="913" label="Polar Orbit"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="42.05073" y="238.71724" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n913"/> + <attvalue id="1" value="Polar Orbit"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="914" label="Environnement"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="48.848263" y="-107.35811" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n914"/> + <attvalue id="1" value="Environnement"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="915" label="Espace Naturel"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="61.34805" y="-171.41649" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n915"/> + <attvalue id="1" value="Espace Naturel"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="916" label="Environnement De Basse"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="100.14473" y="-186.37665" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n916"/> + <attvalue id="1" value="Environnement De Basse"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="917" label="Environnement De Développement"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="160.63605" y="-173.79478" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n917"/> + <attvalue id="1" value="Environnement De Développement"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="918" label="Environnement Protection"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="80.22689" y="-148.74123" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n918"/> + <attvalue id="1" value="Environnement Protection"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="919" label="Protection Animale"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="20.83134" y="-161.25204" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n919"/> + <attvalue id="1" value="Protection Animale"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="920" label="Epfl Lausanne"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="189.5787" y="38.054188" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n920"/> + <attvalue id="1" value="Epfl Lausanne"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="921" label="Équilibre Biologique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="142.88905" y="-183.56615" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n921"/> + <attvalue id="1" value="Équilibre Biologique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="922" label="Équilibre Chimique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="265.33017" y="-114.19521" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n922"/> + <attvalue id="1" value="Équilibre Chimique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="923" label="Équilibre Physique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="13.283469" y="-168.52492" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n923"/> + <attvalue id="1" value="Équilibre Physique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="924" label="Prise De Conscience"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="42.184834" y="-137.6623" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n924"/> + <attvalue id="1" value="Prise De Conscience"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="925" label="Ère Glaciaire"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="90.339836" y="-57.05534" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n925"/> + <attvalue id="1" value="Ère Glaciaire"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="926" label="Etude Du Quaternaire"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="150.34695" y="-65.1993" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n926"/> + <attvalue id="1" value="Etude Du Quaternaire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="927" label="Erosion"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-38.781963" y="103.9926" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n927"/> + <attvalue id="1" value="Erosion"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="928" label="Soil Erosion"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-49.642742" y="102.69727" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n928"/> + <attvalue id="1" value="Soil Erosion"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="929" label="Érosion Des Sols"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="120.04345" y="-155.30327" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n929"/> + <attvalue id="1" value="Érosion Des Sols"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="930" label="Soil Science"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="71.4921" y="-90.872955" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n930"/> + <attvalue id="1" value="Soil Science"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="931" label="Érosion Glaciaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="80.162384" y="-37.780632" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n931"/> + <attvalue id="1" value="Érosion Glaciaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="932" label="Grandes Rousses"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="95.66878" y="-20.060335" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n932"/> + <attvalue id="1" value="Grandes Rousses"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="933" label="Erosion Marine"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-9.229599" y="68.31807" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n933"/> + <attvalue id="1" value="Erosion Marine"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="934" label="Marine Sediment"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-72.54487" y="118.237595" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n934"/> + <attvalue id="1" value="Marine Sediment"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="935" label="Parc Naturel"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="69.99037" y="-205.21725" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n935"/> + <attvalue id="1" value="Parc Naturel"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="936" label="Espece Disparue"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="61.263016" y="-132.36128" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n936"/> + <attvalue id="1" value="Espece Disparue"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="937" label="Espèce Rare"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="42.21828" y="-104.06557" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n937"/> + <attvalue id="1" value="Espèce Rare"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="938" label="Extinction Des Espèces"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="43.009552" y="-111.49417" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n938"/> + <attvalue id="1" value="Extinction Des Espèces"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="939" label="Espèces"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="40.706245" y="-96.389626" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n939"/> + <attvalue id="1" value="Espèces"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="940" label="Essai Historique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-125.59925" y="19.413881" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n940"/> + <attvalue id="1" value="Essai Historique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="941" label="Wentworth Higginson"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-128.44035" y="26.202095" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n941"/> + <attvalue id="1" value="Wentworth Higginson"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="942" label="Estimation Précise"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="163.51877" y="-147.66496" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n942"/> + <attvalue id="1" value="Estimation Précise"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="943" label="Estuaires"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="99.17397" y="-159.53157" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n943"/> + <attvalue id="1" value="Estuaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="944" label="Etats Arctiques"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="23.615108" y="-68.35029" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n944"/> + <attvalue id="1" value="Etats Arctiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="945" label="Etats-Unis"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-72.244255" y="-16.895475" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n945"/> + <attvalue id="1" value="Etats-Unis"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="946" label="Etude D'Impact,2"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="106.93279" y="-198.396" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n946"/> + <attvalue id="1" value="Etude D'Impact,2"/> + </attvalues> + </node> + <node id="947" label="Evaluation Des Risques"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="170.6026" y="-201.63857" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n947"/> + <attvalue id="1" value="Evaluation Des Risques"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="948" label="Installations Classées"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="132.18959" y="-222.88649" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n948"/> + <attvalue id="1" value="Installations Classées"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="949" label="Europe Via"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-139.81448" y="-14.29986" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n949"/> + <attvalue id="1" value="Europe Via"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="950" label="European Energy"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-146.0597" y="101.12242" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n950"/> + <attvalue id="1" value="European Energy"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="951" label="Évolution De La Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="92.413826" y="-2.3672986" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n951"/> + <attvalue id="1" value="Évolution De La Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="952" label="Évolution Des Galaxies"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="176.66473" y="-5.794433" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n952"/> + <attvalue id="1" value="Évolution Des Galaxies"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="953" label="Évolution Dynamique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="143.14812" y="-18.63513" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n953"/> + <attvalue id="1" value="Évolution Dynamique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="954" label="Laboratoire De Géologie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="172.96944" y="-24.25539" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n954"/> + <attvalue id="1" value="Laboratoire De Géologie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="955" label="Expédition Arctique"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-21.775705" y="-9.47056" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n955"/> + <attvalue id="1" value="Expédition Arctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="956" label="Documentaires Reportages"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-15.374488" y="-1.25556" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n956"/> + <attvalue id="1" value="Documentaires Reportages"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="957" label="Expédition Polaire Russe"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-98.878456" y="-21.154354" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n957"/> + <attvalue id="1" value="Expédition Polaire Russe"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="958" label="Geographie De La Russie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-109.99595" y="-16.31158" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n958"/> + <attvalue id="1" value="Geographie De La Russie"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="959" label="Hazardous Waste"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="-126.500145" y="12.84441" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n959"/> + <attvalue id="1" value="Hazardous Waste"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="960" label="Law Of The Sea"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-110.28498" y="-25.323826" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n960"/> + <attvalue id="1" value="Law Of The Sea"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="961" label="Nuclear Test"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-125.337326" y="5.7560062" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n961"/> + <attvalue id="1" value="Nuclear Test"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="962" label="Test Ban"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-125.562294" y="-14.156158" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n962"/> + <attvalue id="1" value="Test Ban"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="963" label="Experience Scientifique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="84.255745" y="-32.902298" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n963"/> + <attvalue id="1" value="Experience Scientifique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="964" label="Exploitation Des Ressources Naturelles"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="47.679157" y="-189.23827" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n964"/> + <attvalue id="1" value="Exploitation Des Ressources Naturelles"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="965" label="Exploitation Des Richesses"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="33.504692" y="-198.89534" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n965"/> + <attvalue id="1" value="Exploitation Des Richesses"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="966" label="Roald Amundsen"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-57.00881" y="188.92262" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n966"/> + <attvalue id="1" value="Roald Amundsen"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="967" label="Frederick Cook"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-92.09284" y="133.99028" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n967"/> + <attvalue id="1" value="Frederick Cook"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="968" label="Exploration Well"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-250.78955" y="90.75182" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n968"/> + <attvalue id="1" value="Exploration Well"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="969" label="Extension De Sa Zee"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-28.285883" y="-113.841156" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n969"/> + <attvalue id="1" value="Extension De Sa Zee"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="970" label="Grande Puissance"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-46.110386" y="-140.48837" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n970"/> + <attvalue id="1" value="Grande Puissance"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="971" label="Extent Minimum"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-21.229578" y="196.80101" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n971"/> + <attvalue id="1" value="Extent Minimum"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="972" label="New values"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-16.943527" y="214.02863" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n972"/> + <attvalue id="1" value="New values"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="973" label="Extinction"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-67.82668" y="82.92679" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n973"/> + <attvalue id="1" value="Extinction"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="974" label="Natural Histories"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-49.7037" y="83.633156" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n974"/> + <attvalue id="1" value="Natural Histories"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="975" label="Extinction Massive"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="63.20324" y="-88.8781" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n975"/> + <attvalue id="1" value="Extinction Massive"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="976" label="Habitat Naturel"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="77.34685" y="-173.39488" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n976"/> + <attvalue id="1" value="Habitat Naturel"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="977" label="Faible Superficie"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="28.10143" y="-15.438551" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n977"/> + <attvalue id="1" value="Faible Superficie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="978" label="Farthest North"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-53.272995" y="216.23885" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n978"/> + <attvalue id="1" value="Farthest North"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="979" label="Fridtjof Nansen"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-69.68144" y="221.24622" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n979"/> + <attvalue id="1" value="Fridtjof Nansen"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="980" label="Fermentation Bactérienne"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="131.5034" y="-126.60105" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n980"/> + <attvalue id="1" value="Fermentation Bactérienne"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="981" label="Longue Distance"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-205.21637" y="-103.38819" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n981"/> + <attvalue id="1" value="Longue Distance"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="982" label="Filet De Pêche"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="31.46701" y="-184.63156" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n982"/> + <attvalue id="1" value="Filet De Pêche"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="983" label="Oiseau Marin"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-8.769896" y="-110.72691" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n983"/> + <attvalue id="1" value="Oiseau Marin"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="984" label="Finlande"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-76.076706" y="-155.70631" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n984"/> + <attvalue id="1" value="Finlande"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="985" label="Finnish Companies"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-104.003265" y="-176.27101" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n985"/> + <attvalue id="1" value="Finnish Companies"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="986" label="Finnish Economy"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-102.27499" y="-178.88002" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n986"/> + <attvalue id="1" value="Finnish Economy"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="987" label="Golfe De Finlande"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-74.995316" y="-107.20958" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n987"/> + <attvalue id="1" value="Golfe De Finlande"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="988" label="Finnish Lapland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-145.6016" y="227.69078" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n988"/> + <attvalue id="1" value="Finnish Lapland"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="989" label="Fishing Ship"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-238.15277" y="184.21484" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n989"/> + <attvalue id="1" value="Fishing Ship"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="990" label="Fjell"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-164.63628" y="114.63324" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n990"/> + <attvalue id="1" value="Fjell"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="991" label="Petroleum Congress"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-198.80421" y="99.98989" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n991"/> + <attvalue id="1" value="Petroleum Congress"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="992" label="Fjord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-186.79683" y="166.89519" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n992"/> + <attvalue id="1" value="Fjord"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="993" label="Norwegian Fjords"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-197.39606" y="210.50949" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n993"/> + <attvalue id="1" value="Norwegian Fjords"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="994" label="Fjord Du Saguenay"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-87.79442" y="7.0019746" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n994"/> + <attvalue id="1" value="Fjord Du Saguenay"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="995" label="Fjord Horse"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-203.7074" y="200.56421" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n995"/> + <attvalue id="1" value="Fjord Horse"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="996" label="Fjords Of Norway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-204.98781" y="207.87749" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n996"/> + <attvalue id="1" value="Fjords Of Norway"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="997" label="Fjords Tours"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-196.65358" y="186.59409" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n997"/> + <attvalue id="1" value="Fjords Tours"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="998" label="Flam Railway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-201.98775" y="218.4114" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n998"/> + <attvalue id="1" value="Flam Railway"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="999" label="Fleuve Amour"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-57.593853" y="-115.6403" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n999"/> + <attvalue id="1" value="Fleuve Amour"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1000" label="Île De Sakhaline"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-45.902386" y="-131.20715" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1000"/> + <attvalue id="1" value="Île De Sakhaline"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1001" label="Flux Zonal"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="138.8182" y="-8.52224" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1001"/> + <attvalue id="1" value="Flux Zonal"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1002" label="Bass Temperature"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="123.575874" y="-42.56313" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1002"/> + <attvalue id="1" value="Bass Temperature"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1003" label="Physique Des Particules"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="156.26482" y="-10.695087" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1003"/> + <attvalue id="1" value="Physique Des Particules"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="1004" label="Fonds Côtiers"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="44.000443" y="-134.49663" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1004"/> + <attvalue id="1" value="Fonds Côtiers"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1005" label="Ifremer Brest"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="55.18673" y="-40.219112" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1005"/> + <attvalue id="1" value="Ifremer Brest"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1006" label="Fonds Marins"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="138.05156" y="-47.22257" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1006"/> + <attvalue id="1" value="Fonds Marins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1007" label="Fonds Marins Du Pôle"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-22.645544" y="-89.73847" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1007"/> + <attvalue id="1" value="Fonds Marins Du Pôle"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1008" label="Reserve Petroliere"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-62.95449" y="-111.68696" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1008"/> + <attvalue id="1" value="Reserve Petroliere"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1009" label="Stephen Harper"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-14.604505" y="-63.890865" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1009"/> + <attvalue id="1" value="Stephen Harper"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1010" label="Fonte"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-103.64831" y="17.052528" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1010"/> + <attvalue id="1" value="Fonte"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1011" label="Fonte Annuelle"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="39.269947" y="-13.260152" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1011"/> + <attvalue id="1" value="Fonte Annuelle"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1012" label="Réfugié Climatique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="34.025978" y="-93.97843" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1012"/> + <attvalue id="1" value="Réfugié Climatique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1013" label="Goddard Institute"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-46.925995" y="74.30354" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1013"/> + <attvalue id="1" value="Goddard Institute"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1014" label="James Hansen"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-52.071064" y="79.758224" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1014"/> + <attvalue id="1" value="James Hansen"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1015" label="Kilometre Carre"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="18.52327" y="-61.359478" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n1015"/> + <attvalue id="1" value="Kilometre Carre"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="1016" label="Fonte Banquise"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="43.514587" y="15.136065" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1016"/> + <attvalue id="1" value="Fonte Banquise"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1017" label="Manchot Empereur"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="63.55571" y="50.193047" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1017"/> + <attvalue id="1" value="Manchot Empereur"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1018" label="Neige Au Sol"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="140.85014" y="-31.188803" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1018"/> + <attvalue id="1" value="Neige Au Sol"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1019" label="Forage"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="308.79312" y="359.84082" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1019"/> + <attvalue id="1" value="Forage"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1020" label="Forage Research"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="307.84824" y="354.8162" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1020"/> + <attvalue id="1" value="Forage Research"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1021" label="Forage Seed"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="304.77554" y="357.18753" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1021"/> + <attvalue id="1" value="Forage Seed"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1022" label="Impact Écologique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="88.8486" y="-138.18254" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1022"/> + <attvalue id="1" value="Impact Écologique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1023" label="Nature Bassin"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="113.96315" y="-168.16637" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1023"/> + <attvalue id="1" value="Nature Bassin"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1024" label="Frappes Nucléaires"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-142.3258" y="-50.140312" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1024"/> + <attvalue id="1" value="Frappes Nucléaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1025" label="Observatoire De Recherche"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="124.533165" y="-93.656944" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1025"/> + <attvalue id="1" value="Observatoire De Recherche"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1026" label="Frederick Albert"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-89.54547" y="118.13765" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1026"/> + <attvalue id="1" value="Frederick Albert"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1027" label="Race To The Pole"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-82.86374" y="160.81151" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1027"/> + <attvalue id="1" value="Race To The Pole"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1028" label="Commission For Refugees"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-68.08869" y="239.49724" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1028"/> + <attvalue id="1" value="Commission For Refugees"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1029" label="Institute Affiliate"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-72.89531" y="237.22447" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1029"/> + <attvalue id="1" value="Institute Affiliate"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1030" label="King Haakon"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-72.25579" y="242.32996" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1030"/> + <attvalue id="1" value="King Haakon"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1031" label="Froid"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="129.80669" y="-139.21411" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1031"/> + <attvalue id="1" value="Froid"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1032" label="Frontière Terrestre"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-43.005745" y="-161.07913" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1032"/> + <attvalue id="1" value="Frontière Terrestre"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1033" label="Gas Condensate"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-205.3024" y="92.97198" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1033"/> + <attvalue id="1" value="Gas Condensate"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1034" label="Gas Field"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-234.94615" y="97.34775" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1034"/> + <attvalue id="1" value="Gas Field"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="1035" label="Gas Liquefaction"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-234.84146" y="93.12056" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1035"/> + <attvalue id="1" value="Gas Liquefaction"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1036" label="Liquefied Natural Gas"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-216.60739" y="84.23991" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1036"/> + <attvalue id="1" value="Liquefied Natural Gas"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1037" label="Pipeline Company"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-230.60622" y="78.900024" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1037"/> + <attvalue id="1" value="Pipeline Company"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1038" label="Pipeline Safety"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-246.43402" y="74.98459" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1038"/> + <attvalue id="1" value="Pipeline Safety"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1039" label="Gas Transmission"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-249.90715" y="83.094376" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1039"/> + <attvalue id="1" value="Gas Transmission"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1040" label="Gas Storage"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-256.83627" y="85.83114" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1040"/> + <attvalue id="1" value="Gas Storage"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1041" label="Gaz"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="55.17977" y="-137.74486" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1041"/> + <attvalue id="1" value="Gaz"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1042" label="Gaz De France"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-29.909842" y="-142.63037" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1042"/> + <attvalue id="1" value="Gaz De France"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="1043" label="Reseau De Distribution"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="17.605442" y="-163.22975" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1043"/> + <attvalue id="1" value="Reseau De Distribution"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1044" label="Gaz Naturel Liquéfié"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-10.13736" y="-166.35992" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1044"/> + <attvalue id="1" value="Gaz Naturel Liquéfié"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1045" label="Gaz Naturel Pour Véhicules"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="3.4302144" y="-103.929726" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1045"/> + <attvalue id="1" value="Gaz Naturel Pour Véhicules"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1046" label="Terminal Méthanier"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-42.76443" y="-188.28865" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1046"/> + <attvalue id="1" value="Terminal Méthanier"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1047" label="Natural Gas"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-152.91248" y="45.998966" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1047"/> + <attvalue id="1" value="Natural Gas"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1048" label="Gaz Parfaits"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="299.44098" y="-83.49448" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1048"/> + <attvalue id="1" value="Gaz Parfaits"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1049" label="Gazoduc Nord Stream"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-66.97033" y="-129.31104" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1049"/> + <attvalue id="1" value="Gazoduc Nord Stream"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1050" label="Nord Stream"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-169.20381" y="3.9789262" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1050"/> + <attvalue id="1" value="Nord Stream"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1051" label="Gazoducs"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-27.00493" y="-152.1494" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1051"/> + <attvalue id="1" value="Gazoducs"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1052" label="Gazprom"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-210.1996" y="50.88749" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1052"/> + <attvalue id="1" value="Gazprom"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1053" label="Oao Gazprom"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-223.50766" y="59.680275" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1053"/> + <attvalue id="1" value="Oao Gazprom"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1054" label="Gbep"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-97.53926" y="87.67932" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1054"/> + <attvalue id="1" value="Gbep"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1055" label="Galveston Bay"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-108.031555" y="88.00658" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1055"/> + <attvalue id="1" value="Galveston Bay"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1056" label="Gédéon Programmes"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-54.902153" y="38.41842" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1056"/> + <attvalue id="1" value="Gédéon Programmes"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1057" label="Film Documentaire"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-17.070274" y="5.893407" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1057"/> + <attvalue id="1" value="Film Documentaire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1058" label="Gel"> + <viz:color b="255" g="153" r="51"/> + <viz:position x="-376.82135" y="-210.36017" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1058"/> + <attvalue id="1" value="Gel"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1059" label="Afge Local"> + <viz:color b="255" g="153" r="51"/> + <viz:position x="-375.45572" y="-212.91014" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1059"/> + <attvalue id="1" value="Afge Local"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1060" label="Global positioning"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="18.134483" y="347.81546" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1060"/> + <attvalue id="1" value="Global positioning"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1061" label="Geographic Adventure"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-185.89278" y="141.31622" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1061"/> + <attvalue id="1" value="Geographic Adventure"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1062" label="Geographical Society"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-174.25351" y="143.69589" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1062"/> + <attvalue id="1" value="Geographical Society"/> + <attvalue id="2" value="9"/> + </attvalues> + </node> + <node id="1063" label="National Geographic Society"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-177.68814" y="127.0909" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1063"/> + <attvalue id="1" value="National Geographic Society"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1064" label="Geographic Channel"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-178.20935" y="136.54375" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1064"/> + <attvalue id="1" value="Geographic Channel"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1065" label="Geographic Explorer"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-166.4054" y="138.89792" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1065"/> + <attvalue id="1" value="Geographic Explorer"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1066" label="Geographic Magazine"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-152.79343" y="135.99675" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1066"/> + <attvalue id="1" value="Geographic Magazine"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1067" label="Geographic Traveler"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-189.3801" y="138.88069" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1067"/> + <attvalue id="1" value="Geographic Traveler"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1068" label="Geographic Video"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-175.71262" y="131.84937" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1068"/> + <attvalue id="1" value="Geographic Video"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1069" label="Geographic World"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-188.60373" y="134.18477" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1069"/> + <attvalue id="1" value="Geographic World"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1070" label="Géologie"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="133.80481" y="-62.96446" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1070"/> + <attvalue id="1" value="Géologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1071" label="Géophysique"> + <viz:color b="51" g="204" r="255"/> + <viz:position x="176.5453" y="68.23207" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1071"/> + <attvalue id="1" value="Géophysique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1072" label="Geophysical Services"> + <viz:color b="51" g="204" r="255"/> + <viz:position x="189.09958" y="79.95026" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1072"/> + <attvalue id="1" value="Geophysical Services"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1073" label="Geophysique Appliquee"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="210.16277" y="58.651287" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1073"/> + <attvalue id="1" value="Geophysique Appliquee"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1074" label="Geophysique Interne"> + <viz:color b="51" g="204" r="255"/> + <viz:position x="180.7894" y="61.794193" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1074"/> + <attvalue id="1" value="Geophysique Interne"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1075" label="Institute Of Geophysics"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="80.64952" y="105.079605" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1075"/> + <attvalue id="1" value="Institute Of Geophysics"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1076" label="Laboratoire De Géophysique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="189.24965" y="50.751053" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1076"/> + <attvalue id="1" value="Laboratoire De Géophysique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1077" label="Institut De Physique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="189.11049" y="14.608364" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1077"/> + <attvalue id="1" value="Institut De Physique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1078" label="Joseph Fourier"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="189.65927" y="57.27051" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1078"/> + <attvalue id="1" value="Joseph Fourier"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1079" label="Université Joseph"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="175.67433" y="54.93793" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1079"/> + <attvalue id="1" value="Université Joseph"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1080" label="George Hubert Wilkins"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-96.73339" y="150.08437" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1080"/> + <attvalue id="1" value="George Hubert Wilkins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1081" label="Géosphère"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-58.156826" y="157.49628" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1081"/> + <attvalue id="1" value="Géosphère"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1082" label="Weather Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="38.010437" y="234.1475" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n1082"/> + <attvalue id="1" value="Weather Satellite"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1083" label="Satellite Image"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="32.45033" y="231.79265" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1083"/> + <attvalue id="1" value="Satellite Image"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="1084" label="Gérard Jugie"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="70.08814" y="2.7837873" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1084"/> + <attvalue id="1" value="Gérard Jugie"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1085" label="Accès De Base"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="195.8872" y="-169.43822" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1085"/> + <attvalue id="1" value="Accès De Base"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1086" label="Giec"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="78.03675" y="-63.35173" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1086"/> + <attvalue id="1" value="Giec"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1087" label="Rajendra Pachauri"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="52.982414" y="1.6913036" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1087"/> + <attvalue id="1" value="Rajendra Pachauri"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1088" label="Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="50.43437" y="115.9042" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1088"/> + <attvalue id="1" value="Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1090" label="Ice Hotel"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-64.49955" y="204.44814" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1090"/> + <attvalue id="1" value="Ice Hotel"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1091" label="Glace Continentale"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="83.257706" y="-46.666317" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1091"/> + <attvalue id="1" value="Glace Continentale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1092" label="Glace Pérenne"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="35.69373" y="0.857531" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1092"/> + <attvalue id="1" value="Glace Pérenne"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1093" label="Glacial Erosion"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-21.214285" y="200.80583" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1093"/> + <attvalue id="1" value="Glacial Erosion"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1094" label="Glacial Lake"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-35.506916" y="200.64854" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1094"/> + <attvalue id="1" value="Glacial Lake"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1095" label="Glacial Moraine"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-80.97169" y="188.39722" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1095"/> + <attvalue id="1" value="Glacial Moraine"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1096" label="Glacial Outwash"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-50.019043" y="168.88234" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1096"/> + <attvalue id="1" value="Glacial Outwash"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1097" label="Glacial Till"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-33.914646" y="181.96614" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1097"/> + <attvalue id="1" value="Glacial Till"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1098" label="Glacial Period"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-29.627876" y="198.72252" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1098"/> + <attvalue id="1" value="Glacial Period"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1099" label="Glacial Retreat"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-68.90047" y="177.8156" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1099"/> + <attvalue id="1" value="Glacial Retreat"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1100" label="Glacial Valley"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-19.924963" y="217.89133" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1100"/> + <attvalue id="1" value="Glacial Valley"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1101" label="Glaciation"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-25.747955" y="202.87668" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1101"/> + <attvalue id="1" value="Glaciation"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1102" label="Interglacial Period"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-31.175037" y="179.857" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1102"/> + <attvalue id="1" value="Interglacial Period"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1103" label="Glaciers Of Iceland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-120.08829" y="173.55348" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1103"/> + <attvalue id="1" value="Glaciers Of Iceland"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1104" label="Glaciologie"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="47.082443" y="85.68284" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1104"/> + <attvalue id="1" value="Glaciologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1105" label="Glaciologie Océanographie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="132.3188" y="-51.889362" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1105"/> + <attvalue id="1" value="Glaciologie Océanographie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1106" label="Discipline Scientifique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="201.23639" y="-18.191076" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1106"/> + <attvalue id="1" value="Discipline Scientifique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1107" label="Glaciologues"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="65.11797" y="-30.983059" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1107"/> + <attvalue id="1" value="Glaciologues"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1108" label="Global Average Temperature"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="5.089423" y="186.47092" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1108"/> + <attvalue id="1" value="Global Average Temperature"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1109" label="Global Carbon"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-43.8347" y="100.73068" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1109"/> + <attvalue id="1" value="Global Carbon"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1110" label="Global Concern Expedition"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="56.026844" y="107.421814" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1110"/> + <attvalue id="1" value="Global Concern Expedition"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1111" label="Science & Vie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="127.877655" y="30.520279" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1111"/> + <attvalue id="1" value="Science & Vie"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1112" label="Global Exploration"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="86.120804" y="139.35532" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1112"/> + <attvalue id="1" value="Global Exploration"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1113" label="Global Ocean"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="14.827738" y="65.18302" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1113"/> + <attvalue id="1" value="Global Ocean"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1114" label="Gps Navigation"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="20.848894" y="367.30676" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1114"/> + <attvalue id="1" value="Gps Navigation"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1115" label="Gps Satellite"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="23.63809" y="358.64844" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1115"/> + <attvalue id="1" value="Gps Satellite"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1116" label="Satellite Navigation"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="25.107119" y="364.983" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1116"/> + <attvalue id="1" value="Satellite Navigation"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1117" label="Global Warning"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-26.670753" y="105.00892" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1117"/> + <attvalue id="1" value="Global Warning"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1118" label="Glouton"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-32.315304" y="-80.87205" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1118"/> + <attvalue id="1" value="Glouton"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1119" label="Tara Arctic"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="25.364477" y="-12.806184" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1119"/> + <attvalue id="1" value="Tara Arctic"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1120" label="Gold Rush"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-141.72993" y="69.56952" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1120"/> + <attvalue id="1" value="Gold Rush"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1121" label="Klondike Gold"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-158.62494" y="107.24179" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1121"/> + <attvalue id="1" value="Klondike Gold"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1122" label="Golfe De Botnie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-62.532444" y="-91.695114" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n1122"/> + <attvalue id="1" value="Golfe De Botnie"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1123" label="Grand Port"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-60.79839" y="-192.13933" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1123"/> + <attvalue id="1" value="Grand Port"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1124" label="Péninsule Scandinave"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-83.609634" y="-81.78701" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n1124"/> + <attvalue id="1" value="Péninsule Scandinave"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="1125" label="Norvège Du Nord"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-74.60003" y="-38.38049" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1125"/> + <attvalue id="1" value="Norvège Du Nord"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1126" label="Pays Balte"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-71.66582" y="-139.57153" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1126"/> + <attvalue id="1" value="Pays Balte"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1129" label="Nunavut Land"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-163.74211" y="185.57597" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1129"/> + <attvalue id="1" value="Nunavut Land"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1130" label="Satellite Orbit"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="24.784546" y="279.49463" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1130"/> + <attvalue id="1" value="Satellite Orbit"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1131" label="Gradient Thermique Adiabatique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="212.38321" y="-46.562183" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1131"/> + <attvalue id="1" value="Gradient Thermique Adiabatique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1132" label="Calcul Des Variations"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="184.29662" y="-77.37787" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1132"/> + <attvalue id="1" value="Calcul Des Variations"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1133" label="Grand Dauphin"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-8.908156" y="-135.8155" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1133"/> + <attvalue id="1" value="Grand Dauphin"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1134" label="Grand Lac Des Esclaves"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-37.955746" y="-52.519592" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1134"/> + <attvalue id="1" value="Grand Lac Des Esclaves"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1135" label="Grand Migrateur"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="44.55702" y="-173.27127" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1135"/> + <attvalue id="1" value="Grand Migrateur"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1136" label="Nicolas Vanier"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-100.297424" y="-37.12297" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1136"/> + <attvalue id="1" value="Nicolas Vanier"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1137" label="Port Maritime"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-66.40469" y="-213.9807" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1137"/> + <attvalue id="1" value="Port Maritime"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1138" label="Port Autonome"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-52.505688" y="-208.13742" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1138"/> + <attvalue id="1" value="Port Autonome"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1139" label="Grand Public"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="158.4264" y="-139.75174" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1139"/> + <attvalue id="1" value="Grand Public"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1140" label="Grande Echelle"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="108.46733" y="-132.58734" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1140"/> + <attvalue id="1" value="Grande Echelle"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1141" label="Grande Odyssée"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-106.914536" y="-39.453342" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1141"/> + <attvalue id="1" value="Grande Odyssée"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1142" label="Yukon Quest"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-131.59264" y="2.5135977" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1142"/> + <attvalue id="1" value="Yukon Quest"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1143" label="Gravures"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-111.48787" y="15.001554" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1143"/> + <attvalue id="1" value="Gravures"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1144" label="Greenland Sea"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-90.95839" y="171.49483" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1144"/> + <attvalue id="1" value="Greenland Sea"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1145" label="Groenland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-36.206184" y="86.05507" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1145"/> + <attvalue id="1" value="Groenland"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1146" label="Kalaallit Nunaat"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-81.4008" y="145.65776" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1146"/> + <attvalue id="1" value="Kalaallit Nunaat"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1147" label="Pressure Treat"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-36.563942" y="91.22314" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1147"/> + <attvalue id="1" value="Pressure Treat"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1148" label="Gulf-Stream"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-82.87585" y="147.64189" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1148"/> + <attvalue id="1" value="Gulf-Stream"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1149" label="Habitants Locaux"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-49.015717" y="-68.35371" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1149"/> + <attvalue id="1" value="Habitants Locaux"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1150" label="Habitat Sain"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="88.20013" y="-177.2659" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1150"/> + <attvalue id="1" value="Habitat Sain"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1151" label="Hammerfest"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-164.70514" y="221.6623" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1151"/> + <attvalue id="1" value="Hammerfest"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1152" label="Northern Norway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-164.2613" y="210.38531" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n1152"/> + <attvalue id="1" value="Northern Norway"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="1155" label="Haute Résolution"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="105.130226" y="-4.666499" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1155"/> + <attvalue id="1" value="Haute Résolution"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1156" label="Hautes Latitudes"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="85.40922" y="-28.344774" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1156"/> + <attvalue id="1" value="Hautes Latitudes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1157" label="Health Wealth"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-83.57731" y="88.322945" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1157"/> + <attvalue id="1" value="Health Wealth"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1158" label="High Place"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-149.81848" y="21.88913" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1158"/> + <attvalue id="1" value="High Place"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1159" label="Histoire Culturelle"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="137.45097" y="-118.90293" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1159"/> + <attvalue id="1" value="Histoire Culturelle"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1160" label="Human Impact"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-26.487019" y="34.88544" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1160"/> + <attvalue id="1" value="Human Impact"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1161" label="Hydrate De Méthane"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="54.281883" y="-91.35416" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1161"/> + <attvalue id="1" value="Hydrate De Méthane"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1162" label="Hydrocarbures Aromatiques Polycycliques"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="115.222115" y="-191.01622" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1162"/> + <attvalue id="1" value="Hydrocarbures Aromatiques Polycycliques"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1163" label="Hydrocarbures"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="16.07162" y="-186.07843" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1163"/> + <attvalue id="1" value="Hydrocarbures"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1164" label="Maree Noire"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-11.025002" y="-190.8811" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1164"/> + <attvalue id="1" value="Maree Noire"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1165" label="Pollution Atmosphérique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="127.193" y="-146.90213" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1165"/> + <attvalue id="1" value="Pollution Atmosphérique"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1166" label="Ice Patrol"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-59.84071" y="147.96361" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1166"/> + <attvalue id="1" value="Ice Patrol"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1167" label="Iceberg"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-59.353584" y="150.21646" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1167"/> + <attvalue id="1" value="Iceberg"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1168" label="Icebergs"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-43.746304" y="172.55003" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1168"/> + <attvalue id="1" value="Icebergs"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1169" label="Identité Collective"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="103.48866" y="-148.4129" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1169"/> + <attvalue id="1" value="Identité Collective"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1170" label="Igloos"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-113.27494" y="242.55081" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1170"/> + <attvalue id="1" value="Igloos"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1171" label="Igloo Building"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-117.59392" y="257.47653" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1171"/> + <attvalue id="1" value="Igloo Building"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1172" label="Ignace Venetz"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="99.20021" y="51.06375" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1172"/> + <attvalue id="1" value="Ignace Venetz"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1173" label="Île Aux Ours"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-23.714111" y="-30.37403" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1173"/> + <attvalue id="1" value="Île Aux Ours"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1174" label="Île De Gotland"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-91.91884" y="-108.08819" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1174"/> + <attvalue id="1" value="Île De Gotland"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1175" label="Iles Kouriles"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-30.823526" y="-115.73786" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1175"/> + <attvalue id="1" value="Iles Kouriles"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1176" label="Île Hans"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-11.876183" y="-47.796837" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1176"/> + <attvalue id="1" value="Île Hans"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1177" label="Propulsion Nucléaire"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-41.981785" y="-136.34735" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1177"/> + <attvalue id="1" value="Propulsion Nucléaire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1178" label="Île Melville"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-50.841915" y="6.3638916" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1178"/> + <attvalue id="1" value="Île Melville"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1179" label="Ile Victoria"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-53.380405" y="19.344086" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1179"/> + <attvalue id="1" value="Ile Victoria"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1180" label="Ile Wrangel"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-27.836134" y="-47.41629" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1180"/> + <attvalue id="1" value="Ile Wrangel"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1181" label="Iles Feroe"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-69.094666" y="-78.2466" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1181"/> + <attvalue id="1" value="Iles Feroe"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1182" label="Iles Pribilof"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-21.772535" y="-80.01084" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1182"/> + <attvalue id="1" value="Iles Pribilof"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1183" label="Imagerie Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="81.58129" y="-17.82791" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1183"/> + <attvalue id="1" value="Imagerie Satellite"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1184" label="Images Satellites"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="80.11012" y="124.08191" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1184"/> + <attvalue id="1" value="Images Satellites"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1185" label="Satellite Photo"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="63.855404" y="188.44809" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1185"/> + <attvalue id="1" value="Satellite Photo"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1186" label="Impact Activités Humaines"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="79.55439" y="-66.16835" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1186"/> + <attvalue id="1" value="Impact Activités Humaines"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1187" label="Impacts Environnementaux"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="99.07761" y="-143.88971" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1187"/> + <attvalue id="1" value="Impacts Environnementaux"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1188" label="Impacts Sociaux"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="92.58539" y="-135.29114" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1188"/> + <attvalue id="1" value="Impacts Sociaux"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1189" label="Importance Stratégique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="71.97816" y="-155.06657" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1189"/> + <attvalue id="1" value="Importance Stratégique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1190" label="Planification Strategique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="66.24203" y="-198.76262" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1190"/> + <attvalue id="1" value="Planification Strategique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1191" label="Indicateur Climatique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="111.121544" y="-49.500248" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1191"/> + <attvalue id="1" value="Indicateur Climatique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1192" label="Source Lumineuse"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="144.72453" y="-38.328453" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1192"/> + <attvalue id="1" value="Source Lumineuse"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1193" label="Indices"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-101.550674" y="28.506016" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1193"/> + <attvalue id="1" value="Indices"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1194" label="Indigènes Inuit"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="24.171843" y="-45.310974" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1194"/> + <attvalue id="1" value="Indigènes Inuit"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1195" label="Indigenous Population"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-189.10783" y="251.41548" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1195"/> + <attvalue id="1" value="Indigenous Population"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1196" label="Photographie Aerienne"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="214.25209" y="-151.9271" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1196"/> + <attvalue id="1" value="Photographie Aerienne"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1197" label="Inland Ice"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-34.770523" y="186.42897" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1197"/> + <attvalue id="1" value="Inland Ice"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1198" label="Inlandsis"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="46.86988" y="17.469019" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1198"/> + <attvalue id="1" value="Inlandsis"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1199" label="Innovation Norway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-253.25069" y="235.96594" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1199"/> + <attvalue id="1" value="Innovation Norway"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1200" label="Norwegian Ministry"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-249.62755" y="274.8595" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1200"/> + <attvalue id="1" value="Norwegian Ministry"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1201" label="Physique Nucléaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="156.51923" y="-49.500416" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1201"/> + <attvalue id="1" value="Physique Nucléaire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1202" label="Physique Theorique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="203.55371" y="11.899933" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1202"/> + <attvalue id="1" value="Physique Theorique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1203" label="Institut De Recherche Agronomique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="159.97943" y="-73.06417" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1203"/> + <attvalue id="1" value="Institut De Recherche Agronomique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1204" label="Institut Des Sciences"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="156.79257" y="-29.079945" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1204"/> + <attvalue id="1" value="Institut Des Sciences"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1205" label="Institut National De Recherche"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="135.41293" y="22.342468" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1205"/> + <attvalue id="1" value="Institut National De Recherche"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1206" label="Institut Océanographique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="49.96442" y="9.039939" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1206"/> + <attvalue id="1" value="Institut Océanographique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1207" label="Institut Royal"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="145.33142" y="-24.20767" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1207"/> + <attvalue id="1" value="Institut Royal"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1208" label="Institute Of Meteorology"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="103.18085" y="85.1231" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1208"/> + <attvalue id="1" value="Institute Of Meteorology"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1209" label="Interactions Air-Neige"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="108.4934" y="29.133638" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1209"/> + <attvalue id="1" value="Interactions Air-Neige"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1210" label="Univers De Grenoble"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="168.06407" y="37.513844" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1210"/> + <attvalue id="1" value="Univers De Grenoble"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1211" label="Intérêt Stratégique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="39.274773" y="-147.35266" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1211"/> + <attvalue id="1" value="Intérêt Stratégique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1212" label="Intérêts Défensifs"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-1.6559289" y="-208.14784" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1212"/> + <attvalue id="1" value="Intérêts Défensifs"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1213" label="Programme De Doha"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-2.606527" y="-203.9103" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1213"/> + <attvalue id="1" value="Programme De Doha"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1214" label="Intérêts Économiques"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="14.541774" y="-190.69824" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1214"/> + <attvalue id="1" value="Intérêts Économiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1215" label="Intérêts Scientifiques"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="189.90303" y="-52.6925" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1215"/> + <attvalue id="1" value="Intérêts Scientifiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1216" label="Intérêts Stratégiques"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-47.506393" y="-163.7597" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1216"/> + <attvalue id="1" value="Intérêts Stratégiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1217" label="Aker Yards"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-64.21484" y="-180.51508" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1217"/> + <attvalue id="1" value="Aker Yards"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1218" label="International Commission"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-18.685696" y="18.909916" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1218"/> + <attvalue id="1" value="International Commission"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1219" label="International Journal Of Technology"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-89.349464" y="122.81164" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1219"/> + <attvalue id="1" value="International Journal Of Technology"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1220" label="International Journal Of Theoretical"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-105.27546" y="21.632175" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1220"/> + <attvalue id="1" value="International Journal Of Theoretical"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1221" label="International Polar Expedition"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-43.94784" y="177.28107" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1221"/> + <attvalue id="1" value="International Polar Expedition"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1222" label="International Polar Year"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-6.611952" y="151.63268" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1222"/> + <attvalue id="1" value="International Polar Year"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1223" label="Inuits"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-117.908005" y="227.82422" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1223"/> + <attvalue id="1" value="Inuits"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1224" label="Iouri Andropov"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-81.5824" y="-172.23038" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1224"/> + <attvalue id="1" value="Iouri Andropov"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1225" label="Leonid Brejnev"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-79.58477" y="-178.66211" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1225"/> + <attvalue id="1" value="Leonid Brejnev"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1226" label="Isfjord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-79.51791" y="175.50116" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1226"/> + <attvalue id="1" value="Isfjord"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1227" label="Island Expedition"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-90.13852" y="182.27116" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1227"/> + <attvalue id="1" value="Island Expedition"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1228" label="Island Navy"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-163.77809" y="31.349916" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1228"/> + <attvalue id="1" value="Island Navy"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1229" label="Mare Island"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-174.55922" y="18.853043" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1229"/> + <attvalue id="1" value="Mare Island"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1230" label="Islande"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-69.062515" y="-68.26531" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1230"/> + <attvalue id="1" value="Islande"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1231" label="Recit De Voyage"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-74.333786" y="-61.913635" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1231"/> + <attvalue id="1" value="Recit De Voyage"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1232" label="Isotherme"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="288.60727" y="-44.90838" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1232"/> + <attvalue id="1" value="Isotherme"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1233" label="Acier Inoxydable"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="281.16034" y="-51.03637" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1233"/> + <attvalue id="1" value="Acier Inoxydable"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1234" label="Jacques Nougier"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="39.78558" y="111.95066" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1234"/> + <attvalue id="1" value="Jacques Nougier"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1235" label="James Bay"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-130.70062" y="280.19507" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1235"/> + <attvalue id="1" value="James Bay"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1236" label="James Clark Ross"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="14.392242" y="156.62032" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1236"/> + <attvalue id="1" value="James Clark Ross"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1237" label="Jan Mayen"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-167.46341" y="227.30162" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1237"/> + <attvalue id="1" value="Jan Mayen"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1238" label="Active Volcano"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-177.94188" y="216.87575" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1238"/> + <attvalue id="1" value="Active Volcano"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1239" label="Mayen Islands"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-176.25925" y="234.88533" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1239"/> + <attvalue id="1" value="Mayen Islands"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1240" label="Meteorological Station"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-173.4815" y="237.24718" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1240"/> + <attvalue id="1" value="Meteorological Station"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1241" label="Volcanic Islands"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-180.88123" y="229.50581" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1241"/> + <attvalue id="1" value="Volcanic Islands"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1242" label="Jaures Medvedev"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-12.116724" y="-147.36925" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1242"/> + <attvalue id="1" value="Jaures Medvedev"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1243" label="Jean Lemire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="44.274124" y="22.192984" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1243"/> + <attvalue id="1" value="Jean Lemire"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1244" label="Jean-Louis Etienne"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="26.417501" y="7.8515735" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1244"/> + <attvalue id="1" value="Jean-Louis Etienne"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1245" label="Johannesburg 2002."> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-33.710102" y="15.021998" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1245"/> + <attvalue id="1" value="Johannesburg 2002."/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1246" label="Sommet De Johannesburg"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="27.72227" y="-87.96908" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1246"/> + <attvalue id="1" value="Sommet De Johannesburg"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1247" label="Joik"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-196.90141" y="257.18195" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1247"/> + <attvalue id="1" value="Joik"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1248" label="Sami Language"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-210.6946" y="272.3805" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n1248"/> + <attvalue id="1" value="Sami Language"/> + <attvalue id="2" value="8"/> + </attvalues> + </node> + <node id="1249" label="Sami People"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-204.87747" y="275.13687" z="0.0"/> + <viz:size value="3.7813334"/> + <attvalues> + <attvalue id="0" value="n1249"/> + <attvalue id="1" value="Sami People"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="1250" label="Josée Auclair"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-63.728165" y="218.17847" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1250"/> + <attvalue id="1" value="Josée Auclair"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1251" label="Adrian Flanagan"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-65.12895" y="234.96983" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1251"/> + <attvalue id="1" value="Adrian Flanagan"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1252" label="Team North"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-58.294" y="237.1975" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1252"/> + <attvalue id="1" value="Team North"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1253" label="Ward Hunt Island"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-51.004047" y="202.54681" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1253"/> + <attvalue id="1" value="Ward Hunt Island"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1254" label="Joseph-Elzéar Bernier (1852-1934)"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-19.40261" y="3.6788108" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1254"/> + <attvalue id="1" value="Joseph-Elzéar Bernier (1852-1934)"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1255" label="Journal De Bord"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-31.860699" y="-13.219838" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1255"/> + <attvalue id="1" value="Journal De Bord"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1256" label="Journée Mondiale De La Biodiversité"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="33.464333" y="-118.60332" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1256"/> + <attvalue id="1" value="Journée Mondiale De La Biodiversité"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1257" label="Kara"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-111.81175" y="47.56672" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1257"/> + <attvalue id="1" value="Kara"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1258" label="Kativik School"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-140.64247" y="300.35498" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1258"/> + <attvalue id="1" value="Kativik School"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1259" label="Makivik Corporation"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-137.57477" y="302.51025" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1259"/> + <attvalue id="1" value="Makivik Corporation"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1260" label="Kennedy Channel"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-107.55637" y="139.92773" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1260"/> + <attvalue id="1" value="Kennedy Channel"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1261" label="Konungariket Sverige"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-118.35364" y="90.4583" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1261"/> + <attvalue id="1" value="Konungariket Sverige"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1262" label="Observatoire Des Sciences"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="181.93895" y="35.635715" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1262"/> + <attvalue id="1" value="Observatoire Des Sciences"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1263" label="Laboratoire De Météorologie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="155.07974" y="-26.801643" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1263"/> + <attvalue id="1" value="Laboratoire De Météorologie"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1264" label="Laboratoire De Physique Statistique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="48.90405" y="30.309519" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1264"/> + <attvalue id="1" value="Laboratoire De Physique Statistique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1265" label="Planck Institute"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="186.38322" y="20.100435" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1265"/> + <attvalue id="1" value="Planck Institute"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1266" label="Lac Baikal"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-7.653023" y="-93.14033" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1266"/> + <attvalue id="1" value="Lac Baikal"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1267" label="Lac Inari"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-56.29468" y="-28.593369" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1267"/> + <attvalue id="1" value="Lac Inari"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1268" label="Lac Vostok"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="90.28125" y="-4.798851" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1268"/> + <attvalue id="1" value="Lac Vostok"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1269" label="Lacs Sous-Glaciaires"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="81.9069" y="37.771408" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1269"/> + <attvalue id="1" value="Lacs Sous-Glaciaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1270" label="Advanced Science"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="93.22053" y="57.953682" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1270"/> + <attvalue id="1" value="Advanced Science"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1271" label="Lagopède"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-41.22034" y="-47.95809" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1271"/> + <attvalue id="1" value="Lagopède"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1272" label="Langue Scandinave"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-95.58885" y="-86.036545" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1272"/> + <attvalue id="1" value="Langue Scandinave"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1273" label="Lapon"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-159.14148" y="8.6603565" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1273"/> + <attvalue id="1" value="Lapon"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1274" label="Cargo Ship"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-176.16505" y="6.2932606" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1274"/> + <attvalue id="1" value="Cargo Ship"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1275" label="Castors Lapons"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-136.33653" y="-24.56774" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1275"/> + <attvalue id="1" value="Castors Lapons"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1276" label="Laponie"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-65.30906" y="-32.91341" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1276"/> + <attvalue id="1" value="Laponie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1277" label="Lapons"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-82.59002" y="-52.818867" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1277"/> + <attvalue id="1" value="Lapons"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1278" label="Lappland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-175.13477" y="182.81769" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1278"/> + <attvalue id="1" value="Lappland"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1279" label="Reindeer Herding"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-185.18922" y="259.35645" z="0.0"/> + <viz:size value="3.7595146"/> + <attvalues> + <attvalue id="0" value="n1279"/> + <attvalue id="1" value="Reindeer Herding"/> + <attvalue id="2" value="11"/> + </attvalues> + </node> + <node id="1280" label="Latitude 66° 33'N,1"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="39.013645" y="-56.489895" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1280"/> + <attvalue id="1" value="Latitude 66° 33'N,1"/> + </attvalues> + </node> + <node id="1281" label="Lávvu"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-219.32762" y="259.6753" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1281"/> + <attvalue id="1" value="Lávvu"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1282" label="Sami Culture"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-210.2012" y="267.59824" z="0.0"/> + <viz:size value="3.7389054"/> + <attvalues> + <attvalue id="0" value="n1282"/> + <attvalue id="1" value="Sami Culture"/> + <attvalue id="2" value="10"/> + </attvalues> + </node> + <node id="1283" label="Scandinavian Peninsula"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-204.97835" y="227.90112" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1283"/> + <attvalue id="1" value="Scandinavian Peninsula"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1284" label="Economic Zone"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-68.44543" y="-30.757973" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1284"/> + <attvalue id="1" value="Economic Zone"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1285" label="Le Fram"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-0.08158698" y="88.9964" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1285"/> + <attvalue id="1" value="Le Fram"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1286" label="Légendaire Passage"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="38.556297" y="-30.469696" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1286"/> + <attvalue id="1" value="Légendaire Passage"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1287" label="Observatoire De Greenwich"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="121.86253" y="-14.774884" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1287"/> + <attvalue id="1" value="Observatoire De Greenwich"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1288" label="Lemming"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-105.80444" y="202.56387" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1288"/> + <attvalue id="1" value="Lemming"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1289" label="Rayon De Soleil"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="176.30717" y="-120.403465" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1289"/> + <attvalue id="1" value="Rayon De Soleil"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1290" label="Lgge"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-8.069045" y="157.80217" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1290"/> + <attvalue id="1" value="Lgge"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1291" label="Renard Arctique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-52.475925" y="-81.091286" z="0.0"/> + <viz:size value="3.701466"/> + <attvalues> + <attvalue id="0" value="n1291"/> + <attvalue id="1" value="Renard Arctique"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1292" label="Renard Polaire"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-61.59338" y="-83.31949" z="0.0"/> + <viz:size value="3.7195435"/> + <attvalues> + <attvalue id="0" value="n1292"/> + <attvalue id="1" value="Renard Polaire"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1293" label="Ligne De Champ"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="48.133938" y="60.396675" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1293"/> + <attvalue id="1" value="Ligne De Champ"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1294" label="Limite Des 200 Miles Marins"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-3.8665667" y="-75.574" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1294"/> + <attvalue id="1" value="Limite Des 200 Miles Marins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1295" label="Liquide De Refroidissement"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="256.52844" y="-70.19389" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1295"/> + <attvalue id="1" value="Liquide De Refroidissement"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1296" label="Lisière De La Glace"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="19.757113" y="-66.053" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1296"/> + <attvalue id="1" value="Lisière De La Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1297" label="Lng Carrier"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-228.58818" y="110.084724" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1297"/> + <attvalue id="1" value="Lng Carrier"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1298" label="L'Océan Glacial Arctique,1"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="4.947899" y="-33.42706" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1298"/> + <attvalue id="1" value="L'Océan Glacial Arctique,1"/> + </attvalues> + </node> + <node id="1299" label="Logistique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="127.67177" y="-255.75563" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1299"/> + <attvalue id="1" value="Logistique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1300" label="Chaîne Logistique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="129.65399" y="-280.88092" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1300"/> + <attvalue id="1" value="Chaîne Logistique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1301" label="Transport De Marchandises"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="97.308105" y="-276.50626" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1301"/> + <attvalue id="1" value="Transport De Marchandises"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1302" label="Transport Logistique"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="121.97594" y="-283.31226" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1302"/> + <attvalue id="1" value="Transport Logistique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1303" label="Mecanique Des Milieux Continus"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="301.75473" y="41.824867" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1303"/> + <attvalue id="1" value="Mecanique Des Milieux Continus"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1304" label="Lomrog"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-23.005623" y="150.73598" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1304"/> + <attvalue id="1" value="Lomrog"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1305" label="Nuclear Icebreaker"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-69.91319" y="201.98035" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1305"/> + <attvalue id="1" value="Nuclear Icebreaker"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1306" label="Longues Distances"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-251.6836" y="-122.08058" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1306"/> + <attvalue id="1" value="Longues Distances"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1307" label="Loup"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-15.832295" y="-91.96168" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1307"/> + <attvalue id="1" value="Loup"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1308" label="Canis Lupus"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-36.274113" y="-59.62677" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1308"/> + <attvalue id="1" value="Canis Lupus"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1309" label="Lumière Solaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="153.09926" y="-116.2502" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1309"/> + <attvalue id="1" value="Lumière Solaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1310" label="Lynx"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-110.32871" y="286.64355" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1310"/> + <attvalue id="1" value="Lynx"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1311" label="Mackenzie Basin"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-197.31569" y="176.8446" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1311"/> + <attvalue id="1" value="Mackenzie Basin"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1312" label="Mackenzie Delta"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-193.66086" y="162.81738" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1312"/> + <attvalue id="1" value="Mackenzie Delta"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1313" label="Magerøya"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-143.00777" y="219.97318" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1313"/> + <attvalue id="1" value="Magerøya"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1314" label="North Cape"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-141.80214" y="217.17369" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1314"/> + <attvalue id="1" value="North Cape"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1315" label="Northern Canada"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-83.34312" y="193.2901" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1315"/> + <attvalue id="1" value="Northern Canada"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1316" label="Phoque Gris"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-23.616611" y="-123.39764" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1316"/> + <attvalue id="1" value="Phoque Gris"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1317" label="Veau Marin"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-22.83617" y="-136.17302" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1317"/> + <attvalue id="1" value="Veau Marin"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1318" label="Mammifères Marins"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-29.87543" y="-127.90888" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1318"/> + <attvalue id="1" value="Mammifères Marins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1319" label="Marcel Leroux"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="53.17835" y="-38.005314" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1319"/> + <attvalue id="1" value="Marcel Leroux"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1320" label="Marine Canadienne"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-97.89415" y="-222.19522" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1320"/> + <attvalue id="1" value="Marine Canadienne"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1321" label="Canadian Navy"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-107.18418" y="-234.75919" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1321"/> + <attvalue id="1" value="Canadian Navy"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1322" label="Marine Royale"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-109.685425" y="-232.15579" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1322"/> + <attvalue id="1" value="Marine Royale"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1323" label="Science Center"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="84.80725" y="43.48075" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1323"/> + <attvalue id="1" value="Science Center"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1324" label="Ocean Floor"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-89.66768" y="141.09703" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1324"/> + <attvalue id="1" value="Ocean Floor"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1325" label="Masse Glaciaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="70.12861" y="-20.073906" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1325"/> + <attvalue id="1" value="Masse Glaciaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1326" label="Mbep/J"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-50.45342" y="-178.68956" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1326"/> + <attvalue id="1" value="Mbep/J"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1327" label="Sable Bitumineux"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-5.9566464" y="-151.6962" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1327"/> + <attvalue id="1" value="Sable Bitumineux"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1328" label="Bénéfice Net"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-68.773575" y="-197.39673" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1328"/> + <attvalue id="1" value="Bénéfice Net"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1329" label="Régions Pétrolières"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-50.590828" y="-158.52037" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1329"/> + <attvalue id="1" value="Régions Pétrolières"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1330" label="Mecanique Des Roches"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="264.78763" y="40.578304" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1330"/> + <attvalue id="1" value="Mecanique Des Roches"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1331" label="Menace"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-188.29231" y="2.6505294" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1331"/> + <attvalue id="1" value="Menace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1332" label="Menacer"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="5.842285" y="-120.904945" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1332"/> + <attvalue id="1" value="Menacer"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1333" label="Mendeleïev"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="174.28793" y="-169.63875" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1333"/> + <attvalue id="1" value="Mendeleïev"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1334" label="Mer Baltique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-63.328987" y="-103.80901" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1334"/> + <attvalue id="1" value="Mer Baltique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1335" label="Klavdij Sluban"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-84.0866" y="-116.00629" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1335"/> + <attvalue id="1" value="Klavdij Sluban"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1336" label="Mer De Beaufort"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-24.6798" y="-3.4702227" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1336"/> + <attvalue id="1" value="Mer De Beaufort"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1337" label="Mer De Béring"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-45.33215" y="-62.892723" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1337"/> + <attvalue id="1" value="Mer De Béring"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1338" label="Coast Guards"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-58.108322" y="-66.380135" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1338"/> + <attvalue id="1" value="Coast Guards"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1339" label="Mer De Laptev"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="15.814945" y="-28.404478" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1339"/> + <attvalue id="1" value="Mer De Laptev"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1340" label="Gaz Sur Surface"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="23.512419" y="-21.791773" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1340"/> + <attvalue id="1" value="Gaz Sur Surface"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1341" label="Mer De Sibérie Orientale"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="22.573748" y="-35.482468" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1341"/> + <attvalue id="1" value="Mer De Sibérie Orientale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1342" label="Mer Des Tchouktches"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-48.88926" y="-30.863642" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1342"/> + <attvalue id="1" value="Mer Des Tchouktches"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1343" label="Mer D'Okhotsk,1"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-43.73486" y="-111.55367" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1343"/> + <attvalue id="1" value="Mer D'Okhotsk,1"/> + </attvalues> + </node> + <node id="1344" label="Mer Gelée"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="129.15807" y="-54.497234" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1344"/> + <attvalue id="1" value="Mer Gelée"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1345" label="Mer Polaire Ouverte"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="9.72892" y="109.73051" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1345"/> + <attvalue id="1" value="Mer Polaire Ouverte"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1346" label="Mesures Conservatoires Et Compensatoires"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="21.550047" y="-70.79325" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1346"/> + <attvalue id="1" value="Mesures Conservatoires Et Compensatoires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1347" label="Météorologie"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="151.64095" y="13.154989" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1347"/> + <attvalue id="1" value="Météorologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1348" label="Meteorologie Aeronautique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="206.31284" y="-32.18474" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1348"/> + <attvalue id="1" value="Meteorologie Aeronautique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1349" label="Méthane"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-78.57782" y="141.16943" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1349"/> + <attvalue id="1" value="Méthane"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1350" label="Methane Gas"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-75.63095" y="149.5873" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1350"/> + <attvalue id="1" value="Methane Gas"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1351" label="Méthanier"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="11.039822" y="-171.93321" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1351"/> + <attvalue id="1" value="Méthanier"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1352" label="Méthode Merise"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="156.3715" y="-157.45311" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1352"/> + <attvalue id="1" value="Méthode Merise"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1353" label="Migration Des Rennes"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-64.54981" y="-64.25144" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1353"/> + <attvalue id="1" value="Migration Des Rennes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1354" label="Migrations"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-162.54218" y="129.50073" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1354"/> + <attvalue id="1" value="Migrations"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1355" label="Mikhail Malakhov"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-66.26152" y="209.61197" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1355"/> + <attvalue id="1" value="Mikhail Malakhov"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1356" label="Naomi Uemura"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-117.53285" y="231.31998" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1356"/> + <attvalue id="1" value="Naomi Uemura"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1357" label="Pressure Ridge"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-32.846313" y="227.16689" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1357"/> + <attvalue id="1" value="Pressure Ridge"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1358" label="Nappe Souterraine"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="62.53723" y="-209.39699" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1358"/> + <attvalue id="1" value="Nappe Souterraine"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1359" label="Milieu Polaire"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="32.324894" y="-10.787503" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1359"/> + <attvalue id="1" value="Milieu Polaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1360" label="Zone Polaire"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="38.17083" y="3.8396041" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1360"/> + <attvalue id="1" value="Zone Polaire"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1361" label="Missiles Balistiques"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-90.039215" y="-157.87053" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1361"/> + <attvalue id="1" value="Missiles Balistiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1362" label="Modèles Climatiques"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="103.76931" y="-68.32643" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1362"/> + <attvalue id="1" value="Modèles Climatiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1363" label="Modèles Climatiques Informatiques"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="34.68364" y="35.325844" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1363"/> + <attvalue id="1" value="Modèles Climatiques Informatiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1364" label="Vitesse De Derive"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="58.583275" y="42.636482" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1364"/> + <attvalue id="1" value="Vitesse De Derive"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1365" label="Modelés Glaciaires"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="55.88634" y="-66.31708" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1365"/> + <attvalue id="1" value="Modelés Glaciaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1366" label="Modifications Futures"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-34.39453" y="-147.41057" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1366"/> + <attvalue id="1" value="Modifications Futures"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1367" label="Pcgr Du Canada"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-65.00033" y="-188.38902" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1367"/> + <attvalue id="1" value="Pcgr Du Canada"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1368" label="Moraines"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-46.43062" y="197.21031" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1368"/> + <attvalue id="1" value="Moraines"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1369" label="Morses"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-158.65225" y="14.874516" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1369"/> + <attvalue id="1" value="Morses"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1370" label="Natural Resources Commission"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-175.06422" y="10.810171" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1370"/> + <attvalue id="1" value="Natural Resources Commission"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1371" label="Steve Morse"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-171.27527" y="13.794815" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1371"/> + <attvalue id="1" value="Steve Morse"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1372" label="Morue De L'Atlantique,1"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-0.11693059" y="-118.5008" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1372"/> + <attvalue id="1" value="Morue De L'Atlantique,1"/> + </attvalues> + </node> + <node id="1373" label="Thon Rouge"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="22.160717" y="-147.17416" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1373"/> + <attvalue id="1" value="Thon Rouge"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1374" label="Morue Polaire"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="10.004211" y="-85.42298" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1374"/> + <attvalue id="1" value="Morue Polaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1375" label="Mourmansk"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-103.21715" y="-50.966408" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1375"/> + <attvalue id="1" value="Mourmansk"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1376" label="Nanisivik"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-130.57181" y="194.9872" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1376"/> + <attvalue id="1" value="Nanisivik"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1377" label="Baker Lake"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-140.2576" y="203.4293" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1377"/> + <attvalue id="1" value="Baker Lake"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1378" label="Nanisivik Mine"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-124.63177" y="215.23793" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1378"/> + <attvalue id="1" value="Nanisivik Mine"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1379" label="Nappe Phréatique"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="74.12424" y="-192.57927" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1379"/> + <attvalue id="1" value="Nappe Phréatique"/> + <attvalue id="2" value="7"/> + </attvalues> + </node> + <node id="1380" label="Nappes"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="73.61884" y="-218.31403" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1380"/> + <attvalue id="1" value="Nappes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1381" label="Narvik"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-175.59421" y="221.51042" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1381"/> + <attvalue id="1" value="Narvik"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1382" label="National Energy Technology"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-96.18317" y="120.334465" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1382"/> + <attvalue id="1" value="National Energy Technology"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1383" label="National Snow And Ice Data Center"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-9.163226" y="190.3611" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1383"/> + <attvalue id="1" value="National Snow And Ice Data Center"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1384" label="Bald Eagle"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-215.44064" y="36.563663" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1384"/> + <attvalue id="1" value="Bald Eagle"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1385" label="Natural World"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-64.791725" y="85.54415" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1385"/> + <attvalue id="1" value="Natural World"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1386" label="Natural Sciences"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="84.892746" y="29.23261" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1386"/> + <attvalue id="1" value="Natural Sciences"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1387" label="Nature"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-76.808334" y="90.83092" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1387"/> + <attvalue id="1" value="Nature"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1388" label="Nature Center"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-69.062164" y="88.92879" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1388"/> + <attvalue id="1" value="Nature Center"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1389" label="Nature Photography"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-134.02661" y="128.7739" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1389"/> + <attvalue id="1" value="Nature Photography"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1390" label="Nature Chimique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="216.63037" y="-117.976364" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1390"/> + <attvalue id="1" value="Nature Chimique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1391" label="Navigation"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="24.27197" y="371.88556" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1391"/> + <attvalue id="1" value="Navigation"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1392" label="Navigation Company"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="26.33214" y="377.86423" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1392"/> + <attvalue id="1" value="Navigation Company"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1393" label="Navigation Maritime"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="102.252686" y="14.297058" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1393"/> + <attvalue id="1" value="Navigation Maritime"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1394" label="Communique De Presse"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="20.03123" y="-208.89899" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1394"/> + <attvalue id="1" value="Communique De Presse"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1395" label="Navire Océanographique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="88.88988" y="-35.3106" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1395"/> + <attvalue id="1" value="Navire Océanographique"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1396" label="Netherlands Institute"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="29.863768" y="53.033993" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1396"/> + <attvalue id="1" value="Netherlands Institute"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1397" label="Nombreux Polluants"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="115.57656" y="-173.28294" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1397"/> + <attvalue id="1" value="Nombreux Polluants"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1398" label="Nord"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-122.5348" y="-51.92808" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1398"/> + <attvalue id="1" value="Nord"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1399" label="Science Nord"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-140.67096" y="-58.299454" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1399"/> + <attvalue id="1" value="Science Nord"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1400" label="University Of Northern British"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-142.15358" y="-55.41693" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1400"/> + <attvalue id="1" value="University Of Northern British"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1401" label="Nord Du Canada"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-16.45748" y="-44.659824" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1401"/> + <attvalue id="1" value="Nord Du Canada"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1402" label="Russia To Germany"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-192.03041" y="43.507805" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1402"/> + <attvalue id="1" value="Russia To Germany"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1403" label="Norsk Hydro"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-247.6109" y="101.73511" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1403"/> + <attvalue id="1" value="Norsk Hydro"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1404" label="Norwegian Oil"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-242.53612" y="104.19917" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1404"/> + <attvalue id="1" value="Norwegian Oil"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1405" label="North Greenland"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-41.087624" y="193.31119" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1405"/> + <attvalue id="1" value="North Greenland"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1406" label="North Pole Dash"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-56.407387" y="211.51898" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1406"/> + <attvalue id="1" value="North Pole Dash"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1407" label="Northern Hemisphere"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-46.329853" y="204.7903" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1407"/> + <attvalue id="1" value="Northern Hemisphere"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1408" label="Surface Temperature"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-17.435051" y="177.4752" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1408"/> + <attvalue id="1" value="Surface Temperature"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1409" label="Northern Sami"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-214.03844" y="282.8344" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1409"/> + <attvalue id="1" value="Northern Sami"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1410" label="West Passage"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-80.22615" y="204.17532" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1410"/> + <attvalue id="1" value="West Passage"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1411" label="Norvège"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-101.444725" y="-68.57061" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1411"/> + <attvalue id="1" value="Norvège"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1412" label="Norway"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-242.51868" y="187.86623" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1412"/> + <attvalue id="1" value="Norway"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1413" label="Norwegian Government"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-256.5595" y="278.8505" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1413"/> + <attvalue id="1" value="Norwegian Government"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1414" label="Norwegian National"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-254.41586" y="281.5027" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1414"/> + <attvalue id="1" value="Norwegian National"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1415" label="Norwegian Navy"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-61.96017" y="223.73154" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1415"/> + <attvalue id="1" value="Norwegian Navy"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1416" label="Norwegian Polar Institute"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-61.316837" y="174.89146" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1416"/> + <attvalue id="1" value="Norwegian Polar Institute"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1417" label="Nouvel Environnement"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="173.56642" y="-184.67691" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1417"/> + <attvalue id="1" value="Nouvel Environnement"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1418" label="Nouvelles Routes Commerciales"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-27.710829" y="-104.03358" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1418"/> + <attvalue id="1" value="Nouvelles Routes Commerciales"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1419" label="Progres Technique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="0.9564741" y="-158.44106" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1419"/> + <attvalue id="1" value="Progres Technique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1420" label="Nouvelle-Zemble"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-22.128826" y="-61.785393" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1420"/> + <attvalue id="1" value="Nouvelle-Zemble"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1421" label="Nsidc"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-4.5673623" y="183.48824" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1421"/> + <attvalue id="1" value="Nsidc"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1422" label="Ice News"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="4.317279" y="200.78265" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1422"/> + <attvalue id="1" value="Ice News"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1423" label="Nunavik"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-141.7643" y="304.734" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1423"/> + <attvalue id="1" value="Nunavik"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1424" label="Quebec Government"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-144.30644" y="314.0606" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1424"/> + <attvalue id="1" value="Quebec Government"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1425" label="Ungava Bay"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-134.24113" y="275.8498" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1425"/> + <attvalue id="1" value="Ungava Bay"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1426" label="Nunavut"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-146.92471" y="193.60275" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1426"/> + <attvalue id="1" value="Nunavut"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1427" label="Observation Satellitaire"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="54.6139" y="-33.12381" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1427"/> + <attvalue id="1" value="Observation Satellitaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1428" label="Observation Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="68.42197" y="141.47429" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1428"/> + <attvalue id="1" value="Observation Satellite"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1429" label="Philosophie De La Science"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="84.34492" y="-26.150179" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1429"/> + <attvalue id="1" value="Philosophie De La Science"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1430" label="Remote Operated Vehicle"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="57.275898" y="170.78024" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1430"/> + <attvalue id="1" value="Remote Operated Vehicle"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1431" label="Océanographie"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="100.37219" y="-17.657925" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1431"/> + <attvalue id="1" value="Océanographie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1432" label="Oceanographie Physique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="104.446" y="-30.525038" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1432"/> + <attvalue id="1" value="Oceanographie Physique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1433" label="Océans"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-48.85828" y="148.0177" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1433"/> + <attvalue id="1" value="Océans"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1434" label="Petroleum Product"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-245.59564" y="81.09109" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1434"/> + <attvalue id="1" value="Petroleum Product"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1435" label="Oléoducs"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-32.944866" y="-138.52527" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1435"/> + <attvalue id="1" value="Oléoducs"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1436" label="Onu"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-133.87148" y="14.802994" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1436"/> + <attvalue id="1" value="Onu"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1437" label="Northern University"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="-148.49246" y="12.740207" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1437"/> + <attvalue id="1" value="Northern University"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1438" label="Opportunité"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-143.83434" y="-67.54198" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1438"/> + <attvalue id="1" value="Opportunité"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1439" label="Carrefour Internet"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-160.6235" y="-72.57581" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1439"/> + <attvalue id="1" value="Carrefour Internet"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1440" label="Style De Vie"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-97.196594" y="-53.259014" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1440"/> + <attvalue id="1" value="Style De Vie"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1441" label="Organisation Nations Unies"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-52.5636" y="-15.32151" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1441"/> + <attvalue id="1" value="Organisation Nations Unies"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1442" label="United Nations"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-47.990803" y="17.130857" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1442"/> + <attvalue id="1" value="United Nations"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1443" label="Origine Humaine"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="57.218586" y="-93.83041" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1443"/> + <attvalue id="1" value="Origine Humaine"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1444" label="Otan"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-43.990204" y="-65.432" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1444"/> + <attvalue id="1" value="Otan"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1445" label="Atlantic Treaty Organization"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-66.97815" y="-75.40181" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1445"/> + <attvalue id="1" value="Atlantic Treaty Organization"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1446" label="Otaries"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="26.334435" y="-201.10745" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1446"/> + <attvalue id="1" value="Otaries"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1447" label="Cape Cross"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="22.727888" y="-222.23883" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1447"/> + <attvalue id="1" value="Cape Cross"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1448" label="Otto Neumann Sverdrup"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-97.65593" y="227.54655" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1448"/> + <attvalue id="1" value="Otto Neumann Sverdrup"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1449" label="Brown Bear"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-82.73812" y="-68.27696" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1449"/> + <attvalue id="1" value="Brown Bear"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1451" label="Polar Bear"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-27.128325" y="120.691734" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1451"/> + <attvalue id="1" value="Polar Bear"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1452" label="Ouverture Du Passage Du Nord-Ouest"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="3.1332188" y="-30.697699" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1452"/> + <attvalue id="1" value="Ouverture Du Passage Du Nord-Ouest"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1453" label="Pack"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-118.487595" y="23.645233" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1453"/> + <attvalue id="1" value="Pack"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1454" label="Sammy Davis"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-117.05306" y="17.108341" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1454"/> + <attvalue id="1" value="Sammy Davis"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1455" label="Paleoclimatologie"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="128.74216" y="-59.298954" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1455"/> + <attvalue id="1" value="Paleoclimatologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1456" label="Palses"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="30.43675" y="-60.95661" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1456"/> + <attvalue id="1" value="Palses"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1457" label="Papanine"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="7.0527716" y="35.03755" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1457"/> + <attvalue id="1" value="Papanine"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1458" label="Parc National Wapusk"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="11.677731" y="-101.46759" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1458"/> + <attvalue id="1" value="Parc National Wapusk"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1459" label="Passage Du Nord-Ouest"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-11.506631" y="-38.140316" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1459"/> + <attvalue id="1" value="Passage Du Nord-Ouest"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1460" label="Passage International"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-149.51616" y="17.00202" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1460"/> + <attvalue id="1" value="Passage International"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1461" label="Safe Passage"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-131.21599" y="17.082447" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1461"/> + <attvalue id="1" value="Safe Passage"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1462" label="Passage Kennedy"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-138.12267" y="151.6287" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1462"/> + <attvalue id="1" value="Passage Kennedy"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1463" label="Judd Gregg"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-149.6478" y="155.46066" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1463"/> + <attvalue id="1" value="Judd Gregg"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1464" label="Paysages Naturels"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="81.99139" y="-207.35197" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1464"/> + <attvalue id="1" value="Paysages Naturels"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1465" label="Pêche Lac"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="112.52046" y="-126.66222" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1465"/> + <attvalue id="1" value="Pêche Lac"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1466" label="Peninsule De Kola"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-33.822605" y="-101.9014" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1466"/> + <attvalue id="1" value="Peninsule De Kola"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1467" label="Péninsule Tchouktche"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="2.2084367" y="-89.85928" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1467"/> + <attvalue id="1" value="Péninsule Tchouktche"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1468" label="Pergélisol"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="65.94463" y="-37.513824" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1468"/> + <attvalue id="1" value="Pergélisol"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1469" label="Période Du Quaternaire"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="109.8324" y="-32.931698" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1469"/> + <attvalue id="1" value="Période Du Quaternaire"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1470" label="Périodes Interglaciaires"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="105.71034" y="-65.19949" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1470"/> + <attvalue id="1" value="Périodes Interglaciaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1471" label="Perte De Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="46.334126" y="-35.407764" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1471"/> + <attvalue id="1" value="Perte De Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1472" label="Perte De Sol"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="107.02984" y="-193.28893" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1472"/> + <attvalue id="1" value="Perte De Sol"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1473" label="Plante Fourragère"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="116.17803" y="-212.23016" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1473"/> + <attvalue id="1" value="Plante Fourragère"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1474" label="Terre Arable"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="57.076195" y="-207.05434" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1474"/> + <attvalue id="1" value="Terre Arable"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1475" label="Perturbation"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="-17.839191" y="276.73026" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1475"/> + <attvalue id="1" value="Perturbation"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1476" label="Planetary Orbit"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="-14.490362" y="274.48834" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1476"/> + <attvalue id="1" value="Planetary Orbit"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1477" label="Pétrole"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-41.037964" y="-117.2791" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1477"/> + <attvalue id="1" value="Pétrole"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1478" label="Phénomène Naturel"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="136.92554" y="-137.14415" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1478"/> + <attvalue id="1" value="Phénomène Naturel"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1479" label="Phoque Moine"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="18.602654" y="-120.93099" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1479"/> + <attvalue id="1" value="Phoque Moine"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1480" label="Phoques"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-19.377468" y="-140.50021" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1480"/> + <attvalue id="1" value="Phoques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1481" label="Photographies"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="199.06314" y="-149.51561" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1481"/> + <attvalue id="1" value="Photographies"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1482" label="Physical Oceanography"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="43.375854" y="135.01685" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1482"/> + <attvalue id="1" value="Physical Oceanography"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1483" label="Physique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="203.79866" y="2.7912462" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1483"/> + <attvalue id="1" value="Physique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1484" label="Physique Appliquée"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="257.218" y="22.098316" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1484"/> + <attvalue id="1" value="Physique Appliquée"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1485" label="Phytoplancton"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="61.012203" y="-96.20949" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1485"/> + <attvalue id="1" value="Phytoplancton"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1486" label="Pigb"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="34.935898" y="-21.547876" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1486"/> + <attvalue id="1" value="Pigb"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1487" label="Pingos"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-47.526188" y="191.17053" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1487"/> + <attvalue id="1" value="Pingos"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1488" label="Hydrostatic Pressure"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-44.427483" y="213.71819" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1488"/> + <attvalue id="1" value="Hydrostatic Pressure"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1489" label="Pipe Line"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-251.70804" y="77.411026" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1489"/> + <attvalue id="1" value="Pipe Line"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1490" label="Pipkrakes"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="46.835224" y="-88.9594" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1490"/> + <attvalue id="1" value="Pipkrakes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1491" label="Planet In Peril"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-73.480804" y="80.79087" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1491"/> + <attvalue id="1" value="Planet In Peril"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1492" label="Planète"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="129.74605" y="-83.04892" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1492"/> + <attvalue id="1" value="Planète"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1493" label="Planète Terre"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="106.02792" y="-37.86129" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1493"/> + <attvalue id="1" value="Planète Terre"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1494" label="Produit Derive"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="139.6879" y="-84.87167" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1494"/> + <attvalue id="1" value="Produit Derive"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1495" label="Plateau Continental En Arctique"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-5.2124677" y="-179.49872" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1495"/> + <attvalue id="1" value="Plateau Continental En Arctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1496" label="Gabriel Wackermann"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-9.7644615" y="-201.30151" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1496"/> + <attvalue id="1" value="Gabriel Wackermann"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1497" label="Plateformes"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="165.99457" y="-143.58278" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1497"/> + <attvalue id="1" value="Plateformes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1498" label="Plateformes De Forage"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-3.7431407" y="-184.14746" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1498"/> + <attvalue id="1" value="Plateformes De Forage"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1499" label="Plate-Formes Offshore"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-9.514167" y="-137.87482" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1499"/> + <attvalue id="1" value="Plate-Formes Offshore"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1500" label="Plongée Inédite"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-123.05539" y="-27.51474" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1500"/> + <attvalue id="1" value="Plongée Inédite"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1501" label="Plusieurs Expéditions"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="24.107204" y="32.62527" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1501"/> + <attvalue id="1" value="Plusieurs Expéditions"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1502" label="Ile Wake"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="26.756231" y="47.34407" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1502"/> + <attvalue id="1" value="Ile Wake"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1503" label="Pmrc"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-105.46262" y="32.85705" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1503"/> + <attvalue id="1" value="Pmrc"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1504" label="Point De Non-Retour"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="65.00945" y="-35.128075" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1504"/> + <attvalue id="1" value="Point De Non-Retour"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1505" label="Polar Bridge"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-43.96263" y="162.19989" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1505"/> + <attvalue id="1" value="Polar Bridge"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1506" label="Russia To Canada"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-73.45472" y="156.6171" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1506"/> + <attvalue id="1" value="Russia To Canada"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1507" label="Polarstern"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="3.499456" y="136.64548" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1507"/> + <attvalue id="1" value="Polarstern"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1508" label="German Research"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="14.125769" y="146.96542" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1508"/> + <attvalue id="1" value="German Research"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1509" label="Pôle Nord Géomagnétique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="33.416172" y="88.5485" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1509"/> + <attvalue id="1" value="Pôle Nord Géomagnétique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1510" label="Pôle Nord Magnétique"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="53.09284" y="68.102234" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1510"/> + <attvalue id="1" value="Pôle Nord Magnétique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1511" label="Politique"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-0.9065794" y="-169.23764" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1511"/> + <attvalue id="1" value="Politique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1512" label="Politique International"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-54.411316" y="-98.24991" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1512"/> + <attvalue id="1" value="Politique International"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1513" label="Polluant Secondaire"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="157.6692" y="-137.30602" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1513"/> + <attvalue id="1" value="Polluant Secondaire"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1514" label="Pollution"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="-154.81262" y="103.28114" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1514"/> + <attvalue id="1" value="Pollution"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1515" label="Water Pollution"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="-153.86987" y="96.32725" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1515"/> + <attvalue id="1" value="Water Pollution"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1516" label="Light Pollution"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="-168.236" y="104.5713" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1516"/> + <attvalue id="1" value="Light Pollution"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1517" label="Pollution Control"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="-149.91238" y="105.23246" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1517"/> + <attvalue id="1" value="Pollution Control"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1518" label="Pollution Prevention"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="-149.50143" y="77.49832" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1518"/> + <attvalue id="1" value="Pollution Prevention"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1519" label="Pollutions Localisées"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="44.07951" y="-47.28155" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1519"/> + <attvalue id="1" value="Pollutions Localisées"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1520" label="Polycristal"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="257.04953" y="-31.451788" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1520"/> + <attvalue id="1" value="Polycristal"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1521" label="Science Des Materiaux"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="271.10553" y="-28.067331" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1521"/> + <attvalue id="1" value="Science Des Materiaux"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1522" label="Population"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-101.745636" y="37.834538" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1522"/> + <attvalue id="1" value="Population"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1523" label="Port En Eau Profonde"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="6.9530826" y="-211.75775" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1523"/> + <attvalue id="1" value="Port En Eau Profonde"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1524" label="Port Ouest"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-55.65863" y="-212.05449" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1524"/> + <attvalue id="1" value="Port Ouest"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1525" label="Poussée D'Archimède,1"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="330.27866" y="98.21726" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1525"/> + <attvalue id="1" value="Poussée D'Archimède,1"/> + </attvalues> + </node> + <node id="1526" label="Loi De Newton"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="299.6185" y="80.311935" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1526"/> + <attvalue id="1" value="Loi De Newton"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1527" label="Vitesse Limite"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="336.5227" y="100.72445" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1527"/> + <attvalue id="1" value="Vitesse Limite"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1528" label="Centre De Gravité"> + <viz:color b="0" g="255" r="255"/> + <viz:position x="334.68042" y="103.48732" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1528"/> + <attvalue id="1" value="Centre De Gravité"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1529" label="Præsidium Du Soviet Suprême De L'Urss,1"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-70.60809" y="-176.28575" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1529"/> + <attvalue id="1" value="Præsidium Du Soviet Suprême De L'Urss,1"/> + </attvalues> + </node> + <node id="1530" label="Précipitations Faibles"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="153.06625" y="-63.043007" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1530"/> + <attvalue id="1" value="Précipitations Faibles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1531" label="Préfabriqués"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="293.8102" y="59.877686" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1531"/> + <attvalue id="1" value="Préfabriqués"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1532" label="Prélèvement"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="52.02199" y="-260.81873" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1532"/> + <attvalue id="1" value="Prélèvement"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1533" label="Empreinte Génétique"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="51.309624" y="-277.88358" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1533"/> + <attvalue id="1" value="Empreinte Génétique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1534" label="Prélever"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-15.229454" y="-207.24501" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1534"/> + <attvalue id="1" value="Prélever"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1536" label="Préoccupations Environnementales"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="98.728615" y="-164.13916" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1536"/> + <attvalue id="1" value="Préoccupations Environnementales"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1537" label="Préservation Biodiversité"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="78.88222" y="-159.51547" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1537"/> + <attvalue id="1" value="Préservation Biodiversité"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1538" label="Genetic Resources"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="84.58091" y="-188.28105" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1538"/> + <attvalue id="1" value="Genetic Resources"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1539" label="Président Carter"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-97.176994" y="19.011217" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1539"/> + <attvalue id="1" value="Président Carter"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1540" label="Presqu'Île De Kola,1"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-42.314877" y="-78.47489" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1540"/> + <attvalue id="1" value="Presqu'Île De Kola,1"/> + </attvalues> + </node> + <node id="1541" label="Systeme Meteo"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="231.80351" y="-57.276638" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1541"/> + <attvalue id="1" value="Systeme Meteo"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1542" label="Michael Llodra"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="31.84692" y="-167.48007" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1542"/> + <attvalue id="1" value="Michael Llodra"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1543" label="Profil Environnemental"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="71.586006" y="-157.14708" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1543"/> + <attvalue id="1" value="Profil Environnemental"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1544" label="Profondeur"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="89.56915" y="-154.86128" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1544"/> + <attvalue id="1" value="Profondeur"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1545" label="Programme Pluriannuel De Recherche"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="190.98694" y="-87.37292" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1545"/> + <attvalue id="1" value="Programme Pluriannuel De Recherche"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1546" label="National Maladies Rares"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="211.58363" y="-90.72086" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1546"/> + <attvalue id="1" value="National Maladies Rares"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1547" label="Recherche Sciences"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="176.04732" y="-43.090748" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1547"/> + <attvalue id="1" value="Recherche Sciences"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1548" label="Progression"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-115.54283" y="41.37124" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1548"/> + <attvalue id="1" value="Progression"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1549" label="Prospection Electromagnetique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="222.43326" y="67.900246" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1549"/> + <attvalue id="1" value="Prospection Electromagnetique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1550" label="Protection De L'Environnement,1"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="99.95114" y="-161.63524" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1550"/> + <attvalue id="1" value="Protection De L'Environnement,1"/> + </attvalues> + </node> + <node id="1551" label="Proue Surélevée"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="43.288097" y="-228.04108" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1551"/> + <attvalue id="1" value="Proue Surélevée"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1552" label="Puissances Militaires"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-63.833336" y="-161.60083" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1552"/> + <attvalue id="1" value="Puissances Militaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1553" label="Pygargue"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-57.70553" y="-77.71423" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1553"/> + <attvalue id="1" value="Pygargue"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1554" label="Quantité De Ressources Nécessaires"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="70.76042" y="-109.276566" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1554"/> + <attvalue id="1" value="Quantité De Ressources Nécessaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1555" label="Quantités D'Eau,1"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="60.58499" y="-168.9729" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1555"/> + <attvalue id="1" value="Quantités D'Eau,1"/> + </attvalues> + </node> + <node id="1556" label="Quest For The North"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-90.91545" y="163.11919" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1556"/> + <attvalue id="1" value="Quest For The North"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1557" label="Robert Peary"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-100.23176" y="179.79158" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1557"/> + <attvalue id="1" value="Robert Peary"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1558" label="Ratification"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-55.19777" y="-34.04553" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1558"/> + <attvalue id="1" value="Ratification"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1559" label="Réactions"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-243.1556" y="-8.688685" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1559"/> + <attvalue id="1" value="Réactions"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1560" label="Réchauffement Différentiel"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="176.91805" y="-32.0076" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1560"/> + <attvalue id="1" value="Réchauffement Différentiel"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1561" label="Vent Geostrophique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="180.83018" y="-27.415653" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1561"/> + <attvalue id="1" value="Vent Geostrophique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1562" label="Recherche"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="177.96924" y="-92.30477" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1562"/> + <attvalue id="1" value="Recherche"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1563" label="Recherche Aux Pôles"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="127.22571" y="24.286663" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1563"/> + <attvalue id="1" value="Recherche Aux Pôles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1564" label="Astronomie De Lyon"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="143.3892" y="36.67402" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1564"/> + <attvalue id="1" value="Astronomie De Lyon"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1565" label="Bruno Jacomy"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="140.83794" y="39.353935" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1565"/> + <attvalue id="1" value="Bruno Jacomy"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1566" label="Institut Camille Jordan"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="144.8725" y="41.45145" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1566"/> + <attvalue id="1" value="Institut Camille Jordan"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1567" label="Recherche Fondamentale"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="149.49486" y="-111.275696" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1567"/> + <attvalue id="1" value="Recherche Fondamentale"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1568" label="Recherche Française"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="158.26257" y="-101.951454" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1568"/> + <attvalue id="1" value="Recherche Française"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1569" label="Recherche Publique"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="172.87198" y="-109.16384" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1569"/> + <attvalue id="1" value="Recherche Publique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1570" label="Recherches Prospectives"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="95.60209" y="-141.07251" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1570"/> + <attvalue id="1" value="Recherches Prospectives"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1571" label="Record Minimum"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-5.5038915" y="192.3069" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1571"/> + <attvalue id="1" value="Record Minimum"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1572" label="Temperature Record"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-13.326552" y="194.50589" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1572"/> + <attvalue id="1" value="Temperature Record"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1573" label="Recul De La Banquise"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="41.719532" y="-25.997208" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1573"/> + <attvalue id="1" value="Recul De La Banquise"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1574" label="Réfléchissement"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="109.57813" y="-116.24258" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1574"/> + <attvalue id="1" value="Réfléchissement"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1575" label="Régions Polaires"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="31.333315" y="19.984806" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1575"/> + <attvalue id="1" value="Régions Polaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1576" label="Régions Subpolaires"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="12.027041" y="-37.816597" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1576"/> + <attvalue id="1" value="Régions Subpolaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1577" label="Règlementer La Pêche"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-2.9188993" y="-193.34402" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1577"/> + <attvalue id="1" value="Règlementer La Pêche"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1578" label="Règlementer La Protection De L'Environnement,1"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="34.315224" y="-116.36641" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1578"/> + <attvalue id="1" value="Règlementer La Protection De L'Environnement,1"/> + </attvalues> + </node> + <node id="1579" label="Reindeer Husbandry"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-177.8616" y="253.88234" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1579"/> + <attvalue id="1" value="Reindeer Husbandry"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1580" label="Renard Gris"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-77.38303" y="-93.63051" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1580"/> + <attvalue id="1" value="Renard Gris"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1581" label="Renard Roux"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-54.619476" y="-100.63151" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1581"/> + <attvalue id="1" value="Renard Roux"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1582" label="Renard Des Sables"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-80.01479" y="-96.57871" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1582"/> + <attvalue id="1" value="Renard Des Sables"/> + <attvalue id="2" value="4"/> + </attvalues> + </node> + <node id="1583" label="Renne Caribou"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="49.38956" y="-123.324684" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1583"/> + <attvalue id="1" value="Renne Caribou"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1584" label="Repérage Satellite"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="-33.56125" y="249.8" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1584"/> + <attvalue id="1" value="Repérage Satellite"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1585" label="Répercussions"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-144.19926" y="19.460117" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1585"/> + <attvalue id="1" value="Répercussions"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1586" label="War Of Iraq"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-145.81854" y="27.107653" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1586"/> + <attvalue id="1" value="War Of Iraq"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1587" label="Réseau De Communications"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-247.95609" y="-124.27663" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1587"/> + <attvalue id="1" value="Réseau De Communications"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1588" label="Réserves D'Eau Potable,1"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="80.85915" y="-146.38518" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1588"/> + <attvalue id="1" value="Réserves D'Eau Potable,1"/> + </attvalues> + </node> + <node id="1589" label="Réserves D'Énergies Fossiles,1"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="61.38197" y="-140.71936" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1589"/> + <attvalue id="1" value="Réserves D'Énergies Fossiles,1"/> + </attvalues> + </node> + <node id="1590" label="Réserves Hydrocarbures"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-14.562718" y="-120.97293" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1590"/> + <attvalue id="1" value="Réserves Hydrocarbures"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1591" label="Ressources Fossiles"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="68.66794" y="-123.49581" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1591"/> + <attvalue id="1" value="Ressources Fossiles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1592" label="Ressources Naturelles"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="24.806591" y="-130.29218" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1592"/> + <attvalue id="1" value="Ressources Naturelles"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1593" label="Ressources Pétrolières"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="0.3449037" y="-181.73943" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1593"/> + <attvalue id="1" value="Ressources Pétrolières"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1594" label="Ressources Vivantes"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="83.62572" y="-152.63171" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1594"/> + <attvalue id="1" value="Ressources Vivantes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1595" label="Revendication"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="28.481094" y="-171.37143" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1595"/> + <attvalue id="1" value="Revendication"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1596" label="Revendications"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="9.054563" y="-91.85817" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1596"/> + <attvalue id="1" value="Revendications"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1597" label="Revendications Territoriales En Arctique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="25.325087" y="-40.25403" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1597"/> + <attvalue id="1" value="Revendications Territoriales En Arctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1598" label="Réversiblité"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="117.95375" y="-103.98313" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1598"/> + <attvalue id="1" value="Réversiblité"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1599" label="Rhéologie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="252.9806" y="53.038498" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1599"/> + <attvalue id="1" value="Rhéologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1600" label="University Of Natural"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-28.632383" y="174.91396" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1600"/> + <attvalue id="1" value="University Of Natural"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1601" label="Richesses Maritimes"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="31.330112" y="-206.78526" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1601"/> + <attvalue id="1" value="Richesses Maritimes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1602" label="Russian Mig"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-416.86993" y="-111.97346" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1602"/> + <attvalue id="1" value="Russian Mig"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1603" label="Russian Jet"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-417.67944" y="-109.19644" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1603"/> + <attvalue id="1" value="Russian Jet"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1604" label="Russie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-56.89953" y="-153.1373" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1604"/> + <attvalue id="1" value="Russie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1605" label="Rythme D'Exploitation,1"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-10.206006" y="-125.818214" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1605"/> + <attvalue id="1" value="Rythme D'Exploitation,1"/> + </attvalues> + </node> + <node id="1606" label="Saami"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-202.41072" y="270.11215" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1606"/> + <attvalue id="1" value="Saami"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1607" label="Sami Parliament"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-209.5277" y="277.45053" z="0.0"/> + <viz:size value="3.6847134"/> + <attvalues> + <attvalue id="0" value="n1607"/> + <attvalue id="1" value="Sami Parliament"/> + <attvalue id="2" value="6"/> + </attvalues> + </node> + <node id="1608" label="Salinisation"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="-53.663113" y="108.28239" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1608"/> + <attvalue id="1" value="Salinisation"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1609" label="Soil Salinity"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="-65.88471" y="109.43777" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1609"/> + <attvalue id="1" value="Soil Salinity"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1610" label="Same"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-120.60684" y="43.646866" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1610"/> + <attvalue id="1" value="Same"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1611" label="Samoyèdes"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-166.23517" y="-90.0095" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1611"/> + <attvalue id="1" value="Samoyèdes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1612" label="Carnivorous Animals"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-178.68817" y="-95.281685" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1612"/> + <attvalue id="1" value="Carnivorous Animals"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1613" label="Nomadic Tribe"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-182.11742" y="-93.06612" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1613"/> + <attvalue id="1" value="Nomadic Tribe"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1614" label="Sayan Mountains"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-181.50636" y="-97.46168" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1614"/> + <attvalue id="1" value="Sayan Mountains"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1615" label="Sápmi"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-196.63387" y="264.9456" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1615"/> + <attvalue id="1" value="Sápmi"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1616" label="Satellites"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="33.361706" y="265.86078" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1616"/> + <attvalue id="1" value="Satellites"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1617" label="Satellite Service"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="38.469196" y="277.28928" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1617"/> + <attvalue id="1" value="Satellite Service"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1618" label="Scandinavie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-91.76989" y="-77.38955" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1618"/> + <attvalue id="1" value="Scandinavie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1619" label="Health Science"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="143.5458" y="26.265783" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1619"/> + <attvalue id="1" value="Health Science"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1620" label="Science De La Terre"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="129.13684" y="-0.51399565" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1620"/> + <attvalue id="1" value="Science De La Terre"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1621" label="Sciences Naturelles"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="139.38882" y="-21.86202" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1621"/> + <attvalue id="1" value="Sciences Naturelles"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1622" label="Science Physique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="241.86485" y="5.851606" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1622"/> + <attvalue id="1" value="Science Physique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1623" label="Sciences Santé"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="174.2429" y="-14.893029" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1623"/> + <attvalue id="1" value="Sciences Santé"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1624" label="Sciences Sociales"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="189.87495" y="-40.924496" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1624"/> + <attvalue id="1" value="Sciences Sociales"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1625" label="Sédiments"> + <viz:color b="0" g="153" r="0"/> + <viz:position x="-101.01667" y="116.11181" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1625"/> + <attvalue id="1" value="Sédiments"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1626" label="Sedna Iv"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="25.816294" y="24.58893" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1626"/> + <attvalue id="1" value="Sedna Iv"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1627" label="Port De Montreal"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="26.335724" y="41.924816" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1627"/> + <attvalue id="1" value="Port De Montreal"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1628" label="Septentrional De L'Europe,1"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-65.197815" y="-25.908295" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1628"/> + <attvalue id="1" value="Septentrional De L'Europe,1"/> + </attvalues> + </node> + <node id="1629" label="Séquestration Co2"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-87.03499" y="130.11208" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1629"/> + <attvalue id="1" value="Séquestration Co2"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1630" label="Séracs"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-180.3868" y="167.55145" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1630"/> + <attvalue id="1" value="Séracs"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1631" label="Shtokman"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-221.01178" y="90.36147" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1631"/> + <attvalue id="1" value="Shtokman"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1632" label="Sibérie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-40.070488" y="-82.834305" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1632"/> + <attvalue id="1" value="Sibérie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1633" label="Situation Anticyclonique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="177.78218" y="-149.82042" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1633"/> + <attvalue id="1" value="Situation Anticyclonique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1634" label="Brise Thermique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="194.40106" y="-157.2646" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1634"/> + <attvalue id="1" value="Brise Thermique"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1635" label="Skaller"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-109.13955" y="27.756178" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1635"/> + <attvalue id="1" value="Skaller"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1636" label="Snohvit"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-221.43335" y="124.90592" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1636"/> + <attvalue id="1" value="Snohvit"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1637" label="Sognefjorden"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-173.06946" y="219.33209" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1637"/> + <attvalue id="1" value="Sognefjorden"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1638" label="Water Level"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-59.410347" y="241.67192" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1638"/> + <attvalue id="1" value="Water Level"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1639" label="Solifluxion"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="130.27153" y="-135.1592" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1639"/> + <attvalue id="1" value="Solifluxion"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1640" label="Cone De Dejection"> + <viz:color b="0" g="102" r="102"/> + <viz:position x="149.04483" y="-141.89407" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1640"/> + <attvalue id="1" value="Cone De Dejection"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1641" label="Sols"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="204.19966" y="-49.602283" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1641"/> + <attvalue id="1" value="Sols"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1642" label="Solstices"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-43.611423" y="224.17358" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1642"/> + <attvalue id="1" value="Solstices"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1643" label="Sonde Viking"> + <viz:color b="153" g="153" r="255"/> + <viz:position x="127.120865" y="102.43778" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1643"/> + <attvalue id="1" value="Sonde Viking"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1644" label="Sous-Marin Mir"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-0.17155644" y="-28.442848" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1644"/> + <attvalue id="1" value="Sous-Marin Mir"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1645" label="Sous-Marins"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-64.228546" y="-142.26791" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1645"/> + <attvalue id="1" value="Sous-Marins"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1646" label="South Iceland"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-164.00523" y="180.64215" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1646"/> + <attvalue id="1" value="South Iceland"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1647" label="Souveraineté"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-18.925251" y="-181.85095" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1647"/> + <attvalue id="1" value="Souveraineté"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1648" label="Souveraineté Canadienne"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-9.3397" y="-40.447044" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1648"/> + <attvalue id="1" value="Souveraineté Canadienne"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1649" label="Souveraineté Limitée"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-47.53002" y="-171.51587" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1649"/> + <attvalue id="1" value="Souveraineté Limitée"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1650" label="Spitzberg"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-44.462524" y="-22.980768" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1650"/> + <attvalue id="1" value="Spitzberg"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1651" label="Statoilhydro"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-237.97559" y="85.619804" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1651"/> + <attvalue id="1" value="Statoilhydro"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1652" label="Subarctique"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="19.681393" y="-81.486855" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1652"/> + <attvalue id="1" value="Subarctique"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1653" label="Submersible Mir"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="5.290855" y="144.92424" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1653"/> + <attvalue id="1" value="Submersible Mir"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1654" label="Suède"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-109.616905" y="9.340475" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1654"/> + <attvalue id="1" value="Suède"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1655" label="Superficie"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="5.1069527" y="-63.505527" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1655"/> + <attvalue id="1" value="Superficie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1656" label="Surface Bioproductive"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="35.74007" y="-83.64972" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1656"/> + <attvalue id="1" value="Surface Bioproductive"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1657" label="Surfaces Englacées"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="109.93007" y="5.358879" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1657"/> + <attvalue id="1" value="Surfaces Englacées"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1658" label="Sverdrup"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-88.655815" y="229.88698" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1658"/> + <attvalue id="1" value="Sverdrup"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1659" label="Jacobs Engineering"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-92.023476" y="245.52719" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1659"/> + <attvalue id="1" value="Jacobs Engineering"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1660" label="Symboliquement Planté"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-87.72033" y="-28.34866" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1660"/> + <attvalue id="1" value="Symboliquement Planté"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1661" label="Système Opérant"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="138.26212" y="-154.69266" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1661"/> + <attvalue id="1" value="Système Opérant"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1662" label="Approche Systémique"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="157.14131" y="-162.69797" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1662"/> + <attvalue id="1" value="Approche Systémique"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1663" label="Systèmes Glaciaires"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="106.48852" y="16.894548" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1663"/> + <attvalue id="1" value="Systèmes Glaciaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1664" label="Taïga"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-109.22425" y="244.91193" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1664"/> + <attvalue id="1" value="Taïga"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1665" label="Technologie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="171.11726" y="-36.323093" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1665"/> + <attvalue id="1" value="Technologie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1666" label="Technologie Gmbh"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="194.64037" y="-29.777235" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1666"/> + <attvalue id="1" value="Technologie Gmbh"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1667" label="Technologies Modernes"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-3.748106" y="-115.42146" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1667"/> + <attvalue id="1" value="Technologies Modernes"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1668" label="Creation De Valeur"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-15.876973" y="-131.9882" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1668"/> + <attvalue id="1" value="Creation De Valeur"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1669" label="Television Show"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-102.24507" y="30.805376" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1669"/> + <attvalue id="1" value="Television Show"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1670" label="Température"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="118.36368" y="279.93985" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1670"/> + <attvalue id="1" value="Température"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1671" label="Temperature Sensor"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="124.707756" y="288.08344" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1671"/> + <attvalue id="1" value="Temperature Sensor"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1672" label="Température Constante"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="227.40694" y="-86.92397" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1672"/> + <attvalue id="1" value="Température Constante"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1673" label="Température De L'Eau,1"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="171.04572" y="-79.63148" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1673"/> + <attvalue id="1" value="Température De L'Eau,1"/> + </attvalues> + </node> + <node id="1674" label="Température Moyenne Du Globe"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="91.86571" y="-85.706665" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1674"/> + <attvalue id="1" value="Température Moyenne Du Globe"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1675" label="Températures Globales"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="108.74146" y="-72.640526" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1675"/> + <attvalue id="1" value="Températures Globales"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1676" label="Territoire Arctique Canadien"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-59.761757" y="-20.54515" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1676"/> + <attvalue id="1" value="Territoire Arctique Canadien"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1677" label="Théorie Erronée De La Mer Polaire Libre De Glace"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="28.453182" y="80.84846" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1677"/> + <attvalue id="1" value="Théorie Erronée De La Mer Polaire Libre De Glace"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1678" label="Tonje Folkestad"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-32.453465" y="108.04645" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1678"/> + <attvalue id="1" value="Tonje Folkestad"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1679" label="Topographie"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="223.61755" y="-154.39336" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1679"/> + <attvalue id="1" value="Topographie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1680" label="Technique De Randonnée"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="238.01064" y="-160.53526" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1680"/> + <attvalue id="1" value="Technique De Randonnée"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1681" label="Toundra"> + <viz:color b="255" g="153" r="51"/> + <viz:position x="-390.46573" y="-183.05362" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1681"/> + <attvalue id="1" value="Toundra"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1682" label="Yves Delorme"> + <viz:color b="255" g="153" r="51"/> + <viz:position x="-389.2569" y="-185.68068" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1682"/> + <attvalue id="1" value="Yves Delorme"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1683" label="Tourisme De Masse"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="3.604668" y="-133.8908" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1683"/> + <attvalue id="1" value="Tourisme De Masse"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1684" label="Traineau"> + <viz:color b="255" g="204" r="204"/> + <viz:position x="-104.89781" y="-61.11637" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1684"/> + <attvalue id="1" value="Traineau"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1685" label="Transformations"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-131.20236" y="30.793642" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1685"/> + <attvalue id="1" value="Transformations"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1686" label="Template Matching"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-147.75954" y="32.882477" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1686"/> + <attvalue id="1" value="Template Matching"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1687" label="Transhumance"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-159.95773" y="19.793941" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1687"/> + <attvalue id="1" value="Transhumance"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1688" label="Valley Winter"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-136.13692" y="21.933361" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1688"/> + <attvalue id="1" value="Valley Winter"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1689" label="Très Basses Températures"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="161.97713" y="31.076162" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1689"/> + <attvalue id="1" value="Très Basses Températures"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1690" label="Tromsø"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-149.18419" y="207.48682" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1690"/> + <attvalue id="1" value="Tromsø"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1691" label="University Of Tromsø"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-158.9338" y="216.89633" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1691"/> + <attvalue id="1" value="University Of Tromsø"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1692" label="Uiuc"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-82.32467" y="97.723175" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1692"/> + <attvalue id="1" value="Uiuc"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1693" label="Board Of Trustees"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-99.81919" y="97.397865" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1693"/> + <attvalue id="1" value="Board Of Trustees"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1694" label="Umberto Nobile"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-63.477303" y="214.24065" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1694"/> + <attvalue id="1" value="Umberto Nobile"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1695" label="Aeronautical Engineering"> + <viz:color b="255" g="255" r="153"/> + <viz:position x="-61.607407" y="231.65402" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1695"/> + <attvalue id="1" value="Aeronautical Engineering"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1696" label="Une Vérité Qui Dérange"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="28.941698" y="-42.69651" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1696"/> + <attvalue id="1" value="Une Vérité Qui Dérange"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1697" label="Unique Plateau Continental"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-35.02953" y="-199.86" z="0.0"/> + <viz:size value="3.6"/> + <attvalues> + <attvalue id="0" value="n1697"/> + <attvalue id="1" value="Unique Plateau Continental"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1698" label="Universite De Montreal"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="181.01709" y="5.34938" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1698"/> + <attvalue id="1" value="Universite De Montreal"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1699" label="Universite De Reading"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="79.22724" y="-68.558075" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1699"/> + <attvalue id="1" value="Universite De Reading"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1700" label="Usgs"> + <viz:color b="102" g="255" r="102"/> + <viz:position x="-43.71326" y="89.10525" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1700"/> + <attvalue id="1" value="Usgs"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1701" label="Variations Glaciaires"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="108.571884" y="-59.02376" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1701"/> + <attvalue id="1" value="Variations Glaciaires"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1702" label="Vatnajökull"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-150.40474" y="185.80707" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1702"/> + <attvalue id="1" value="Vatnajökull"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1703" label="Vatnajokull Glacier"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-141.02289" y="176.60689" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1703"/> + <attvalue id="1" value="Vatnajokull Glacier"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1704" label="Volcanic Plateau"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-176.22404" y="195.32599" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1704"/> + <attvalue id="1" value="Volcanic Plateau"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1705" label="Végétation Locale"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="120.49048" y="-159.24855" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1705"/> + <attvalue id="1" value="Végétation Locale"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1706" label="Vladimir Vladimirovitch"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-93.2376" y="-162.74384" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1706"/> + <attvalue id="1" value="Vladimir Vladimirovitch"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1707" label="Volumes D'Hydrocarbures,1"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-31.056797" y="-108.60914" z="0.0"/> + <viz:size value="3.6428227"/> + <attvalues> + <attvalue id="0" value="n1707"/> + <attvalue id="1" value="Volumes D'Hydrocarbures,1"/> + </attvalues> + </node> + <node id="1708" label="Voyages Et Aventures Du Capitaine Hatteras"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="23.954185" y="50.759125" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1708"/> + <attvalue id="1" value="Voyages Et Aventures Du Capitaine Hatteras"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1709" label="Wally Herbert"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-105.47916" y="160.91496" z="0.0"/> + <viz:size value="3.6693263"/> + <attvalues> + <attvalue id="0" value="n1709"/> + <attvalue id="1" value="Wally Herbert"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1710" label="War Of Terror"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-141.89842" y="24.089783" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1710"/> + <attvalue id="1" value="War Of Terror"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1711" label="Wildlife Fund"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-46.68344" y="105.93882" z="0.0"/> + <viz:size value="3.6036906"/> + <attvalues> + <attvalue id="0" value="n1711"/> + <attvalue id="1" value="Wildlife Fund"/> + <attvalue id="2" value="2"/> + </attvalues> + </node> + <node id="1712" label="Will Steger"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-68.51018" y="194.99344" z="0.0"/> + <viz:size value="3.655348"/> + <attvalues> + <attvalue id="0" value="n1712"/> + <attvalue id="1" value="Will Steger"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1713" label="Wood Mackenzie"> + <viz:color b="102" g="0" r="102"/> + <viz:position x="-204.71492" y="65.6323" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1713"/> + <attvalue id="1" value="Wood Mackenzie"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1714" label="Wwf"> + <viz:color b="0" g="255" r="153"/> + <viz:position x="-46.496254" y="120.20397" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1714"/> + <attvalue id="1" value="Wwf"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1715" label="Yamal"> + <viz:color b="204" g="204" r="0"/> + <viz:position x="-84.421776" y="247.86906" z="0.0"/> + <viz:size value="3.6082125"/> + <attvalues> + <attvalue id="0" value="n1715"/> + <attvalue id="1" value="Yamal"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1716" label="Yukon"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-138.6115" y="98.961006" z="0.0"/> + <viz:size value="3.6144404"/> + <attvalues> + <attvalue id="0" value="n1716"/> + <attvalue id="1" value="Yukon"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1717" label="Yukon River"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-144.32701" y="94.38094" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1717"/> + <attvalue id="1" value="Yukon River"/> + <attvalue id="2" value="3"/> + </attvalues> + </node> + <node id="1718" label="Yukon Territories"> + <viz:color b="0" g="0" r="153"/> + <viz:position x="-141.15402" y="87.39744" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1718"/> + <attvalue id="1" value="Yukon Territories"/> + <attvalue id="2" value="5"/> + </attvalues> + </node> + <node id="1719" label="Yvon Le Maho"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="70.047485" y="-58.874477" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1719"/> + <attvalue id="1" value="Yvon Le Maho"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1720" label="Zones De Fractures"> + <viz:color b="51" g="255" r="255"/> + <viz:position x="167.05353" y="-45.1743" z="0.0"/> + <viz:size value="3.6317973"/> + <attvalues> + <attvalue id="0" value="n1720"/> + <attvalue id="1" value="Zones De Fractures"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1721" label="Zones Froides"> + <viz:color b="102" g="204" r="255"/> + <viz:position x="126.55944" y="-88.10074" z="0.0"/> + <viz:size value="3.6223197"/> + <attvalues> + <attvalue id="0" value="n1721"/> + <attvalue id="1" value="Zones Froides"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + <node id="1722" label="Zones Géographiques"> + <viz:color b="51" g="51" r="255"/> + <viz:position x="-23.956884" y="-117.91388" z="0.0"/> + <viz:size value="3.600933"/> + <attvalues> + <attvalue id="0" value="n1722"/> + <attvalue id="1" value="Zones Géographiques"/> + <attvalue id="2" value="1"/> + </attvalues> + </node> + </nodes> + <edges> + <edge id="0" source="0" target="1"/> + <edge id="1" source="2" target="1"/> + <edge id="2" source="2" target="3"/> + <edge id="3" source="4" target="1"/> + <edge id="4" source="4" target="5"/> + <edge id="5" source="6" target="1"/> + <edge id="6" source="6" target="7"/> + <edge id="7" source="6" target="5"/> + <edge id="8" source="8" target="1"/> + <edge id="9" source="9" target="1"/> + <edge id="10" source="10" target="1"/> + <edge id="11" source="10" target="5"/> + <edge id="12" source="11" target="12"/> + <edge id="13" source="11" target="1"/> + <edge id="14" source="13" target="1"/> + <edge id="15" source="14" target="1"/> + <edge id="16" source="14" target="5"/> + <edge id="17" source="15" target="16"/> + <edge id="18" source="15" target="1"/> + <edge id="19" source="17" target="18"/> + <edge id="20" source="19" target="20"/> + <edge id="21" source="19" target="21"/> + <edge id="22" source="22" target="23"/> + <edge id="23" source="22" target="24"/> + <edge id="24" source="22" target="25"/> + <edge id="25" source="22" target="26"/> + <edge id="26" source="22" target="27"/> + <edge id="27" source="22" target="28"/> + <edge id="28" source="22" target="29"/> + <edge id="29" source="22" target="30"/> + <edge id="30" source="31" target="32"/> + <edge id="31" source="31" target="33"/> + <edge id="32" source="34" target="35"/> + <edge id="33" source="34" target="36"/> + <edge id="34" source="34" target="37"/> + <edge id="35" source="34" target="38"/> + <edge id="36" source="34" target="39"/> + <edge id="37" source="34" target="40"/> + <edge id="38" source="41" target="42"/> + <edge id="39" source="41" target="43"/> + <edge id="40" source="44" target="45"/> + <edge id="41" source="44" target="46"/> + <edge id="42" source="44" target="47"/> + <edge id="43" source="44" target="48"/> + <edge id="44" source="44" target="49"/> + <edge id="45" source="44" target="50"/> + <edge id="46" source="44" target="51"/> + <edge id="47" source="44" target="52"/> + <edge id="48" source="44" target="53"/> + <edge id="49" source="54" target="55"/> + <edge id="50" source="54" target="56"/> + <edge id="51" source="54" target="57"/> + <edge id="52" source="58" target="59"/> + <edge id="53" source="60" target="61"/> + <edge id="54" source="60" target="62"/> + <edge id="55" source="60" target="63"/> + <edge id="56" source="60" target="53"/> + <edge id="57" source="60" target="64"/> + <edge id="58" source="60" target="65"/> + <edge id="59" source="60" target="66"/> + <edge id="60" source="60" target="67"/> + <edge id="61" source="60" target="50"/> + <edge id="62" source="60" target="68"/> + <edge id="63" source="69" target="70"/> + <edge id="64" source="69" target="71"/> + <edge id="65" source="69" target="72"/> + <edge id="66" source="69" target="73"/> + <edge id="67" source="69" target="74"/> + <edge id="68" source="75" target="76"/> + <edge id="69" source="75" target="77"/> + <edge id="70" source="75" target="1"/> + <edge id="71" source="78" target="79"/> + <edge id="72" source="78" target="80"/> + <edge id="73" source="81" target="82"/> + <edge id="74" source="83" target="53"/> + <edge id="75" source="83" target="84"/> + <edge id="76" source="83" target="85"/> + <edge id="77" source="83" target="82"/> + <edge id="78" source="86" target="87"/> + <edge id="79" source="88" target="79"/> + <edge id="80" source="88" target="89"/> + <edge id="81" source="90" target="91"/> + <edge id="82" source="92" target="68"/> + <edge id="83" source="92" target="53"/> + <edge id="84" source="92" target="64"/> + <edge id="85" source="92" target="65"/> + <edge id="86" source="92" target="93"/> + <edge id="87" source="92" target="67"/> + <edge id="88" source="92" target="50"/> + <edge id="89" source="94" target="95"/> + <edge id="90" source="94" target="96"/> + <edge id="91" source="94" target="97"/> + <edge id="92" source="98" target="99"/> + <edge id="93" source="98" target="100"/> + <edge id="94" source="98" target="101"/> + <edge id="95" source="102" target="103"/> + <edge id="96" source="102" target="53"/> + <edge id="97" source="102" target="65"/> + <edge id="98" source="102" target="104"/> + <edge id="99" source="102" target="105"/> + <edge id="100" source="102" target="50"/> + <edge id="101" source="95" target="96"/> + <edge id="102" source="95" target="82"/> + <edge id="103" source="68" target="106"/> + <edge id="104" source="68" target="107"/> + <edge id="105" source="68" target="50"/> + <edge id="106" source="68" target="108"/> + <edge id="107" source="68" target="109"/> + <edge id="108" source="68" target="53"/> + <edge id="109" source="68" target="65"/> + <edge id="110" source="110" target="111"/> + <edge id="111" source="112" target="113"/> + <edge id="112" source="112" target="65"/> + <edge id="113" source="112" target="104"/> + <edge id="114" source="112" target="114"/> + <edge id="115" source="112" target="115"/> + <edge id="116" source="112" target="116"/> + <edge id="117" source="117" target="53"/> + <edge id="118" source="117" target="118"/> + <edge id="119" source="117" target="64"/> + <edge id="120" source="117" target="65"/> + <edge id="121" source="117" target="67"/> + <edge id="122" source="117" target="119"/> + <edge id="123" source="117" target="120"/> + <edge id="124" source="117" target="105"/> + <edge id="125" source="117" target="50"/> + <edge id="126" source="117" target="95"/> + <edge id="127" source="121" target="122"/> + <edge id="128" source="121" target="1"/> + <edge id="129" source="123" target="124"/> + <edge id="130" source="124" target="123"/> + <edge id="131" source="124" target="125"/> + <edge id="132" source="125" target="123"/> + <edge id="133" source="125" target="124"/> + <edge id="134" source="126" target="127"/> + <edge id="135" source="126" target="82"/> + <edge id="136" source="128" target="85"/> + <edge id="137" source="128" target="82"/> + <edge id="138" source="129" target="82"/> + <edge id="139" source="20" target="21"/> + <edge id="140" source="130" target="131"/> + <edge id="141" source="130" target="104"/> + <edge id="142" source="130" target="132"/> + <edge id="143" source="133" target="134"/> + <edge id="144" source="133" target="135"/> + <edge id="145" source="133" target="136"/> + <edge id="146" source="133" target="137"/> + <edge id="147" source="133" target="138"/> + <edge id="148" source="133" target="82"/> + <edge id="149" source="134" target="139"/> + <edge id="150" source="134" target="135"/> + <edge id="151" source="134" target="84"/> + <edge id="152" source="134" target="136"/> + <edge id="153" source="134" target="140"/> + <edge id="154" source="134" target="138"/> + <edge id="155" source="134" target="82"/> + <edge id="156" source="139" target="135"/> + <edge id="157" source="139" target="138"/> + <edge id="158" source="99" target="89"/> + <edge id="159" source="99" target="141"/> + <edge id="160" source="142" target="143"/> + <edge id="161" source="142" target="144"/> + <edge id="162" source="142" target="145"/> + <edge id="163" source="142" target="146"/> + <edge id="164" source="142" target="27"/> + <edge id="165" source="142" target="51"/> + <edge id="166" source="142" target="147"/> + <edge id="167" source="148" target="149"/> + <edge id="168" source="148" target="150"/> + <edge id="169" source="151" target="150"/> + <edge id="170" source="152" target="153"/> + <edge id="171" source="152" target="154"/> + <edge id="172" source="152" target="155"/> + <edge id="173" source="156" target="152"/> + <edge id="174" source="156" target="53"/> + <edge id="175" source="156" target="154"/> + <edge id="176" source="156" target="109"/> + <edge id="177" source="156" target="82"/> + <edge id="178" source="157" target="152"/> + <edge id="179" source="158" target="159"/> + <edge id="180" source="158" target="53"/> + <edge id="181" source="160" target="161"/> + <edge id="182" source="162" target="163"/> + <edge id="183" source="162" target="164"/> + <edge id="184" source="165" target="68"/> + <edge id="185" source="165" target="166"/> + <edge id="186" source="165" target="167"/> + <edge id="187" source="165" target="168"/> + <edge id="188" source="169" target="68"/> + <edge id="189" source="169" target="170"/> + <edge id="190" source="169" target="171"/> + <edge id="191" source="169" target="172"/> + <edge id="192" source="173" target="174"/> + <edge id="193" source="173" target="95"/> + <edge id="194" source="173" target="175"/> + <edge id="195" source="176" target="177"/> + <edge id="196" source="176" target="178"/> + <edge id="197" source="176" target="79"/> + <edge id="198" source="176" target="179"/> + <edge id="199" source="176" target="1"/> + <edge id="200" source="180" target="79"/> + <edge id="201" source="180" target="181"/> + <edge id="202" source="180" target="182"/> + <edge id="203" source="180" target="183"/> + <edge id="204" source="180" target="184"/> + <edge id="205" source="180" target="185"/> + <edge id="206" source="186" target="187"/> + <edge id="207" source="186" target="188"/> + <edge id="208" source="186" target="189"/> + <edge id="209" source="186" target="190"/> + <edge id="210" source="186" target="191"/> + <edge id="211" source="186" target="192"/> + <edge id="212" source="192" target="188"/> + <edge id="213" source="192" target="190"/> + <edge id="214" source="192" target="191"/> + <edge id="215" source="187" target="192"/> + <edge id="216" source="187" target="188"/> + <edge id="217" source="187" target="190"/> + <edge id="218" source="187" target="191"/> + <edge id="219" source="193" target="194"/> + <edge id="220" source="193" target="195"/> + <edge id="221" source="193" target="37"/> + <edge id="222" source="188" target="192"/> + <edge id="223" source="188" target="190"/> + <edge id="224" source="196" target="136"/> + <edge id="225" source="197" target="198"/> + <edge id="226" source="197" target="166"/> + <edge id="227" source="197" target="199"/> + <edge id="228" source="197" target="200"/> + <edge id="229" source="197" target="201"/> + <edge id="230" source="197" target="202"/> + <edge id="231" source="198" target="203"/> + <edge id="232" source="204" target="205"/> + <edge id="233" source="204" target="206"/> + <edge id="234" source="204" target="207"/> + <edge id="235" source="204" target="208"/> + <edge id="236" source="204" target="209"/> + <edge id="237" source="210" target="211"/> + <edge id="238" source="210" target="212"/> + <edge id="239" source="213" target="87"/> + <edge id="240" source="214" target="128"/> + <edge id="241" source="214" target="215"/> + <edge id="242" source="214" target="216"/> + <edge id="243" source="214" target="82"/> + <edge id="244" source="214" target="217"/> + <edge id="245" source="218" target="219"/> + <edge id="246" source="220" target="221"/> + <edge id="247" source="222" target="1"/> + <edge id="248" source="222" target="97"/> + <edge id="249" source="222" target="166"/> + <edge id="250" source="223" target="79"/> + <edge id="251" source="223" target="211"/> + <edge id="252" source="223" target="224"/> + <edge id="253" source="223" target="5"/> + <edge id="254" source="223" target="225"/> + <edge id="255" source="226" target="79"/> + <edge id="256" source="227" target="1"/> + <edge id="257" source="228" target="1"/> + <edge id="258" source="166" target="20"/> + <edge id="259" source="229" target="230"/> + <edge id="260" source="231" target="232"/> + <edge id="261" source="231" target="233"/> + <edge id="262" source="103" target="53"/> + <edge id="263" source="103" target="234"/> + <edge id="264" source="103" target="65"/> + <edge id="265" source="103" target="97"/> + <edge id="266" source="103" target="82"/> + <edge id="267" source="235" target="160"/> + <edge id="268" source="235" target="53"/> + <edge id="269" source="235" target="236"/> + <edge id="270" source="237" target="76"/> + <edge id="271" source="237" target="238"/> + <edge id="272" source="237" target="239"/> + <edge id="273" source="240" target="152"/> + <edge id="274" source="240" target="241"/> + <edge id="275" source="240" target="242"/> + <edge id="276" source="240" target="120"/> + <edge id="277" source="243" target="118"/> + <edge id="278" source="243" target="244"/> + <edge id="279" source="243" target="245"/> + <edge id="280" source="243" target="246"/> + <edge id="281" source="243" target="247"/> + <edge id="282" source="243" target="248"/> + <edge id="283" source="249" target="53"/> + <edge id="284" source="249" target="65"/> + <edge id="285" source="249" target="104"/> + <edge id="286" source="249" target="250"/> + <edge id="287" source="249" target="251"/> + <edge id="288" source="249" target="76"/> + <edge id="289" source="249" target="252"/> + <edge id="290" source="249" target="253"/> + <edge id="291" source="254" target="255"/> + <edge id="292" source="254" target="1"/> + <edge id="293" source="254" target="182"/> + <edge id="294" source="254" target="183"/> + <edge id="295" source="254" target="256"/> + <edge id="296" source="257" target="50"/> + <edge id="297" source="257" target="51"/> + <edge id="298" source="257" target="238"/> + <edge id="299" source="257" target="53"/> + <edge id="300" source="257" target="258"/> + <edge id="301" source="257" target="259"/> + <edge id="302" source="260" target="261"/> + <edge id="303" source="260" target="238"/> + <edge id="304" source="260" target="262"/> + <edge id="305" source="263" target="113"/> + <edge id="306" source="263" target="264"/> + <edge id="307" source="263" target="265"/> + <edge id="308" source="263" target="266"/> + <edge id="309" source="263" target="267"/> + <edge id="310" source="268" target="269"/> + <edge id="311" source="268" target="270"/> + <edge id="312" source="268" target="36"/> + <edge id="313" source="268" target="38"/> + <edge id="314" source="268" target="271"/> + <edge id="315" source="268" target="272"/> + <edge id="316" source="268" target="40"/> + <edge id="317" source="268" target="273"/> + <edge id="318" source="268" target="34"/> + <edge id="319" source="268" target="274"/> + <edge id="320" source="274" target="275"/> + <edge id="321" source="274" target="272"/> + <edge id="322" source="274" target="40"/> + <edge id="323" source="274" target="276"/> + <edge id="324" source="274" target="269"/> + <edge id="325" source="274" target="270"/> + <edge id="326" source="274" target="36"/> + <edge id="327" source="274" target="37"/> + <edge id="328" source="274" target="38"/> + <edge id="329" source="269" target="276"/> + <edge id="330" source="269" target="274"/> + <edge id="331" source="269" target="270"/> + <edge id="332" source="269" target="37"/> + <edge id="333" source="269" target="38"/> + <edge id="334" source="269" target="275"/> + <edge id="335" source="269" target="194"/> + <edge id="336" source="269" target="40"/> + <edge id="337" source="269" target="273"/> + <edge id="338" source="277" target="185"/> + <edge id="339" source="278" target="238"/> + <edge id="340" source="42" target="279"/> + <edge id="341" source="42" target="280"/> + <edge id="342" source="42" target="53"/> + <edge id="343" source="42" target="281"/> + <edge id="344" source="42" target="282"/> + <edge id="345" source="42" target="48"/> + <edge id="346" source="42" target="49"/> + <edge id="347" source="42" target="283"/> + <edge id="348" source="42" target="284"/> + <edge id="349" source="285" target="61"/> + <edge id="350" source="285" target="62"/> + <edge id="351" source="285" target="63"/> + <edge id="352" source="285" target="53"/> + <edge id="353" source="285" target="65"/> + <edge id="354" source="285" target="286"/> + <edge id="355" source="285" target="287"/> + <edge id="356" source="285" target="50"/> + <edge id="357" source="285" target="51"/> + <edge id="358" source="285" target="68"/> + <edge id="359" source="288" target="65"/> + <edge id="360" source="288" target="289"/> + <edge id="361" source="288" target="50"/> + <edge id="362" source="288" target="51"/> + <edge id="363" source="288" target="68"/> + <edge id="364" source="288" target="62"/> + <edge id="365" source="288" target="53"/> + <edge id="366" source="288" target="290"/> + <edge id="367" source="291" target="292"/> + <edge id="368" source="291" target="219"/> + <edge id="369" source="291" target="293"/> + <edge id="370" source="291" target="294"/> + <edge id="371" source="291" target="295"/> + <edge id="372" source="292" target="296"/> + <edge id="373" source="292" target="219"/> + <edge id="374" source="292" target="297"/> + <edge id="375" source="292" target="182"/> + <edge id="376" source="298" target="296"/> + <edge id="377" source="298" target="219"/> + <edge id="378" source="298" target="299"/> + <edge id="379" source="298" target="79"/> + <edge id="380" source="298" target="300"/> + <edge id="381" source="298" target="185"/> + <edge id="382" source="301" target="292"/> + <edge id="383" source="301" target="296"/> + <edge id="384" source="301" target="294"/> + <edge id="385" source="301" target="295"/> + <edge id="386" source="301" target="182"/> + <edge id="387" source="301" target="302"/> + <edge id="388" source="303" target="296"/> + <edge id="389" source="303" target="219"/> + <edge id="390" source="303" target="182"/> + <edge id="391" source="303" target="304"/> + <edge id="392" source="303" target="185"/> + <edge id="393" source="303" target="301"/> + <edge id="394" source="305" target="219"/> + <edge id="395" source="305" target="306"/> + <edge id="396" source="305" target="307"/> + <edge id="397" source="305" target="308"/> + <edge id="398" source="305" target="79"/> + <edge id="399" source="305" target="309"/> + <edge id="400" source="305" target="185"/> + <edge id="401" source="310" target="296"/> + <edge id="402" source="310" target="311"/> + <edge id="403" source="310" target="79"/> + <edge id="404" source="310" target="45"/> + <edge id="405" source="310" target="312"/> + <edge id="406" source="310" target="46"/> + <edge id="407" source="310" target="185"/> + <edge id="408" source="270" target="36"/> + <edge id="409" source="270" target="38"/> + <edge id="410" source="270" target="313"/> + <edge id="411" source="270" target="40"/> + <edge id="412" source="270" target="273"/> + <edge id="413" source="35" target="36"/> + <edge id="414" source="35" target="38"/> + <edge id="415" source="35" target="39"/> + <edge id="416" source="35" target="40"/> + <edge id="417" source="35" target="273"/> + <edge id="418" source="35" target="34"/> + <edge id="419" source="314" target="292"/> + <edge id="420" source="314" target="296"/> + <edge id="421" source="314" target="295"/> + <edge id="422" source="314" target="315"/> + <edge id="423" source="314" target="182"/> + <edge id="424" source="314" target="316"/> + <edge id="425" source="314" target="317"/> + <edge id="426" source="296" target="219"/> + <edge id="427" source="296" target="318"/> + <edge id="428" source="296" target="79"/> + <edge id="429" source="296" target="319"/> + <edge id="430" source="296" target="182"/> + <edge id="431" source="296" target="185"/> + <edge id="432" source="296" target="292"/> + <edge id="433" source="320" target="292"/> + <edge id="434" source="320" target="296"/> + <edge id="435" source="320" target="321"/> + <edge id="436" source="320" target="322"/> + <edge id="437" source="320" target="323"/> + <edge id="438" source="36" target="38"/> + <edge id="439" source="36" target="275"/> + <edge id="440" source="36" target="40"/> + <edge id="441" source="36" target="273"/> + <edge id="442" source="36" target="276"/> + <edge id="443" source="36" target="270"/> + <edge id="444" source="36" target="122"/> + <edge id="445" source="219" target="292"/> + <edge id="446" source="219" target="296"/> + <edge id="447" source="219" target="79"/> + <edge id="448" source="219" target="324"/> + <edge id="449" source="219" target="182"/> + <edge id="450" source="306" target="315"/> + <edge id="451" source="306" target="325"/> + <edge id="452" source="306" target="219"/> + <edge id="453" source="306" target="326"/> + <edge id="454" source="306" target="79"/> + <edge id="455" source="327" target="298"/> + <edge id="456" source="327" target="296"/> + <edge id="457" source="327" target="219"/> + <edge id="458" source="327" target="306"/> + <edge id="459" source="327" target="79"/> + <edge id="460" source="327" target="315"/> + <edge id="461" source="326" target="315"/> + <edge id="462" source="326" target="298"/> + <edge id="463" source="326" target="219"/> + <edge id="464" source="326" target="306"/> + <edge id="465" source="326" target="79"/> + <edge id="466" source="311" target="296"/> + <edge id="467" source="311" target="79"/> + <edge id="468" source="311" target="224"/> + <edge id="469" source="311" target="45"/> + <edge id="470" source="311" target="46"/> + <edge id="471" source="328" target="296"/> + <edge id="472" source="328" target="311"/> + <edge id="473" source="328" target="45"/> + <edge id="474" source="328" target="329"/> + <edge id="475" source="328" target="46"/> + <edge id="476" source="328" target="182"/> + <edge id="477" source="328" target="185"/> + <edge id="478" source="330" target="296"/> + <edge id="479" source="330" target="219"/> + <edge id="480" source="330" target="306"/> + <edge id="481" source="330" target="294"/> + <edge id="482" source="330" target="331"/> + <edge id="483" source="330" target="79"/> + <edge id="484" source="330" target="181"/> + <edge id="485" source="330" target="332"/> + <edge id="486" source="330" target="185"/> + <edge id="487" source="333" target="53"/> + <edge id="488" source="333" target="66"/> + <edge id="489" source="333" target="48"/> + <edge id="490" source="333" target="334"/> + <edge id="491" source="333" target="49"/> + <edge id="492" source="333" target="50"/> + <edge id="493" source="333" target="279"/> + <edge id="494" source="333" target="280"/> + <edge id="495" source="333" target="61"/> + <edge id="496" source="333" target="335"/> + <edge id="497" source="279" target="282"/> + <edge id="498" source="279" target="48"/> + <edge id="499" source="279" target="49"/> + <edge id="500" source="279" target="42"/> + <edge id="501" source="279" target="280"/> + <edge id="502" source="279" target="61"/> + <edge id="503" source="279" target="335"/> + <edge id="504" source="279" target="53"/> + <edge id="505" source="279" target="281"/> + <edge id="506" source="279" target="336"/> + <edge id="507" source="337" target="296"/> + <edge id="508" source="337" target="53"/> + <edge id="509" source="337" target="119"/> + <edge id="510" source="337" target="338"/> + <edge id="511" source="337" target="319"/> + <edge id="512" source="337" target="339"/> + <edge id="513" source="337" target="340"/> + <edge id="514" source="337" target="182"/> + <edge id="515" source="337" target="48"/> + <edge id="516" source="341" target="121"/> + <edge id="517" source="341" target="1"/> + <edge id="518" source="342" target="310"/> + <edge id="519" source="342" target="343"/> + <edge id="520" source="342" target="182"/> + <edge id="521" source="342" target="183"/> + <edge id="522" source="344" target="82"/> + <edge id="523" source="345" target="159"/> + <edge id="524" source="345" target="346"/> + <edge id="525" source="345" target="347"/> + <edge id="526" source="345" target="348"/> + <edge id="527" source="345" target="349"/> + <edge id="528" source="350" target="318"/> + <edge id="529" source="350" target="296"/> + <edge id="530" source="318" target="296"/> + <edge id="531" source="318" target="1"/> + <edge id="532" source="318" target="351"/> + <edge id="533" source="352" target="128"/> + <edge id="534" source="352" target="166"/> + <edge id="535" source="352" target="353"/> + <edge id="536" source="352" target="354"/> + <edge id="537" source="352" target="355"/> + <edge id="538" source="352" target="232"/> + <edge id="539" source="352" target="1"/> + <edge id="540" source="216" target="356"/> + <edge id="541" source="216" target="357"/> + <edge id="542" source="216" target="1"/> + <edge id="543" source="216" target="351"/> + <edge id="544" source="216" target="214"/> + <edge id="545" source="216" target="166"/> + <edge id="546" source="358" target="359"/> + <edge id="547" source="358" target="360"/> + <edge id="548" source="358" target="177"/> + <edge id="549" source="358" target="79"/> + <edge id="550" source="358" target="361"/> + <edge id="551" source="358" target="362"/> + <edge id="552" source="359" target="177"/> + <edge id="553" source="359" target="79"/> + <edge id="554" source="363" target="364"/> + <edge id="555" source="363" target="113"/> + <edge id="556" source="363" target="365"/> + <edge id="557" source="363" target="64"/> + <edge id="558" source="363" target="65"/> + <edge id="559" source="363" target="67"/> + <edge id="560" source="363" target="161"/> + <edge id="561" source="363" target="366"/> + <edge id="562" source="363" target="68"/> + <edge id="563" source="307" target="367"/> + <edge id="564" source="308" target="211"/> + <edge id="565" source="308" target="368"/> + <edge id="566" source="308" target="162"/> + <edge id="567" source="308" target="359"/> + <edge id="568" source="308" target="360"/> + <edge id="569" source="308" target="79"/> + <edge id="570" source="360" target="79"/> + <edge id="571" source="369" target="254"/> + <edge id="572" source="369" target="181"/> + <edge id="573" source="369" target="47"/> + <edge id="574" source="369" target="267"/> + <edge id="575" source="369" target="182"/> + <edge id="576" source="369" target="370"/> + <edge id="577" source="371" target="372"/> + <edge id="578" source="371" target="316"/> + <edge id="579" source="364" target="373"/> + <edge id="580" source="364" target="113"/> + <edge id="581" source="364" target="115"/> + <edge id="582" source="364" target="316"/> + <edge id="583" source="364" target="49"/> + <edge id="584" source="364" target="116"/> + <edge id="585" source="364" target="371"/> + <edge id="586" source="373" target="116"/> + <edge id="587" source="373" target="112"/> + <edge id="588" source="373" target="364"/> + <edge id="589" source="373" target="113"/> + <edge id="590" source="373" target="115"/> + <edge id="591" source="373" target="119"/> + <edge id="592" source="373" target="374"/> + <edge id="593" source="373" target="51"/> + <edge id="594" source="375" target="112"/> + <edge id="595" source="375" target="363"/> + <edge id="596" source="375" target="373"/> + <edge id="597" source="375" target="113"/> + <edge id="598" source="375" target="115"/> + <edge id="599" source="375" target="119"/> + <edge id="600" source="375" target="374"/> + <edge id="601" source="375" target="51"/> + <edge id="602" source="375" target="116"/> + <edge id="603" source="376" target="377"/> + <edge id="604" source="376" target="295"/> + <edge id="605" source="376" target="296"/> + <edge id="606" source="376" target="306"/> + <edge id="607" source="376" target="294"/> + <edge id="608" source="143" target="378"/> + <edge id="609" source="143" target="120"/> + <edge id="610" source="143" target="379"/> + <edge id="611" source="380" target="87"/> + <edge id="612" source="381" target="296"/> + <edge id="613" source="381" target="185"/> + <edge id="614" source="293" target="292"/> + <edge id="615" source="293" target="381"/> + <edge id="616" source="293" target="294"/> + <edge id="617" source="382" target="381"/> + <edge id="618" source="382" target="280"/> + <edge id="619" source="382" target="53"/> + <edge id="620" source="382" target="281"/> + <edge id="621" source="382" target="282"/> + <edge id="622" source="382" target="48"/> + <edge id="623" source="382" target="49"/> + <edge id="624" source="382" target="284"/> + <edge id="625" source="382" target="166"/> + <edge id="626" source="382" target="42"/> + <edge id="627" source="383" target="385"/> + <edge id="628" source="383" target="386"/> + <edge id="629" source="383" target="20"/> + <edge id="630" source="383" target="387"/> + <edge id="631" source="383" target="61"/> + <edge id="632" source="383" target="335"/> + <edge id="633" source="383" target="259"/> + <edge id="634" source="387" target="216"/> + <edge id="635" source="387" target="388"/> + <edge id="636" source="387" target="48"/> + <edge id="637" source="389" target="166"/> + <edge id="638" source="389" target="167"/> + <edge id="639" source="390" target="391"/> + <edge id="640" source="390" target="392"/> + <edge id="641" source="393" target="391"/> + <edge id="642" source="393" target="201"/> + <edge id="643" source="393" target="394"/> + <edge id="644" source="393" target="216"/> + <edge id="645" source="393" target="390"/> + <edge id="646" source="395" target="76"/> + <edge id="647" source="396" target="397"/> + <edge id="648" source="396" target="398"/> + <edge id="649" source="399" target="400"/> + <edge id="650" source="401" target="79"/> + <edge id="651" source="402" target="403"/> + <edge id="652" source="402" target="82"/> + <edge id="653" source="404" target="405"/> + <edge id="654" source="404" target="397"/> + <edge id="655" source="404" target="48"/> + <edge id="656" source="404" target="406"/> + <edge id="657" source="404" target="334"/> + <edge id="658" source="404" target="49"/> + <edge id="659" source="404" target="50"/> + <edge id="660" source="404" target="53"/> + <edge id="661" source="404" target="65"/> + <edge id="662" source="404" target="66"/> + <edge id="663" source="407" target="216"/> + <edge id="664" source="407" target="61"/> + <edge id="665" source="407" target="408"/> + <edge id="666" source="407" target="146"/> + <edge id="667" source="407" target="370"/> + <edge id="668" source="407" target="409"/> + <edge id="669" source="410" target="42"/> + <edge id="670" source="410" target="280"/> + <edge id="671" source="410" target="61"/> + <edge id="672" source="410" target="53"/> + <edge id="673" source="410" target="411"/> + <edge id="674" source="410" target="412"/> + <edge id="675" source="410" target="45"/> + <edge id="676" source="410" target="48"/> + <edge id="677" source="410" target="49"/> + <edge id="678" source="410" target="50"/> + <edge id="679" source="413" target="414"/> + <edge id="680" source="413" target="415"/> + <edge id="681" source="413" target="416"/> + <edge id="682" source="413" target="417"/> + <edge id="683" source="413" target="418"/> + <edge id="684" source="413" target="419"/> + <edge id="685" source="413" target="296"/> + <edge id="686" source="413" target="420"/> + <edge id="687" source="414" target="219"/> + <edge id="688" source="414" target="401"/> + <edge id="689" source="414" target="420"/> + <edge id="690" source="414" target="421"/> + <edge id="691" source="422" target="130"/> + <edge id="692" source="422" target="423"/> + <edge id="693" source="422" target="1"/> + <edge id="694" source="422" target="424"/> + <edge id="695" source="425" target="175"/> + <edge id="696" source="425" target="426"/> + <edge id="697" source="425" target="427"/> + <edge id="698" source="425" target="104"/> + <edge id="699" source="425" target="250"/> + <edge id="700" source="425" target="428"/> + <edge id="701" source="37" target="207"/> + <edge id="702" source="37" target="1"/> + <edge id="703" source="37" target="272"/> + <edge id="704" source="37" target="429"/> + <edge id="705" source="37" target="430"/> + <edge id="706" source="431" target="1"/> + <edge id="707" source="431" target="50"/> + <edge id="708" source="431" target="53"/> + <edge id="709" source="432" target="1"/> + <edge id="710" source="433" target="434"/> + <edge id="711" source="433" target="435"/> + <edge id="712" source="144" target="436"/> + <edge id="713" source="144" target="403"/> + <edge id="714" source="144" target="437"/> + <edge id="715" source="144" target="438"/> + <edge id="716" source="439" target="440"/> + <edge id="717" source="439" target="441"/> + <edge id="718" source="442" target="443"/> + <edge id="719" source="442" target="444"/> + <edge id="720" source="442" target="445"/> + <edge id="721" source="442" target="446"/> + <edge id="722" source="442" target="447"/> + <edge id="723" source="448" target="192"/> + <edge id="724" source="448" target="313"/> + <edge id="725" source="448" target="195"/> + <edge id="726" source="449" target="450"/> + <edge id="727" source="449" target="195"/> + <edge id="728" source="449" target="5"/> + <edge id="729" source="321" target="185"/> + <edge id="730" source="321" target="296"/> + <edge id="731" source="321" target="294"/> + <edge id="732" source="321" target="322"/> + <edge id="733" source="321" target="194"/> + <edge id="734" source="203" target="198"/> + <edge id="735" source="203" target="296"/> + <edge id="736" source="203" target="79"/> + <edge id="737" source="203" target="185"/> + <edge id="738" source="451" target="452"/> + <edge id="739" source="451" target="53"/> + <edge id="740" source="451" target="118"/> + <edge id="741" source="451" target="453"/> + <edge id="742" source="451" target="64"/> + <edge id="743" source="451" target="65"/> + <edge id="744" source="451" target="93"/> + <edge id="745" source="451" target="131"/> + <edge id="746" source="451" target="104"/> + <edge id="747" source="454" target="431"/> + <edge id="748" source="454" target="62"/> + <edge id="749" source="454" target="53"/> + <edge id="750" source="454" target="455"/> + <edge id="751" source="454" target="170"/> + <edge id="752" source="454" target="287"/> + <edge id="753" source="454" target="456"/> + <edge id="754" source="454" target="457"/> + <edge id="755" source="252" target="131"/> + <edge id="756" source="252" target="104"/> + <edge id="757" source="252" target="250"/> + <edge id="758" source="252" target="458"/> + <edge id="759" source="252" target="95"/> + <edge id="760" source="252" target="53"/> + <edge id="761" source="252" target="65"/> + <edge id="762" source="459" target="68"/> + <edge id="763" source="459" target="53"/> + <edge id="764" source="459" target="460"/> + <edge id="765" source="459" target="64"/> + <edge id="766" source="459" target="65"/> + <edge id="767" source="459" target="114"/> + <edge id="768" source="459" target="461"/> + <edge id="769" source="459" target="366"/> + <edge id="770" source="462" target="177"/> + <edge id="771" source="462" target="79"/> + <edge id="772" source="462" target="463"/> + <edge id="773" source="462" target="464"/> + <edge id="774" source="462" target="465"/> + <edge id="775" source="466" target="467"/> + <edge id="776" source="466" target="1"/> + <edge id="777" source="468" target="159"/> + <edge id="778" source="468" target="469"/> + <edge id="779" source="470" target="471"/> + <edge id="780" source="472" target="464"/> + <edge id="781" source="472" target="313"/> + <edge id="782" source="472" target="473"/> + <edge id="783" source="472" target="474"/> + <edge id="784" source="472" target="475"/> + <edge id="785" source="472" target="177"/> + <edge id="786" source="472" target="79"/> + <edge id="787" source="472" target="361"/> + <edge id="788" source="476" target="475"/> + <edge id="789" source="476" target="79"/> + <edge id="790" source="476" target="368"/> + <edge id="791" source="476" target="477"/> + <edge id="792" source="476" target="473"/> + <edge id="793" source="475" target="313"/> + <edge id="794" source="475" target="473"/> + <edge id="795" source="478" target="479"/> + <edge id="796" source="480" target="170"/> + <edge id="797" source="481" target="166"/> + <edge id="798" source="481" target="279"/> + <edge id="799" source="481" target="281"/> + <edge id="800" source="481" target="482"/> + <edge id="801" source="481" target="483"/> + <edge id="802" source="481" target="334"/> + <edge id="803" source="481" target="484"/> + <edge id="804" source="253" target="76"/> + <edge id="805" source="253" target="84"/> + <edge id="806" source="471" target="485"/> + <edge id="807" source="471" target="79"/> + <edge id="808" source="471" target="486"/> + <edge id="809" source="487" target="488"/> + <edge id="810" source="487" target="489"/> + <edge id="811" source="487" target="198"/> + <edge id="812" source="490" target="491"/> + <edge id="813" source="492" target="121"/> + <edge id="814" source="492" target="128"/> + <edge id="815" source="492" target="493"/> + <edge id="816" source="492" target="217"/> + <edge id="817" source="492" target="494"/> + <edge id="818" source="492" target="495"/> + <edge id="819" source="496" target="497"/> + <edge id="820" source="496" target="166"/> + <edge id="821" source="496" target="403"/> + <edge id="822" source="496" target="498"/> + <edge id="823" source="499" target="254"/> + <edge id="824" source="499" target="181"/> + <edge id="825" source="499" target="267"/> + <edge id="826" source="499" target="182"/> + <edge id="827" source="499" target="370"/> + <edge id="828" source="499" target="49"/> + <edge id="829" source="499" target="500"/> + <edge id="830" source="501" target="502"/> + <edge id="831" source="501" target="49"/> + <edge id="832" source="501" target="50"/> + <edge id="833" source="501" target="51"/> + <edge id="834" source="501" target="503"/> + <edge id="835" source="501" target="504"/> + <edge id="836" source="501" target="281"/> + <edge id="837" source="501" target="505"/> + <edge id="838" source="501" target="48"/> + <edge id="839" source="506" target="133"/> + <edge id="840" source="506" target="53"/> + <edge id="841" source="506" target="405"/> + <edge id="842" source="506" target="397"/> + <edge id="843" source="506" target="48"/> + <edge id="844" source="506" target="409"/> + <edge id="845" source="506" target="49"/> + <edge id="846" source="506" target="50"/> + <edge id="847" source="507" target="160"/> + <edge id="848" source="356" target="216"/> + <edge id="849" source="356" target="357"/> + <edge id="850" source="356" target="508"/> + <edge id="851" source="509" target="68"/> + <edge id="852" source="509" target="61"/> + <edge id="853" source="509" target="408"/> + <edge id="854" source="509" target="62"/> + <edge id="855" source="509" target="365"/> + <edge id="856" source="509" target="65"/> + <edge id="857" source="509" target="510"/> + <edge id="858" source="509" target="511"/> + <edge id="859" source="122" target="1"/> + <edge id="860" source="61" target="279"/> + <edge id="861" source="61" target="408"/> + <edge id="862" source="61" target="53"/> + <edge id="863" source="61" target="512"/> + <edge id="864" source="61" target="65"/> + <edge id="865" source="61" target="66"/> + <edge id="866" source="61" target="48"/> + <edge id="867" source="61" target="49"/> + <edge id="868" source="61" target="50"/> + <edge id="869" source="61" target="133"/> + <edge id="870" source="408" target="119"/> + <edge id="871" source="408" target="48"/> + <edge id="872" source="408" target="49"/> + <edge id="873" source="408" target="513"/> + <edge id="874" source="408" target="50"/> + <edge id="875" source="408" target="51"/> + <edge id="876" source="408" target="61"/> + <edge id="877" source="408" target="53"/> + <edge id="878" source="408" target="66"/> + <edge id="879" source="408" target="67"/> + <edge id="880" source="514" target="65"/> + <edge id="881" source="514" target="66"/> + <edge id="882" source="514" target="287"/> + <edge id="883" source="514" target="50"/> + <edge id="884" source="514" target="68"/> + <edge id="885" source="514" target="408"/> + <edge id="886" source="514" target="62"/> + <edge id="887" source="514" target="53"/> + <edge id="888" source="514" target="515"/> + <edge id="889" source="514" target="498"/> + <edge id="890" source="516" target="517"/> + <edge id="891" source="516" target="323"/> + <edge id="892" source="518" target="166"/> + <edge id="893" source="518" target="436"/> + <edge id="894" source="518" target="519"/> + <edge id="895" source="518" target="444"/> + <edge id="896" source="520" target="521"/> + <edge id="897" source="520" target="1"/> + <edge id="898" source="522" target="471"/> + <edge id="899" source="294" target="219"/> + <edge id="900" source="294" target="376"/> + <edge id="901" source="294" target="79"/> + <edge id="902" source="294" target="377"/> + <edge id="903" source="294" target="185"/> + <edge id="904" source="485" target="79"/> + <edge id="905" source="446" target="149"/> + <edge id="906" source="446" target="309"/> + <edge id="907" source="523" target="524"/> + <edge id="908" source="523" target="294"/> + <edge id="909" source="523" target="525"/> + <edge id="910" source="523" target="526"/> + <edge id="911" source="523" target="527"/> + <edge id="912" source="523" target="528"/> + <edge id="913" source="529" target="353"/> + <edge id="914" source="529" target="530"/> + <edge id="915" source="529" target="531"/> + <edge id="916" source="357" target="216"/> + <edge id="917" source="357" target="356"/> + <edge id="918" source="357" target="1"/> + <edge id="919" source="532" target="533"/> + <edge id="920" source="532" target="534"/> + <edge id="921" source="532" target="335"/> + <edge id="922" source="532" target="535"/> + <edge id="923" source="532" target="536"/> + <edge id="924" source="532" target="537"/> + <edge id="925" source="532" target="538"/> + <edge id="926" source="532" target="49"/> + <edge id="927" source="539" target="540"/> + <edge id="928" source="539" target="541"/> + <edge id="929" source="525" target="293"/> + <edge id="930" source="525" target="517"/> + <edge id="931" source="525" target="323"/> + <edge id="932" source="542" target="1"/> + <edge id="933" source="543" target="409"/> + <edge id="934" source="543" target="532"/> + <edge id="935" source="543" target="335"/> + <edge id="936" source="543" target="535"/> + <edge id="937" source="543" target="405"/> + <edge id="938" source="543" target="537"/> + <edge id="939" source="434" target="433"/> + <edge id="940" source="434" target="161"/> + <edge id="941" source="434" target="544"/> + <edge id="942" source="545" target="1"/> + <edge id="943" source="545" target="546"/> + <edge id="944" source="547" target="177"/> + <edge id="945" source="547" target="548"/> + <edge id="946" source="547" target="79"/> + <edge id="947" source="547" target="549"/> + <edge id="948" source="547" target="463"/> + <edge id="949" source="465" target="177"/> + <edge id="950" source="465" target="79"/> + <edge id="951" source="465" target="463"/> + <edge id="952" source="465" target="368"/> + <edge id="953" source="465" target="462"/> + <edge id="954" source="177" target="465"/> + <edge id="955" source="177" target="79"/> + <edge id="956" source="177" target="549"/> + <edge id="957" source="177" target="463"/> + <edge id="958" source="548" target="547"/> + <edge id="959" source="548" target="177"/> + <edge id="960" source="548" target="79"/> + <edge id="961" source="548" target="463"/> + <edge id="962" source="550" target="65"/> + <edge id="963" source="550" target="93"/> + <edge id="964" source="550" target="131"/> + <edge id="965" source="550" target="104"/> + <edge id="966" source="550" target="53"/> + <edge id="967" source="551" target="166"/> + <edge id="968" source="551" target="167"/> + <edge id="969" source="551" target="497"/> + <edge id="970" source="62" target="67"/> + <edge id="971" source="62" target="289"/> + <edge id="972" source="62" target="552"/> + <edge id="973" source="62" target="50"/> + <edge id="974" source="62" target="68"/> + <edge id="975" source="62" target="61"/> + <edge id="976" source="62" target="63"/> + <edge id="977" source="62" target="53"/> + <edge id="978" source="62" target="64"/> + <edge id="979" source="62" target="65"/> + <edge id="980" source="553" target="287"/> + <edge id="981" source="553" target="68"/> + <edge id="982" source="553" target="61"/> + <edge id="983" source="553" target="53"/> + <edge id="984" source="553" target="460"/> + <edge id="985" source="553" target="64"/> + <edge id="986" source="553" target="554"/> + <edge id="987" source="553" target="65"/> + <edge id="988" source="553" target="67"/> + <edge id="989" source="553" target="286"/> + <edge id="990" source="63" target="68"/> + <edge id="991" source="63" target="61"/> + <edge id="992" source="63" target="62"/> + <edge id="993" source="63" target="53"/> + <edge id="994" source="63" target="65"/> + <edge id="995" source="63" target="67"/> + <edge id="996" source="63" target="287"/> + <edge id="997" source="63" target="50"/> + <edge id="998" source="63" target="511"/> + <edge id="999" source="145" target="82"/> + <edge id="1000" source="145" target="166"/> + <edge id="1001" source="145" target="436"/> + <edge id="1002" source="436" target="264"/> + <edge id="1003" source="436" target="555"/> + <edge id="1004" source="436" target="556"/> + <edge id="1005" source="436" target="266"/> + <edge id="1006" source="233" target="447"/> + <edge id="1007" source="557" target="76"/> + <edge id="1008" source="447" target="233"/> + <edge id="1009" source="447" target="498"/> + <edge id="1010" source="558" target="76"/> + <edge id="1011" source="558" target="556"/> + <edge id="1012" source="25" target="27"/> + <edge id="1013" source="25" target="456"/> + <edge id="1014" source="25" target="53"/> + <edge id="1015" source="25" target="559"/> + <edge id="1016" source="560" target="104"/> + <edge id="1017" source="560" target="114"/> + <edge id="1018" source="560" target="366"/> + <edge id="1019" source="72" target="561"/> + <edge id="1020" source="72" target="73"/> + <edge id="1021" source="72" target="70"/> + <edge id="1022" source="561" target="72"/> + <edge id="1023" source="561" target="73"/> + <edge id="1024" source="561" target="70"/> + <edge id="1025" source="562" target="559"/> + <edge id="1026" source="563" target="564"/> + <edge id="1027" source="563" target="565"/> + <edge id="1028" source="563" target="566"/> + <edge id="1029" source="426" target="427"/> + <edge id="1030" source="426" target="104"/> + <edge id="1031" source="426" target="114"/> + <edge id="1032" source="426" target="567"/> + <edge id="1033" source="427" target="504"/> + <edge id="1034" source="427" target="568"/> + <edge id="1035" source="427" target="569"/> + <edge id="1036" source="570" target="76"/> + <edge id="1037" source="570" target="159"/> + <edge id="1038" source="570" target="571"/> + <edge id="1039" source="135" target="572"/> + <edge id="1040" source="135" target="494"/> + <edge id="1041" source="135" target="137"/> + <edge id="1042" source="135" target="133"/> + <edge id="1043" source="573" target="279"/> + <edge id="1044" source="573" target="335"/> + <edge id="1045" source="573" target="53"/> + <edge id="1046" source="573" target="66"/> + <edge id="1047" source="573" target="281"/> + <edge id="1048" source="573" target="48"/> + <edge id="1049" source="573" target="49"/> + <edge id="1050" source="573" target="50"/> + <edge id="1051" source="573" target="484"/> + <edge id="1052" source="335" target="574"/> + <edge id="1053" source="335" target="281"/> + <edge id="1054" source="335" target="575"/> + <edge id="1055" source="335" target="51"/> + <edge id="1056" source="335" target="533"/> + <edge id="1057" source="335" target="532"/> + <edge id="1058" source="574" target="49"/> + <edge id="1059" source="574" target="51"/> + <edge id="1060" source="574" target="292"/> + <edge id="1061" source="574" target="573"/> + <edge id="1062" source="574" target="405"/> + <edge id="1063" source="574" target="281"/> + <edge id="1064" source="574" target="48"/> + <edge id="1065" source="574" target="409"/> + <edge id="1066" source="574" target="334"/> + <edge id="1067" source="519" target="114"/> + <edge id="1068" source="519" target="576"/> + <edge id="1069" source="519" target="120"/> + <edge id="1070" source="519" target="577"/> + <edge id="1071" source="519" target="578"/> + <edge id="1072" source="519" target="579"/> + <edge id="1073" source="580" target="581"/> + <edge id="1074" source="580" target="577"/> + <edge id="1075" source="580" target="582"/> + <edge id="1076" source="580" target="578"/> + <edge id="1077" source="580" target="519"/> + <edge id="1078" source="580" target="498"/> + <edge id="1079" source="580" target="576"/> + <edge id="1080" source="580" target="120"/> + <edge id="1081" source="580" target="379"/> + <edge id="1082" source="583" target="68"/> + <edge id="1083" source="583" target="580"/> + <edge id="1084" source="583" target="114"/> + <edge id="1085" source="583" target="576"/> + <edge id="1086" source="583" target="120"/> + <edge id="1087" source="583" target="577"/> + <edge id="1088" source="583" target="584"/> + <edge id="1089" source="583" target="585"/> + <edge id="1090" source="583" target="578"/> + <edge id="1091" source="586" target="1"/> + <edge id="1092" source="113" target="112"/> + <edge id="1093" source="113" target="587"/> + <edge id="1094" source="113" target="588"/> + <edge id="1095" source="113" target="372"/> + <edge id="1096" source="113" target="267"/> + <edge id="1097" source="113" target="374"/> + <edge id="1098" source="113" target="49"/> + <edge id="1099" source="113" target="116"/> + <edge id="1100" source="587" target="374"/> + <edge id="1101" source="587" target="49"/> + <edge id="1102" source="587" target="513"/> + <edge id="1103" source="587" target="116"/> + <edge id="1104" source="587" target="589"/> + <edge id="1105" source="587" target="47"/> + <edge id="1106" source="587" target="267"/> + <edge id="1107" source="587" target="590"/> + <edge id="1108" source="53" target="82"/> + <edge id="1109" source="53" target="68"/> + <edge id="1110" source="53" target="591"/> + <edge id="1111" source="53" target="79"/> + <edge id="1112" source="53" target="64"/> + <edge id="1113" source="53" target="65"/> + <edge id="1114" source="53" target="93"/> + <edge id="1115" source="53" target="104"/> + <edge id="1116" source="53" target="592"/> + <edge id="1117" source="53" target="50"/> + <edge id="1118" source="593" target="68"/> + <edge id="1119" source="593" target="61"/> + <edge id="1120" source="593" target="591"/> + <edge id="1121" source="593" target="65"/> + <edge id="1122" source="593" target="131"/> + <edge id="1123" source="593" target="300"/> + <edge id="1124" source="593" target="594"/> + <edge id="1125" source="593" target="105"/> + <edge id="1126" source="593" target="50"/> + <edge id="1127" source="593" target="82"/> + <edge id="1128" source="595" target="53"/> + <edge id="1129" source="595" target="591"/> + <edge id="1130" source="595" target="79"/> + <edge id="1131" source="595" target="65"/> + <edge id="1132" source="595" target="104"/> + <edge id="1133" source="595" target="592"/> + <edge id="1134" source="595" target="105"/> + <edge id="1135" source="595" target="50"/> + <edge id="1136" source="595" target="109"/> + <edge id="1137" source="595" target="68"/> + <edge id="1138" source="596" target="76"/> + <edge id="1139" source="596" target="159"/> + <edge id="1140" source="597" target="104"/> + <edge id="1141" source="597" target="114"/> + <edge id="1142" source="597" target="598"/> + <edge id="1143" source="597" target="65"/> + <edge id="1144" source="599" target="128"/> + <edge id="1145" source="354" target="166"/> + <edge id="1146" source="354" target="1"/> + <edge id="1147" source="600" target="497"/> + <edge id="1148" source="600" target="281"/> + <edge id="1149" source="601" target="600"/> + <edge id="1150" source="602" target="603"/> + <edge id="1151" source="604" target="428"/> + <edge id="1152" source="604" target="82"/> + <edge id="1153" source="604" target="495"/> + <edge id="1154" source="604" target="204"/> + <edge id="1155" source="604" target="567"/> + <edge id="1156" source="604" target="605"/> + <edge id="1157" source="604" target="606"/> + <edge id="1158" source="460" target="160"/> + <edge id="1159" source="460" target="433"/> + <edge id="1160" source="460" target="53"/> + <edge id="1161" source="460" target="515"/> + <edge id="1162" source="460" target="607"/> + <edge id="1163" source="460" target="608"/> + <edge id="1164" source="460" target="65"/> + <edge id="1165" source="460" target="609"/> + <edge id="1166" source="460" target="119"/> + <edge id="1167" source="515" target="53"/> + <edge id="1168" source="515" target="610"/> + <edge id="1169" source="515" target="607"/> + <edge id="1170" source="515" target="608"/> + <edge id="1171" source="515" target="216"/> + <edge id="1172" source="611" target="222"/> + <edge id="1173" source="611" target="166"/> + <edge id="1174" source="611" target="216"/> + <edge id="1175" source="611" target="53"/> + <edge id="1176" source="611" target="608"/> + <edge id="1177" source="611" target="66"/> + <edge id="1178" source="611" target="119"/> + <edge id="1179" source="611" target="287"/> + <edge id="1180" source="611" target="552"/> + <edge id="1181" source="610" target="216"/> + <edge id="1182" source="610" target="53"/> + <edge id="1183" source="610" target="515"/> + <edge id="1184" source="610" target="79"/> + <edge id="1185" source="610" target="608"/> + <edge id="1186" source="610" target="498"/> + <edge id="1187" source="612" target="292"/> + <edge id="1188" source="612" target="37"/> + <edge id="1189" source="612" target="613"/> + <edge id="1190" source="612" target="614"/> + <edge id="1191" source="612" target="615"/> + <edge id="1192" source="612" target="616"/> + <edge id="1193" source="617" target="219"/> + <edge id="1194" source="617" target="79"/> + <edge id="1195" source="617" target="618"/> + <edge id="1196" source="617" target="619"/> + <edge id="1197" source="620" target="170"/> + <edge id="1198" source="455" target="301"/> + <edge id="1199" source="455" target="621"/> + <edge id="1200" source="455" target="622"/> + <edge id="1201" source="623" target="624"/> + <edge id="1202" source="625" target="300"/> + <edge id="1203" source="625" target="626"/> + <edge id="1204" source="625" target="627"/> + <edge id="1205" source="625" target="628"/> + <edge id="1206" source="625" target="177"/> + <edge id="1207" source="625" target="79"/> + <edge id="1208" source="625" target="463"/> + <edge id="1209" source="625" target="629"/> + <edge id="1210" source="630" target="240"/> + <edge id="1211" source="630" target="120"/> + <edge id="1212" source="631" target="49"/> + <edge id="1213" source="631" target="50"/> + <edge id="1214" source="631" target="280"/> + <edge id="1215" source="631" target="53"/> + <edge id="1216" source="631" target="65"/> + <edge id="1217" source="631" target="632"/> + <edge id="1218" source="631" target="66"/> + <edge id="1219" source="631" target="397"/> + <edge id="1220" source="631" target="48"/> + <edge id="1221" source="633" target="53"/> + <edge id="1222" source="633" target="634"/> + <edge id="1223" source="633" target="79"/> + <edge id="1224" source="633" target="65"/> + <edge id="1225" source="633" target="93"/> + <edge id="1226" source="633" target="104"/> + <edge id="1227" source="633" target="635"/> + <edge id="1228" source="633" target="50"/> + <edge id="1229" source="633" target="511"/> + <edge id="1230" source="236" target="235"/> + <edge id="1231" source="236" target="403"/> + <edge id="1232" source="634" target="335"/> + <edge id="1233" source="634" target="281"/> + <edge id="1234" source="634" target="636"/> + <edge id="1235" source="634" target="51"/> + <edge id="1236" source="591" target="177"/> + <edge id="1237" source="591" target="300"/> + <edge id="1238" source="591" target="1"/> + <edge id="1239" source="178" target="1"/> + <edge id="1240" source="178" target="177"/> + <edge id="1241" source="178" target="79"/> + <edge id="1242" source="178" target="549"/> + <edge id="1243" source="178" target="463"/> + <edge id="1244" source="178" target="300"/> + <edge id="1245" source="299" target="177"/> + <edge id="1246" source="299" target="79"/> + <edge id="1247" source="299" target="361"/> + <edge id="1248" source="299" target="300"/> + <edge id="1249" source="637" target="299"/> + <edge id="1250" source="637" target="79"/> + <edge id="1251" source="637" target="300"/> + <edge id="1252" source="79" target="177"/> + <edge id="1253" source="79" target="299"/> + <edge id="1254" source="79" target="300"/> + <edge id="1255" source="79" target="638"/> + <edge id="1256" source="639" target="53"/> + <edge id="1257" source="639" target="554"/> + <edge id="1258" source="639" target="65"/> + <edge id="1259" source="639" target="106"/> + <edge id="1260" source="639" target="640"/> + <edge id="1261" source="639" target="641"/> + <edge id="1262" source="639" target="50"/> + <edge id="1263" source="639" target="642"/> + <edge id="1264" source="639" target="112"/> + <edge id="1265" source="643" target="109"/> + <edge id="1266" source="643" target="68"/> + <edge id="1267" source="643" target="53"/> + <edge id="1268" source="643" target="644"/> + <edge id="1269" source="643" target="645"/> + <edge id="1270" source="643" target="65"/> + <edge id="1271" source="346" target="646"/> + <edge id="1272" source="346" target="647"/> + <edge id="1273" source="346" target="648"/> + <edge id="1274" source="549" target="177"/> + <edge id="1275" source="549" target="79"/> + <edge id="1276" source="549" target="463"/> + <edge id="1277" source="649" target="547"/> + <edge id="1278" source="649" target="177"/> + <edge id="1279" source="649" target="548"/> + <edge id="1280" source="649" target="79"/> + <edge id="1281" source="649" target="549"/> + <edge id="1282" source="650" target="443"/> + <edge id="1283" source="650" target="324"/> + <edge id="1284" source="650" target="79"/> + <edge id="1285" source="38" target="270"/> + <edge id="1286" source="38" target="275"/> + <edge id="1287" source="443" target="79"/> + <edge id="1288" source="443" target="309"/> + <edge id="1289" source="443" target="150"/> + <edge id="1290" source="118" target="104"/> + <edge id="1291" source="118" target="567"/> + <edge id="1292" source="118" target="82"/> + <edge id="1293" source="118" target="53"/> + <edge id="1294" source="118" target="64"/> + <edge id="1295" source="118" target="598"/> + <edge id="1296" source="118" target="65"/> + <edge id="1297" source="118" target="93"/> + <edge id="1298" source="118" target="131"/> + <edge id="1299" source="84" target="53"/> + <edge id="1300" source="84" target="82"/> + <edge id="1301" source="651" target="216"/> + <edge id="1302" source="651" target="570"/> + <edge id="1303" source="651" target="53"/> + <edge id="1304" source="651" target="132"/> + <edge id="1305" source="258" target="570"/> + <edge id="1306" source="258" target="53"/> + <edge id="1307" source="258" target="571"/> + <edge id="1308" source="652" target="653"/> + <edge id="1309" source="21" target="20"/> + <edge id="1310" source="21" target="1"/> + <edge id="1311" source="437" target="422"/> + <edge id="1312" source="437" target="606"/> + <edge id="1313" source="437" target="423"/> + <edge id="1314" source="437" target="654"/> + <edge id="1315" source="437" target="655"/> + <edge id="1316" source="437" target="656"/> + <edge id="1317" source="437" target="657"/> + <edge id="1318" source="658" target="659"/> + <edge id="1319" source="658" target="660"/> + <edge id="1320" source="658" target="661"/> + <edge id="1321" source="658" target="662"/> + <edge id="1322" source="658" target="663"/> + <edge id="1323" source="658" target="664"/> + <edge id="1324" source="665" target="431"/> + <edge id="1325" source="665" target="408"/> + <edge id="1326" source="665" target="515"/> + <edge id="1327" source="665" target="455"/> + <edge id="1328" source="665" target="666"/> + <edge id="1329" source="665" target="667"/> + <edge id="1330" source="665" target="287"/> + <edge id="1331" source="665" target="457"/> + <edge id="1332" source="668" target="669"/> + <edge id="1333" source="668" target="378"/> + <edge id="1334" source="669" target="65"/> + <edge id="1335" source="669" target="378"/> + <edge id="1336" source="669" target="155"/> + <edge id="1337" source="365" target="438"/> + <edge id="1338" source="365" target="264"/> + <edge id="1339" source="365" target="624"/> + <edge id="1340" source="365" target="120"/> + <edge id="1341" source="365" target="155"/> + <edge id="1342" source="670" target="159"/> + <edge id="1343" source="670" target="53"/> + <edge id="1344" source="670" target="591"/> + <edge id="1345" source="670" target="504"/> + <edge id="1346" source="670" target="65"/> + <edge id="1347" source="671" target="131"/> + <edge id="1348" source="671" target="67"/> + <edge id="1349" source="671" target="120"/> + <edge id="1350" source="671" target="105"/> + <edge id="1351" source="671" target="672"/> + <edge id="1352" source="673" target="113"/> + <edge id="1353" source="673" target="541"/> + <edge id="1354" source="673" target="674"/> + <edge id="1355" source="673" target="675"/> + <edge id="1356" source="676" target="673"/> + <edge id="1357" source="676" target="646"/> + <edge id="1358" source="676" target="567"/> + <edge id="1359" source="676" target="674"/> + <edge id="1360" source="677" target="53"/> + <edge id="1361" source="677" target="678"/> + <edge id="1362" source="677" target="679"/> + <edge id="1363" source="677" target="582"/> + <edge id="1364" source="677" target="680"/> + <edge id="1365" source="677" target="51"/> + <edge id="1366" source="681" target="682"/> + <edge id="1367" source="681" target="53"/> + <edge id="1368" source="681" target="683"/> + <edge id="1369" source="681" target="106"/> + <edge id="1370" source="681" target="161"/> + <edge id="1371" source="681" target="640"/> + <edge id="1372" source="681" target="641"/> + <edge id="1373" source="684" target="685"/> + <edge id="1374" source="684" target="1"/> + <edge id="1375" source="684" target="5"/> + <edge id="1376" source="684" target="686"/> + <edge id="1377" source="687" target="82"/> + <edge id="1378" source="687" target="98"/> + <edge id="1379" source="687" target="99"/> + <edge id="1380" source="687" target="53"/> + <edge id="1381" source="687" target="688"/> + <edge id="1382" source="687" target="96"/> + <edge id="1383" source="687" target="65"/> + <edge id="1384" source="687" target="109"/> + <edge id="1385" source="687" target="689"/> + <edge id="1386" source="690" target="79"/> + <edge id="1387" source="690" target="163"/> + <edge id="1388" source="690" target="685"/> + <edge id="1389" source="691" target="128"/> + <edge id="1390" source="691" target="85"/> + <edge id="1391" source="691" target="217"/> + <edge id="1392" source="691" target="248"/> + <edge id="1393" source="691" target="692"/> + <edge id="1394" source="691" target="215"/> + <edge id="1395" source="691" target="82"/> + <edge id="1396" source="693" target="571"/> + <edge id="1397" source="693" target="258"/> + <edge id="1398" source="693" target="97"/> + <edge id="1399" source="694" target="128"/> + <edge id="1400" source="694" target="53"/> + <edge id="1401" source="694" target="281"/> + <edge id="1402" source="694" target="111"/> + <edge id="1403" source="694" target="48"/> + <edge id="1404" source="694" target="334"/> + <edge id="1405" source="694" target="695"/> + <edge id="1406" source="694" target="49"/> + <edge id="1407" source="694" target="50"/> + <edge id="1408" source="694" target="484"/> + <edge id="1409" source="696" target="458"/> + <edge id="1410" source="696" target="697"/> + <edge id="1411" source="696" target="109"/> + <edge id="1412" source="696" target="698"/> + <edge id="1413" source="696" target="100"/> + <edge id="1414" source="696" target="167"/> + <edge id="1415" source="699" target="700"/> + <edge id="1416" source="701" target="539"/> + <edge id="1417" source="701" target="540"/> + <edge id="1418" source="701" target="702"/> + <edge id="1419" source="701" target="703"/> + <edge id="1420" source="701" target="91"/> + <edge id="1421" source="701" target="704"/> + <edge id="1422" source="705" target="568"/> + <edge id="1423" source="603" target="411"/> + <edge id="1424" source="603" target="1"/> + <edge id="1425" source="603" target="200"/> + <edge id="1426" source="603" target="166"/> + <edge id="1427" source="706" target="707"/> + <edge id="1428" source="706" target="85"/> + <edge id="1429" source="706" target="708"/> + <edge id="1430" source="706" target="132"/> + <edge id="1431" source="706" target="82"/> + <edge id="1432" source="709" target="710"/> + <edge id="1433" source="709" target="85"/> + <edge id="1434" source="711" target="85"/> + <edge id="1435" source="711" target="712"/> + <edge id="1436" source="711" target="444"/> + <edge id="1437" source="711" target="502"/> + <edge id="1438" source="711" target="82"/> + <edge id="1439" source="711" target="713"/> + <edge id="1440" source="711" target="714"/> + <edge id="1441" source="711" target="715"/> + <edge id="1442" source="711" target="710"/> + <edge id="1443" source="683" target="21"/> + <edge id="1444" source="683" target="82"/> + <edge id="1445" source="715" target="710"/> + <edge id="1446" source="715" target="85"/> + <edge id="1447" source="715" target="1"/> + <edge id="1448" source="716" target="711"/> + <edge id="1449" source="716" target="710"/> + <edge id="1450" source="716" target="85"/> + <edge id="1451" source="716" target="444"/> + <edge id="1452" source="716" target="502"/> + <edge id="1453" source="716" target="109"/> + <edge id="1454" source="716" target="713"/> + <edge id="1455" source="716" target="714"/> + <edge id="1456" source="716" target="128"/> + <edge id="1457" source="717" target="502"/> + <edge id="1458" source="717" target="713"/> + <edge id="1459" source="717" target="714"/> + <edge id="1460" source="717" target="128"/> + <edge id="1461" source="717" target="710"/> + <edge id="1462" source="717" target="85"/> + <edge id="1463" source="717" target="712"/> + <edge id="1464" source="717" target="441"/> + <edge id="1465" source="710" target="83"/> + <edge id="1466" source="710" target="85"/> + <edge id="1467" source="718" target="89"/> + <edge id="1468" source="719" target="720"/> + <edge id="1469" source="719" target="721"/> + <edge id="1470" source="719" target="1"/> + <edge id="1471" source="719" target="141"/> + <edge id="1472" source="722" target="720"/> + <edge id="1473" source="722" target="82"/> + <edge id="1474" source="722" target="239"/> + <edge id="1475" source="722" target="128"/> + <edge id="1476" source="722" target="96"/> + <edge id="1477" source="722" target="234"/> + <edge id="1478" source="723" target="223"/> + <edge id="1479" source="723" target="307"/> + <edge id="1480" source="723" target="361"/> + <edge id="1481" source="723" target="724"/> + <edge id="1482" source="723" target="309"/> + <edge id="1483" source="607" target="598"/> + <edge id="1484" source="607" target="65"/> + <edge id="1485" source="607" target="216"/> + <edge id="1486" source="607" target="53"/> + <edge id="1487" source="607" target="515"/> + <edge id="1488" source="607" target="608"/> + <edge id="1489" source="608" target="216"/> + <edge id="1490" source="608" target="53"/> + <edge id="1491" source="608" target="515"/> + <edge id="1492" source="608" target="607"/> + <edge id="1493" source="608" target="498"/> + <edge id="1494" source="608" target="65"/> + <edge id="1495" source="608" target="50"/> + <edge id="1496" source="725" target="498"/> + <edge id="1497" source="725" target="65"/> + <edge id="1498" source="725" target="726"/> + <edge id="1499" source="725" target="104"/> + <edge id="1500" source="725" target="216"/> + <edge id="1501" source="725" target="515"/> + <edge id="1502" source="725" target="610"/> + <edge id="1503" source="725" target="608"/> + <edge id="1504" source="727" target="229"/> + <edge id="1505" source="727" target="307"/> + <edge id="1506" source="727" target="390"/> + <edge id="1507" source="727" target="53"/> + <edge id="1508" source="727" target="65"/> + <edge id="1509" source="727" target="119"/> + <edge id="1510" source="727" target="200"/> + <edge id="1511" source="727" target="728"/> + <edge id="1512" source="727" target="50"/> + <edge id="1513" source="729" target="229"/> + <edge id="1514" source="729" target="402"/> + <edge id="1515" source="730" target="634"/> + <edge id="1516" source="730" target="607"/> + <edge id="1517" source="730" target="702"/> + <edge id="1518" source="730" target="48"/> + <edge id="1519" source="730" target="731"/> + <edge id="1520" source="730" target="49"/> + <edge id="1521" source="730" target="51"/> + <edge id="1522" source="730" target="484"/> + <edge id="1523" source="730" target="732"/> + <edge id="1524" source="174" target="423"/> + <edge id="1525" source="174" target="1"/> + <edge id="1526" source="733" target="174"/> + <edge id="1527" source="734" target="733"/> + <edge id="1528" source="734" target="592"/> + <edge id="1529" source="735" target="154"/> + <edge id="1530" source="735" target="120"/> + <edge id="1531" source="735" target="736"/> + <edge id="1532" source="737" target="738"/> + <edge id="1533" source="739" target="313"/> + <edge id="1534" source="740" target="53"/> + <edge id="1535" source="740" target="174"/> + <edge id="1536" source="740" target="65"/> + <edge id="1537" source="740" target="50"/> + <edge id="1538" source="740" target="109"/> + <edge id="1539" source="146" target="161"/> + <edge id="1540" source="741" target="20"/> + <edge id="1541" source="741" target="364"/> + <edge id="1542" source="741" target="280"/> + <edge id="1543" source="741" target="535"/> + <edge id="1544" source="741" target="536"/> + <edge id="1545" source="741" target="370"/> + <edge id="1546" source="741" target="742"/> + <edge id="1547" source="743" target="174"/> + <edge id="1548" source="743" target="644"/> + <edge id="1549" source="743" target="645"/> + <edge id="1550" source="644" target="645"/> + <edge id="1551" source="644" target="96"/> + <edge id="1552" source="644" target="592"/> + <edge id="1553" source="644" target="743"/> + <edge id="1554" source="645" target="95"/> + <edge id="1555" source="645" target="96"/> + <edge id="1556" source="645" target="82"/> + <edge id="1557" source="744" target="53"/> + <edge id="1558" source="744" target="65"/> + <edge id="1559" source="744" target="241"/> + <edge id="1560" source="744" target="131"/> + <edge id="1561" source="744" target="67"/> + <edge id="1562" source="744" target="120"/> + <edge id="1563" source="438" target="264"/> + <edge id="1564" source="438" target="265"/> + <edge id="1565" source="438" target="266"/> + <edge id="1566" source="438" target="202"/> + <edge id="1567" source="438" target="403"/> + <edge id="1568" source="264" target="403"/> + <edge id="1569" source="264" target="438"/> + <edge id="1570" source="264" target="265"/> + <edge id="1571" source="264" target="266"/> + <edge id="1572" source="264" target="202"/> + <edge id="1573" source="745" target="170"/> + <edge id="1574" source="745" target="746"/> + <edge id="1575" source="745" target="747"/> + <edge id="1576" source="745" target="748"/> + <edge id="1577" source="745" target="111"/> + <edge id="1578" source="745" target="749"/> + <edge id="1579" source="750" target="311"/> + <edge id="1580" source="750" target="79"/> + <edge id="1581" source="750" target="751"/> + <edge id="1582" source="750" target="752"/> + <edge id="1583" source="750" target="136"/> + <edge id="1584" source="750" target="312"/> + <edge id="1585" source="750" target="753"/> + <edge id="1586" source="750" target="754"/> + <edge id="1587" source="750" target="185"/> + <edge id="1588" source="750" target="137"/> + <edge id="1589" source="755" target="79"/> + <edge id="1590" source="755" target="211"/> + <edge id="1591" source="755" target="368"/> + <edge id="1592" source="755" target="300"/> + <edge id="1593" source="755" target="45"/> + <edge id="1594" source="755" target="312"/> + <edge id="1595" source="755" target="185"/> + <edge id="1596" source="755" target="299"/> + <edge id="1597" source="756" target="757"/> + <edge id="1598" source="756" target="758"/> + <edge id="1599" source="756" target="279"/> + <edge id="1600" source="756" target="53"/> + <edge id="1601" source="756" target="607"/> + <edge id="1602" source="756" target="339"/> + <edge id="1603" source="756" target="51"/> + <edge id="1604" source="756" target="759"/> + <edge id="1605" source="760" target="68"/> + <edge id="1606" source="760" target="519"/> + <edge id="1607" source="760" target="53"/> + <edge id="1608" source="760" target="65"/> + <edge id="1609" source="760" target="624"/> + <edge id="1610" source="760" target="576"/> + <edge id="1611" source="760" target="120"/> + <edge id="1612" source="760" target="262"/> + <edge id="1613" source="761" target="175"/> + <edge id="1614" source="761" target="82"/> + <edge id="1615" source="453" target="249"/> + <edge id="1616" source="453" target="76"/> + <edge id="1617" source="453" target="65"/> + <edge id="1618" source="453" target="250"/> + <edge id="1619" source="762" target="763"/> + <edge id="1620" source="762" target="764"/> + <edge id="1621" source="762" target="765"/> + <edge id="1622" source="766" target="163"/> + <edge id="1623" source="766" target="1"/> + <edge id="1624" source="767" target="1"/> + <edge id="1625" source="707" target="708"/> + <edge id="1626" source="707" target="768"/> + <edge id="1627" source="707" target="82"/> + <edge id="1628" source="707" target="706"/> + <edge id="1629" source="707" target="769"/> + <edge id="1630" source="707" target="568"/> + <edge id="1631" source="769" target="707"/> + <edge id="1632" source="769" target="708"/> + <edge id="1633" source="769" target="770"/> + <edge id="1634" source="769" target="768"/> + <edge id="1635" source="769" target="771"/> + <edge id="1636" source="504" target="427"/> + <edge id="1637" source="504" target="568"/> + <edge id="1638" source="504" target="569"/> + <edge id="1639" source="504" target="708"/> + <edge id="1640" source="568" target="427"/> + <edge id="1641" source="568" target="504"/> + <edge id="1642" source="568" target="569"/> + <edge id="1643" source="568" target="708"/> + <edge id="1644" source="568" target="772"/> + <edge id="1645" source="773" target="769"/> + <edge id="1646" source="773" target="504"/> + <edge id="1647" source="773" target="568"/> + <edge id="1648" source="773" target="708"/> + <edge id="1649" source="773" target="770"/> + <edge id="1650" source="773" target="768"/> + <edge id="1651" source="773" target="771"/> + <edge id="1652" source="774" target="82"/> + <edge id="1653" source="688" target="99"/> + <edge id="1654" source="688" target="25"/> + <edge id="1655" source="688" target="53"/> + <edge id="1656" source="688" target="693"/> + <edge id="1657" source="688" target="83"/> + <edge id="1658" source="589" target="233"/> + <edge id="1659" source="589" target="113"/> + <edge id="1660" source="589" target="47"/> + <edge id="1661" source="589" target="267"/> + <edge id="1662" source="589" target="590"/> + <edge id="1663" source="589" target="374"/> + <edge id="1664" source="589" target="49"/> + <edge id="1665" source="589" target="513"/> + <edge id="1666" source="244" target="645"/> + <edge id="1667" source="244" target="104"/> + <edge id="1668" source="244" target="111"/> + <edge id="1669" source="244" target="109"/> + <edge id="1670" source="244" target="643"/> + <edge id="1671" source="775" target="776"/> + <edge id="1672" source="775" target="777"/> + <edge id="1673" source="775" target="1"/> + <edge id="1674" source="778" target="96"/> + <edge id="1675" source="778" target="65"/> + <edge id="1676" source="778" target="109"/> + <edge id="1677" source="778" target="175"/> + <edge id="1678" source="778" target="25"/> + <edge id="1679" source="778" target="53"/> + <edge id="1680" source="778" target="84"/> + <edge id="1681" source="778" target="645"/> + <edge id="1682" source="779" target="68"/> + <edge id="1683" source="779" target="157"/> + <edge id="1684" source="779" target="175"/> + <edge id="1685" source="779" target="53"/> + <edge id="1686" source="779" target="84"/> + <edge id="1687" source="779" target="174"/> + <edge id="1688" source="779" target="120"/> + <edge id="1689" source="779" target="736"/> + <edge id="1690" source="780" target="174"/> + <edge id="1691" source="780" target="740"/> + <edge id="1692" source="780" target="234"/> + <edge id="1693" source="780" target="781"/> + <edge id="1694" source="780" target="782"/> + <edge id="1695" source="780" target="109"/> + <edge id="1696" source="780" target="68"/> + <edge id="1697" source="780" target="175"/> + <edge id="1698" source="783" target="1"/> + <edge id="1699" source="783" target="50"/> + <edge id="1700" source="512" target="784"/> + <edge id="1701" source="784" target="50"/> + <edge id="1702" source="784" target="68"/> + <edge id="1703" source="784" target="53"/> + <edge id="1704" source="784" target="512"/> + <edge id="1705" source="784" target="65"/> + <edge id="1706" source="73" target="72"/> + <edge id="1707" source="73" target="561"/> + <edge id="1708" source="73" target="70"/> + <edge id="1709" source="74" target="72"/> + <edge id="1710" source="74" target="73"/> + <edge id="1711" source="74" target="70"/> + <edge id="1712" source="785" target="322"/> + <edge id="1713" source="785" target="786"/> + <edge id="1714" source="785" target="323"/> + <edge id="1715" source="785" target="787"/> + <edge id="1716" source="788" target="114"/> + <edge id="1717" source="788" target="632"/> + <edge id="1718" source="788" target="789"/> + <edge id="1719" source="788" target="48"/> + <edge id="1720" source="788" target="411"/> + <edge id="1721" source="788" target="498"/> + <edge id="1722" source="790" target="791"/> + <edge id="1723" source="792" target="68"/> + <edge id="1724" source="792" target="61"/> + <edge id="1725" source="792" target="159"/> + <edge id="1726" source="792" target="793"/> + <edge id="1727" source="245" target="65"/> + <edge id="1728" source="245" target="131"/> + <edge id="1729" source="245" target="104"/> + <edge id="1730" source="245" target="105"/> + <edge id="1731" source="245" target="50"/> + <edge id="1732" source="245" target="102"/> + <edge id="1733" source="245" target="68"/> + <edge id="1734" source="245" target="53"/> + <edge id="1735" source="794" target="102"/> + <edge id="1736" source="794" target="25"/> + <edge id="1737" source="794" target="53"/> + <edge id="1738" source="794" target="65"/> + <edge id="1739" source="794" target="104"/> + <edge id="1740" source="794" target="50"/> + <edge id="1741" source="794" target="109"/> + <edge id="1742" source="795" target="234"/> + <edge id="1743" source="795" target="65"/> + <edge id="1744" source="795" target="50"/> + <edge id="1745" source="795" target="796"/> + <edge id="1746" source="797" target="53"/> + <edge id="1747" source="797" target="405"/> + <edge id="1748" source="797" target="397"/> + <edge id="1749" source="797" target="370"/> + <edge id="1750" source="797" target="48"/> + <edge id="1751" source="797" target="409"/> + <edge id="1752" source="797" target="49"/> + <edge id="1753" source="797" target="798"/> + <edge id="1754" source="797" target="50"/> + <edge id="1755" source="799" target="631"/> + <edge id="1756" source="799" target="800"/> + <edge id="1757" source="799" target="405"/> + <edge id="1758" source="799" target="397"/> + <edge id="1759" source="799" target="801"/> + <edge id="1760" source="799" target="370"/> + <edge id="1761" source="799" target="48"/> + <edge id="1762" source="799" target="409"/> + <edge id="1763" source="799" target="49"/> + <edge id="1764" source="799" target="280"/> + <edge id="1765" source="802" target="637"/> + <edge id="1766" source="802" target="79"/> + <edge id="1767" source="802" target="803"/> + <edge id="1768" source="802" target="150"/> + <edge id="1769" source="804" target="1"/> + <edge id="1770" source="805" target="166"/> + <edge id="1771" source="805" target="344"/> + <edge id="1772" source="805" target="603"/> + <edge id="1773" source="805" target="411"/> + <edge id="1774" source="805" target="281"/> + <edge id="1775" source="805" target="48"/> + <edge id="1776" source="411" target="409"/> + <edge id="1777" source="411" target="806"/> + <edge id="1778" source="411" target="807"/> + <edge id="1779" source="411" target="166"/> + <edge id="1780" source="411" target="532"/> + <edge id="1781" source="411" target="603"/> + <edge id="1782" source="411" target="805"/> + <edge id="1783" source="411" target="1"/> + <edge id="1784" source="411" target="48"/> + <edge id="1785" source="808" target="50"/> + <edge id="1786" source="808" target="216"/> + <edge id="1787" source="808" target="280"/> + <edge id="1788" source="808" target="411"/> + <edge id="1789" source="808" target="65"/> + <edge id="1790" source="808" target="405"/> + <edge id="1791" source="808" target="48"/> + <edge id="1792" source="808" target="409"/> + <edge id="1793" source="808" target="406"/> + <edge id="1794" source="808" target="49"/> + <edge id="1795" source="809" target="810"/> + <edge id="1796" source="809" target="42"/> + <edge id="1797" source="809" target="279"/> + <edge id="1798" source="809" target="382"/> + <edge id="1799" source="809" target="61"/> + <edge id="1800" source="809" target="48"/> + <edge id="1801" source="811" target="173"/> + <edge id="1802" source="811" target="175"/> + <edge id="1803" source="811" target="53"/> + <edge id="1804" source="811" target="65"/> + <edge id="1805" source="811" target="592"/> + <edge id="1806" source="811" target="109"/> + <edge id="1807" source="96" target="95"/> + <edge id="1808" source="96" target="812"/> + <edge id="1809" source="813" target="645"/> + <edge id="1810" source="813" target="96"/> + <edge id="1811" source="813" target="127"/> + <edge id="1812" source="813" target="132"/> + <edge id="1813" source="814" target="95"/> + <edge id="1814" source="814" target="96"/> + <edge id="1815" source="814" target="97"/> + <edge id="1816" source="815" target="816"/> + <edge id="1817" source="815" target="817"/> + <edge id="1818" source="815" target="403"/> + <edge id="1819" source="815" target="607"/> + <edge id="1820" source="815" target="438"/> + <edge id="1821" source="815" target="598"/> + <edge id="1822" source="64" target="68"/> + <edge id="1823" source="64" target="53"/> + <edge id="1824" source="64" target="118"/> + <edge id="1825" source="64" target="65"/> + <edge id="1826" source="64" target="93"/> + <edge id="1827" source="64" target="67"/> + <edge id="1828" source="64" target="105"/> + <edge id="1829" source="64" target="50"/> + <edge id="1830" source="64" target="349"/> + <edge id="1831" source="818" target="221"/> + <edge id="1832" source="818" target="313"/> + <edge id="1833" source="819" target="292"/> + <edge id="1834" source="819" target="79"/> + <edge id="1835" source="820" target="167"/> + <edge id="1836" source="821" target="88"/> + <edge id="1837" source="821" target="53"/> + <edge id="1838" source="821" target="498"/> + <edge id="1839" source="821" target="109"/> + <edge id="1840" source="821" target="822"/> + <edge id="1841" source="100" target="68"/> + <edge id="1842" source="100" target="53"/> + <edge id="1843" source="100" target="248"/> + <edge id="1844" source="823" target="82"/> + <edge id="1845" source="823" target="84"/> + <edge id="1846" source="823" target="824"/> + <edge id="1847" source="493" target="825"/> + <edge id="1848" source="493" target="82"/> + <edge id="1849" source="493" target="495"/> + <edge id="1850" source="290" target="62"/> + <edge id="1851" source="290" target="53"/> + <edge id="1852" source="290" target="65"/> + <edge id="1853" source="290" target="67"/> + <edge id="1854" source="290" target="826"/> + <edge id="1855" source="290" target="50"/> + <edge id="1856" source="827" target="1"/> + <edge id="1857" source="828" target="237"/> + <edge id="1858" source="828" target="76"/> + <edge id="1859" source="828" target="53"/> + <edge id="1860" source="828" target="591"/> + <edge id="1861" source="828" target="65"/> + <edge id="1862" source="828" target="109"/> + <edge id="1863" source="828" target="682"/> + <edge id="1864" source="828" target="511"/> + <edge id="1865" source="828" target="68"/> + <edge id="1866" source="829" target="556"/> + <edge id="1867" source="829" target="109"/> + <edge id="1868" source="829" target="76"/> + <edge id="1869" source="829" target="453"/> + <edge id="1870" source="829" target="830"/> + <edge id="1871" source="829" target="831"/> + <edge id="1872" source="829" target="101"/> + <edge id="1873" source="830" target="237"/> + <edge id="1874" source="830" target="76"/> + <edge id="1875" source="830" target="831"/> + <edge id="1876" source="830" target="556"/> + <edge id="1877" source="832" target="82"/> + <edge id="1878" source="832" target="68"/> + <edge id="1879" source="832" target="237"/> + <edge id="1880" source="832" target="76"/> + <edge id="1881" source="832" target="53"/> + <edge id="1882" source="832" target="693"/> + <edge id="1883" source="832" target="65"/> + <edge id="1884" source="832" target="571"/> + <edge id="1885" source="833" target="280"/> + <edge id="1886" source="833" target="403"/> + <edge id="1887" source="833" target="715"/> + <edge id="1888" source="833" target="444"/> + <edge id="1889" source="833" target="281"/> + <edge id="1890" source="833" target="505"/> + <edge id="1891" source="833" target="48"/> + <edge id="1892" source="833" target="50"/> + <edge id="1893" source="833" target="109"/> + <edge id="1894" source="265" target="834"/> + <edge id="1895" source="265" target="202"/> + <edge id="1896" source="265" target="438"/> + <edge id="1897" source="265" target="264"/> + <edge id="1898" source="265" target="835"/> + <edge id="1899" source="836" target="490"/> + <edge id="1900" source="836" target="837"/> + <edge id="1901" source="836" target="838"/> + <edge id="1902" source="836" target="266"/> + <edge id="1903" source="837" target="280"/> + <edge id="1904" source="837" target="444"/> + <edge id="1905" source="837" target="781"/> + <edge id="1906" source="837" target="839"/> + <edge id="1907" source="837" target="48"/> + <edge id="1908" source="837" target="49"/> + <edge id="1909" source="837" target="495"/> + <edge id="1910" source="840" target="280"/> + <edge id="1911" source="840" target="335"/> + <edge id="1912" source="840" target="715"/> + <edge id="1913" source="840" target="841"/> + <edge id="1914" source="840" target="444"/> + <edge id="1915" source="840" target="48"/> + <edge id="1916" source="840" target="502"/> + <edge id="1917" source="840" target="713"/> + <edge id="1918" source="842" target="85"/> + <edge id="1919" source="843" target="444"/> + <edge id="1920" source="843" target="502"/> + <edge id="1921" source="843" target="714"/> + <edge id="1922" source="843" target="711"/> + <edge id="1923" source="843" target="715"/> + <edge id="1924" source="843" target="85"/> + <edge id="1925" source="844" target="154"/> + <edge id="1926" source="234" target="85"/> + <edge id="1927" source="234" target="215"/> + <edge id="1928" source="234" target="82"/> + <edge id="1929" source="85" target="128"/> + <edge id="1930" source="85" target="709"/> + <edge id="1931" source="85" target="82"/> + <edge id="1932" source="845" target="846"/> + <edge id="1933" source="845" target="706"/> + <edge id="1934" source="845" target="707"/> + <edge id="1935" source="845" target="379"/> + <edge id="1936" source="751" target="479"/> + <edge id="1937" source="752" target="79"/> + <edge id="1938" source="752" target="211"/> + <edge id="1939" source="752" target="136"/> + <edge id="1940" source="752" target="847"/> + <edge id="1941" source="752" target="137"/> + <edge id="1942" source="848" target="79"/> + <edge id="1943" source="848" target="752"/> + <edge id="1944" source="848" target="211"/> + <edge id="1945" source="211" target="361"/> + <edge id="1946" source="211" target="225"/> + <edge id="1947" source="849" target="361"/> + <edge id="1948" source="849" target="324"/> + <edge id="1949" source="849" target="79"/> + <edge id="1950" source="850" target="99"/> + <edge id="1951" source="850" target="79"/> + <edge id="1952" source="850" target="690"/> + <edge id="1953" source="850" target="718"/> + <edge id="1954" source="850" target="141"/> + <edge id="1955" source="361" target="299"/> + <edge id="1956" source="361" target="79"/> + <edge id="1957" source="361" target="211"/> + <edge id="1958" source="361" target="368"/> + <edge id="1959" source="851" target="852"/> + <edge id="1960" source="851" target="79"/> + <edge id="1961" source="851" target="312"/> + <edge id="1962" source="613" target="292"/> + <edge id="1963" source="613" target="296"/> + <edge id="1964" source="613" target="79"/> + <edge id="1965" source="613" target="313"/> + <edge id="1966" source="613" target="351"/> + <edge id="1967" source="853" target="292"/> + <edge id="1968" source="853" target="313"/> + <edge id="1969" source="854" target="1"/> + <edge id="1970" source="854" target="272"/> + <edge id="1971" source="854" target="429"/> + <edge id="1972" source="855" target="296"/> + <edge id="1973" source="856" target="310"/> + <edge id="1974" source="856" target="219"/> + <edge id="1975" source="856" target="293"/> + <edge id="1976" source="856" target="321"/> + <edge id="1977" source="856" target="294"/> + <edge id="1978" source="856" target="79"/> + <edge id="1979" source="856" target="295"/> + <edge id="1980" source="856" target="185"/> + <edge id="1981" source="598" target="597"/> + <edge id="1982" source="598" target="816"/> + <edge id="1983" source="598" target="104"/> + <edge id="1984" source="598" target="114"/> + <edge id="1985" source="498" target="857"/> + <edge id="1986" source="498" target="80"/> + <edge id="1987" source="498" target="581"/> + <edge id="1988" source="498" target="858"/> + <edge id="1989" source="498" target="816"/> + <edge id="1990" source="816" target="598"/> + <edge id="1991" source="816" target="498"/> + <edge id="1992" source="816" target="435"/> + <edge id="1993" source="816" target="858"/> + <edge id="1994" source="859" target="860"/> + <edge id="1995" source="859" target="861"/> + <edge id="1996" source="859" target="87"/> + <edge id="1997" source="859" target="817"/> + <edge id="1998" source="859" target="862"/> + <edge id="1999" source="859" target="863"/> + <edge id="2000" source="859" target="513"/> + <edge id="2001" source="859" target="161"/> + <edge id="2002" source="817" target="598"/> + <edge id="2003" source="817" target="498"/> + <edge id="2004" source="864" target="50"/> + <edge id="2005" source="864" target="480"/> + <edge id="2006" source="864" target="61"/> + <edge id="2007" source="864" target="53"/> + <edge id="2008" source="864" target="498"/> + <edge id="2009" source="864" target="865"/> + <edge id="2010" source="864" target="66"/> + <edge id="2011" source="864" target="866"/> + <edge id="2012" source="864" target="867"/> + <edge id="2013" source="857" target="816"/> + <edge id="2014" source="857" target="80"/> + <edge id="2015" source="857" target="581"/> + <edge id="2016" source="857" target="858"/> + <edge id="2017" source="868" target="84"/> + <edge id="2018" source="868" target="498"/> + <edge id="2019" source="868" target="109"/> + <edge id="2020" source="868" target="82"/> + <edge id="2021" source="868" target="531"/> + <edge id="2022" source="869" target="232"/> + <edge id="2023" source="869" target="132"/> + <edge id="2024" source="869" target="172"/> + <edge id="2025" source="869" target="82"/> + <edge id="2026" source="869" target="53"/> + <edge id="2027" source="869" target="85"/> + <edge id="2028" source="869" target="712"/> + <edge id="2029" source="800" target="498"/> + <edge id="2030" source="800" target="581"/> + <edge id="2031" source="712" target="82"/> + <edge id="2032" source="712" target="713"/> + <edge id="2033" source="712" target="128"/> + <edge id="2034" source="712" target="85"/> + <edge id="2035" source="712" target="868"/> + <edge id="2036" source="712" target="869"/> + <edge id="2037" source="712" target="870"/> + <edge id="2038" source="712" target="232"/> + <edge id="2039" source="871" target="68"/> + <edge id="2040" source="871" target="61"/> + <edge id="2041" source="871" target="408"/> + <edge id="2042" source="871" target="62"/> + <edge id="2043" source="871" target="53"/> + <edge id="2044" source="871" target="64"/> + <edge id="2045" source="871" target="65"/> + <edge id="2046" source="871" target="289"/> + <edge id="2047" source="871" target="287"/> + <edge id="2048" source="871" target="513"/> + <edge id="2049" source="554" target="510"/> + <edge id="2050" source="554" target="348"/> + <edge id="2051" source="872" target="150"/> + <edge id="2052" source="873" target="53"/> + <edge id="2053" source="873" target="874"/> + <edge id="2054" source="873" target="65"/> + <edge id="2055" source="873" target="131"/> + <edge id="2056" source="873" target="104"/> + <edge id="2057" source="873" target="114"/> + <edge id="2058" source="873" target="458"/> + <edge id="2059" source="873" target="50"/> + <edge id="2060" source="873" target="109"/> + <edge id="2061" source="875" target="858"/> + <edge id="2062" source="875" target="760"/> + <edge id="2063" source="875" target="576"/> + <edge id="2064" source="874" target="104"/> + <edge id="2065" source="874" target="114"/> + <edge id="2066" source="874" target="876"/> + <edge id="2067" source="874" target="50"/> + <edge id="2068" source="877" target="740"/> + <edge id="2069" source="877" target="65"/> + <edge id="2070" source="877" target="107"/> + <edge id="2071" source="877" target="111"/> + <edge id="2072" source="878" target="781"/> + <edge id="2073" source="878" target="68"/> + <edge id="2074" source="878" target="53"/> + <edge id="2075" source="878" target="645"/> + <edge id="2076" source="878" target="877"/> + <edge id="2077" source="879" target="648"/> + <edge id="2078" source="880" target="68"/> + <edge id="2079" source="880" target="519"/> + <edge id="2080" source="880" target="53"/> + <edge id="2081" source="880" target="167"/> + <edge id="2082" source="880" target="576"/> + <edge id="2083" source="881" target="882"/> + <edge id="2084" source="881" target="883"/> + <edge id="2085" source="881" target="109"/> + <edge id="2086" source="881" target="68"/> + <edge id="2087" source="881" target="53"/> + <edge id="2088" source="881" target="100"/> + <edge id="2089" source="881" target="498"/> + <edge id="2090" source="881" target="65"/> + <edge id="2091" source="881" target="167"/> + <edge id="2092" source="884" target="68"/> + <edge id="2093" source="884" target="216"/> + <edge id="2094" source="884" target="468"/> + <edge id="2095" source="884" target="53"/> + <edge id="2096" source="884" target="515"/> + <edge id="2097" source="884" target="498"/> + <edge id="2098" source="884" target="444"/> + <edge id="2099" source="884" target="885"/> + <edge id="2100" source="884" target="82"/> + <edge id="2101" source="886" target="600"/> + <edge id="2102" source="886" target="883"/> + <edge id="2103" source="886" target="170"/> + <edge id="2104" source="887" target="608"/> + <edge id="2105" source="887" target="598"/> + <edge id="2106" source="887" target="888"/> + <edge id="2107" source="887" target="889"/> + <edge id="2108" source="890" target="790"/> + <edge id="2109" source="890" target="1"/> + <edge id="2110" source="891" target="184"/> + <edge id="2111" source="891" target="325"/> + <edge id="2112" source="891" target="892"/> + <edge id="2113" source="891" target="51"/> + <edge id="2114" source="891" target="53"/> + <edge id="2115" source="891" target="79"/> + <edge id="2116" source="891" target="893"/> + <edge id="2117" source="891" target="181"/> + <edge id="2118" source="894" target="177"/> + <edge id="2119" source="894" target="79"/> + <edge id="2120" source="894" target="74"/> + <edge id="2121" source="894" target="463"/> + <edge id="2122" source="65" target="131"/> + <edge id="2123" source="65" target="104"/> + <edge id="2124" source="65" target="67"/> + <edge id="2125" source="65" target="105"/> + <edge id="2126" source="65" target="50"/> + <edge id="2127" source="65" target="68"/> + <edge id="2128" source="65" target="53"/> + <edge id="2129" source="65" target="118"/> + <edge id="2130" source="65" target="64"/> + <edge id="2131" source="65" target="93"/> + <edge id="2132" source="895" target="567"/> + <edge id="2133" source="895" target="50"/> + <edge id="2134" source="895" target="68"/> + <edge id="2135" source="895" target="53"/> + <edge id="2136" source="895" target="118"/> + <edge id="2137" source="895" target="64"/> + <edge id="2138" source="895" target="93"/> + <edge id="2139" source="895" target="131"/> + <edge id="2140" source="895" target="242"/> + <edge id="2141" source="895" target="67"/> + <edge id="2142" source="588" target="113"/> + <edge id="2143" source="588" target="116"/> + <edge id="2144" source="624" target="896"/> + <edge id="2145" source="624" target="897"/> + <edge id="2146" source="898" target="367"/> + <edge id="2147" source="898" target="1"/> + <edge id="2148" source="898" target="899"/> + <edge id="2149" source="377" target="294"/> + <edge id="2150" source="377" target="295"/> + <edge id="2151" source="377" target="852"/> + <edge id="2152" source="900" target="652"/> + <edge id="2153" source="259" target="841"/> + <edge id="2154" source="259" target="457"/> + <edge id="2155" source="93" target="53"/> + <edge id="2156" source="93" target="84"/> + <edge id="2157" source="93" target="64"/> + <edge id="2158" source="93" target="65"/> + <edge id="2159" source="93" target="104"/> + <edge id="2160" source="93" target="67"/> + <edge id="2161" source="93" target="105"/> + <edge id="2162" source="93" target="50"/> + <edge id="2163" source="93" target="82"/> + <edge id="2164" source="901" target="451"/> + <edge id="2165" source="901" target="872"/> + <edge id="2166" source="901" target="65"/> + <edge id="2167" source="901" target="93"/> + <edge id="2168" source="901" target="902"/> + <edge id="2169" source="901" target="250"/> + <edge id="2170" source="901" target="111"/> + <edge id="2171" source="901" target="109"/> + <edge id="2172" source="901" target="68"/> + <edge id="2173" source="903" target="104"/> + <edge id="2174" source="903" target="109"/> + <edge id="2175" source="903" target="451"/> + <edge id="2176" source="903" target="53"/> + <edge id="2177" source="903" target="65"/> + <edge id="2178" source="903" target="93"/> + <edge id="2179" source="903" target="901"/> + <edge id="2180" source="131" target="53"/> + <edge id="2181" source="131" target="118"/> + <edge id="2182" source="131" target="65"/> + <edge id="2183" source="131" target="104"/> + <edge id="2184" source="131" target="114"/> + <edge id="2185" source="131" target="567"/> + <edge id="2186" source="131" target="111"/> + <edge id="2187" source="131" target="50"/> + <edge id="2188" source="540" target="541"/> + <edge id="2189" source="726" target="607"/> + <edge id="2190" source="726" target="65"/> + <edge id="2191" source="726" target="104"/> + <edge id="2192" source="726" target="114"/> + <edge id="2193" source="726" target="426"/> + <edge id="2194" source="726" target="53"/> + <edge id="2195" source="569" target="130"/> + <edge id="2196" source="569" target="427"/> + <edge id="2197" source="569" target="504"/> + <edge id="2198" source="569" target="568"/> + <edge id="2199" source="569" target="65"/> + <edge id="2200" source="569" target="82"/> + <edge id="2201" source="904" target="93"/> + <edge id="2202" source="904" target="131"/> + <edge id="2203" source="904" target="569"/> + <edge id="2204" source="904" target="104"/> + <edge id="2205" source="904" target="567"/> + <edge id="2206" source="904" target="427"/> + <edge id="2207" source="904" target="118"/> + <edge id="2208" source="904" target="65"/> + <edge id="2209" source="104" target="597"/> + <edge id="2210" source="104" target="598"/> + <edge id="2211" source="104" target="114"/> + <edge id="2212" source="114" target="597"/> + <edge id="2213" source="114" target="598"/> + <edge id="2214" source="114" target="104"/> + <edge id="2215" source="905" target="906"/> + <edge id="2216" source="905" target="907"/> + <edge id="2217" source="905" target="79"/> + <edge id="2218" source="906" target="177"/> + <edge id="2219" source="906" target="463"/> + <edge id="2220" source="907" target="906"/> + <edge id="2221" source="907" target="908"/> + <edge id="2222" source="907" target="909"/> + <edge id="2223" source="910" target="177"/> + <edge id="2224" source="242" target="241"/> + <edge id="2225" source="242" target="153"/> + <edge id="2226" source="242" target="120"/> + <edge id="2227" source="153" target="120"/> + <edge id="2228" source="153" target="379"/> + <edge id="2229" source="153" target="584"/> + <edge id="2230" source="153" target="155"/> + <edge id="2231" source="153" target="152"/> + <edge id="2232" source="153" target="242"/> + <edge id="2233" source="89" target="79"/> + <edge id="2234" source="89" target="141"/> + <edge id="2235" source="163" target="162"/> + <edge id="2236" source="163" target="79"/> + <edge id="2237" source="163" target="164"/> + <edge id="2238" source="911" target="307"/> + <edge id="2239" source="911" target="912"/> + <edge id="2240" source="911" target="309"/> + <edge id="2241" source="911" target="913"/> + <edge id="2242" source="914" target="253"/> + <edge id="2243" source="914" target="53"/> + <edge id="2244" source="914" target="79"/> + <edge id="2245" source="914" target="65"/> + <edge id="2246" source="914" target="104"/> + <edge id="2247" source="914" target="915"/> + <edge id="2248" source="914" target="251"/> + <edge id="2249" source="914" target="50"/> + <edge id="2250" source="914" target="109"/> + <edge id="2251" source="106" target="53"/> + <edge id="2252" source="916" target="96"/> + <edge id="2253" source="917" target="76"/> + <edge id="2254" source="917" target="453"/> + <edge id="2255" source="918" target="53"/> + <edge id="2256" source="918" target="65"/> + <edge id="2257" source="918" target="104"/> + <edge id="2258" source="918" target="915"/> + <edge id="2259" source="918" target="781"/> + <edge id="2260" source="918" target="919"/> + <edge id="2261" source="918" target="458"/> + <edge id="2262" source="920" target="646"/> + <edge id="2263" source="920" target="777"/> + <edge id="2264" source="921" target="883"/> + <edge id="2265" source="921" target="858"/> + <edge id="2266" source="921" target="155"/> + <edge id="2267" source="921" target="152"/> + <edge id="2268" source="921" target="498"/> + <edge id="2269" source="921" target="153"/> + <edge id="2270" source="921" target="120"/> + <edge id="2271" source="922" target="90"/> + <edge id="2272" source="922" target="91"/> + <edge id="2273" source="922" target="897"/> + <edge id="2274" source="923" target="110"/> + <edge id="2275" source="923" target="924"/> + <edge id="2276" source="452" target="65"/> + <edge id="2277" source="452" target="93"/> + <edge id="2278" source="452" target="50"/> + <edge id="2279" source="452" target="451"/> + <edge id="2280" source="452" target="53"/> + <edge id="2281" source="452" target="79"/> + <edge id="2282" source="452" target="549"/> + <edge id="2283" source="925" target="53"/> + <edge id="2284" source="925" target="65"/> + <edge id="2285" source="925" target="119"/> + <edge id="2286" source="925" target="287"/> + <edge id="2287" source="925" target="552"/> + <edge id="2288" source="925" target="50"/> + <edge id="2289" source="865" target="511"/> + <edge id="2290" source="865" target="436"/> + <edge id="2291" source="865" target="926"/> + <edge id="2292" source="865" target="287"/> + <edge id="2293" source="865" target="262"/> + <edge id="2294" source="927" target="79"/> + <edge id="2295" source="927" target="650"/> + <edge id="2296" source="927" target="150"/> + <edge id="2297" source="927" target="928"/> + <edge id="2298" source="929" target="930"/> + <edge id="2299" source="929" target="736"/> + <edge id="2300" source="929" target="68"/> + <edge id="2301" source="929" target="25"/> + <edge id="2302" source="929" target="53"/> + <edge id="2303" source="929" target="779"/> + <edge id="2304" source="929" target="154"/> + <edge id="2305" source="929" target="27"/> + <edge id="2306" source="929" target="120"/> + <edge id="2307" source="929" target="109"/> + <edge id="2308" source="931" target="480"/> + <edge id="2309" source="931" target="61"/> + <edge id="2310" source="931" target="403"/> + <edge id="2311" source="931" target="932"/> + <edge id="2312" source="931" target="170"/> + <edge id="2313" source="931" target="287"/> + <edge id="2314" source="931" target="147"/> + <edge id="2315" source="933" target="650"/> + <edge id="2316" source="933" target="607"/> + <edge id="2317" source="933" target="934"/> + <edge id="2318" source="115" target="363"/> + <edge id="2319" source="115" target="364"/> + <edge id="2320" source="115" target="373"/> + <edge id="2321" source="115" target="113"/> + <edge id="2322" source="115" target="116"/> + <edge id="2323" source="115" target="112"/> + <edge id="2324" source="915" target="883"/> + <edge id="2325" source="915" target="935"/> + <edge id="2326" source="915" target="458"/> + <edge id="2327" source="915" target="697"/> + <edge id="2328" source="936" target="498"/> + <edge id="2329" source="936" target="167"/> + <edge id="2330" source="936" target="469"/> + <edge id="2331" source="936" target="883"/> + <edge id="2332" source="107" target="53"/> + <edge id="2333" source="107" target="50"/> + <edge id="2334" source="167" target="68"/> + <edge id="2335" source="167" target="53"/> + <edge id="2336" source="167" target="65"/> + <edge id="2337" source="167" target="334"/> + <edge id="2338" source="167" target="50"/> + <edge id="2339" source="167" target="698"/> + <edge id="2340" source="937" target="698"/> + <edge id="2341" source="937" target="167"/> + <edge id="2342" source="937" target="938"/> + <edge id="2343" source="937" target="469"/> + <edge id="2344" source="937" target="458"/> + <edge id="2345" source="939" target="68"/> + <edge id="2346" source="939" target="466"/> + <edge id="2347" source="939" target="53"/> + <edge id="2348" source="939" target="107"/> + <edge id="2349" source="939" target="167"/> + <edge id="2350" source="939" target="937"/> + <edge id="2351" source="939" target="467"/> + <edge id="2352" source="127" target="111"/> + <edge id="2353" source="127" target="812"/> + <edge id="2354" source="940" target="1"/> + <edge id="2355" source="940" target="941"/> + <edge id="2356" source="942" target="76"/> + <edge id="2357" source="943" target="169"/> + <edge id="2358" source="943" target="498"/> + <edge id="2359" source="943" target="857"/> + <edge id="2360" source="943" target="120"/> + <edge id="2361" source="944" target="53"/> + <edge id="2362" source="944" target="715"/> + <edge id="2363" source="944" target="607"/> + <edge id="2364" source="944" target="339"/> + <edge id="2365" source="944" target="48"/> + <edge id="2366" source="944" target="502"/> + <edge id="2367" source="944" target="49"/> + <edge id="2368" source="944" target="484"/> + <edge id="2369" source="944" target="109"/> + <edge id="2370" source="945" target="1"/> + <edge id="2371" source="945" target="170"/> + <edge id="2372" source="576" target="107"/> + <edge id="2373" source="576" target="120"/> + <edge id="2374" source="576" target="582"/> + <edge id="2375" source="946" target="95"/> + <edge id="2376" source="946" target="76"/> + <edge id="2377" source="946" target="96"/> + <edge id="2378" source="946" target="947"/> + <edge id="2379" source="946" target="250"/> + <edge id="2380" source="946" target="948"/> + <edge id="2381" source="946" target="883"/> + <edge id="2382" source="926" target="436"/> + <edge id="2383" source="926" target="262"/> + <edge id="2384" source="926" target="698"/> + <edge id="2385" source="926" target="76"/> + <edge id="2386" source="400" target="133"/> + <edge id="2387" source="400" target="570"/> + <edge id="2388" source="400" target="136"/> + <edge id="2389" source="400" target="137"/> + <edge id="2390" source="388" target="20"/> + <edge id="2391" source="388" target="537"/> + <edge id="2392" source="388" target="896"/> + <edge id="2393" source="388" target="533"/> + <edge id="2394" source="949" target="208"/> + <edge id="2395" source="949" target="204"/> + <edge id="2396" source="949" target="1"/> + <edge id="2397" source="950" target="79"/> + <edge id="2398" source="950" target="208"/> + <edge id="2399" source="136" target="752"/> + <edge id="2400" source="947" target="26"/> + <edge id="2401" source="947" target="155"/> + <edge id="2402" source="951" target="457"/> + <edge id="2403" source="951" target="431"/> + <edge id="2404" source="951" target="408"/> + <edge id="2405" source="951" target="53"/> + <edge id="2406" source="951" target="455"/> + <edge id="2407" source="951" target="65"/> + <edge id="2408" source="951" target="287"/> + <edge id="2409" source="952" target="348"/> + <edge id="2410" source="952" target="349"/> + <edge id="2411" source="953" target="76"/> + <edge id="2412" source="953" target="952"/> + <edge id="2413" source="953" target="954"/> + <edge id="2414" source="953" target="1"/> + <edge id="2415" source="953" target="661"/> + <edge id="2416" source="955" target="324"/> + <edge id="2417" source="955" target="48"/> + <edge id="2418" source="955" target="502"/> + <edge id="2419" source="955" target="49"/> + <edge id="2420" source="955" target="279"/> + <edge id="2421" source="955" target="280"/> + <edge id="2422" source="955" target="335"/> + <edge id="2423" source="955" target="956"/> + <edge id="2424" source="955" target="444"/> + <edge id="2425" source="957" target="958"/> + <edge id="2426" source="957" target="959"/> + <edge id="2427" source="957" target="960"/> + <edge id="2428" source="957" target="961"/> + <edge id="2429" source="957" target="48"/> + <edge id="2430" source="957" target="502"/> + <edge id="2431" source="957" target="962"/> + <edge id="2432" source="963" target="571"/> + <edge id="2433" source="154" target="152"/> + <edge id="2434" source="964" target="95"/> + <edge id="2435" source="964" target="175"/> + <edge id="2436" source="964" target="96"/> + <edge id="2437" source="964" target="101"/> + <edge id="2438" source="964" target="882"/> + <edge id="2439" source="964" target="109"/> + <edge id="2440" source="965" target="95"/> + <edge id="2441" source="965" target="96"/> + <edge id="2442" source="965" target="964"/> + <edge id="2443" source="965" target="109"/> + <edge id="2444" source="965" target="82"/> + <edge id="2445" source="841" target="48"/> + <edge id="2446" source="841" target="49"/> + <edge id="2447" source="841" target="513"/> + <edge id="2448" source="841" target="51"/> + <edge id="2449" source="841" target="966"/> + <edge id="2450" source="841" target="259"/> + <edge id="2451" source="841" target="967"/> + <edge id="2452" source="838" target="259"/> + <edge id="2453" source="838" target="281"/> + <edge id="2454" source="838" target="48"/> + <edge id="2455" source="838" target="49"/> + <edge id="2456" source="838" target="513"/> + <edge id="2457" source="838" target="51"/> + <edge id="2458" source="968" target="272"/> + <edge id="2459" source="968" target="37"/> + <edge id="2460" source="535" target="364"/> + <edge id="2461" source="535" target="532"/> + <edge id="2462" source="535" target="543"/> + <edge id="2463" source="535" target="335"/> + <edge id="2464" source="535" target="536"/> + <edge id="2465" source="535" target="537"/> + <edge id="2466" source="535" target="533"/> + <edge id="2467" source="969" target="85"/> + <edge id="2468" source="969" target="444"/> + <edge id="2469" source="969" target="970"/> + <edge id="2470" source="969" target="48"/> + <edge id="2471" source="971" target="311"/> + <edge id="2472" source="971" target="224"/> + <edge id="2473" source="971" target="972"/> + <edge id="2474" source="971" target="185"/> + <edge id="2475" source="971" target="296"/> + <edge id="2476" source="973" target="79"/> + <edge id="2477" source="973" target="974"/> + <edge id="2478" source="973" target="1"/> + <edge id="2479" source="938" target="165"/> + <edge id="2480" source="938" target="53"/> + <edge id="2481" source="938" target="167"/> + <edge id="2482" source="938" target="975"/> + <edge id="2483" source="938" target="976"/> + <edge id="2484" source="975" target="53"/> + <edge id="2485" source="975" target="696"/> + <edge id="2486" source="975" target="167"/> + <edge id="2487" source="975" target="938"/> + <edge id="2488" source="975" target="510"/> + <edge id="2489" source="975" target="68"/> + <edge id="2490" source="70" target="72"/> + <edge id="2491" source="70" target="73"/> + <edge id="2492" source="70" target="74"/> + <edge id="2493" source="977" target="46"/> + <edge id="2494" source="977" target="48"/> + <edge id="2495" source="977" target="82"/> + <edge id="2496" source="977" target="279"/> + <edge id="2497" source="977" target="432"/> + <edge id="2498" source="977" target="61"/> + <edge id="2499" source="977" target="570"/> + <edge id="2500" source="977" target="937"/> + <edge id="2501" source="486" target="313"/> + <edge id="2502" source="978" target="310"/> + <edge id="2503" source="978" target="979"/> + <edge id="2504" source="978" target="182"/> + <edge id="2505" source="530" target="529"/> + <edge id="2506" source="980" target="365"/> + <edge id="2507" source="980" target="65"/> + <edge id="2508" source="980" target="916"/> + <edge id="2509" source="980" target="67"/> + <edge id="2510" source="18" target="981"/> + <edge id="2511" source="982" target="439"/> + <edge id="2512" source="982" target="250"/> + <edge id="2513" source="982" target="983"/> + <edge id="2514" source="984" target="127"/> + <edge id="2515" source="984" target="985"/> + <edge id="2516" source="984" target="986"/> + <edge id="2517" source="984" target="987"/> + <edge id="2518" source="984" target="765"/> + <edge id="2519" source="984" target="82"/> + <edge id="2520" source="986" target="985"/> + <edge id="2521" source="988" target="292"/> + <edge id="2522" source="988" target="316"/> + <edge id="2523" source="488" target="150"/> + <edge id="2524" source="190" target="192"/> + <edge id="2525" source="190" target="187"/> + <edge id="2526" source="190" target="188"/> + <edge id="2527" source="190" target="191"/> + <edge id="2528" source="989" target="192"/> + <edge id="2529" source="990" target="905"/> + <edge id="2530" source="990" target="950"/> + <edge id="2531" source="990" target="991"/> + <edge id="2532" source="992" target="313"/> + <edge id="2533" source="992" target="993"/> + <edge id="2534" source="992" target="994"/> + <edge id="2535" source="992" target="995"/> + <edge id="2536" source="992" target="996"/> + <edge id="2537" source="992" target="997"/> + <edge id="2538" source="994" target="166"/> + <edge id="2539" source="994" target="170"/> + <edge id="2540" source="995" target="993"/> + <edge id="2541" source="996" target="993"/> + <edge id="2542" source="997" target="313"/> + <edge id="2543" source="998" target="996"/> + <edge id="2544" source="998" target="993"/> + <edge id="2545" source="999" target="1000"/> + <edge id="2546" source="1001" target="460"/> + <edge id="2547" source="1001" target="607"/> + <edge id="2548" source="1001" target="361"/> + <edge id="2549" source="1001" target="160"/> + <edge id="2550" source="1001" target="1002"/> + <edge id="2551" source="1001" target="433"/> + <edge id="2552" source="444" target="1003"/> + <edge id="2553" source="444" target="82"/> + <edge id="2554" source="893" target="180"/> + <edge id="2555" source="893" target="53"/> + <edge id="2556" source="893" target="65"/> + <edge id="2557" source="893" target="104"/> + <edge id="2558" source="893" target="181"/> + <edge id="2559" source="893" target="50"/> + <edge id="2560" source="893" target="571"/> + <edge id="2561" source="893" target="51"/> + <edge id="2562" source="1004" target="95"/> + <edge id="2563" source="1004" target="216"/> + <edge id="2564" source="1004" target="76"/> + <edge id="2565" source="1004" target="439"/> + <edge id="2566" source="1004" target="519"/> + <edge id="2567" source="1004" target="444"/> + <edge id="2568" source="1004" target="1005"/> + <edge id="2569" source="1004" target="392"/> + <edge id="2570" source="1006" target="233"/> + <edge id="2571" source="1006" target="1003"/> + <edge id="2572" source="1006" target="834"/> + <edge id="2573" source="1006" target="82"/> + <edge id="2574" source="1007" target="502"/> + <edge id="2575" source="1007" target="50"/> + <edge id="2576" source="1007" target="1008"/> + <edge id="2577" source="1007" target="1009"/> + <edge id="2578" source="1007" target="833"/> + <edge id="2579" source="1010" target="1"/> + <edge id="2580" source="1011" target="1012"/> + <edge id="2581" source="1011" target="459"/> + <edge id="2582" source="1011" target="408"/> + <edge id="2583" source="1011" target="53"/> + <edge id="2584" source="1011" target="66"/> + <edge id="2585" source="1011" target="1013"/> + <edge id="2586" source="1011" target="1014"/> + <edge id="2587" source="1011" target="1015"/> + <edge id="2588" source="1016" target="277"/> + <edge id="2589" source="1016" target="53"/> + <edge id="2590" source="1016" target="65"/> + <edge id="2591" source="1016" target="66"/> + <edge id="2592" source="1016" target="45"/> + <edge id="2593" source="1016" target="1017"/> + <edge id="2594" source="1016" target="48"/> + <edge id="2595" source="1016" target="49"/> + <edge id="2596" source="1016" target="50"/> + <edge id="2597" source="66" target="498"/> + <edge id="2598" source="66" target="65"/> + <edge id="2599" source="66" target="119"/> + <edge id="2600" source="66" target="48"/> + <edge id="2601" source="66" target="49"/> + <edge id="2602" source="66" target="132"/> + <edge id="2603" source="66" target="50"/> + <edge id="2604" source="66" target="88"/> + <edge id="2605" source="66" target="61"/> + <edge id="2606" source="66" target="53"/> + <edge id="2607" source="866" target="61"/> + <edge id="2608" source="866" target="53"/> + <edge id="2609" source="866" target="65"/> + <edge id="2610" source="866" target="66"/> + <edge id="2611" source="866" target="1018"/> + <edge id="2612" source="866" target="50"/> + <edge id="2613" source="1019" target="1020"/> + <edge id="2614" source="1019" target="1021"/> + <edge id="2615" source="461" target="68"/> + <edge id="2616" source="461" target="459"/> + <edge id="2617" source="461" target="53"/> + <edge id="2618" source="461" target="591"/> + <edge id="2619" source="461" target="118"/> + <edge id="2620" source="461" target="64"/> + <edge id="2621" source="461" target="65"/> + <edge id="2622" source="461" target="50"/> + <edge id="2623" source="461" target="108"/> + <edge id="2624" source="497" target="109"/> + <edge id="2625" source="497" target="166"/> + <edge id="2626" source="497" target="53"/> + <edge id="2627" source="862" target="772"/> + <edge id="2628" source="862" target="118"/> + <edge id="2629" source="862" target="504"/> + <edge id="2630" source="862" target="568"/> + <edge id="2631" source="862" target="554"/> + <edge id="2632" source="862" target="708"/> + <edge id="2633" source="463" target="177"/> + <edge id="2634" source="463" target="79"/> + <edge id="2635" source="463" target="549"/> + <edge id="2636" source="463" target="906"/> + <edge id="2637" source="463" target="1"/> + <edge id="2638" source="463" target="430"/> + <edge id="2639" source="246" target="68"/> + <edge id="2640" source="246" target="915"/> + <edge id="2641" source="246" target="1022"/> + <edge id="2642" source="246" target="1023"/> + <edge id="2643" source="1024" target="121"/> + <edge id="2644" source="412" target="1"/> + <edge id="2645" source="412" target="1025"/> + <edge id="2646" source="412" target="429"/> + <edge id="2647" source="1026" target="967"/> + <edge id="2648" source="1026" target="1"/> + <edge id="2649" source="1026" target="182"/> + <edge id="2650" source="967" target="1"/> + <edge id="2651" source="967" target="182"/> + <edge id="2652" source="967" target="1027"/> + <edge id="2653" source="967" target="1026"/> + <edge id="2654" source="979" target="1028"/> + <edge id="2655" source="979" target="978"/> + <edge id="2656" source="979" target="488"/> + <edge id="2657" source="979" target="1029"/> + <edge id="2658" source="979" target="415"/> + <edge id="2659" source="979" target="1030"/> + <edge id="2660" source="1031" target="76"/> + <edge id="2661" source="1031" target="104"/> + <edge id="2662" source="3" target="1"/> + <edge id="2663" source="1032" target="215"/> + <edge id="2664" source="1032" target="82"/> + <edge id="2665" source="1032" target="128"/> + <edge id="2666" source="572" target="196"/> + <edge id="2667" source="572" target="135"/> + <edge id="2668" source="209" target="272"/> + <edge id="2669" source="1033" target="37"/> + <edge id="2670" source="1033" target="177"/> + <edge id="2671" source="1033" target="209"/> + <edge id="2672" source="1033" target="1034"/> + <edge id="2673" source="1033" target="206"/> + <edge id="2674" source="1034" target="209"/> + <edge id="2675" source="1034" target="206"/> + <edge id="2676" source="1034" target="272"/> + <edge id="2677" source="205" target="900"/> + <edge id="2678" source="629" target="177"/> + <edge id="2679" source="629" target="79"/> + <edge id="2680" source="629" target="324"/> + <edge id="2681" source="629" target="628"/> + <edge id="2682" source="1035" target="209"/> + <edge id="2683" source="1035" target="1034"/> + <edge id="2684" source="1035" target="206"/> + <edge id="2685" source="1035" target="1036"/> + <edge id="2686" source="1035" target="272"/> + <edge id="2687" source="206" target="272"/> + <edge id="2688" source="206" target="1037"/> + <edge id="2689" source="206" target="1038"/> + <edge id="2690" source="206" target="209"/> + <edge id="2691" source="206" target="1039"/> + <edge id="2692" source="206" target="1"/> + <edge id="2693" source="207" target="37"/> + <edge id="2694" source="207" target="1"/> + <edge id="2695" source="1040" target="1034"/> + <edge id="2696" source="1040" target="1039"/> + <edge id="2697" source="1039" target="206"/> + <edge id="2698" source="1039" target="1040"/> + <edge id="2699" source="1039" target="1037"/> + <edge id="2700" source="1041" target="104"/> + <edge id="2701" source="1041" target="67"/> + <edge id="2702" source="1041" target="1042"/> + <edge id="2703" source="1041" target="567"/> + <edge id="2704" source="1041" target="1043"/> + <edge id="2705" source="1041" target="598"/> + <edge id="2706" source="1041" target="65"/> + <edge id="2707" source="67" target="92"/> + <edge id="2708" source="67" target="68"/> + <edge id="2709" source="67" target="53"/> + <edge id="2710" source="67" target="118"/> + <edge id="2711" source="67" target="64"/> + <edge id="2712" source="67" target="65"/> + <edge id="2713" source="67" target="93"/> + <edge id="2714" source="67" target="50"/> + <edge id="2715" source="1042" target="209"/> + <edge id="2716" source="1042" target="567"/> + <edge id="2717" source="567" target="131"/> + <edge id="2718" source="567" target="1042"/> + <edge id="2719" source="567" target="1044"/> + <edge id="2720" source="567" target="1045"/> + <edge id="2721" source="567" target="428"/> + <edge id="2722" source="567" target="424"/> + <edge id="2723" source="567" target="82"/> + <edge id="2724" source="1044" target="428"/> + <edge id="2725" source="1044" target="424"/> + <edge id="2726" source="1044" target="171"/> + <edge id="2727" source="1044" target="1046"/> + <edge id="2728" source="1044" target="166"/> + <edge id="2729" source="1044" target="426"/> + <edge id="2730" source="1044" target="118"/> + <edge id="2731" source="1044" target="1042"/> + <edge id="2732" source="1045" target="65"/> + <edge id="2733" source="1045" target="93"/> + <edge id="2734" source="1045" target="104"/> + <edge id="2735" source="1045" target="1042"/> + <edge id="2736" source="1045" target="1047"/> + <edge id="2737" source="541" target="703"/> + <edge id="2738" source="541" target="704"/> + <edge id="2739" source="541" target="539"/> + <edge id="2740" source="541" target="701"/> + <edge id="2741" source="541" target="540"/> + <edge id="2742" source="541" target="702"/> + <edge id="2743" source="1048" target="539"/> + <edge id="2744" source="1048" target="701"/> + <edge id="2745" source="1048" target="540"/> + <edge id="2746" source="1048" target="702"/> + <edge id="2747" source="1048" target="703"/> + <edge id="2748" source="1048" target="91"/> + <edge id="2749" source="1048" target="704"/> + <edge id="2750" source="1049" target="82"/> + <edge id="2751" source="1049" target="495"/> + <edge id="2752" source="1049" target="128"/> + <edge id="2753" source="1049" target="599"/> + <edge id="2754" source="1049" target="567"/> + <edge id="2755" source="1049" target="1050"/> + <edge id="2756" source="1051" target="344"/> + <edge id="2757" source="1051" target="437"/> + <edge id="2758" source="1051" target="96"/> + <edge id="2759" source="1051" target="949"/> + <edge id="2760" source="1051" target="1042"/> + <edge id="2761" source="1051" target="567"/> + <edge id="2762" source="1051" target="428"/> + <edge id="2763" source="1051" target="82"/> + <edge id="2764" source="1052" target="205"/> + <edge id="2765" source="1052" target="206"/> + <edge id="2766" source="1052" target="207"/> + <edge id="2767" source="1052" target="1053"/> + <edge id="2768" source="1052" target="208"/> + <edge id="2769" source="1052" target="491"/> + <edge id="2770" source="1052" target="204"/> + <edge id="2771" source="1052" target="209"/> + <edge id="2772" source="1054" target="79"/> + <edge id="2773" source="1054" target="718"/> + <edge id="2774" source="1054" target="1055"/> + <edge id="2775" source="1054" target="908"/> + <edge id="2776" source="1054" target="1"/> + <edge id="2777" source="1056" target="1057"/> + <edge id="2778" source="1056" target="479"/> + <edge id="2779" source="1058" target="1059"/> + <edge id="2780" source="781" target="68"/> + <edge id="2781" source="781" target="53"/> + <edge id="2782" source="781" target="65"/> + <edge id="2783" source="781" target="131"/> + <edge id="2784" source="781" target="104"/> + <edge id="2785" source="781" target="924"/> + <edge id="2786" source="781" target="50"/> + <edge id="2787" source="781" target="109"/> + <edge id="2788" source="662" target="663"/> + <edge id="2789" source="663" target="662"/> + <edge id="2790" source="663" target="888"/> + <edge id="2791" source="776" target="1060"/> + <edge id="2792" source="1061" target="1062"/> + <edge id="2793" source="1061" target="1063"/> + <edge id="2794" source="1064" target="1062"/> + <edge id="2795" source="1064" target="1063"/> + <edge id="2796" source="1065" target="751"/> + <edge id="2797" source="1065" target="1064"/> + <edge id="2798" source="1065" target="1062"/> + <edge id="2799" source="1065" target="479"/> + <edge id="2800" source="1065" target="1063"/> + <edge id="2801" source="1066" target="79"/> + <edge id="2802" source="1066" target="1065"/> + <edge id="2803" source="1066" target="1062"/> + <edge id="2804" source="1066" target="479"/> + <edge id="2805" source="1067" target="1062"/> + <edge id="2806" source="1067" target="1063"/> + <edge id="2807" source="1068" target="1064"/> + <edge id="2808" source="1069" target="1062"/> + <edge id="2809" source="1069" target="1063"/> + <edge id="2810" source="958" target="959"/> + <edge id="2811" source="958" target="960"/> + <edge id="2812" source="958" target="961"/> + <edge id="2813" source="958" target="48"/> + <edge id="2814" source="958" target="962"/> + <edge id="2815" source="614" target="324"/> + <edge id="2816" source="324" target="211"/> + <edge id="2817" source="324" target="150"/> + <edge id="2818" source="1070" target="436"/> + <edge id="2819" source="1070" target="109"/> + <edge id="2820" source="1070" target="732"/> + <edge id="2821" source="1070" target="262"/> + <edge id="2822" source="445" target="911"/> + <edge id="2823" source="445" target="225"/> + <edge id="2824" source="224" target="223"/> + <edge id="2825" source="224" target="445"/> + <edge id="2826" source="224" target="724"/> + <edge id="2827" source="224" target="225"/> + <edge id="2828" source="724" target="224"/> + <edge id="2829" source="724" target="5"/> + <edge id="2830" source="724" target="79"/> + <edge id="2831" source="724" target="211"/> + <edge id="2832" source="1071" target="1072"/> + <edge id="2833" source="1071" target="1073"/> + <edge id="2834" source="1071" target="1074"/> + <edge id="2835" source="1071" target="1075"/> + <edge id="2836" source="1071" target="1076"/> + <edge id="2837" source="1071" target="262"/> + <edge id="2838" source="1073" target="662"/> + <edge id="2839" source="1073" target="1074"/> + <edge id="2840" source="1073" target="262"/> + <edge id="2841" source="1074" target="1077"/> + <edge id="2842" source="1074" target="1078"/> + <edge id="2843" source="1074" target="1076"/> + <edge id="2844" source="1074" target="262"/> + <edge id="2845" source="1074" target="1079"/> + <edge id="2846" source="1074" target="224"/> + <edge id="2847" source="1074" target="1073"/> + <edge id="2848" source="1080" target="301"/> + <edge id="2849" source="1080" target="294"/> + <edge id="2850" source="1080" target="1"/> + <edge id="2851" source="1081" target="477"/> + <edge id="2852" source="1081" target="476"/> + <edge id="2853" source="1081" target="465"/> + <edge id="2854" source="1081" target="79"/> + <edge id="2855" source="1081" target="361"/> + <edge id="2856" source="1081" target="368"/> + <edge id="2857" source="912" target="307"/> + <edge id="2858" source="912" target="653"/> + <edge id="2859" source="912" target="309"/> + <edge id="2860" source="912" target="367"/> + <edge id="2861" source="912" target="1082"/> + <edge id="2862" source="653" target="652"/> + <edge id="2863" source="653" target="911"/> + <edge id="2864" source="653" target="1083"/> + <edge id="2865" source="653" target="1082"/> + <edge id="2866" source="1084" target="51"/> + <edge id="2867" source="1084" target="53"/> + <edge id="2868" source="1084" target="259"/> + <edge id="2869" source="1084" target="397"/> + <edge id="2870" source="708" target="707"/> + <edge id="2871" source="708" target="769"/> + <edge id="2872" source="708" target="504"/> + <edge id="2873" source="708" target="568"/> + <edge id="2874" source="708" target="768"/> + <edge id="2875" source="831" target="1085"/> + <edge id="2876" source="831" target="76"/> + <edge id="2877" source="101" target="109"/> + <edge id="2878" source="26" target="23"/> + <edge id="2879" source="26" target="76"/> + <edge id="2880" source="26" target="253"/> + <edge id="2881" source="26" target="25"/> + <edge id="2882" source="26" target="947"/> + <edge id="2883" source="882" target="253"/> + <edge id="2884" source="882" target="96"/> + <edge id="2885" source="882" target="708"/> + <edge id="2886" source="882" target="101"/> + <edge id="2887" source="882" target="109"/> + <edge id="2888" source="1086" target="1087"/> + <edge id="2889" source="1086" target="50"/> + <edge id="2890" source="1086" target="68"/> + <edge id="2891" source="1086" target="53"/> + <edge id="2892" source="1086" target="65"/> + <edge id="2893" source="1086" target="635"/> + <edge id="2894" source="1086" target="132"/> + <edge id="2895" source="1086" target="105"/> + <edge id="2896" source="782" target="175"/> + <edge id="2897" source="605" target="204"/> + <edge id="2898" source="605" target="567"/> + <edge id="2899" source="605" target="606"/> + <edge id="2900" source="605" target="428"/> + <edge id="2901" source="605" target="1050"/> + <edge id="2902" source="605" target="1046"/> + <edge id="2903" source="605" target="495"/> + <edge id="2904" source="1088" target="146"/> + <edge id="2905" source="1088" target="1090"/> + <edge id="2906" source="1091" target="68"/> + <edge id="2907" source="1091" target="61"/> + <edge id="2908" source="1091" target="408"/> + <edge id="2909" source="1091" target="53"/> + <edge id="2910" source="1091" target="498"/> + <edge id="2911" source="1091" target="65"/> + <edge id="2912" source="1091" target="66"/> + <edge id="2913" source="1091" target="119"/> + <edge id="2914" source="1091" target="50"/> + <edge id="2915" source="1091" target="51"/> + <edge id="2916" source="1092" target="224"/> + <edge id="2917" source="1092" target="48"/> + <edge id="2918" source="1092" target="409"/> + <edge id="2919" source="1092" target="49"/> + <edge id="2920" source="1092" target="50"/> + <edge id="2921" source="1092" target="61"/> + <edge id="2922" source="1092" target="53"/> + <edge id="2923" source="1092" target="66"/> + <edge id="2924" source="405" target="50"/> + <edge id="2925" source="405" target="51"/> + <edge id="2926" source="405" target="280"/> + <edge id="2927" source="405" target="335"/> + <edge id="2928" source="405" target="411"/> + <edge id="2929" source="405" target="66"/> + <edge id="2930" source="405" target="397"/> + <edge id="2931" source="405" target="48"/> + <edge id="2932" source="405" target="200"/> + <edge id="2933" source="405" target="49"/> + <edge id="2934" source="1093" target="79"/> + <edge id="2935" source="1093" target="312"/> + <edge id="2936" source="1094" target="312"/> + <edge id="2937" source="1095" target="312"/> + <edge id="2938" source="1095" target="313"/> + <edge id="2939" source="1096" target="148"/> + <edge id="2940" source="1096" target="324"/> + <edge id="2941" source="1096" target="1094"/> + <edge id="2942" source="1096" target="1097"/> + <edge id="2943" source="1098" target="1094"/> + <edge id="2944" source="1098" target="626"/> + <edge id="2945" source="1098" target="312"/> + <edge id="2946" source="1098" target="79"/> + <edge id="2947" source="1099" target="79"/> + <edge id="2948" source="1099" target="1094"/> + <edge id="2949" source="1099" target="312"/> + <edge id="2950" source="1099" target="313"/> + <edge id="2951" source="1097" target="324"/> + <edge id="2952" source="1097" target="1094"/> + <edge id="2953" source="1097" target="312"/> + <edge id="2954" source="1100" target="1093"/> + <edge id="2955" source="1101" target="1094"/> + <edge id="2956" source="1101" target="1098"/> + <edge id="2957" source="1101" target="1100"/> + <edge id="2958" source="1101" target="312"/> + <edge id="2959" source="1101" target="1102"/> + <edge id="2960" source="1101" target="79"/> + <edge id="2961" source="1101" target="1093"/> + <edge id="2962" source="793" target="61"/> + <edge id="2963" source="793" target="53"/> + <edge id="2964" source="793" target="863"/> + <edge id="2965" source="793" target="170"/> + <edge id="2966" source="1103" target="79"/> + <edge id="2967" source="1104" target="79"/> + <edge id="2968" source="1104" target="224"/> + <edge id="2969" source="1104" target="638"/> + <edge id="2970" source="1104" target="626"/> + <edge id="2971" source="1104" target="286"/> + <edge id="2972" source="1104" target="262"/> + <edge id="2973" source="1104" target="408"/> + <edge id="2974" source="1104" target="177"/> + <edge id="2975" source="1104" target="62"/> + <edge id="2976" source="1105" target="68"/> + <edge id="2977" source="1105" target="468"/> + <edge id="2978" source="1105" target="53"/> + <edge id="2979" source="1105" target="1106"/> + <edge id="2980" source="1105" target="51"/> + <edge id="2981" source="1105" target="511"/> + <edge id="2982" source="1107" target="62"/> + <edge id="2983" source="1107" target="53"/> + <edge id="2984" source="1107" target="65"/> + <edge id="2985" source="1107" target="66"/> + <edge id="2986" source="1107" target="1015"/> + <edge id="2987" source="1107" target="513"/> + <edge id="2988" source="1107" target="50"/> + <edge id="2989" source="1107" target="108"/> + <edge id="2990" source="1107" target="61"/> + <edge id="2991" source="27" target="25"/> + <edge id="2992" source="27" target="428"/> + <edge id="2993" source="1108" target="74"/> + <edge id="2994" source="1108" target="463"/> + <edge id="2995" source="1108" target="300"/> + <edge id="2996" source="1108" target="177"/> + <edge id="2997" source="1108" target="79"/> + <edge id="2998" source="1108" target="73"/> + <edge id="2999" source="1109" target="465"/> + <edge id="3000" source="1109" target="177"/> + <edge id="3001" source="1109" target="79"/> + <edge id="3002" source="1109" target="463"/> + <edge id="3003" source="368" target="177"/> + <edge id="3004" source="368" target="79"/> + <edge id="3005" source="368" target="361"/> + <edge id="3006" source="368" target="300"/> + <edge id="3007" source="300" target="299"/> + <edge id="3008" source="300" target="463"/> + <edge id="3009" source="300" target="177"/> + <edge id="3010" source="1110" target="500"/> + <edge id="3011" source="1110" target="1111"/> + <edge id="3012" source="1112" target="136"/> + <edge id="3013" source="1112" target="137"/> + <edge id="3014" source="1113" target="79"/> + <edge id="3015" source="1060" target="1114"/> + <edge id="3016" source="1060" target="1115"/> + <edge id="3017" source="1060" target="1116"/> + <edge id="3018" source="1117" target="300"/> + <edge id="3019" source="1117" target="177"/> + <edge id="3020" source="1117" target="79"/> + <edge id="3021" source="1117" target="894"/> + <edge id="3022" source="1118" target="166"/> + <edge id="3023" source="1013" target="177"/> + <edge id="3024" source="1013" target="79"/> + <edge id="3025" source="1013" target="1014"/> + <edge id="3026" source="1013" target="1"/> + <edge id="3027" source="789" target="798"/> + <edge id="3028" source="789" target="50"/> + <edge id="3029" source="789" target="1119"/> + <edge id="3030" source="789" target="53"/> + <edge id="3031" source="789" target="632"/> + <edge id="3032" source="789" target="405"/> + <edge id="3033" source="789" target="397"/> + <edge id="3034" source="789" target="48"/> + <edge id="3035" source="789" target="409"/> + <edge id="3036" source="789" target="49"/> + <edge id="3037" source="1120" target="1121"/> + <edge id="3038" source="1120" target="1"/> + <edge id="3039" source="1120" target="5"/> + <edge id="3040" source="1122" target="82"/> + <edge id="3041" source="1122" target="280"/> + <edge id="3042" source="1122" target="335"/> + <edge id="3043" source="1122" target="388"/> + <edge id="3044" source="1122" target="987"/> + <edge id="3045" source="1122" target="1123"/> + <edge id="3046" source="1122" target="1015"/> + <edge id="3047" source="1122" target="1124"/> + <edge id="3048" source="987" target="335"/> + <edge id="3049" source="987" target="388"/> + <edge id="3050" source="987" target="1122"/> + <edge id="3051" source="987" target="1125"/> + <edge id="3052" source="987" target="1126"/> + <edge id="3053" source="987" target="896"/> + <edge id="3054" source="987" target="82"/> + <edge id="3055" source="517" target="323"/> + <edge id="3056" source="517" target="1129"/> + <edge id="3057" source="1114" target="1060"/> + <edge id="3058" source="1114" target="1115"/> + <edge id="3059" source="1115" target="1060"/> + <edge id="3060" source="1115" target="1114"/> + <edge id="3061" source="1115" target="1116"/> + <edge id="3062" source="1115" target="1130"/> + <edge id="3063" source="609" target="433"/> + <edge id="3064" source="609" target="119"/> + <edge id="3065" source="609" target="161"/> + <edge id="3066" source="1131" target="1132"/> + <edge id="3067" source="1131" target="512"/> + <edge id="3068" source="1131" target="541"/> + <edge id="3069" source="1131" target="609"/> + <edge id="3070" source="1133" target="391"/> + <edge id="3071" source="1134" target="166"/> + <edge id="3072" source="1134" target="497"/> + <edge id="3073" source="1134" target="281"/> + <edge id="3074" source="1134" target="170"/> + <edge id="3075" source="1134" target="284"/> + <edge id="3076" source="1135" target="857"/> + <edge id="3077" source="1135" target="167"/> + <edge id="3078" source="281" target="335"/> + <edge id="3079" source="281" target="600"/> + <edge id="3080" source="281" target="111"/> + <edge id="3081" source="281" target="1136"/> + <edge id="3082" source="281" target="1125"/> + <edge id="3083" source="1123" target="1137"/> + <edge id="3084" source="1123" target="1138"/> + <edge id="3085" source="1139" target="76"/> + <edge id="3086" source="1140" target="76"/> + <edge id="3087" source="1140" target="426"/> + <edge id="3088" source="1140" target="53"/> + <edge id="3089" source="1140" target="82"/> + <edge id="3090" source="1141" target="600"/> + <edge id="3091" source="1141" target="281"/> + <edge id="3092" source="1141" target="1136"/> + <edge id="3093" source="1141" target="1142"/> + <edge id="3094" source="970" target="217"/> + <edge id="3095" source="970" target="82"/> + <edge id="3096" source="80" target="109"/> + <edge id="3097" source="1143" target="1"/> + <edge id="3098" source="638" target="79"/> + <edge id="3099" source="638" target="626"/> + <edge id="3100" source="1144" target="296"/> + <edge id="3101" source="1144" target="318"/> + <edge id="3102" source="1144" target="381"/> + <edge id="3103" source="1144" target="79"/> + <edge id="3104" source="1144" target="613"/> + <edge id="3105" source="1144" target="351"/> + <edge id="3106" source="1144" target="185"/> + <edge id="3107" source="1145" target="638"/> + <edge id="3108" source="1145" target="1146"/> + <edge id="3109" source="1145" target="1147"/> + <edge id="3110" source="1145" target="20"/> + <edge id="3111" source="1145" target="381"/> + <edge id="3112" source="1145" target="61"/> + <edge id="3113" source="606" target="422"/> + <edge id="3114" source="606" target="437"/> + <edge id="3115" source="606" target="104"/> + <edge id="3116" source="606" target="657"/> + <edge id="3117" source="217" target="128"/> + <edge id="3118" source="217" target="82"/> + <edge id="3119" source="217" target="33"/> + <edge id="3120" source="217" target="495"/> + <edge id="3121" source="1148" target="79"/> + <edge id="3122" source="1148" target="351"/> + <edge id="3123" source="1148" target="350"/> + <edge id="3124" source="1148" target="318"/> + <edge id="3125" source="1149" target="170"/> + <edge id="3126" source="876" target="104"/> + <edge id="3127" source="876" target="976"/> + <edge id="3128" source="876" target="1150"/> + <edge id="3129" source="976" target="104"/> + <edge id="3130" source="976" target="876"/> + <edge id="3131" source="976" target="1150"/> + <edge id="3132" source="1150" target="876"/> + <edge id="3133" source="1150" target="976"/> + <edge id="3134" source="1150" target="65"/> + <edge id="3135" source="1150" target="104"/> + <edge id="3136" source="1150" target="101"/> + <edge id="3137" source="1151" target="417"/> + <edge id="3138" source="1151" target="1152"/> + <edge id="3139" source="423" target="656"/> + <edge id="3140" source="336" target="51"/> + <edge id="3141" source="336" target="284"/> + <edge id="3142" source="336" target="279"/> + <edge id="3143" source="336" target="335"/> + <edge id="3144" source="336" target="53"/> + <edge id="3145" source="336" target="281"/> + <edge id="3146" source="336" target="334"/> + <edge id="3147" source="336" target="50"/> + <edge id="3148" source="435" target="598"/> + <edge id="3149" source="435" target="816"/> + <edge id="3150" source="435" target="155"/> + <edge id="3151" source="1155" target="440"/> + <edge id="3152" source="1156" target="636"/> + <edge id="3153" source="1156" target="51"/> + <edge id="3154" source="1156" target="239"/> + <edge id="3155" source="1156" target="68"/> + <edge id="3156" source="1156" target="216"/> + <edge id="3157" source="1156" target="364"/> + <edge id="3158" source="1156" target="408"/> + <edge id="3159" source="1156" target="53"/> + <edge id="3160" source="1156" target="515"/> + <edge id="3161" source="1156" target="65"/> + <edge id="3162" source="959" target="163"/> + <edge id="3163" source="1157" target="1"/> + <edge id="3164" source="902" target="68"/> + <edge id="3165" source="902" target="65"/> + <edge id="3166" source="902" target="93"/> + <edge id="3167" source="902" target="131"/> + <edge id="3168" source="902" target="111"/> + <edge id="3169" source="902" target="109"/> + <edge id="3170" source="119" target="636"/> + <edge id="3171" source="119" target="289"/> + <edge id="3172" source="119" target="50"/> + <edge id="3173" source="119" target="511"/> + <edge id="3174" source="119" target="61"/> + <edge id="3175" source="119" target="114"/> + <edge id="3176" source="636" target="119"/> + <edge id="3177" source="295" target="292"/> + <edge id="3178" source="295" target="293"/> + <edge id="3179" source="295" target="294"/> + <edge id="3180" source="295" target="79"/> + <edge id="3181" source="1158" target="122"/> + <edge id="3182" source="1158" target="1"/> + <edge id="3183" source="57" target="313"/> + <edge id="3184" source="1159" target="238"/> + <edge id="3185" source="555" target="436"/> + <edge id="3186" source="555" target="403"/> + <edge id="3187" source="555" target="554"/> + <edge id="3188" source="555" target="469"/> + <edge id="3189" source="555" target="510"/> + <edge id="3190" source="469" target="974"/> + <edge id="3191" source="469" target="732"/> + <edge id="3192" source="1160" target="177"/> + <edge id="3193" source="1160" target="79"/> + <edge id="3194" source="1160" target="1"/> + <edge id="3195" source="1161" target="65"/> + <edge id="3196" source="1161" target="444"/> + <edge id="3197" source="1161" target="567"/> + <edge id="3198" source="1161" target="120"/> + <edge id="3199" source="1161" target="502"/> + <edge id="3200" source="1161" target="50"/> + <edge id="3201" source="1161" target="53"/> + <edge id="3202" source="1161" target="64"/> + <edge id="3203" source="378" target="68"/> + <edge id="3204" source="378" target="668"/> + <edge id="3205" source="378" target="1162"/> + <edge id="3206" source="378" target="120"/> + <edge id="3207" source="378" target="424"/> + <edge id="3208" source="1163" target="65"/> + <edge id="3209" source="1163" target="567"/> + <edge id="3210" source="1163" target="378"/> + <edge id="3211" source="1163" target="1162"/> + <edge id="3212" source="1163" target="1164"/> + <edge id="3213" source="1163" target="428"/> + <edge id="3214" source="1163" target="424"/> + <edge id="3215" source="1163" target="656"/> + <edge id="3216" source="1163" target="422"/> + <edge id="3217" source="1163" target="437"/> + <edge id="3218" source="1162" target="519"/> + <edge id="3219" source="1162" target="668"/> + <edge id="3220" source="1162" target="120"/> + <edge id="3221" source="1162" target="379"/> + <edge id="3222" source="1162" target="1165"/> + <edge id="3223" source="564" target="446"/> + <edge id="3224" source="626" target="177"/> + <edge id="3225" source="626" target="79"/> + <edge id="3226" source="626" target="300"/> + <edge id="3227" source="626" target="638"/> + <edge id="3228" source="626" target="312"/> + <edge id="3229" source="45" target="310"/> + <edge id="3230" source="45" target="311"/> + <edge id="3231" source="45" target="79"/> + <edge id="3232" source="45" target="626"/> + <edge id="3233" source="45" target="852"/> + <edge id="3234" source="45" target="46"/> + <edge id="3235" source="45" target="185"/> + <edge id="3236" source="1090" target="292"/> + <edge id="3237" source="1166" target="351"/> + <edge id="3238" source="329" target="310"/> + <edge id="3239" source="329" target="311"/> + <edge id="3240" source="329" target="79"/> + <edge id="3241" source="329" target="626"/> + <edge id="3242" source="329" target="45"/> + <edge id="3243" source="329" target="185"/> + <edge id="3244" source="312" target="79"/> + <edge id="3245" source="312" target="638"/> + <edge id="3246" source="312" target="852"/> + <edge id="3247" source="312" target="185"/> + <edge id="3248" source="852" target="79"/> + <edge id="3249" source="852" target="45"/> + <edge id="3250" source="852" target="312"/> + <edge id="3251" source="852" target="46"/> + <edge id="3252" source="852" target="1083"/> + <edge id="3253" source="852" target="185"/> + <edge id="3254" source="1167" target="1157"/> + <edge id="3255" source="1167" target="852"/> + <edge id="3256" source="1168" target="1166"/> + <edge id="3257" source="1168" target="312"/> + <edge id="3258" source="1168" target="852"/> + <edge id="3259" source="1168" target="351"/> + <edge id="3260" source="1168" target="185"/> + <edge id="3261" source="1169" target="824"/> + <edge id="3262" source="1169" target="238"/> + <edge id="3263" source="1169" target="82"/> + <edge id="3264" source="824" target="823"/> + <edge id="3265" source="824" target="1159"/> + <edge id="3266" source="824" target="1169"/> + <edge id="3267" source="824" target="82"/> + <edge id="3268" source="1005" target="885"/> + <edge id="3269" source="1170" target="988"/> + <edge id="3270" source="1170" target="1090"/> + <edge id="3271" source="1170" target="1171"/> + <edge id="3272" source="1172" target="666"/> + <edge id="3273" source="1172" target="431"/> + <edge id="3274" source="1172" target="455"/> + <edge id="3275" source="1173" target="532"/> + <edge id="3276" source="1173" target="335"/> + <edge id="3277" source="1173" target="53"/> + <edge id="3278" source="1173" target="281"/> + <edge id="3279" source="1173" target="48"/> + <edge id="3280" source="1173" target="406"/> + <edge id="3281" source="1173" target="334"/> + <edge id="3282" source="1173" target="49"/> + <edge id="3283" source="282" target="293"/> + <edge id="3284" source="282" target="525"/> + <edge id="3285" source="282" target="283"/> + <edge id="3286" source="282" target="284"/> + <edge id="3287" source="1174" target="230"/> + <edge id="3288" source="1174" target="388"/> + <edge id="3289" source="1174" target="1126"/> + <edge id="3290" source="1000" target="567"/> + <edge id="3291" source="1000" target="1175"/> + <edge id="3292" source="1176" target="279"/> + <edge id="3293" source="1176" target="280"/> + <edge id="3294" source="1176" target="49"/> + <edge id="3295" source="1176" target="1177"/> + <edge id="3296" source="1176" target="759"/> + <edge id="3297" source="1178" target="170"/> + <edge id="3298" source="1178" target="284"/> + <edge id="3299" source="1178" target="42"/> + <edge id="3300" source="1178" target="282"/> + <edge id="3301" source="1178" target="1179"/> + <edge id="3302" source="1179" target="42"/> + <edge id="3303" source="1179" target="279"/> + <edge id="3304" source="1179" target="516"/> + <edge id="3305" source="1179" target="336"/> + <edge id="3306" source="1179" target="282"/> + <edge id="3307" source="1179" target="170"/> + <edge id="3308" source="1179" target="284"/> + <edge id="3309" source="1180" target="409"/> + <edge id="3310" source="1180" target="983"/> + <edge id="3311" source="1180" target="406"/> + <edge id="3312" source="1180" target="334"/> + <edge id="3313" source="1180" target="166"/> + <edge id="3314" source="1180" target="411"/> + <edge id="3315" source="1180" target="405"/> + <edge id="3316" source="199" target="166"/> + <edge id="3317" source="199" target="402"/> + <edge id="3318" source="199" target="411"/> + <edge id="3319" source="199" target="391"/> + <edge id="3320" source="199" target="200"/> + <edge id="3321" source="199" target="201"/> + <edge id="3322" source="1181" target="216"/> + <edge id="3323" source="1175" target="200"/> + <edge id="3324" source="1175" target="284"/> + <edge id="3325" source="1175" target="33"/> + <edge id="3326" source="1175" target="128"/> + <edge id="3327" source="1175" target="598"/> + <edge id="3328" source="537" target="532"/> + <edge id="3329" source="537" target="543"/> + <edge id="3330" source="537" target="335"/> + <edge id="3331" source="537" target="535"/> + <edge id="3332" source="537" target="405"/> + <edge id="3333" source="537" target="533"/> + <edge id="3334" source="1182" target="200"/> + <edge id="3335" source="1182" target="201"/> + <edge id="3336" source="1182" target="166"/> + <edge id="3337" source="1182" target="411"/> + <edge id="3338" source="1182" target="199"/> + <edge id="3339" source="1182" target="391"/> + <edge id="3340" source="1183" target="133"/> + <edge id="3341" source="1183" target="76"/> + <edge id="3342" source="1183" target="1155"/> + <edge id="3343" source="1183" target="556"/> + <edge id="3344" source="1183" target="1"/> + <edge id="3345" source="1183" target="82"/> + <edge id="3346" source="1184" target="1185"/> + <edge id="3347" source="1184" target="1082"/> + <edge id="3348" source="1184" target="133"/> + <edge id="3349" source="1184" target="1112"/> + <edge id="3350" source="1184" target="1155"/> + <edge id="3351" source="1184" target="1183"/> + <edge id="3352" source="1184" target="1083"/> + <edge id="3353" source="1186" target="53"/> + <edge id="3354" source="1022" target="451"/> + <edge id="3355" source="1022" target="65"/> + <edge id="3356" source="1022" target="93"/> + <edge id="3357" source="1022" target="901"/> + <edge id="3358" source="1022" target="250"/> + <edge id="3359" source="1022" target="924"/> + <edge id="3360" source="1022" target="50"/> + <edge id="3361" source="1022" target="109"/> + <edge id="3362" source="250" target="252"/> + <edge id="3363" source="250" target="53"/> + <edge id="3364" source="250" target="453"/> + <edge id="3365" source="250" target="65"/> + <edge id="3366" source="250" target="50"/> + <edge id="3367" source="250" target="109"/> + <edge id="3368" source="250" target="249"/> + <edge id="3369" source="250" target="451"/> + <edge id="3370" source="1187" target="65"/> + <edge id="3371" source="1187" target="708"/> + <edge id="3372" source="1187" target="82"/> + <edge id="3373" source="1187" target="68"/> + <edge id="3374" source="1187" target="103"/> + <edge id="3375" source="1187" target="76"/> + <edge id="3376" source="1187" target="550"/> + <edge id="3377" source="1187" target="53"/> + <edge id="3378" source="1187" target="453"/> + <edge id="3379" source="1188" target="103"/> + <edge id="3380" source="1188" target="175"/> + <edge id="3381" source="1188" target="76"/> + <edge id="3382" source="1188" target="53"/> + <edge id="3383" source="1188" target="250"/> + <edge id="3384" source="1188" target="109"/> + <edge id="3385" source="1188" target="239"/> + <edge id="3386" source="1189" target="101"/> + <edge id="3387" source="1189" target="1190"/> + <edge id="3388" source="1189" target="109"/> + <edge id="3389" source="1189" target="82"/> + <edge id="3390" source="1189" target="344"/> + <edge id="3391" source="1189" target="76"/> + <edge id="3392" source="1189" target="159"/> + <edge id="3393" source="179" target="177"/> + <edge id="3394" source="179" target="178"/> + <edge id="3395" source="179" target="79"/> + <edge id="3396" source="179" target="300"/> + <edge id="3397" source="179" target="1117"/> + <edge id="3398" source="1191" target="1025"/> + <edge id="3399" source="1191" target="52"/> + <edge id="3400" source="1191" target="1192"/> + <edge id="3401" source="1191" target="511"/> + <edge id="3402" source="1191" target="408"/> + <edge id="3403" source="1191" target="65"/> + <edge id="3404" source="1191" target="259"/> + <edge id="3405" source="1191" target="114"/> + <edge id="3406" source="1193" target="1"/> + <edge id="3407" source="1194" target="732"/> + <edge id="3408" source="1194" target="634"/> + <edge id="3409" source="1194" target="607"/> + <edge id="3410" source="1194" target="833"/> + <edge id="3411" source="1194" target="1182"/> + <edge id="3412" source="1194" target="339"/> + <edge id="3413" source="1194" target="731"/> + <edge id="3414" source="1194" target="51"/> + <edge id="3415" source="1194" target="484"/> + <edge id="3416" source="1195" target="618"/> + <edge id="3417" source="654" target="437"/> + <edge id="3418" source="654" target="567"/> + <edge id="3419" source="654" target="606"/> + <edge id="3420" source="654" target="656"/> + <edge id="3421" source="654" target="657"/> + <edge id="3422" source="556" target="76"/> + <edge id="3423" source="556" target="830"/> + <edge id="3424" source="556" target="1196"/> + <edge id="3425" source="1197" target="638"/> + <edge id="3426" source="1197" target="626"/> + <edge id="3427" source="1197" target="312"/> + <edge id="3428" source="1197" target="852"/> + <edge id="3429" source="1197" target="298"/> + <edge id="3430" source="1197" target="79"/> + <edge id="3431" source="1198" target="61"/> + <edge id="3432" source="1198" target="408"/> + <edge id="3433" source="1198" target="403"/> + <edge id="3434" source="1198" target="79"/> + <edge id="3435" source="1198" target="498"/> + <edge id="3436" source="1198" target="281"/> + <edge id="3437" source="1198" target="119"/> + <edge id="3438" source="1198" target="312"/> + <edge id="3439" source="1199" target="1200"/> + <edge id="3440" source="763" target="764"/> + <edge id="3441" source="764" target="763"/> + <edge id="3442" source="948" target="668"/> + <edge id="3443" source="948" target="24"/> + <edge id="3444" source="948" target="768"/> + <edge id="3445" source="1077" target="647"/> + <edge id="3446" source="1077" target="1003"/> + <edge id="3447" source="1077" target="1201"/> + <edge id="3448" source="1077" target="1202"/> + <edge id="3449" source="1203" target="68"/> + <edge id="3450" source="1203" target="570"/> + <edge id="3451" source="1203" target="571"/> + <edge id="3452" source="1203" target="238"/> + <edge id="3453" source="1204" target="238"/> + <edge id="3454" source="1204" target="239"/> + <edge id="3455" source="1205" target="16"/> + <edge id="3456" source="1205" target="571"/> + <edge id="3457" source="1206" target="397"/> + <edge id="3458" source="1207" target="732"/> + <edge id="3459" source="1075" target="211"/> + <edge id="3460" source="1075" target="724"/> + <edge id="3461" source="1208" target="211"/> + <edge id="3462" source="1208" target="16"/> + <edge id="3463" source="777" target="16"/> + <edge id="3464" source="666" target="1003"/> + <edge id="3465" source="1209" target="408"/> + <edge id="3466" source="1209" target="62"/> + <edge id="3467" source="1209" target="455"/> + <edge id="3468" source="1209" target="666"/> + <edge id="3469" source="1209" target="667"/> + <edge id="3470" source="1209" target="457"/> + <edge id="3471" source="1209" target="1210"/> + <edge id="3472" source="1209" target="431"/> + <edge id="3473" source="1211" target="159"/> + <edge id="3474" source="1211" target="96"/> + <edge id="3475" source="1211" target="215"/> + <edge id="3476" source="1211" target="82"/> + <edge id="3477" source="1212" target="761"/> + <edge id="3478" source="1212" target="774"/> + <edge id="3479" source="1212" target="1213"/> + <edge id="3480" source="1212" target="82"/> + <edge id="3481" source="1212" target="81"/> + <edge id="3482" source="1212" target="175"/> + <edge id="3483" source="1214" target="94"/> + <edge id="3484" source="1214" target="128"/> + <edge id="3485" source="1214" target="84"/> + <edge id="3486" source="1214" target="96"/> + <edge id="3487" source="1214" target="82"/> + <edge id="3488" source="1215" target="648"/> + <edge id="3489" source="1215" target="159"/> + <edge id="3490" source="1215" target="596"/> + <edge id="3491" source="1215" target="238"/> + <edge id="3492" source="1216" target="128"/> + <edge id="3493" source="1216" target="1217"/> + <edge id="3494" source="1216" target="214"/> + <edge id="3495" source="1216" target="82"/> + <edge id="3496" source="1102" target="177"/> + <edge id="3497" source="1102" target="79"/> + <edge id="3498" source="1102" target="1098"/> + <edge id="3499" source="1102" target="638"/> + <edge id="3500" source="1102" target="626"/> + <edge id="3501" source="1102" target="312"/> + <edge id="3502" source="315" target="219"/> + <edge id="3503" source="315" target="306"/> + <edge id="3504" source="315" target="326"/> + <edge id="3505" source="315" target="79"/> + <edge id="3506" source="315" target="298"/> + <edge id="3507" source="315" target="296"/> + <edge id="3508" source="1218" target="721"/> + <edge id="3509" source="1218" target="1"/> + <edge id="3510" source="720" target="79"/> + <edge id="3511" source="720" target="141"/> + <edge id="3512" source="908" target="79"/> + <edge id="3513" source="908" target="907"/> + <edge id="3514" source="477" target="476"/> + <edge id="3515" source="477" target="79"/> + <edge id="3516" source="477" target="368"/> + <edge id="3517" source="1219" target="685"/> + <edge id="3518" source="1219" target="1"/> + <edge id="3519" source="1220" target="1"/> + <edge id="3520" source="181" target="79"/> + <edge id="3521" source="181" target="312"/> + <edge id="3522" source="181" target="184"/> + <edge id="3523" source="181" target="325"/> + <edge id="3524" source="181" target="892"/> + <edge id="3525" source="181" target="185"/> + <edge id="3526" source="1221" target="302"/> + <edge id="3527" source="1221" target="183"/> + <edge id="3528" source="1221" target="254"/> + <edge id="3529" source="1221" target="181"/> + <edge id="3530" source="1221" target="255"/> + <edge id="3531" source="1221" target="182"/> + <edge id="3532" source="1222" target="79"/> + <edge id="3533" source="1222" target="312"/> + <edge id="3534" source="1222" target="325"/> + <edge id="3535" source="1222" target="892"/> + <edge id="3536" source="1222" target="185"/> + <edge id="3537" source="526" target="619"/> + <edge id="3538" source="526" target="219"/> + <edge id="3539" source="526" target="523"/> + <edge id="3540" source="526" target="617"/> + <edge id="3541" source="526" target="79"/> + <edge id="3542" source="526" target="528"/> + <edge id="3543" source="526" target="524"/> + <edge id="3544" source="527" target="294"/> + <edge id="3545" source="527" target="523"/> + <edge id="3546" source="527" target="525"/> + <edge id="3547" source="527" target="528"/> + <edge id="3548" source="528" target="293"/> + <edge id="3549" source="528" target="294"/> + <edge id="3550" source="528" target="523"/> + <edge id="3551" source="528" target="617"/> + <edge id="3552" source="528" target="526"/> + <edge id="3553" source="528" target="524"/> + <edge id="3554" source="1223" target="523"/> + <edge id="3555" source="1223" target="617"/> + <edge id="3556" source="1223" target="79"/> + <edge id="3557" source="1223" target="486"/> + <edge id="3558" source="1223" target="526"/> + <edge id="3559" source="1223" target="527"/> + <edge id="3560" source="1223" target="528"/> + <edge id="3561" source="1223" target="619"/> + <edge id="3562" source="1223" target="292"/> + <edge id="3563" source="1224" target="1225"/> + <edge id="3564" source="1224" target="215"/> + <edge id="3565" source="1224" target="33"/> + <edge id="3566" source="1224" target="495"/> + <edge id="3567" source="1226" target="381"/> + <edge id="3568" source="1226" target="79"/> + <edge id="3569" source="1226" target="819"/> + <edge id="3570" source="1226" target="613"/> + <edge id="3571" source="1226" target="1144"/> + <edge id="3572" source="1226" target="1197"/> + <edge id="3573" source="1226" target="296"/> + <edge id="3574" source="1227" target="293"/> + <edge id="3575" source="1227" target="294"/> + <edge id="3576" source="1227" target="377"/> + <edge id="3577" source="1227" target="974"/> + <edge id="3578" source="1228" target="1229"/> + <edge id="3579" source="1228" target="5"/> + <edge id="3580" source="1230" target="230"/> + <edge id="3581" source="1230" target="1181"/> + <edge id="3582" source="1230" target="170"/> + <edge id="3583" source="1230" target="1231"/> + <edge id="3584" source="1230" target="533"/> + <edge id="3585" source="1230" target="216"/> + <edge id="3586" source="1232" target="86"/> + <edge id="3587" source="1232" target="1233"/> + <edge id="3588" source="1234" target="277"/> + <edge id="3589" source="1235" target="149"/> + <edge id="3590" source="1235" target="524"/> + <edge id="3591" source="1236" target="852"/> + <edge id="3592" source="1236" target="621"/> + <edge id="3593" source="1236" target="622"/> + <edge id="3594" source="667" target="1"/> + <edge id="3595" source="1014" target="177"/> + <edge id="3596" source="1014" target="79"/> + <edge id="3597" source="1014" target="463"/> + <edge id="3598" source="1014" target="1013"/> + <edge id="3599" source="1014" target="1"/> + <edge id="3600" source="1237" target="1238"/> + <edge id="3601" source="1237" target="1144"/> + <edge id="3602" source="1237" target="1239"/> + <edge id="3603" source="1237" target="1240"/> + <edge id="3604" source="1237" target="1241"/> + <edge id="3605" source="1242" target="568"/> + <edge id="3606" source="1242" target="569"/> + <edge id="3607" source="1242" target="1"/> + <edge id="3608" source="1242" target="427"/> + <edge id="3609" source="1242" target="504"/> + <edge id="3610" source="1243" target="53"/> + <edge id="3611" source="1243" target="79"/> + <edge id="3612" source="1243" target="513"/> + <edge id="3613" source="1243" target="239"/> + <edge id="3614" source="1244" target="398"/> + <edge id="3615" source="1244" target="49"/> + <edge id="3616" source="1244" target="50"/> + <edge id="3617" source="1244" target="51"/> + <edge id="3618" source="1244" target="396"/> + <edge id="3619" source="1244" target="956"/> + <edge id="3620" source="1244" target="1206"/> + <edge id="3621" source="1244" target="801"/> + <edge id="3622" source="1244" target="48"/> + <edge id="3623" source="1245" target="99"/> + <edge id="3624" source="1245" target="690"/> + <edge id="3625" source="1245" target="850"/> + <edge id="3626" source="1245" target="1246"/> + <edge id="3627" source="1245" target="141"/> + <edge id="3628" source="1247" target="618"/> + <edge id="3629" source="1247" target="1152"/> + <edge id="3630" source="1247" target="1248"/> + <edge id="3631" source="1247" target="1249"/> + <edge id="3632" source="1250" target="1251"/> + <edge id="3633" source="1250" target="301"/> + <edge id="3634" source="1250" target="294"/> + <edge id="3635" source="1250" target="182"/> + <edge id="3636" source="1250" target="302"/> + <edge id="3637" source="1250" target="500"/> + <edge id="3638" source="1250" target="1252"/> + <edge id="3639" source="1250" target="1253"/> + <edge id="3640" source="415" target="979"/> + <edge id="3641" source="415" target="416"/> + <edge id="3642" source="1078" target="1079"/> + <edge id="3643" source="1254" target="280"/> + <edge id="3644" source="1254" target="838"/> + <edge id="3645" source="1254" target="42"/> + <edge id="3646" source="1254" target="279"/> + <edge id="3647" source="1255" target="1231"/> + <edge id="3648" source="1256" target="53"/> + <edge id="3649" source="1256" target="100"/> + <edge id="3650" source="1256" target="65"/> + <edge id="3651" source="1256" target="469"/> + <edge id="3652" source="1256" target="170"/> + <edge id="3653" source="1256" target="215"/> + <edge id="3654" source="1256" target="82"/> + <edge id="3655" source="508" target="137"/> + <edge id="3656" source="1146" target="79"/> + <edge id="3657" source="1146" target="613"/> + <edge id="3658" source="1146" target="318"/> + <edge id="3659" source="1146" target="381"/> + <edge id="3660" source="1257" target="1"/> + <edge id="3661" source="1257" target="5"/> + <edge id="3662" source="416" target="296"/> + <edge id="3663" source="416" target="420"/> + <edge id="3664" source="416" target="855"/> + <edge id="3665" source="416" target="418"/> + <edge id="3666" source="416" target="185"/> + <edge id="3667" source="1258" target="1235"/> + <edge id="3668" source="1258" target="1259"/> + <edge id="3669" source="1258" target="524"/> + <edge id="3670" source="71" target="69"/> + <edge id="3671" source="71" target="72"/> + <edge id="3672" source="71" target="561"/> + <edge id="3673" source="71" target="70"/> + <edge id="3674" source="1260" target="381"/> + <edge id="3675" source="1260" target="377"/> + <edge id="3676" source="1260" target="1"/> + <edge id="3677" source="1015" target="166"/> + <edge id="3678" source="1015" target="127"/> + <edge id="3679" source="1015" target="1"/> + <edge id="3680" source="1015" target="736"/> + <edge id="3681" source="1121" target="313"/> + <edge id="3682" source="385" target="294"/> + <edge id="3683" source="385" target="1"/> + <edge id="3684" source="385" target="303"/> + <edge id="3685" source="421" target="292"/> + <edge id="3686" source="421" target="420"/> + <edge id="3687" source="421" target="486"/> + <edge id="3688" source="421" target="191"/> + <edge id="3689" source="1261" target="298"/> + <edge id="3690" source="1261" target="401"/> + <edge id="3691" source="954" target="436"/> + <edge id="3692" source="954" target="159"/> + <edge id="3693" source="954" target="647"/> + <edge id="3694" source="954" target="262"/> + <edge id="3695" source="1076" target="1077"/> + <edge id="3696" source="1076" target="1078"/> + <edge id="3697" source="1076" target="1262"/> + <edge id="3698" source="1076" target="262"/> + <edge id="3699" source="1076" target="1079"/> + <edge id="3700" source="1076" target="1074"/> + <edge id="3701" source="664" target="646"/> + <edge id="3702" source="664" target="662"/> + <edge id="3703" source="664" target="663"/> + <edge id="3704" source="664" target="888"/> + <edge id="3705" source="664" target="660"/> + <edge id="3706" source="1263" target="262"/> + <edge id="3707" source="1263" target="570"/> + <edge id="3708" source="1263" target="65"/> + <edge id="3709" source="1263" target="348"/> + <edge id="3710" source="647" target="1003"/> + <edge id="3711" source="647" target="1202"/> + <edge id="3712" source="1264" target="647"/> + <edge id="3713" source="1264" target="1"/> + <edge id="3714" source="286" target="159"/> + <edge id="3715" source="286" target="647"/> + <edge id="3716" source="286" target="238"/> + <edge id="3717" source="286" target="262"/> + <edge id="3718" source="286" target="648"/> + <edge id="3719" source="289" target="65"/> + <edge id="3720" source="289" target="119"/> + <edge id="3721" source="289" target="286"/> + <edge id="3722" source="289" target="62"/> + <edge id="3723" source="289" target="53"/> + <edge id="3724" source="289" target="79"/> + <edge id="3725" source="674" target="1265"/> + <edge id="3726" source="1266" target="498"/> + <edge id="3727" source="1266" target="857"/> + <edge id="3728" source="1266" target="48"/> + <edge id="3729" source="1266" target="806"/> + <edge id="3730" source="1266" target="495"/> + <edge id="3731" source="1267" target="600"/> + <edge id="3732" source="1267" target="405"/> + <edge id="3733" source="1267" target="281"/> + <edge id="3734" source="1267" target="747"/> + <edge id="3735" source="1267" target="409"/> + <edge id="3736" source="1267" target="533"/> + <edge id="3737" source="1267" target="364"/> + <edge id="3738" source="1267" target="532"/> + <edge id="3739" source="1267" target="335"/> + <edge id="3740" source="1268" target="61"/> + <edge id="3741" source="1268" target="62"/> + <edge id="3742" source="1268" target="63"/> + <edge id="3743" source="1268" target="53"/> + <edge id="3744" source="1268" target="513"/> + <edge id="3745" source="1269" target="408"/> + <edge id="3746" source="1269" target="62"/> + <edge id="3747" source="1269" target="1222"/> + <edge id="3748" source="1269" target="1268"/> + <edge id="3749" source="1269" target="49"/> + <edge id="3750" source="1269" target="513"/> + <edge id="3751" source="1269" target="1079"/> + <edge id="3752" source="1269" target="1270"/> + <edge id="3753" source="1269" target="61"/> + <edge id="3754" source="1271" target="746"/> + <edge id="3755" source="1271" target="484"/> + <edge id="3756" source="803" target="148"/> + <edge id="3757" source="803" target="79"/> + <edge id="3758" source="803" target="928"/> + <edge id="3759" source="1272" target="1181"/> + <edge id="3760" source="1273" target="1274"/> + <edge id="3761" source="1273" target="1275"/> + <edge id="3762" source="1273" target="1228"/> + <edge id="3763" source="1273" target="1229"/> + <edge id="3764" source="1273" target="1"/> + <edge id="3765" source="1276" target="370"/> + <edge id="3766" source="1276" target="533"/> + <edge id="3767" source="1276" target="20"/> + <edge id="3768" source="1276" target="364"/> + <edge id="3769" source="1276" target="230"/> + <edge id="3770" source="1276" target="335"/> + <edge id="3771" source="1276" target="600"/> + <edge id="3772" source="1276" target="281"/> + <edge id="3773" source="1276" target="747"/> + <edge id="3774" source="1276" target="748"/> + <edge id="3775" source="747" target="20"/> + <edge id="3776" source="747" target="364"/> + <edge id="3777" source="747" target="335"/> + <edge id="3778" source="747" target="600"/> + <edge id="3779" source="747" target="281"/> + <edge id="3780" source="747" target="748"/> + <edge id="3781" source="747" target="170"/> + <edge id="3782" source="748" target="1122"/> + <edge id="3783" source="748" target="281"/> + <edge id="3784" source="748" target="747"/> + <edge id="3785" source="748" target="170"/> + <edge id="3786" source="748" target="533"/> + <edge id="3787" source="748" target="364"/> + <edge id="3788" source="748" target="335"/> + <edge id="3789" source="748" target="600"/> + <edge id="3790" source="748" target="536"/> + <edge id="3791" source="1277" target="1275"/> + <edge id="3792" source="1277" target="335"/> + <edge id="3793" source="1277" target="748"/> + <edge id="3794" source="1277" target="731"/> + <edge id="3795" source="1278" target="227"/> + <edge id="3796" source="1278" target="313"/> + <edge id="3797" source="1278" target="1279"/> + <edge id="3798" source="1280" target="607"/> + <edge id="3799" source="1280" target="833"/> + <edge id="3800" source="1280" target="494"/> + <edge id="3801" source="1280" target="339"/> + <edge id="3802" source="1280" target="51"/> + <edge id="3803" source="1280" target="759"/> + <edge id="3804" source="1280" target="757"/> + <edge id="3805" source="1280" target="758"/> + <edge id="3806" source="1280" target="732"/> + <edge id="3807" source="1281" target="618"/> + <edge id="3808" source="1281" target="1200"/> + <edge id="3809" source="1281" target="1282"/> + <edge id="3810" source="1281" target="1283"/> + <edge id="3811" source="338" target="1284"/> + <edge id="3812" source="960" target="1284"/> + <edge id="3813" source="1285" target="841"/> + <edge id="3814" source="1285" target="979"/> + <edge id="3815" source="1285" target="49"/> + <edge id="3816" source="1285" target="513"/> + <edge id="3817" source="1285" target="51"/> + <edge id="3818" source="1285" target="966"/> + <edge id="3819" source="1286" target="48"/> + <edge id="3820" source="1286" target="166"/> + <edge id="3821" source="1286" target="279"/> + <edge id="3822" source="1286" target="53"/> + <edge id="3823" source="1286" target="339"/> + <edge id="3824" source="1286" target="1287"/> + <edge id="3825" source="1288" target="219"/> + <edge id="3826" source="1225" target="215"/> + <edge id="3827" source="1225" target="33"/> + <edge id="3828" source="738" target="440"/> + <edge id="3829" source="738" target="1289"/> + <edge id="3830" source="1290" target="210"/> + <edge id="3831" source="1290" target="79"/> + <edge id="3832" source="1290" target="851"/> + <edge id="3833" source="1290" target="626"/> + <edge id="3834" source="1290" target="325"/> + <edge id="3835" source="1290" target="826"/> + <edge id="3836" source="482" target="281"/> + <edge id="3837" source="482" target="483"/> + <edge id="3838" source="482" target="334"/> + <edge id="3839" source="482" target="1291"/> + <edge id="3840" source="482" target="1292"/> + <edge id="3841" source="482" target="600"/> + <edge id="3842" source="1293" target="113"/> + <edge id="3843" source="1293" target="49"/> + <edge id="3844" source="1293" target="513"/> + <edge id="3845" source="1294" target="48"/> + <edge id="3846" source="1294" target="61"/> + <edge id="3847" source="1294" target="833"/> + <edge id="3848" source="1294" target="868"/> + <edge id="3849" source="1294" target="412"/> + <edge id="3850" source="1294" target="970"/> + <edge id="3851" source="1036" target="209"/> + <edge id="3852" source="1036" target="207"/> + <edge id="3853" source="627" target="73"/> + <edge id="3854" source="627" target="863"/> + <edge id="3855" source="627" target="861"/> + <edge id="3856" source="1295" target="544"/> + <edge id="3857" source="1296" target="484"/> + <edge id="3858" source="1296" target="352"/> + <edge id="3859" source="1296" target="607"/> + <edge id="3860" source="1296" target="788"/> + <edge id="3861" source="1296" target="498"/> + <edge id="3862" source="1296" target="48"/> + <edge id="3863" source="255" target="254"/> + <edge id="3864" source="464" target="1"/> + <edge id="3865" source="1297" target="1036"/> + <edge id="3866" source="1298" target="50"/> + <edge id="3867" source="1298" target="280"/> + <edge id="3868" source="1298" target="335"/> + <edge id="3869" source="1298" target="53"/> + <edge id="3870" source="1298" target="411"/> + <edge id="3871" source="1298" target="66"/> + <edge id="3872" source="1298" target="397"/> + <edge id="3873" source="1298" target="48"/> + <edge id="3874" source="1298" target="502"/> + <edge id="3875" source="1298" target="49"/> + <edge id="3876" source="1299" target="76"/> + <edge id="3877" source="1299" target="1300"/> + <edge id="3878" source="1299" target="1301"/> + <edge id="3879" source="1299" target="1302"/> + <edge id="3880" source="659" target="1303"/> + <edge id="3881" source="659" target="661"/> + <edge id="3882" source="702" target="160"/> + <edge id="3883" source="702" target="541"/> + <edge id="3884" source="702" target="161"/> + <edge id="3885" source="703" target="702"/> + <edge id="3886" source="703" target="161"/> + <edge id="3887" source="703" target="91"/> + <edge id="3888" source="703" target="704"/> + <edge id="3889" source="703" target="539"/> + <edge id="3890" source="703" target="701"/> + <edge id="3891" source="703" target="540"/> + <edge id="3892" source="319" target="296"/> + <edge id="3893" source="319" target="311"/> + <edge id="3894" source="319" target="79"/> + <edge id="3895" source="319" target="150"/> + <edge id="3896" source="319" target="182"/> + <edge id="3897" source="319" target="185"/> + <edge id="3898" source="1304" target="444"/> + <edge id="3899" source="1304" target="319"/> + <edge id="3900" source="1304" target="1305"/> + <edge id="3901" source="1304" target="325"/> + <edge id="3902" source="1304" target="310"/> + <edge id="3903" source="1304" target="311"/> + <edge id="3904" source="1304" target="328"/> + <edge id="3905" source="981" target="18"/> + <edge id="3906" source="1306" target="18"/> + <edge id="3907" source="397" target="49"/> + <edge id="3908" source="397" target="50"/> + <edge id="3909" source="397" target="51"/> + <edge id="3910" source="397" target="396"/> + <edge id="3911" source="397" target="956"/> + <edge id="3912" source="397" target="1206"/> + <edge id="3913" source="397" target="801"/> + <edge id="3914" source="397" target="48"/> + <edge id="3915" source="397" target="398"/> + <edge id="3916" source="1307" target="166"/> + <edge id="3917" source="1307" target="1308"/> + <edge id="3918" source="1307" target="167"/> + <edge id="3919" source="483" target="51"/> + <edge id="3920" source="483" target="166"/> + <edge id="3921" source="483" target="279"/> + <edge id="3922" source="483" target="1308"/> + <edge id="3923" source="483" target="482"/> + <edge id="3924" source="483" target="397"/> + <edge id="3925" source="483" target="801"/> + <edge id="3926" source="483" target="334"/> + <edge id="3927" source="1309" target="114"/> + <edge id="3928" source="1310" target="522"/> + <edge id="3929" source="1311" target="322"/> + <edge id="3930" source="1312" target="296"/> + <edge id="3931" source="1312" target="321"/> + <edge id="3932" source="1312" target="1034"/> + <edge id="3933" source="1312" target="1311"/> + <edge id="3934" source="1312" target="322"/> + <edge id="3935" source="1312" target="786"/> + <edge id="3936" source="1312" target="323"/> + <edge id="3937" source="1312" target="787"/> + <edge id="3938" source="322" target="320"/> + <edge id="3939" source="322" target="321"/> + <edge id="3940" source="322" target="785"/> + <edge id="3941" source="322" target="1311"/> + <edge id="3942" source="322" target="1312"/> + <edge id="3943" source="322" target="323"/> + <edge id="3944" source="322" target="296"/> + <edge id="3945" source="786" target="206"/> + <edge id="3946" source="786" target="1312"/> + <edge id="3947" source="786" target="322"/> + <edge id="3948" source="786" target="323"/> + <edge id="3949" source="786" target="787"/> + <edge id="3950" source="1313" target="297"/> + <edge id="3951" source="1313" target="1314"/> + <edge id="3952" source="1313" target="417"/> + <edge id="3953" source="1313" target="1152"/> + <edge id="3954" source="1313" target="292"/> + <edge id="3955" source="1313" target="296"/> + <edge id="3956" source="372" target="621"/> + <edge id="3957" source="621" target="372"/> + <edge id="3958" source="621" target="622"/> + <edge id="3959" source="621" target="182"/> + <edge id="3960" source="621" target="1315"/> + <edge id="3961" source="1259" target="1235"/> + <edge id="3962" source="1259" target="524"/> + <edge id="3963" source="391" target="883"/> + <edge id="3964" source="391" target="983"/> + <edge id="3965" source="391" target="1316"/> + <edge id="3966" source="391" target="1317"/> + <edge id="3967" source="391" target="68"/> + <edge id="3968" source="391" target="1133"/> + <edge id="3969" source="1318" target="1133"/> + <edge id="3970" source="1318" target="111"/> + <edge id="3971" source="1318" target="983"/> + <edge id="3972" source="1318" target="1316"/> + <edge id="3973" source="251" target="453"/> + <edge id="3974" source="251" target="708"/> + <edge id="3975" source="251" target="250"/> + <edge id="3976" source="251" target="97"/> + <edge id="3977" source="1017" target="277"/> + <edge id="3978" source="1017" target="457"/> + <edge id="3979" source="1319" target="68"/> + <edge id="3980" source="1319" target="53"/> + <edge id="3981" source="1319" target="79"/> + <edge id="3982" source="1319" target="65"/> + <edge id="3983" source="1319" target="50"/> + <edge id="3984" source="1319" target="108"/> + <edge id="3985" source="1164" target="426"/> + <edge id="3986" source="1164" target="437"/> + <edge id="3987" source="1164" target="606"/> + <edge id="3988" source="1164" target="424"/> + <edge id="3989" source="266" target="438"/> + <edge id="3990" source="266" target="264"/> + <edge id="3991" source="266" target="444"/> + <edge id="3992" source="266" target="502"/> + <edge id="3993" source="266" target="403"/> + <edge id="3994" source="1320" target="1321"/> + <edge id="3995" source="1320" target="1322"/> + <edge id="3996" source="1320" target="232"/> + <edge id="3997" source="212" target="79"/> + <edge id="3998" source="212" target="885"/> + <edge id="3999" source="505" target="493"/> + <edge id="4000" source="505" target="232"/> + <edge id="4001" source="505" target="1177"/> + <edge id="4002" source="505" target="495"/> + <edge id="4003" source="885" target="79"/> + <edge id="4004" source="885" target="212"/> + <edge id="4005" source="885" target="1323"/> + <edge id="4006" source="934" target="1324"/> + <edge id="4007" source="355" target="712"/> + <edge id="4008" source="355" target="217"/> + <edge id="4009" source="355" target="505"/> + <edge id="4010" source="1325" target="1113"/> + <edge id="4011" source="1325" target="513"/> + <edge id="4012" source="1325" target="50"/> + <edge id="4013" source="1325" target="61"/> + <edge id="4014" source="1325" target="408"/> + <edge id="4015" source="1325" target="53"/> + <edge id="4016" source="1325" target="498"/> + <edge id="4017" source="1325" target="65"/> + <edge id="4018" source="1325" target="66"/> + <edge id="4019" source="120" target="668"/> + <edge id="4020" source="120" target="576"/> + <edge id="4021" source="120" target="582"/> + <edge id="4022" source="120" target="930"/> + <edge id="4023" source="1326" target="1327"/> + <edge id="4024" source="1326" target="422"/> + <edge id="4025" source="1326" target="1328"/> + <edge id="4026" source="1326" target="606"/> + <edge id="4027" source="1326" target="423"/> + <edge id="4028" source="1326" target="424"/> + <edge id="4029" source="1326" target="1329"/> + <edge id="4030" source="347" target="348"/> + <edge id="4031" source="888" target="889"/> + <edge id="4032" source="1303" target="663"/> + <edge id="4033" source="1303" target="888"/> + <edge id="4034" source="1303" target="660"/> + <edge id="4035" source="1330" target="662"/> + <edge id="4036" source="1330" target="664"/> + <edge id="4037" source="1330" target="262"/> + <edge id="4038" source="660" target="1303"/> + <edge id="4039" source="660" target="1330"/> + <edge id="4040" source="660" target="662"/> + <edge id="4041" source="660" target="664"/> + <edge id="4042" source="660" target="888"/> + <edge id="4043" source="1331" target="1"/> + <edge id="4044" source="1332" target="128"/> + <edge id="4045" source="1332" target="53"/> + <edge id="4046" source="1333" target="623"/> + <edge id="4047" source="1333" target="624"/> + <edge id="4048" source="1334" target="1123"/> + <edge id="4049" source="1334" target="1174"/> + <edge id="4050" source="1334" target="1335"/> + <edge id="4051" source="1334" target="1126"/> + <edge id="4052" source="1334" target="82"/> + <edge id="4053" source="1334" target="401"/> + <edge id="4054" source="1334" target="817"/> + <edge id="4055" source="1334" target="1122"/> + <edge id="4056" source="1334" target="987"/> + <edge id="4057" source="1336" target="284"/> + <edge id="4058" source="1336" target="166"/> + <edge id="4059" source="1336" target="279"/> + <edge id="4060" source="1336" target="321"/> + <edge id="4061" source="1336" target="53"/> + <edge id="4062" source="1336" target="281"/> + <edge id="4063" source="1336" target="839"/> + <edge id="4064" source="1336" target="48"/> + <edge id="4065" source="1336" target="50"/> + <edge id="4066" source="1337" target="166"/> + <edge id="4067" source="1337" target="1338"/> + <edge id="4068" source="1337" target="805"/> + <edge id="4069" source="1337" target="411"/> + <edge id="4070" source="1337" target="199"/> + <edge id="4071" source="1337" target="48"/> + <edge id="4072" source="1337" target="200"/> + <edge id="4073" source="1337" target="201"/> + <edge id="4074" source="1337" target="806"/> + <edge id="4075" source="1337" target="807"/> + <edge id="4076" source="1339" target="975"/> + <edge id="4077" source="1339" target="1340"/> + <edge id="4078" source="1339" target="724"/> + <edge id="4079" source="1339" target="1161"/> + <edge id="4080" source="1339" target="1015"/> + <edge id="4081" source="1339" target="48"/> + <edge id="4082" source="1339" target="502"/> + <edge id="4083" source="1339" target="806"/> + <edge id="4084" source="1339" target="223"/> + <edge id="4085" source="1339" target="784"/> + <edge id="4086" source="1341" target="1340"/> + <edge id="4087" source="1341" target="724"/> + <edge id="4088" source="1341" target="1015"/> + <edge id="4089" source="1341" target="502"/> + <edge id="4090" source="1341" target="806"/> + <edge id="4091" source="1341" target="223"/> + <edge id="4092" source="1341" target="784"/> + <edge id="4093" source="1341" target="65"/> + <edge id="4094" source="1341" target="975"/> + <edge id="4095" source="1341" target="444"/> + <edge id="4096" source="1342" target="50"/> + <edge id="4097" source="1342" target="806"/> + <edge id="4098" source="1342" target="166"/> + <edge id="4099" source="1342" target="335"/> + <edge id="4100" source="1342" target="411"/> + <edge id="4101" source="1342" target="1180"/> + <edge id="4102" source="1342" target="194"/> + <edge id="4103" source="1342" target="48"/> + <edge id="4104" source="1342" target="200"/> + <edge id="4105" source="1343" target="344"/> + <edge id="4106" source="1343" target="393"/> + <edge id="4107" source="1343" target="1000"/> + <edge id="4108" source="1343" target="1175"/> + <edge id="4109" source="1343" target="505"/> + <edge id="4110" source="1343" target="200"/> + <edge id="4111" source="1343" target="201"/> + <edge id="4112" source="1344" target="408"/> + <edge id="4113" source="1344" target="562"/> + <edge id="4114" source="1344" target="498"/> + <edge id="4115" source="1345" target="587"/> + <edge id="4116" source="1345" target="181"/> + <edge id="4117" source="1345" target="267"/> + <edge id="4118" source="1345" target="182"/> + <edge id="4119" source="1345" target="370"/> + <edge id="4120" source="1345" target="254"/> + <edge id="4121" source="1346" target="872"/> + <edge id="4122" source="1346" target="903"/> + <edge id="4123" source="1346" target="246"/> + <edge id="4124" source="1346" target="1160"/> + <edge id="4125" source="379" target="68"/> + <edge id="4126" source="379" target="118"/> + <edge id="4127" source="379" target="668"/> + <edge id="4128" source="379" target="155"/> + <edge id="4129" source="1347" target="79"/> + <edge id="4130" source="1347" target="1208"/> + <edge id="4131" source="1347" target="1263"/> + <edge id="4132" source="1347" target="1348"/> + <edge id="4133" source="1347" target="1265"/> + <edge id="4134" source="1347" target="640"/> + <edge id="4135" source="1347" target="641"/> + <edge id="4136" source="1348" target="433"/> + <edge id="4137" source="1348" target="161"/> + <edge id="4138" source="1349" target="1350"/> + <edge id="4139" source="1349" target="628"/> + <edge id="4140" source="1349" target="177"/> + <edge id="4141" source="1349" target="79"/> + <edge id="4142" source="1349" target="906"/> + <edge id="4143" source="1349" target="463"/> + <edge id="4144" source="1350" target="177"/> + <edge id="4145" source="1350" target="79"/> + <edge id="4146" source="1350" target="906"/> + <edge id="4147" source="628" target="1324"/> + <edge id="4148" source="628" target="177"/> + <edge id="4149" source="628" target="79"/> + <edge id="4150" source="628" target="906"/> + <edge id="4151" source="628" target="463"/> + <edge id="4152" source="628" target="629"/> + <edge id="4153" source="628" target="934"/> + <edge id="4154" source="628" target="1350"/> + <edge id="4155" source="1351" target="65"/> + <edge id="4156" source="1351" target="104"/> + <edge id="4157" source="1351" target="1042"/> + <edge id="4158" source="1351" target="567"/> + <edge id="4159" source="1351" target="1138"/> + <edge id="4160" source="1351" target="171"/> + <edge id="4161" source="1351" target="1046"/> + <edge id="4162" source="1352" target="76"/> + <edge id="4163" source="1352" target="453"/> + <edge id="4164" source="297" target="292"/> + <edge id="4165" source="1353" target="747"/> + <edge id="4166" source="1353" target="748"/> + <edge id="4167" source="1353" target="111"/> + <edge id="4168" source="1353" target="749"/> + <edge id="4169" source="1353" target="170"/> + <edge id="4170" source="1353" target="1124"/> + <edge id="4171" source="1353" target="746"/> + <edge id="4172" source="1353" target="335"/> + <edge id="4173" source="1353" target="281"/> + <edge id="4174" source="1354" target="479"/> + <edge id="4175" source="1355" target="296"/> + <edge id="4176" source="1355" target="1356"/> + <edge id="4177" source="1355" target="182"/> + <edge id="4178" source="1355" target="1357"/> + <edge id="4179" source="1355" target="500"/> + <edge id="4180" source="581" target="519"/> + <edge id="4181" source="581" target="498"/> + <edge id="4182" source="581" target="883"/> + <edge id="4183" source="581" target="858"/> + <edge id="4184" source="883" target="68"/> + <edge id="4185" source="883" target="693"/> + <edge id="4186" source="883" target="498"/> + <edge id="4187" source="883" target="915"/> + <edge id="4188" source="883" target="976"/> + <edge id="4189" source="883" target="1358"/> + <edge id="4190" source="883" target="109"/> + <edge id="4191" source="1359" target="53"/> + <edge id="4192" source="1359" target="696"/> + <edge id="4193" source="1359" target="259"/> + <edge id="4194" source="1359" target="49"/> + <edge id="4195" source="1359" target="513"/> + <edge id="4196" source="1359" target="51"/> + <edge id="4197" source="1359" target="1360"/> + <edge id="4198" source="1359" target="88"/> + <edge id="4199" source="1359" target="335"/> + <edge id="4200" source="494" target="128"/> + <edge id="4201" source="1361" target="492"/> + <edge id="4202" source="1361" target="217"/> + <edge id="4203" source="339" target="1056"/> + <edge id="4204" source="339" target="1243"/> + <edge id="4205" source="339" target="334"/> + <edge id="4206" source="339" target="50"/> + <edge id="4207" source="339" target="280"/> + <edge id="4208" source="339" target="53"/> + <edge id="4209" source="339" target="65"/> + <edge id="4210" source="801" target="956"/> + <edge id="4211" source="801" target="1244"/> + <edge id="4212" source="801" target="397"/> + <edge id="4213" source="801" target="483"/> + <edge id="4214" source="801" target="48"/> + <edge id="4215" source="801" target="49"/> + <edge id="4216" source="801" target="50"/> + <edge id="4217" source="801" target="51"/> + <edge id="4218" source="1362" target="68"/> + <edge id="4219" source="1362" target="53"/> + <edge id="4220" source="1362" target="460"/> + <edge id="4221" source="1362" target="591"/> + <edge id="4222" source="1362" target="64"/> + <edge id="4223" source="1362" target="65"/> + <edge id="4224" source="1362" target="119"/> + <edge id="4225" source="1362" target="105"/> + <edge id="4226" source="1362" target="50"/> + <edge id="4227" source="1362" target="108"/> + <edge id="4228" source="1363" target="47"/> + <edge id="4229" source="1363" target="48"/> + <edge id="4230" source="1363" target="334"/> + <edge id="4231" source="1363" target="49"/> + <edge id="4232" source="1363" target="51"/> + <edge id="4233" source="1363" target="52"/> + <edge id="4234" source="1363" target="1364"/> + <edge id="4235" source="1363" target="53"/> + <edge id="4236" source="1363" target="45"/> + <edge id="4237" source="1363" target="46"/> + <edge id="4238" source="1365" target="757"/> + <edge id="4239" source="1365" target="758"/> + <edge id="4240" source="1365" target="147"/> + <edge id="4241" source="1365" target="607"/> + <edge id="4242" source="1365" target="27"/> + <edge id="4243" source="1365" target="494"/> + <edge id="4244" source="1365" target="339"/> + <edge id="4245" source="1365" target="51"/> + <edge id="4246" source="1365" target="759"/> + <edge id="4247" source="1366" target="166"/> + <edge id="4248" source="1366" target="1367"/> + <edge id="4249" source="1366" target="82"/> + <edge id="4250" source="1368" target="1095"/> + <edge id="4251" source="1368" target="1096"/> + <edge id="4252" source="1368" target="1097"/> + <edge id="4253" source="1368" target="312"/> + <edge id="4254" source="1369" target="1370"/> + <edge id="4255" source="1369" target="1"/> + <edge id="4256" source="1369" target="1371"/> + <edge id="4257" source="1372" target="216"/> + <edge id="4258" source="1372" target="167"/> + <edge id="4259" source="1372" target="489"/> + <edge id="4260" source="1372" target="579"/> + <edge id="4261" source="1372" target="1373"/> + <edge id="4262" source="1374" target="487"/> + <edge id="4263" source="1374" target="519"/> + <edge id="4264" source="1374" target="53"/> + <edge id="4265" source="1374" target="489"/> + <edge id="4266" source="1374" target="391"/> + <edge id="4267" source="1374" target="983"/> + <edge id="4268" source="1374" target="406"/> + <edge id="4269" source="1374" target="334"/> + <edge id="4270" source="1375" target="21"/> + <edge id="4271" source="392" target="498"/> + <edge id="4272" source="392" target="1133"/> + <edge id="4273" source="392" target="391"/> + <edge id="4274" source="392" target="585"/> + <edge id="4275" source="1376" target="291"/> + <edge id="4276" source="1376" target="293"/> + <edge id="4277" source="1376" target="1377"/> + <edge id="4278" source="1376" target="516"/> + <edge id="4279" source="1376" target="525"/> + <edge id="4280" source="1376" target="295"/> + <edge id="4281" source="1378" target="293"/> + <edge id="4282" source="1378" target="291"/> + <edge id="4283" source="1356" target="57"/> + <edge id="4284" source="1379" target="428"/> + <edge id="4285" source="1379" target="1358"/> + <edge id="4286" source="1358" target="428"/> + <edge id="4287" source="1358" target="1379"/> + <edge id="4288" source="1380" target="1379"/> + <edge id="4289" source="1380" target="1358"/> + <edge id="4290" source="1381" target="1152"/> + <edge id="4291" source="1382" target="463"/> + <edge id="4292" source="479" target="1062"/> + <edge id="4293" source="479" target="1063"/> + <edge id="4294" source="479" target="1"/> + <edge id="4295" source="479" target="1064"/> + <edge id="4296" source="479" target="1066"/> + <edge id="4297" source="479" target="1068"/> + <edge id="4298" source="1063" target="1064"/> + <edge id="4299" source="1063" target="1066"/> + <edge id="4300" source="1063" target="1069"/> + <edge id="4301" source="1063" target="1"/> + <edge id="4302" source="39" target="34"/> + <edge id="4303" source="39" target="270"/> + <edge id="4304" source="39" target="313"/> + <edge id="4305" source="39" target="275"/> + <edge id="4306" source="46" target="309"/> + <edge id="4307" source="46" target="185"/> + <edge id="4308" source="46" target="723"/> + <edge id="4309" source="46" target="45"/> + <edge id="4310" source="1383" target="310"/> + <edge id="4311" source="1383" target="311"/> + <edge id="4312" source="1383" target="79"/> + <edge id="4313" source="1383" target="723"/> + <edge id="4314" source="1383" target="312"/> + <edge id="4315" source="1383" target="852"/> + <edge id="4316" source="1383" target="185"/> + <edge id="4317" source="367" target="307"/> + <edge id="4318" source="367" target="309"/> + <edge id="4319" source="275" target="313"/> + <edge id="4320" source="275" target="276"/> + <edge id="4321" source="275" target="270"/> + <edge id="4322" source="275" target="36"/> + <edge id="4323" source="271" target="270"/> + <edge id="4324" source="271" target="36"/> + <edge id="4325" source="271" target="1384"/> + <edge id="4326" source="271" target="38"/> + <edge id="4327" source="271" target="275"/> + <edge id="4328" source="271" target="276"/> + <edge id="4329" source="1047" target="463"/> + <edge id="4330" source="1047" target="209"/> + <edge id="4331" source="1047" target="207"/> + <edge id="4332" source="1047" target="1036"/> + <edge id="4333" source="615" target="206"/> + <edge id="4334" source="615" target="1039"/> + <edge id="4335" source="615" target="209"/> + <edge id="4336" source="974" target="313"/> + <edge id="4337" source="974" target="150"/> + <edge id="4338" source="974" target="1385"/> + <edge id="4339" source="150" target="163"/> + <edge id="4340" source="340" target="163"/> + <edge id="4341" source="340" target="150"/> + <edge id="4342" source="1386" target="974"/> + <edge id="4343" source="1386" target="1323"/> + <edge id="4344" source="1385" target="150"/> + <edge id="4345" source="1385" target="1"/> + <edge id="4346" source="1385" target="79"/> + <edge id="4347" source="1385" target="974"/> + <edge id="4348" source="1387" target="79"/> + <edge id="4349" source="1387" target="974"/> + <edge id="4350" source="1387" target="150"/> + <edge id="4351" source="1387" target="1385"/> + <edge id="4352" source="1387" target="1388"/> + <edge id="4353" source="1387" target="1389"/> + <edge id="4354" source="1387" target="1"/> + <edge id="4355" source="1023" target="581"/> + <edge id="4356" source="1023" target="858"/> + <edge id="4357" source="1388" target="974"/> + <edge id="4358" source="1388" target="1385"/> + <edge id="4359" source="1390" target="90"/> + <edge id="4360" source="1390" target="433"/> + <edge id="4361" source="1390" target="365"/> + <edge id="4362" source="1390" target="155"/> + <edge id="4363" source="1390" target="897"/> + <edge id="4364" source="1389" target="313"/> + <edge id="4365" source="1391" target="1060"/> + <edge id="4366" source="1391" target="1114"/> + <edge id="4367" source="1391" target="1115"/> + <edge id="4368" source="1391" target="1392"/> + <edge id="4369" source="1391" target="1116"/> + <edge id="4370" source="1393" target="233"/> + <edge id="4371" source="232" target="353"/> + <edge id="4372" source="232" target="128"/> + <edge id="4373" source="441" target="129"/> + <edge id="4374" source="441" target="439"/> + <edge id="4375" source="441" target="1394"/> + <edge id="4376" source="441" target="172"/> + <edge id="4377" source="441" target="82"/> + <edge id="4378" source="441" target="713"/> + <edge id="4379" source="1395" target="444"/> + <edge id="4380" source="1395" target="839"/> + <edge id="4381" source="1395" target="571"/> + <edge id="4382" source="1018" target="146"/> + <edge id="4383" source="1396" target="211"/> + <edge id="4384" source="332" target="331"/> + <edge id="4385" source="332" target="521"/> + <edge id="4386" source="332" target="149"/> + <edge id="4387" source="12" target="1"/> + <edge id="4388" source="1136" target="600"/> + <edge id="4389" source="1136" target="281"/> + <edge id="4390" source="1136" target="1141"/> + <edge id="4391" source="1136" target="1142"/> + <edge id="4392" source="577" target="581"/> + <edge id="4393" source="577" target="585"/> + <edge id="4394" source="577" target="578"/> + <edge id="4395" source="577" target="68"/> + <edge id="4396" source="577" target="519"/> + <edge id="4397" source="577" target="580"/> + <edge id="4398" source="577" target="576"/> + <edge id="4399" source="577" target="120"/> + <edge id="4400" source="635" target="53"/> + <edge id="4401" source="635" target="50"/> + <edge id="4402" source="889" target="888"/> + <edge id="4403" source="889" target="661"/> + <edge id="4404" source="1397" target="1165"/> + <edge id="4405" source="1397" target="155"/> + <edge id="4406" source="1397" target="68"/> + <edge id="4407" source="1397" target="668"/> + <edge id="4408" source="1397" target="710"/> + <edge id="4409" source="1397" target="65"/> + <edge id="4410" source="1397" target="378"/> + <edge id="4411" source="1397" target="379"/> + <edge id="4412" source="1398" target="281"/> + <edge id="4413" source="1398" target="1399"/> + <edge id="4414" source="1398" target="1400"/> + <edge id="4415" source="1401" target="166"/> + <edge id="4416" source="1401" target="279"/> + <edge id="4417" source="1401" target="53"/> + <edge id="4418" source="1401" target="281"/> + <edge id="4419" source="1401" target="695"/> + <edge id="4420" source="1401" target="49"/> + <edge id="4421" source="1401" target="109"/> + <edge id="4422" source="1401" target="284"/> + <edge id="4423" source="47" target="113"/> + <edge id="4424" source="47" target="589"/> + <edge id="4425" source="47" target="281"/> + <edge id="4426" source="47" target="119"/> + <edge id="4427" source="47" target="267"/> + <edge id="4428" source="47" target="48"/> + <edge id="4429" source="47" target="374"/> + <edge id="4430" source="47" target="49"/> + <edge id="4431" source="47" target="513"/> + <edge id="4432" source="267" target="374"/> + <edge id="4433" source="267" target="49"/> + <edge id="4434" source="267" target="513"/> + <edge id="4435" source="267" target="116"/> + <edge id="4436" source="267" target="113"/> + <edge id="4437" source="267" target="589"/> + <edge id="4438" source="267" target="119"/> + <edge id="4439" source="267" target="47"/> + <edge id="4440" source="1050" target="401"/> + <edge id="4441" source="1050" target="206"/> + <edge id="4442" source="1050" target="1402"/> + <edge id="4443" source="1050" target="208"/> + <edge id="4444" source="1403" target="1404"/> + <edge id="4445" source="351" target="79"/> + <edge id="4446" source="351" target="1"/> + <edge id="4447" source="1314" target="297"/> + <edge id="4448" source="1314" target="292"/> + <edge id="4449" source="1314" target="296"/> + <edge id="4450" source="1405" target="819"/> + <edge id="4451" source="1405" target="613"/> + <edge id="4452" source="1405" target="1098"/> + <edge id="4453" source="1405" target="638"/> + <edge id="4454" source="1405" target="626"/> + <edge id="4455" source="1405" target="312"/> + <edge id="4456" source="1405" target="1197"/> + <edge id="4457" source="622" target="372"/> + <edge id="4458" source="622" target="621"/> + <edge id="4459" source="622" target="182"/> + <edge id="4460" source="622" target="1315"/> + <edge id="4461" source="417" target="292"/> + <edge id="4462" source="417" target="314"/> + <edge id="4463" source="417" target="371"/> + <edge id="4464" source="417" target="297"/> + <edge id="4465" source="417" target="1314"/> + <edge id="4466" source="417" target="1152"/> + <edge id="4467" source="182" target="296"/> + <edge id="4468" source="182" target="79"/> + <edge id="4469" source="182" target="621"/> + <edge id="4470" source="182" target="256"/> + <edge id="4471" source="182" target="185"/> + <edge id="4472" source="1406" target="181"/> + <edge id="4473" source="1406" target="302"/> + <edge id="4474" source="1406" target="256"/> + <edge id="4475" source="1406" target="1357"/> + <edge id="4476" source="1406" target="301"/> + <edge id="4477" source="1406" target="294"/> + <edge id="4478" source="194" target="193"/> + <edge id="4479" source="194" target="270"/> + <edge id="4480" source="194" target="195"/> + <edge id="4481" source="1315" target="292"/> + <edge id="4482" source="1315" target="296"/> + <edge id="4483" source="1315" target="294"/> + <edge id="4484" source="1315" target="79"/> + <edge id="4485" source="1315" target="486"/> + <edge id="4486" source="1315" target="323"/> + <edge id="4487" source="1407" target="79"/> + <edge id="4488" source="1407" target="182"/> + <edge id="4489" source="1407" target="185"/> + <edge id="4490" source="1407" target="1408"/> + <edge id="4491" source="316" target="1"/> + <edge id="4492" source="1152" target="292"/> + <edge id="4493" source="1152" target="371"/> + <edge id="4494" source="1152" target="996"/> + <edge id="4495" source="1152" target="297"/> + <edge id="4496" source="1152" target="1314"/> + <edge id="4497" source="1152" target="417"/> + <edge id="4498" source="1152" target="316"/> + <edge id="4499" source="524" target="1258"/> + <edge id="4500" source="524" target="1259"/> + <edge id="4501" source="524" target="1235"/> + <edge id="4502" source="1409" target="1248"/> + <edge id="4503" source="1409" target="1249"/> + <edge id="4504" source="304" target="294"/> + <edge id="4505" source="304" target="966"/> + <edge id="4506" source="304" target="185"/> + <edge id="4507" source="304" target="1410"/> + <edge id="4508" source="1411" target="1124"/> + <edge id="4509" source="1411" target="532"/> + <edge id="4510" source="1411" target="230"/> + <edge id="4511" source="1411" target="536"/> + <edge id="4512" source="1411" target="537"/> + <edge id="4513" source="1411" target="765"/> + <edge id="4514" source="1125" target="364"/> + <edge id="4515" source="1125" target="532"/> + <edge id="4516" source="1125" target="543"/> + <edge id="4517" source="1125" target="335"/> + <edge id="4518" source="1125" target="535"/> + <edge id="4519" source="1125" target="281"/> + <edge id="4520" source="1125" target="537"/> + <edge id="4521" source="1125" target="533"/> + <edge id="4522" source="1412" target="996"/> + <edge id="4523" source="1412" target="1199"/> + <edge id="4524" source="1412" target="1404"/> + <edge id="4525" source="993" target="292"/> + <edge id="4526" source="993" target="995"/> + <edge id="4527" source="993" target="996"/> + <edge id="4528" source="993" target="997"/> + <edge id="4529" source="993" target="998"/> + <edge id="4530" source="1413" target="1200"/> + <edge id="4531" source="1200" target="1413"/> + <edge id="4532" source="1200" target="1414"/> + <edge id="4533" source="1414" target="1200"/> + <edge id="4534" source="1415" target="979"/> + <edge id="4535" source="1404" target="272"/> + <edge id="4536" source="1404" target="450"/> + <edge id="4537" source="1404" target="429"/> + <edge id="4538" source="1404" target="37"/> + <edge id="4539" source="1404" target="209"/> + <edge id="4540" source="1404" target="1403"/> + <edge id="4541" source="317" target="296"/> + <edge id="4542" source="317" target="79"/> + <edge id="4543" source="317" target="181"/> + <edge id="4544" source="317" target="325"/> + <edge id="4545" source="317" target="185"/> + <edge id="4546" source="1416" target="296"/> + <edge id="4547" source="1416" target="79"/> + <edge id="4548" source="1416" target="317"/> + <edge id="4549" source="1416" target="325"/> + <edge id="4550" source="1417" target="917"/> + <edge id="4551" source="1418" target="95"/> + <edge id="4552" source="1418" target="602"/> + <edge id="4553" source="1418" target="1"/> + <edge id="4554" source="1418" target="1419"/> + <edge id="4555" source="1418" target="758"/> + <edge id="4556" source="1420" target="344"/> + <edge id="4557" source="1420" target="280"/> + <edge id="4558" source="1420" target="335"/> + <edge id="4559" source="1420" target="568"/> + <edge id="4560" source="1420" target="48"/> + <edge id="4561" source="1420" target="49"/> + <edge id="4562" source="418" target="961"/> + <edge id="4563" source="418" target="219"/> + <edge id="4564" source="418" target="416"/> + <edge id="4565" source="1421" target="310"/> + <edge id="4566" source="1421" target="311"/> + <edge id="4567" source="1421" target="79"/> + <edge id="4568" source="1421" target="723"/> + <edge id="4569" source="1421" target="45"/> + <edge id="4570" source="1421" target="1422"/> + <edge id="4571" source="1421" target="312"/> + <edge id="4572" source="1421" target="46"/> + <edge id="4573" source="1421" target="185"/> + <edge id="4574" source="1305" target="296"/> + <edge id="4575" source="1305" target="415"/> + <edge id="4576" source="1305" target="182"/> + <edge id="4577" source="961" target="962"/> + <edge id="4578" source="370" target="364"/> + <edge id="4579" source="370" target="335"/> + <edge id="4580" source="370" target="634"/> + <edge id="4581" source="370" target="281"/> + <edge id="4582" source="370" target="334"/> + <edge id="4583" source="370" target="51"/> + <edge id="4584" source="370" target="533"/> + <edge id="4585" source="1423" target="1424"/> + <edge id="4586" source="1423" target="1425"/> + <edge id="4587" source="1423" target="1235"/> + <edge id="4588" source="1423" target="1258"/> + <edge id="4589" source="1423" target="1259"/> + <edge id="4590" source="1423" target="524"/> + <edge id="4591" source="1426" target="293"/> + <edge id="4592" source="1426" target="517"/> + <edge id="4593" source="1426" target="295"/> + <edge id="4594" source="1426" target="323"/> + <edge id="4595" source="1426" target="1129"/> + <edge id="4596" source="1129" target="517"/> + <edge id="4597" source="1129" target="323"/> + <edge id="4598" source="1053" target="208"/> + <edge id="4599" source="1053" target="204"/> + <edge id="4600" source="1053" target="209"/> + <edge id="4601" source="1053" target="1034"/> + <edge id="4602" source="1053" target="206"/> + <edge id="4603" source="247" target="175"/> + <edge id="4604" source="247" target="215"/> + <edge id="4605" source="1427" target="128"/> + <edge id="4606" source="1427" target="53"/> + <edge id="4607" source="1427" target="752"/> + <edge id="4608" source="1427" target="65"/> + <edge id="4609" source="1427" target="400"/> + <edge id="4610" source="1427" target="1155"/> + <edge id="4611" source="1427" target="82"/> + <edge id="4612" source="1428" target="848"/> + <edge id="4613" source="1428" target="136"/> + <edge id="4614" source="1428" target="847"/> + <edge id="4615" source="1428" target="137"/> + <edge id="4616" source="1428" target="196"/> + <edge id="4617" source="1428" target="810"/> + <edge id="4618" source="1428" target="752"/> + <edge id="4619" source="1287" target="348"/> + <edge id="4620" source="348" target="76"/> + <edge id="4621" source="348" target="347"/> + <edge id="4622" source="348" target="1429"/> + <edge id="4623" source="348" target="661"/> + <edge id="4624" source="1025" target="65"/> + <edge id="4625" source="1025" target="120"/> + <edge id="4626" source="1025" target="76"/> + <edge id="4627" source="1025" target="53"/> + <edge id="4628" source="1025" target="258"/> + <edge id="4629" source="1025" target="760"/> + <edge id="4630" source="1262" target="1078"/> + <edge id="4631" source="1262" target="262"/> + <edge id="4632" source="48" target="49"/> + <edge id="4633" source="48" target="50"/> + <edge id="4634" source="48" target="280"/> + <edge id="4635" source="48" target="61"/> + <edge id="4636" source="48" target="53"/> + <edge id="4637" source="48" target="66"/> + <edge id="4638" source="48" target="405"/> + <edge id="4639" source="48" target="281"/> + <edge id="4640" source="48" target="409"/> + <edge id="4641" source="48" target="334"/> + <edge id="4642" source="565" target="777"/> + <edge id="4643" source="565" target="1430"/> + <edge id="4644" source="1324" target="318"/> + <edge id="4645" source="1324" target="79"/> + <edge id="4646" source="1324" target="628"/> + <edge id="4647" source="409" target="335"/> + <edge id="4648" source="409" target="405"/> + <edge id="4649" source="409" target="48"/> + <edge id="4650" source="409" target="200"/> + <edge id="4651" source="409" target="49"/> + <edge id="4652" source="538" target="335"/> + <edge id="4653" source="538" target="53"/> + <edge id="4654" source="538" target="66"/> + <edge id="4655" source="538" target="397"/> + <edge id="4656" source="538" target="48"/> + <edge id="4657" source="538" target="200"/> + <edge id="4658" source="538" target="49"/> + <edge id="4659" source="538" target="50"/> + <edge id="4660" source="538" target="51"/> + <edge id="4661" source="538" target="280"/> + <edge id="4662" source="200" target="229"/> + <edge id="4663" source="200" target="607"/> + <edge id="4664" source="200" target="444"/> + <edge id="4665" source="1431" target="607"/> + <edge id="4666" source="1431" target="608"/> + <edge id="4667" source="1431" target="760"/> + <edge id="4668" source="1431" target="1206"/> + <edge id="4669" source="1431" target="885"/> + <edge id="4670" source="1431" target="1395"/> + <edge id="4671" source="1431" target="1432"/> + <edge id="4672" source="1431" target="262"/> + <edge id="4673" source="1431" target="515"/> + <edge id="4674" source="1432" target="262"/> + <edge id="4675" source="1432" target="515"/> + <edge id="4676" source="1432" target="607"/> + <edge id="4677" source="1432" target="608"/> + <edge id="4678" source="1432" target="444"/> + <edge id="4679" source="1432" target="1395"/> + <edge id="4680" source="1433" target="79"/> + <edge id="4681" source="272" target="209"/> + <edge id="4682" source="272" target="429"/> + <edge id="4683" source="272" target="1434"/> + <edge id="4684" source="40" target="272"/> + <edge id="4685" source="40" target="429"/> + <edge id="4686" source="450" target="37"/> + <edge id="4687" source="450" target="908"/> + <edge id="4688" source="450" target="272"/> + <edge id="4689" source="429" target="37"/> + <edge id="4690" source="429" target="207"/> + <edge id="4691" source="429" target="1"/> + <edge id="4692" source="983" target="216"/> + <edge id="4693" source="983" target="937"/> + <edge id="4694" source="983" target="444"/> + <edge id="4695" source="983" target="391"/> + <edge id="4696" source="1435" target="82"/> + <edge id="4697" source="1435" target="344"/> + <edge id="4698" source="1435" target="175"/> + <edge id="4699" source="1435" target="354"/> + <edge id="4700" source="1435" target="437"/> + <edge id="4701" source="1435" target="567"/> + <edge id="4702" source="1435" target="1"/> + <edge id="4703" source="1435" target="424"/> + <edge id="4704" source="1435" target="656"/> + <edge id="4705" source="1436" target="1"/> + <edge id="4706" source="1436" target="1437"/> + <edge id="4707" source="1438" target="1439"/> + <edge id="4708" source="1438" target="1440"/> + <edge id="4709" source="1441" target="1"/> + <edge id="4710" source="1441" target="132"/> + <edge id="4711" source="1441" target="1442"/> + <edge id="4712" source="582" target="576"/> + <edge id="4713" source="582" target="897"/> + <edge id="4714" source="1443" target="65"/> + <edge id="4715" source="1443" target="67"/> + <edge id="4716" source="1443" target="248"/> + <edge id="4717" source="1443" target="50"/> + <edge id="4718" source="1443" target="82"/> + <edge id="4719" source="1443" target="68"/> + <edge id="4720" source="1443" target="53"/> + <edge id="4721" source="1443" target="591"/> + <edge id="4722" source="1444" target="214"/> + <edge id="4723" source="1444" target="1445"/> + <edge id="4724" source="1444" target="216"/> + <edge id="4725" source="1444" target="351"/> + <edge id="4726" source="1444" target="82"/> + <edge id="4727" source="1446" target="391"/> + <edge id="4728" source="1446" target="1447"/> + <edge id="4729" source="1446" target="982"/> + <edge id="4730" source="1446" target="976"/> + <edge id="4731" source="1448" target="294"/> + <edge id="4732" source="1448" target="377"/> + <edge id="4733" source="1448" target="979"/> + <edge id="4734" source="1448" target="416"/> + <edge id="4735" source="406" target="53"/> + <edge id="4736" source="406" target="334"/> + <edge id="4737" source="749" target="166"/> + <edge id="4738" source="749" target="1449"/> + <edge id="4739" source="334" target="66"/> + <edge id="4740" source="334" target="406"/> + <edge id="4741" source="334" target="1451"/> + <edge id="4742" source="334" target="50"/> + <edge id="4743" source="334" target="53"/> + <edge id="4744" source="334" target="65"/> + <edge id="4745" source="334" target="167"/> + <edge id="4746" source="1452" target="50"/> + <edge id="4747" source="1452" target="280"/> + <edge id="4748" source="1452" target="61"/> + <edge id="4749" source="1452" target="53"/> + <edge id="4750" source="1452" target="66"/> + <edge id="4751" source="1452" target="412"/> + <edge id="4752" source="1452" target="281"/> + <edge id="4753" source="1452" target="1401"/> + <edge id="4754" source="1452" target="48"/> + <edge id="4755" source="201" target="519"/> + <edge id="4756" source="201" target="607"/> + <edge id="4757" source="201" target="391"/> + <edge id="4758" source="201" target="212"/> + <edge id="4759" source="201" target="200"/> + <edge id="4760" source="1453" target="1"/> + <edge id="4761" source="1453" target="1454"/> + <edge id="4762" source="1455" target="591"/> + <edge id="4763" source="1455" target="65"/> + <edge id="4764" source="1455" target="50"/> + <edge id="4765" source="1455" target="262"/> + <edge id="4766" source="1455" target="511"/> + <edge id="4767" source="1455" target="76"/> + <edge id="4768" source="1455" target="62"/> + <edge id="4769" source="1455" target="159"/> + <edge id="4770" source="1455" target="53"/> + <edge id="4771" source="1456" target="758"/> + <edge id="4772" source="1456" target="279"/> + <edge id="4773" source="1456" target="53"/> + <edge id="4774" source="1456" target="607"/> + <edge id="4775" source="1456" target="494"/> + <edge id="4776" source="1456" target="339"/> + <edge id="4777" source="1456" target="484"/> + <edge id="4778" source="1456" target="759"/> + <edge id="4779" source="1456" target="757"/> + <edge id="4780" source="1457" target="166"/> + <edge id="4781" source="1457" target="280"/> + <edge id="4782" source="1457" target="455"/> + <edge id="4783" source="1457" target="405"/> + <edge id="4784" source="1457" target="267"/> + <edge id="4785" source="1457" target="182"/> + <edge id="4786" source="1457" target="370"/> + <edge id="4787" source="1457" target="409"/> + <edge id="4788" source="1457" target="49"/> + <edge id="4789" source="1457" target="513"/> + <edge id="4790" source="170" target="109"/> + <edge id="4791" source="170" target="915"/> + <edge id="4792" source="170" target="313"/> + <edge id="4793" source="1458" target="497"/> + <edge id="4794" source="1458" target="976"/> + <edge id="4795" source="1458" target="170"/> + <edge id="4796" source="935" target="109"/> + <edge id="4797" source="1459" target="50"/> + <edge id="4798" source="1459" target="166"/> + <edge id="4799" source="1459" target="279"/> + <edge id="4800" source="1459" target="352"/> + <edge id="4801" source="1459" target="280"/> + <edge id="4802" source="1459" target="66"/> + <edge id="4803" source="1459" target="281"/> + <edge id="4804" source="1459" target="48"/> + <edge id="4805" source="1459" target="49"/> + <edge id="4806" source="1460" target="1461"/> + <edge id="4807" source="1462" target="1463"/> + <edge id="4808" source="1462" target="1260"/> + <edge id="4809" source="1126" target="128"/> + <edge id="4810" source="1126" target="896"/> + <edge id="4811" source="1126" target="82"/> + <edge id="4812" source="1126" target="33"/> + <edge id="4813" source="592" target="53"/> + <edge id="4814" source="592" target="96"/> + <edge id="4815" source="592" target="65"/> + <edge id="4816" source="592" target="105"/> + <edge id="4817" source="592" target="82"/> + <edge id="4818" source="896" target="128"/> + <edge id="4819" source="896" target="388"/> + <edge id="4820" source="896" target="765"/> + <edge id="4821" source="765" target="388"/> + <edge id="4822" source="765" target="747"/> + <edge id="4823" source="765" target="896"/> + <edge id="4824" source="765" target="1124"/> + <edge id="4825" source="765" target="82"/> + <edge id="4826" source="1464" target="883"/> + <edge id="4827" source="1464" target="935"/> + <edge id="4828" source="1367" target="1328"/> + <edge id="4829" source="430" target="79"/> + <edge id="4830" source="430" target="463"/> + <edge id="4831" source="430" target="908"/> + <edge id="4832" source="430" target="429"/> + <edge id="4833" source="430" target="37"/> + <edge id="4834" source="1465" target="498"/> + <edge id="4835" source="1466" target="335"/> + <edge id="4836" source="1466" target="504"/> + <edge id="4837" source="1466" target="568"/> + <edge id="4838" source="1466" target="281"/> + <edge id="4839" source="1466" target="1266"/> + <edge id="4840" source="1466" target="747"/> + <edge id="4841" source="1466" target="505"/> + <edge id="4842" source="1124" target="335"/> + <edge id="4843" source="1124" target="388"/> + <edge id="4844" source="1124" target="1272"/> + <edge id="4845" source="1124" target="896"/> + <edge id="4846" source="1124" target="82"/> + <edge id="4847" source="1124" target="543"/> + <edge id="4848" source="1467" target="166"/> + <edge id="4849" source="1467" target="411"/> + <edge id="4850" source="1467" target="925"/> + <edge id="4851" source="1467" target="444"/> + <edge id="4852" source="1467" target="502"/> + <edge id="4853" source="1467" target="82"/> + <edge id="4854" source="746" target="170"/> + <edge id="4855" source="746" target="20"/> + <edge id="4856" source="746" target="281"/> + <edge id="4857" source="1468" target="68"/> + <edge id="4858" source="1468" target="53"/> + <edge id="4859" source="1468" target="79"/> + <edge id="4860" source="1468" target="784"/> + <edge id="4861" source="1468" target="65"/> + <edge id="4862" source="1468" target="67"/> + <edge id="4863" source="1468" target="119"/> + <edge id="4864" source="1468" target="1161"/> + <edge id="4865" source="1468" target="50"/> + <edge id="4866" source="1468" target="484"/> + <edge id="4867" source="1469" target="1218"/> + <edge id="4868" source="1469" target="594"/> + <edge id="4869" source="1469" target="510"/> + <edge id="4870" source="1469" target="698"/> + <edge id="4871" source="1469" target="926"/> + <edge id="4872" source="1469" target="119"/> + <edge id="4873" source="594" target="61"/> + <edge id="4874" source="594" target="53"/> + <edge id="4875" source="594" target="865"/> + <edge id="4876" source="594" target="287"/> + <edge id="4877" source="594" target="262"/> + <edge id="4878" source="594" target="510"/> + <edge id="4879" source="287" target="460"/> + <edge id="4880" source="287" target="515"/> + <edge id="4881" source="287" target="119"/> + <edge id="4882" source="287" target="286"/> + <edge id="4883" source="287" target="552"/> + <edge id="4884" source="287" target="62"/> + <edge id="4885" source="287" target="53"/> + <edge id="4886" source="552" target="50"/> + <edge id="4887" source="552" target="68"/> + <edge id="4888" source="552" target="61"/> + <edge id="4889" source="552" target="63"/> + <edge id="4890" source="552" target="53"/> + <edge id="4891" source="552" target="512"/> + <edge id="4892" source="552" target="65"/> + <edge id="4893" source="552" target="119"/> + <edge id="4894" source="552" target="287"/> + <edge id="4895" source="1470" target="68"/> + <edge id="4896" source="1470" target="61"/> + <edge id="4897" source="1470" target="62"/> + <edge id="4898" source="1470" target="63"/> + <edge id="4899" source="1470" target="53"/> + <edge id="4900" source="1470" target="64"/> + <edge id="4901" source="1470" target="65"/> + <edge id="4902" source="1470" target="287"/> + <edge id="4903" source="1470" target="552"/> + <edge id="4904" source="1470" target="511"/> + <edge id="4905" source="1471" target="408"/> + <edge id="4906" source="1471" target="53"/> + <edge id="4907" source="1471" target="607"/> + <edge id="4908" source="1471" target="65"/> + <edge id="4909" source="1471" target="66"/> + <edge id="4910" source="1471" target="1015"/> + <edge id="4911" source="1471" target="48"/> + <edge id="4912" source="1471" target="50"/> + <edge id="4913" source="1471" target="279"/> + <edge id="4914" source="1471" target="61"/> + <edge id="4915" source="1472" target="1473"/> + <edge id="4916" source="1472" target="109"/> + <edge id="4917" source="1472" target="736"/> + <edge id="4918" source="1472" target="1474"/> + <edge id="4919" source="1472" target="156"/> + <edge id="4920" source="1472" target="158"/> + <edge id="4921" source="1472" target="779"/> + <edge id="4922" source="1472" target="241"/> + <edge id="4923" source="1472" target="120"/> + <edge id="4924" source="1475" target="900"/> + <edge id="4925" source="1475" target="1476"/> + <edge id="4926" source="394" target="216"/> + <edge id="4927" source="394" target="390"/> + <edge id="4928" source="394" target="167"/> + <edge id="4929" source="394" target="391"/> + <edge id="4930" source="1477" target="422"/> + <edge id="4931" source="1477" target="437"/> + <edge id="4932" source="1477" target="131"/> + <edge id="4933" source="1477" target="567"/> + <edge id="4934" source="1477" target="423"/> + <edge id="4935" source="1477" target="1"/> + <edge id="4936" source="1477" target="430"/> + <edge id="4937" source="1477" target="424"/> + <edge id="4938" source="1477" target="130"/> + <edge id="4939" source="424" target="1"/> + <edge id="4940" source="424" target="656"/> + <edge id="4941" source="424" target="130"/> + <edge id="4942" source="424" target="422"/> + <edge id="4943" source="424" target="567"/> + <edge id="4944" source="424" target="654"/> + <edge id="4945" source="991" target="908"/> + <edge id="4946" source="991" target="272"/> + <edge id="4947" source="991" target="429"/> + <edge id="4948" source="1434" target="272"/> + <edge id="4949" source="1434" target="429"/> + <edge id="4950" source="695" target="166"/> + <edge id="4951" source="695" target="234"/> + <edge id="4952" source="695" target="618"/> + <edge id="4953" source="695" target="111"/> + <edge id="4954" source="695" target="731"/> + <edge id="4955" source="731" target="111"/> + <edge id="4956" source="731" target="695"/> + <edge id="4957" source="731" target="109"/> + <edge id="4958" source="731" target="234"/> + <edge id="4959" source="1478" target="68"/> + <edge id="4960" source="1478" target="25"/> + <edge id="4961" source="1478" target="65"/> + <edge id="4962" source="1478" target="120"/> + <edge id="4963" source="1478" target="582"/> + <edge id="4964" source="1478" target="50"/> + <edge id="4965" source="1478" target="456"/> + <edge id="4966" source="1429" target="693"/> + <edge id="4967" source="1429" target="1"/> + <edge id="4968" source="1316" target="391"/> + <edge id="4969" source="1316" target="201"/> + <edge id="4970" source="1316" target="216"/> + <edge id="4971" source="1479" target="68"/> + <edge id="4972" source="1479" target="696"/> + <edge id="4973" source="1479" target="167"/> + <edge id="4974" source="1479" target="391"/> + <edge id="4975" source="1479" target="983"/> + <edge id="4976" source="1479" target="170"/> + <edge id="4977" source="1480" target="391"/> + <edge id="4978" source="1480" target="1316"/> + <edge id="4979" source="1480" target="1479"/> + <edge id="4980" source="1480" target="919"/> + <edge id="4981" source="1480" target="1317"/> + <edge id="4982" source="1481" target="440"/> + <edge id="4983" source="1481" target="1196"/> + <edge id="4984" source="1482" target="211"/> + <edge id="4985" source="1483" target="1077"/> + <edge id="4986" source="1483" target="647"/> + <edge id="4987" source="1483" target="1484"/> + <edge id="4988" source="1483" target="1003"/> + <edge id="4989" source="1483" target="1201"/> + <edge id="4990" source="1483" target="1202"/> + <edge id="4991" source="1483" target="648"/> + <edge id="4992" source="1484" target="663"/> + <edge id="4993" source="1201" target="569"/> + <edge id="4994" source="1201" target="1077"/> + <edge id="4995" source="1201" target="1003"/> + <edge id="4996" source="1201" target="427"/> + <edge id="4997" source="1201" target="159"/> + <edge id="4998" source="1202" target="647"/> + <edge id="4999" source="1202" target="648"/> + <edge id="5000" source="1485" target="519"/> + <edge id="5001" source="1485" target="64"/> + <edge id="5002" source="1485" target="498"/> + <edge id="5003" source="1485" target="120"/> + <edge id="5004" source="1485" target="1"/> + <edge id="5005" source="1485" target="50"/> + <edge id="5006" source="1486" target="68"/> + <edge id="5007" source="1486" target="130"/> + <edge id="5008" source="1486" target="53"/> + <edge id="5009" source="1486" target="591"/> + <edge id="5010" source="1486" target="79"/> + <edge id="5011" source="1486" target="651"/> + <edge id="5012" source="1486" target="1109"/> + <edge id="5013" source="1486" target="92"/> + <edge id="5014" source="1487" target="79"/> + <edge id="5015" source="1487" target="1488"/> + <edge id="5016" source="1487" target="626"/> + <edge id="5017" source="1487" target="1315"/> + <edge id="5018" source="1489" target="1434"/> + <edge id="5019" source="1489" target="1037"/> + <edge id="5020" source="1489" target="1038"/> + <edge id="5021" source="1489" target="206"/> + <edge id="5022" source="1489" target="1039"/> + <edge id="5023" source="1037" target="206"/> + <edge id="5024" source="1037" target="1039"/> + <edge id="5025" source="1037" target="1"/> + <edge id="5026" source="1037" target="1434"/> + <edge id="5027" source="1038" target="206"/> + <edge id="5028" source="1038" target="1039"/> + <edge id="5029" source="1038" target="1037"/> + <edge id="5030" source="1490" target="27"/> + <edge id="5031" source="1490" target="494"/> + <edge id="5032" source="1490" target="759"/> + <edge id="5033" source="1490" target="757"/> + <edge id="5034" source="1490" target="758"/> + <edge id="5035" source="1490" target="235"/> + <edge id="5036" source="1490" target="607"/> + <edge id="5037" source="1490" target="833"/> + <edge id="5038" source="28" target="30"/> + <edge id="5039" source="28" target="456"/> + <edge id="5040" source="28" target="24"/> + <edge id="5041" source="30" target="25"/> + <edge id="5042" source="30" target="23"/> + <edge id="5043" source="30" target="456"/> + <edge id="5044" source="30" target="24"/> + <edge id="5045" source="1491" target="1"/> + <edge id="5046" source="1491" target="79"/> + <edge id="5047" source="1476" target="900"/> + <edge id="5048" source="1492" target="53"/> + <edge id="5049" source="1492" target="104"/> + <edge id="5050" source="1492" target="1493"/> + <edge id="5051" source="1492" target="1494"/> + <edge id="5052" source="1493" target="166"/> + <edge id="5053" source="1493" target="53"/> + <edge id="5054" source="1493" target="50"/> + <edge id="5055" source="1493" target="262"/> + <edge id="5056" source="1493" target="698"/> + <edge id="5057" source="1190" target="96"/> + <edge id="5058" source="1190" target="101"/> + <edge id="5059" source="858" target="76"/> + <edge id="5060" source="858" target="498"/> + <edge id="5061" source="858" target="581"/> + <edge id="5062" source="858" target="584"/> + <edge id="5063" source="835" target="403"/> + <edge id="5064" source="835" target="438"/> + <edge id="5065" source="835" target="264"/> + <edge id="5066" source="835" target="265"/> + <edge id="5067" source="835" target="559"/> + <edge id="5068" source="835" target="202"/> + <edge id="5069" source="834" target="202"/> + <edge id="5070" source="834" target="403"/> + <edge id="5071" source="834" target="835"/> + <edge id="5072" source="502" target="85"/> + <edge id="5073" source="502" target="1284"/> + <edge id="5074" source="502" target="444"/> + <edge id="5075" source="502" target="555"/> + <edge id="5076" source="502" target="870"/> + <edge id="5077" source="502" target="109"/> + <edge id="5078" source="1495" target="1496"/> + <edge id="5079" source="1495" target="806"/> + <edge id="5080" source="1495" target="1474"/> + <edge id="5081" source="1497" target="76"/> + <edge id="5082" source="1498" target="781"/> + <edge id="5083" source="1498" target="655"/> + <edge id="5084" source="1498" target="437"/> + <edge id="5085" source="1498" target="567"/> + <edge id="5086" source="1499" target="422"/> + <edge id="5087" source="1499" target="280"/> + <edge id="5088" source="1499" target="515"/> + <edge id="5089" source="1499" target="437"/> + <edge id="5090" source="1499" target="174"/> + <edge id="5091" source="1499" target="606"/> + <edge id="5092" source="1499" target="424"/> + <edge id="5093" source="1499" target="657"/> + <edge id="5094" source="1500" target="960"/> + <edge id="5095" source="1500" target="961"/> + <edge id="5096" source="1500" target="962"/> + <edge id="5097" source="1500" target="705"/> + <edge id="5098" source="1500" target="958"/> + <edge id="5099" source="1500" target="959"/> + <edge id="5100" source="1501" target="1502"/> + <edge id="5101" source="1501" target="48"/> + <edge id="5102" source="1501" target="49"/> + <edge id="5103" source="1501" target="513"/> + <edge id="5104" source="1503" target="1"/> + <edge id="5105" source="1504" target="50"/> + <edge id="5106" source="1451" target="310"/> + <edge id="5107" source="1451" target="79"/> + <edge id="5108" source="1451" target="185"/> + <edge id="5109" source="1505" target="500"/> + <edge id="5110" source="1505" target="1506"/> + <edge id="5111" source="1505" target="254"/> + <edge id="5112" source="302" target="301"/> + <edge id="5113" source="302" target="296"/> + <edge id="5114" source="302" target="182"/> + <edge id="5115" source="302" target="256"/> + <edge id="5116" source="183" target="296"/> + <edge id="5117" source="183" target="79"/> + <edge id="5118" source="183" target="182"/> + <edge id="5119" source="183" target="302"/> + <edge id="5120" source="183" target="325"/> + <edge id="5121" source="183" target="966"/> + <edge id="5122" source="184" target="79"/> + <edge id="5123" source="184" target="181"/> + <edge id="5124" source="184" target="325"/> + <edge id="5125" source="184" target="892"/> + <edge id="5126" source="753" target="310"/> + <edge id="5127" source="753" target="79"/> + <edge id="5128" source="753" target="638"/> + <edge id="5129" source="753" target="45"/> + <edge id="5130" source="753" target="312"/> + <edge id="5131" source="753" target="852"/> + <edge id="5132" source="753" target="185"/> + <edge id="5133" source="913" target="1130"/> + <edge id="5134" source="913" target="137"/> + <edge id="5135" source="913" target="900"/> + <edge id="5136" source="913" target="136"/> + <edge id="5137" source="325" target="79"/> + <edge id="5138" source="325" target="181"/> + <edge id="5139" source="892" target="306"/> + <edge id="5140" source="892" target="79"/> + <edge id="5141" source="892" target="312"/> + <edge id="5142" source="892" target="181"/> + <edge id="5143" source="892" target="325"/> + <edge id="5144" source="892" target="185"/> + <edge id="5145" source="742" target="203"/> + <edge id="5146" source="742" target="989"/> + <edge id="5147" source="1507" target="79"/> + <edge id="5148" source="1507" target="1508"/> + <edge id="5149" source="1507" target="212"/> + <edge id="5150" source="1507" target="325"/> + <edge id="5151" source="1507" target="210"/> + <edge id="5152" source="398" target="396"/> + <edge id="5153" source="398" target="405"/> + <edge id="5154" source="398" target="1244"/> + <edge id="5155" source="398" target="397"/> + <edge id="5156" source="398" target="48"/> + <edge id="5157" source="398" target="409"/> + <edge id="5158" source="398" target="49"/> + <edge id="5159" source="398" target="50"/> + <edge id="5160" source="256" target="182"/> + <edge id="5161" source="256" target="302"/> + <edge id="5162" source="256" target="183"/> + <edge id="5163" source="256" target="966"/> + <edge id="5164" source="256" target="296"/> + <edge id="5165" source="590" target="113"/> + <edge id="5166" source="590" target="589"/> + <edge id="5167" source="590" target="47"/> + <edge id="5168" source="590" target="267"/> + <edge id="5169" source="590" target="374"/> + <edge id="5170" source="590" target="49"/> + <edge id="5171" source="590" target="513"/> + <edge id="5172" source="590" target="51"/> + <edge id="5173" source="590" target="116"/> + <edge id="5174" source="374" target="113"/> + <edge id="5175" source="374" target="589"/> + <edge id="5176" source="374" target="119"/> + <edge id="5177" source="374" target="47"/> + <edge id="5178" source="374" target="267"/> + <edge id="5179" source="374" target="590"/> + <edge id="5180" source="374" target="49"/> + <edge id="5181" source="374" target="513"/> + <edge id="5182" source="49" target="182"/> + <edge id="5183" source="49" target="48"/> + <edge id="5184" source="49" target="513"/> + <edge id="5185" source="49" target="50"/> + <edge id="5186" source="49" target="280"/> + <edge id="5187" source="49" target="61"/> + <edge id="5188" source="49" target="66"/> + <edge id="5189" source="49" target="281"/> + <edge id="5190" source="1509" target="254"/> + <edge id="5191" source="1509" target="113"/> + <edge id="5192" source="1509" target="1293"/> + <edge id="5193" source="1509" target="47"/> + <edge id="5194" source="1509" target="267"/> + <edge id="5195" source="1509" target="182"/> + <edge id="5196" source="1509" target="370"/> + <edge id="5197" source="1509" target="374"/> + <edge id="5198" source="1510" target="113"/> + <edge id="5199" source="1510" target="589"/> + <edge id="5200" source="1510" target="1236"/> + <edge id="5201" source="1510" target="47"/> + <edge id="5202" source="1510" target="590"/> + <edge id="5203" source="1510" target="374"/> + <edge id="5204" source="1510" target="513"/> + <edge id="5205" source="1510" target="279"/> + <edge id="5206" source="513" target="335"/> + <edge id="5207" source="513" target="49"/> + <edge id="5208" source="513" target="50"/> + <edge id="5209" source="1511" target="82"/> + <edge id="5210" source="1512" target="82"/> + <edge id="5211" source="1512" target="128"/> + <edge id="5212" source="1512" target="1"/> + <edge id="5213" source="1513" target="68"/> + <edge id="5214" source="1513" target="668"/> + <edge id="5215" source="1513" target="65"/> + <edge id="5216" source="1513" target="1165"/> + <edge id="5217" source="1513" target="366"/> + <edge id="5218" source="1513" target="897"/> + <edge id="5219" source="1514" target="1515"/> + <edge id="5220" source="1514" target="162"/> + <edge id="5221" source="1514" target="163"/> + <edge id="5222" source="1514" target="1516"/> + <edge id="5223" source="1514" target="1517"/> + <edge id="5224" source="1514" target="1518"/> + <edge id="5225" source="1514" target="164"/> + <edge id="5226" source="1165" target="53"/> + <edge id="5227" source="1165" target="668"/> + <edge id="5228" source="1165" target="64"/> + <edge id="5229" source="1165" target="65"/> + <edge id="5230" source="1517" target="162"/> + <edge id="5231" source="1517" target="163"/> + <edge id="5232" source="1517" target="1515"/> + <edge id="5233" source="1518" target="163"/> + <edge id="5234" source="1518" target="959"/> + <edge id="5235" source="1519" target="339"/> + <edge id="5236" source="1519" target="51"/> + <edge id="5237" source="1519" target="484"/> + <edge id="5238" source="1519" target="759"/> + <edge id="5239" source="1519" target="757"/> + <edge id="5240" source="1519" target="732"/> + <edge id="5241" source="1519" target="53"/> + <edge id="5242" source="1519" target="607"/> + <edge id="5243" source="1519" target="1015"/> + <edge id="5244" source="1520" target="213"/> + <edge id="5245" source="1520" target="560"/> + <edge id="5246" source="1520" target="659"/> + <edge id="5247" source="1520" target="1521"/> + <edge id="5248" source="1522" target="1"/> + <edge id="5249" source="1138" target="1137"/> + <edge id="5250" source="1138" target="1123"/> + <edge id="5251" source="1523" target="95"/> + <edge id="5252" source="1523" target="96"/> + <edge id="5253" source="1523" target="1123"/> + <edge id="5254" source="1137" target="1123"/> + <edge id="5255" source="1137" target="1138"/> + <edge id="5256" source="171" target="65"/> + <edge id="5257" source="171" target="1042"/> + <edge id="5258" source="171" target="567"/> + <edge id="5259" source="171" target="1138"/> + <edge id="5260" source="171" target="1046"/> + <edge id="5261" source="1524" target="1138"/> + <edge id="5262" source="1525" target="1526"/> + <edge id="5263" source="1525" target="1527"/> + <edge id="5264" source="1525" target="1528"/> + <edge id="5265" source="97" target="94"/> + <edge id="5266" source="97" target="82"/> + <edge id="5267" source="1529" target="1224"/> + <edge id="5268" source="1529" target="1242"/> + <edge id="5269" source="1529" target="1225"/> + <edge id="5270" source="1529" target="215"/> + <edge id="5271" source="1529" target="33"/> + <edge id="5272" source="1530" target="641"/> + <edge id="5273" source="1530" target="235"/> + <edge id="5274" source="1530" target="53"/> + <edge id="5275" source="1530" target="236"/> + <edge id="5276" source="1530" target="1018"/> + <edge id="5277" source="1531" target="662"/> + <edge id="5278" source="1532" target="94"/> + <edge id="5279" source="1532" target="1533"/> + <edge id="5280" source="1534" target="82"/> + <edge id="5281" source="1536" target="97"/> + <edge id="5282" source="1536" target="109"/> + <edge id="5283" source="1536" target="53"/> + <edge id="5284" source="1536" target="96"/> + <edge id="5285" source="1536" target="65"/> + <edge id="5286" source="1536" target="104"/> + <edge id="5287" source="1536" target="708"/> + <edge id="5288" source="1536" target="250"/> + <edge id="5289" source="1536" target="1165"/> + <edge id="5290" source="1537" target="68"/> + <edge id="5291" source="1537" target="156"/> + <edge id="5292" source="1537" target="823"/> + <edge id="5293" source="1537" target="1538"/> + <edge id="5294" source="1537" target="469"/> + <edge id="5295" source="1537" target="1256"/> + <edge id="5296" source="1537" target="883"/> + <edge id="5297" source="1537" target="458"/> + <edge id="5298" source="1537" target="109"/> + <edge id="5299" source="1539" target="1"/> + <edge id="5300" source="1540" target="364"/> + <edge id="5301" source="1540" target="427"/> + <edge id="5302" source="1540" target="335"/> + <edge id="5303" source="1540" target="747"/> + <edge id="5304" source="1540" target="409"/> + <edge id="5305" source="1540" target="1466"/> + <edge id="5306" source="1540" target="1124"/> + <edge id="5307" source="1540" target="344"/> + <edge id="5308" source="161" target="434"/> + <edge id="5309" source="161" target="435"/> + <edge id="5310" source="161" target="641"/> + <edge id="5311" source="161" target="642"/> + <edge id="5312" source="161" target="1541"/> + <edge id="5313" source="1357" target="367"/> + <edge id="5314" source="1357" target="185"/> + <edge id="5315" source="1357" target="899"/> + <edge id="5316" source="640" target="174"/> + <edge id="5317" source="640" target="106"/> + <edge id="5318" source="640" target="1140"/> + <edge id="5319" source="640" target="161"/> + <edge id="5320" source="640" target="641"/> + <edge id="5321" source="640" target="642"/> + <edge id="5322" source="641" target="640"/> + <edge id="5323" source="641" target="642"/> + <edge id="5324" source="924" target="1379"/> + <edge id="5325" source="924" target="82"/> + <edge id="5326" source="924" target="53"/> + <edge id="5327" source="924" target="1542"/> + <edge id="5328" source="656" target="423"/> + <edge id="5329" source="656" target="654"/> + <edge id="5330" source="656" target="424"/> + <edge id="5331" source="656" target="82"/> + <edge id="5332" source="1543" target="82"/> + <edge id="5333" source="1543" target="99"/> + <edge id="5334" source="1543" target="453"/> + <edge id="5335" source="1543" target="65"/> + <edge id="5336" source="1543" target="708"/> + <edge id="5337" source="1543" target="250"/> + <edge id="5338" source="1543" target="251"/> + <edge id="5339" source="1543" target="109"/> + <edge id="5340" source="1544" target="76"/> + <edge id="5341" source="1544" target="82"/> + <edge id="5342" source="1213" target="761"/> + <edge id="5343" source="1213" target="82"/> + <edge id="5344" source="132" target="53"/> + <edge id="5345" source="132" target="1442"/> + <edge id="5346" source="248" target="175"/> + <edge id="5347" source="248" target="53"/> + <edge id="5348" source="248" target="1"/> + <edge id="5349" source="248" target="247"/> + <edge id="5350" source="1545" target="1546"/> + <edge id="5351" source="1545" target="1547"/> + <edge id="5352" source="1545" target="772"/> + <edge id="5353" source="1545" target="159"/> + <edge id="5354" source="1419" target="645"/> + <edge id="5355" source="1548" target="1"/> + <edge id="5356" source="1548" target="5"/> + <edge id="5357" source="826" target="177"/> + <edge id="5358" source="826" target="79"/> + <edge id="5359" source="826" target="626"/> + <edge id="5360" source="826" target="312"/> + <edge id="5361" source="1177" target="505"/> + <edge id="5362" source="1177" target="427"/> + <edge id="5363" source="1177" target="493"/> + <edge id="5364" source="1177" target="569"/> + <edge id="5365" source="1549" target="1073"/> + <edge id="5366" source="164" target="162"/> + <edge id="5367" source="458" target="696"/> + <edge id="5368" source="458" target="915"/> + <edge id="5369" source="458" target="167"/> + <edge id="5370" source="458" target="883"/> + <edge id="5371" source="458" target="697"/> + <edge id="5372" source="1550" target="915"/> + <edge id="5373" source="1550" target="883"/> + <edge id="5374" source="1550" target="68"/> + <edge id="5375" source="1550" target="707"/> + <edge id="5376" source="1550" target="65"/> + <edge id="5377" source="1550" target="106"/> + <edge id="5378" source="1550" target="918"/> + <edge id="5379" source="105" target="53"/> + <edge id="5380" source="105" target="64"/> + <edge id="5381" source="105" target="65"/> + <edge id="5382" source="105" target="93"/> + <edge id="5383" source="105" target="592"/> + <edge id="5384" source="105" target="50"/> + <edge id="5385" source="105" target="82"/> + <edge id="5386" source="1551" target="439"/> + <edge id="5387" source="195" target="194"/> + <edge id="5388" source="195" target="272"/> + <edge id="5389" source="195" target="450"/> + <edge id="5390" source="195" target="429"/> + <edge id="5391" source="195" target="193"/> + <edge id="5392" source="195" target="448"/> + <edge id="5393" source="195" target="449"/> + <edge id="5394" source="1552" target="128"/> + <edge id="5395" source="1552" target="970"/> + <edge id="5396" source="1552" target="217"/> + <edge id="5397" source="672" target="67"/> + <edge id="5398" source="672" target="105"/> + <edge id="5399" source="672" target="50"/> + <edge id="5400" source="672" target="451"/> + <edge id="5401" source="672" target="53"/> + <edge id="5402" source="672" target="118"/> + <edge id="5403" source="672" target="64"/> + <edge id="5404" source="672" target="65"/> + <edge id="5405" source="672" target="93"/> + <edge id="5406" source="1553" target="165"/> + <edge id="5407" source="1553" target="166"/> + <edge id="5408" source="1553" target="389"/> + <edge id="5409" source="1553" target="1384"/> + <edge id="5410" source="1553" target="167"/> + <edge id="5411" source="812" target="110"/> + <edge id="5412" source="812" target="96"/> + <edge id="5413" source="812" target="111"/> + <edge id="5414" source="91" target="541"/> + <edge id="5415" source="91" target="704"/> + <edge id="5416" source="1554" target="68"/> + <edge id="5417" source="1554" target="53"/> + <edge id="5418" source="1554" target="65"/> + <edge id="5419" source="1554" target="901"/> + <edge id="5420" source="1554" target="903"/> + <edge id="5421" source="1554" target="938"/> + <edge id="5422" source="1554" target="132"/> + <edge id="5423" source="1555" target="53"/> + <edge id="5424" source="1555" target="644"/> + <edge id="5425" source="1555" target="498"/> + <edge id="5426" source="1555" target="428"/> + <edge id="5427" source="1555" target="1379"/> + <edge id="5428" source="1556" target="219"/> + <edge id="5429" source="1556" target="967"/> + <edge id="5430" source="1556" target="1"/> + <edge id="5431" source="1556" target="182"/> + <edge id="5432" source="1556" target="1557"/> + <edge id="5433" source="1556" target="1410"/> + <edge id="5434" source="1027" target="967"/> + <edge id="5435" source="1027" target="966"/> + <edge id="5436" source="754" target="136"/> + <edge id="5437" source="754" target="638"/> + <edge id="5438" source="754" target="312"/> + <edge id="5439" source="754" target="185"/> + <edge id="5440" source="754" target="137"/> + <edge id="5441" source="1087" target="53"/> + <edge id="5442" source="1087" target="79"/> + <edge id="5443" source="1087" target="635"/> + <edge id="5444" source="1558" target="128"/> + <edge id="5445" source="1558" target="79"/> + <edge id="5446" source="1558" target="1"/> + <edge id="5447" source="1558" target="82"/> + <edge id="5448" source="728" target="363"/> + <edge id="5449" source="728" target="113"/> + <edge id="5450" source="728" target="597"/> + <edge id="5451" source="728" target="104"/> + <edge id="5452" source="728" target="114"/> + <edge id="5453" source="728" target="116"/> + <edge id="5454" source="366" target="560"/> + <edge id="5455" source="366" target="598"/> + <edge id="5456" source="366" target="65"/> + <edge id="5457" source="366" target="104"/> + <edge id="5458" source="366" target="114"/> + <edge id="5459" source="366" target="728"/> + <edge id="5460" source="897" target="90"/> + <edge id="5461" source="897" target="64"/> + <edge id="5462" source="897" target="91"/> + <edge id="5463" source="1559" target="123"/> + <edge id="5464" source="1559" target="124"/> + <edge id="5465" source="1559" target="125"/> + <edge id="5466" source="1559" target="1"/> + <edge id="5467" source="50" target="68"/> + <edge id="5468" source="50" target="53"/> + <edge id="5469" source="50" target="591"/> + <edge id="5470" source="50" target="64"/> + <edge id="5471" source="50" target="65"/> + <edge id="5472" source="50" target="104"/> + <edge id="5473" source="50" target="66"/> + <edge id="5474" source="50" target="67"/> + <edge id="5475" source="50" target="111"/> + <edge id="5476" source="50" target="105"/> + <edge id="5477" source="1560" target="609"/> + <edge id="5478" source="1560" target="1131"/> + <edge id="5479" source="1560" target="636"/> + <edge id="5480" source="1560" target="1561"/> + <edge id="5481" source="1560" target="1002"/> + <edge id="5482" source="1560" target="433"/> + <edge id="5483" source="1560" target="1001"/> + <edge id="5484" source="108" target="68"/> + <edge id="5485" source="108" target="61"/> + <edge id="5486" source="108" target="53"/> + <edge id="5487" source="108" target="591"/> + <edge id="5488" source="108" target="118"/> + <edge id="5489" source="108" target="64"/> + <edge id="5490" source="108" target="65"/> + <edge id="5491" source="108" target="50"/> + <edge id="5492" source="1562" target="76"/> + <edge id="5493" source="1562" target="159"/> + <edge id="5494" source="1562" target="596"/> + <edge id="5495" source="1562" target="571"/> + <edge id="5496" source="1563" target="1564"/> + <edge id="5497" source="1563" target="1565"/> + <edge id="5498" source="1563" target="258"/> + <edge id="5499" source="1563" target="1084"/> + <edge id="5500" source="1563" target="1566"/> + <edge id="5501" source="1563" target="513"/> + <edge id="5502" source="1567" target="571"/> + <edge id="5503" source="1567" target="238"/> + <edge id="5504" source="1567" target="159"/> + <edge id="5505" source="1567" target="174"/> + <edge id="5506" source="1567" target="97"/> + <edge id="5507" source="1568" target="772"/> + <edge id="5508" source="1568" target="570"/> + <edge id="5509" source="1568" target="258"/> + <edge id="5510" source="1568" target="97"/> + <edge id="5511" source="1568" target="1567"/> + <edge id="5512" source="1568" target="1569"/> + <edge id="5513" source="1568" target="571"/> + <edge id="5514" source="1569" target="772"/> + <edge id="5515" source="1569" target="159"/> + <edge id="5516" source="1569" target="1567"/> + <edge id="5517" source="1547" target="258"/> + <edge id="5518" source="1547" target="571"/> + <edge id="5519" source="1547" target="238"/> + <edge id="5520" source="1547" target="648"/> + <edge id="5521" source="1547" target="159"/> + <edge id="5522" source="571" target="159"/> + <edge id="5523" source="571" target="570"/> + <edge id="5524" source="1570" target="159"/> + <edge id="5525" source="1570" target="570"/> + <edge id="5526" source="1570" target="96"/> + <edge id="5527" source="1570" target="97"/> + <edge id="5528" source="1570" target="82"/> + <edge id="5529" source="1231" target="230"/> + <edge id="5530" source="1231" target="354"/> + <edge id="5531" source="1571" target="310"/> + <edge id="5532" source="1571" target="311"/> + <edge id="5533" source="1571" target="79"/> + <edge id="5534" source="1571" target="723"/> + <edge id="5535" source="1571" target="45"/> + <edge id="5536" source="1571" target="329"/> + <edge id="5537" source="1571" target="46"/> + <edge id="5538" source="1571" target="367"/> + <edge id="5539" source="1571" target="185"/> + <edge id="5540" source="1571" target="1572"/> + <edge id="5541" source="1573" target="66"/> + <edge id="5542" source="1573" target="48"/> + <edge id="5543" source="1573" target="334"/> + <edge id="5544" source="1573" target="49"/> + <edge id="5545" source="1573" target="50"/> + <edge id="5546" source="1573" target="51"/> + <edge id="5547" source="1573" target="484"/> + <edge id="5548" source="1573" target="61"/> + <edge id="5549" source="1573" target="53"/> + <edge id="5550" source="1573" target="65"/> + <edge id="5551" source="770" target="707"/> + <edge id="5552" source="770" target="769"/> + <edge id="5553" source="770" target="708"/> + <edge id="5554" source="770" target="768"/> + <edge id="5555" source="770" target="771"/> + <edge id="5556" source="1574" target="68"/> + <edge id="5557" source="1574" target="53"/> + <edge id="5558" source="1574" target="174"/> + <edge id="5559" source="1574" target="65"/> + <edge id="5560" source="1574" target="114"/> + <edge id="5561" source="1574" target="461"/> + <edge id="5562" source="273" target="274"/> + <edge id="5563" source="273" target="36"/> + <edge id="5564" source="273" target="37"/> + <edge id="5565" source="273" target="38"/> + <edge id="5566" source="273" target="271"/> + <edge id="5567" source="273" target="40"/> + <edge id="5568" source="1012" target="53"/> + <edge id="5569" source="1012" target="709"/> + <edge id="5570" source="1012" target="65"/> + <edge id="5571" source="1012" target="104"/> + <edge id="5572" source="1012" target="111"/> + <edge id="5573" source="1012" target="334"/> + <edge id="5574" source="1012" target="50"/> + <edge id="5575" source="1012" target="103"/> + <edge id="5576" source="585" target="110"/> + <edge id="5577" source="51" target="1015"/> + <edge id="5578" source="51" target="49"/> + <edge id="5579" source="51" target="513"/> + <edge id="5580" source="51" target="50"/> + <edge id="5581" source="51" target="61"/> + <edge id="5582" source="51" target="408"/> + <edge id="5583" source="51" target="53"/> + <edge id="5584" source="51" target="281"/> + <edge id="5585" source="51" target="119"/> + <edge id="5586" source="484" target="166"/> + <edge id="5587" source="484" target="411"/> + <edge id="5588" source="484" target="281"/> + <edge id="5589" source="484" target="119"/> + <edge id="5590" source="484" target="1401"/> + <edge id="5591" source="484" target="334"/> + <edge id="5592" source="484" target="49"/> + <edge id="5593" source="484" target="51"/> + <edge id="5594" source="1329" target="422"/> + <edge id="5595" source="1329" target="437"/> + <edge id="5596" source="1329" target="567"/> + <edge id="5597" source="1329" target="654"/> + <edge id="5598" source="1329" target="1"/> + <edge id="5599" source="1329" target="424"/> + <edge id="5600" source="1329" target="128"/> + <edge id="5601" source="1575" target="259"/> + <edge id="5602" source="1575" target="281"/> + <edge id="5603" source="1575" target="801"/> + <edge id="5604" source="1575" target="49"/> + <edge id="5605" source="1575" target="513"/> + <edge id="5606" source="1575" target="457"/> + <edge id="5607" source="1576" target="68"/> + <edge id="5608" source="1576" target="216"/> + <edge id="5609" source="1576" target="1117"/> + <edge id="5610" source="1576" target="1319"/> + <edge id="5611" source="1576" target="1401"/> + <edge id="5612" source="1576" target="201"/> + <edge id="5613" source="1577" target="1373"/> + <edge id="5614" source="1577" target="82"/> + <edge id="5615" source="1577" target="129"/> + <edge id="5616" source="1577" target="715"/> + <edge id="5617" source="1577" target="710"/> + <edge id="5618" source="1577" target="712"/> + <edge id="5619" source="1577" target="1135"/> + <edge id="5620" source="1577" target="441"/> + <edge id="5621" source="1577" target="172"/> + <edge id="5622" source="1578" target="53"/> + <edge id="5623" source="1578" target="105"/> + <edge id="5624" source="1578" target="82"/> + <edge id="5625" source="1279" target="79"/> + <edge id="5626" source="1279" target="618"/> + <edge id="5627" source="1279" target="1579"/> + <edge id="5628" source="1279" target="1282"/> + <edge id="5629" source="1279" target="1248"/> + <edge id="5630" source="1279" target="1249"/> + <edge id="5631" source="1579" target="1279"/> + <edge id="5632" source="1579" target="1282"/> + <edge id="5633" source="1579" target="1249"/> + <edge id="5634" source="1579" target="79"/> + <edge id="5635" source="1579" target="618"/> + <edge id="5636" source="1291" target="218"/> + <edge id="5637" source="1291" target="166"/> + <edge id="5638" source="1291" target="279"/> + <edge id="5639" source="1291" target="983"/> + <edge id="5640" source="1291" target="334"/> + <edge id="5641" source="1291" target="585"/> + <edge id="5642" source="1291" target="1580"/> + <edge id="5643" source="1291" target="1292"/> + <edge id="5644" source="1291" target="1581"/> + <edge id="5645" source="1582" target="1292"/> + <edge id="5646" source="1582" target="1581"/> + <edge id="5647" source="1582" target="1580"/> + <edge id="5648" source="1580" target="1291"/> + <edge id="5649" source="1580" target="1582"/> + <edge id="5650" source="1580" target="1292"/> + <edge id="5651" source="1580" target="1581"/> + <edge id="5652" source="1292" target="1581"/> + <edge id="5653" source="1292" target="218"/> + <edge id="5654" source="1292" target="983"/> + <edge id="5655" source="1292" target="334"/> + <edge id="5656" source="1292" target="585"/> + <edge id="5657" source="1292" target="1291"/> + <edge id="5658" source="1292" target="1582"/> + <edge id="5659" source="1292" target="1580"/> + <edge id="5660" source="1581" target="166"/> + <edge id="5661" source="1581" target="585"/> + <edge id="5662" source="1583" target="166"/> + <edge id="5663" source="1583" target="551"/> + <edge id="5664" source="1583" target="744"/> + <edge id="5665" source="1583" target="875"/> + <edge id="5666" source="1583" target="241"/> + <edge id="5667" source="1583" target="936"/> + <edge id="5668" source="1583" target="409"/> + <edge id="5669" source="1584" target="1060"/> + <edge id="5670" source="1584" target="1219"/> + <edge id="5671" source="1585" target="122"/> + <edge id="5672" source="1585" target="1"/> + <edge id="5673" source="1585" target="1586"/> + <edge id="5674" source="1587" target="18"/> + <edge id="5675" source="1043" target="567"/> + <edge id="5676" source="578" target="68"/> + <edge id="5677" source="578" target="519"/> + <edge id="5678" source="578" target="580"/> + <edge id="5679" source="578" target="241"/> + <edge id="5680" source="578" target="576"/> + <edge id="5681" source="578" target="120"/> + <edge id="5682" source="578" target="577"/> + <edge id="5683" source="578" target="585"/> + <edge id="5684" source="697" target="915"/> + <edge id="5685" source="697" target="883"/> + <edge id="5686" source="697" target="170"/> + <edge id="5687" source="697" target="846"/> + <edge id="5688" source="846" target="883"/> + <edge id="5689" source="846" target="935"/> + <edge id="5690" source="1008" target="121"/> + <edge id="5691" source="1008" target="344"/> + <edge id="5692" source="1008" target="422"/> + <edge id="5693" source="1008" target="437"/> + <edge id="5694" source="1008" target="1"/> + <edge id="5695" source="1008" target="424"/> + <edge id="5696" source="1588" target="53"/> + <edge id="5697" source="1588" target="96"/> + <edge id="5698" source="1588" target="498"/> + <edge id="5699" source="1588" target="65"/> + <edge id="5700" source="1588" target="1379"/> + <edge id="5701" source="1588" target="109"/> + <edge id="5702" source="1588" target="68"/> + <edge id="5703" source="1589" target="114"/> + <edge id="5704" source="1589" target="567"/> + <edge id="5705" source="1589" target="427"/> + <edge id="5706" source="1589" target="53"/> + <edge id="5707" source="1589" target="118"/> + <edge id="5708" source="1589" target="65"/> + <edge id="5709" source="1589" target="569"/> + <edge id="5710" source="1589" target="904"/> + <edge id="5711" source="1589" target="104"/> + <edge id="5712" source="1590" target="422"/> + <edge id="5713" source="1590" target="64"/> + <edge id="5714" source="1590" target="93"/> + <edge id="5715" source="1590" target="567"/> + <edge id="5716" source="1590" target="606"/> + <edge id="5717" source="1590" target="430"/> + <edge id="5718" source="1590" target="82"/> + <edge id="5719" source="692" target="1"/> + <edge id="5720" source="109" target="964"/> + <edge id="5721" source="109" target="101"/> + <edge id="5722" source="109" target="150"/> + <edge id="5723" source="1591" target="53"/> + <edge id="5724" source="1591" target="118"/> + <edge id="5725" source="1591" target="65"/> + <edge id="5726" source="1591" target="131"/> + <edge id="5727" source="1591" target="904"/> + <edge id="5728" source="1591" target="104"/> + <edge id="5729" source="1591" target="114"/> + <edge id="5730" source="1591" target="567"/> + <edge id="5731" source="1591" target="50"/> + <edge id="5732" source="1591" target="109"/> + <edge id="5733" source="172" target="712"/> + <edge id="5734" source="172" target="101"/> + <edge id="5735" source="172" target="882"/> + <edge id="5736" source="172" target="441"/> + <edge id="5737" source="172" target="109"/> + <edge id="5738" source="172" target="579"/> + <edge id="5739" source="172" target="82"/> + <edge id="5740" source="172" target="439"/> + <edge id="5741" source="172" target="84"/> + <edge id="5742" source="1592" target="964"/> + <edge id="5743" source="1592" target="567"/> + <edge id="5744" source="1592" target="101"/> + <edge id="5745" source="1592" target="150"/> + <edge id="5746" source="1592" target="109"/> + <edge id="5747" source="1593" target="422"/> + <edge id="5748" source="1593" target="118"/> + <edge id="5749" source="1593" target="437"/> + <edge id="5750" source="1593" target="567"/> + <edge id="5751" source="1593" target="101"/> + <edge id="5752" source="1593" target="654"/> + <edge id="5753" source="1593" target="1329"/> + <edge id="5754" source="1593" target="109"/> + <edge id="5755" source="1593" target="175"/> + <edge id="5756" source="1594" target="101"/> + <edge id="5757" source="1594" target="109"/> + <edge id="5758" source="1594" target="172"/> + <edge id="5759" source="1594" target="95"/> + <edge id="5760" source="1594" target="68"/> + <edge id="5761" source="1594" target="76"/> + <edge id="5762" source="1594" target="53"/> + <edge id="5763" source="1594" target="498"/> + <edge id="5764" source="52" target="68"/> + <edge id="5765" source="52" target="53"/> + <edge id="5766" source="52" target="554"/> + <edge id="5767" source="52" target="65"/> + <edge id="5768" source="52" target="114"/> + <edge id="5769" source="52" target="67"/> + <edge id="5770" source="52" target="1429"/> + <edge id="5771" source="1595" target="1394"/> + <edge id="5772" source="1595" target="97"/> + <edge id="5773" source="1595" target="759"/> + <edge id="5774" source="759" target="695"/> + <edge id="5775" source="759" target="109"/> + <edge id="5776" source="759" target="284"/> + <edge id="5777" source="1596" target="759"/> + <edge id="5778" source="1597" target="519"/> + <edge id="5779" source="1597" target="634"/> + <edge id="5780" source="1597" target="66"/> + <edge id="5781" source="1597" target="405"/> + <edge id="5782" source="1597" target="1396"/> + <edge id="5783" source="1597" target="409"/> + <edge id="5784" source="1597" target="1458"/> + <edge id="5785" source="1598" target="354"/> + <edge id="5786" source="1598" target="76"/> + <edge id="5787" source="1598" target="1132"/> + <edge id="5788" source="1599" target="890"/> + <edge id="5789" source="1599" target="662"/> + <edge id="5790" source="1599" target="659"/> + <edge id="5791" source="1599" target="1526"/> + <edge id="5792" source="1599" target="888"/> + <edge id="5793" source="1599" target="661"/> + <edge id="5794" source="500" target="228"/> + <edge id="5795" source="500" target="1600"/> + <edge id="5796" source="1601" target="712"/> + <edge id="5797" source="1601" target="965"/> + <edge id="5798" source="1601" target="697"/> + <edge id="5799" source="1601" target="439"/> + <edge id="5800" source="1601" target="84"/> + <edge id="5801" source="1601" target="96"/> + <edge id="5802" source="23" target="25"/> + <edge id="5803" source="23" target="26"/> + <edge id="5804" source="23" target="28"/> + <edge id="5805" source="23" target="456"/> + <edge id="5806" source="23" target="24"/> + <edge id="5807" source="456" target="24"/> + <edge id="5808" source="456" target="25"/> + <edge id="5809" source="456" target="27"/> + <edge id="5810" source="456" target="28"/> + <edge id="5811" source="456" target="30"/> + <edge id="5812" source="456" target="23"/> + <edge id="5813" source="24" target="68"/> + <edge id="5814" source="24" target="947"/> + <edge id="5815" source="24" target="26"/> + <edge id="5816" source="24" target="23"/> + <edge id="5817" source="24" target="456"/> + <edge id="5818" source="966" target="304"/> + <edge id="5819" source="966" target="1415"/> + <edge id="5820" source="966" target="317"/> + <edge id="5821" source="966" target="183"/> + <edge id="5822" source="966" target="256"/> + <edge id="5823" source="966" target="1410"/> + <edge id="5824" source="1557" target="818"/> + <edge id="5825" source="1557" target="967"/> + <edge id="5826" source="1557" target="182"/> + <edge id="5827" source="1557" target="183"/> + <edge id="5828" source="1557" target="303"/> + <edge id="5829" source="757" target="344"/> + <edge id="5830" source="757" target="238"/> + <edge id="5831" source="758" target="344"/> + <edge id="5832" source="758" target="403"/> + <edge id="5833" source="1506" target="296"/> + <edge id="5834" source="1506" target="1"/> + <edge id="5835" source="1506" target="182"/> + <edge id="5836" source="1506" target="302"/> + <edge id="5837" source="1402" target="206"/> + <edge id="5838" source="1402" target="1050"/> + <edge id="5839" source="1402" target="208"/> + <edge id="5840" source="1402" target="401"/> + <edge id="5841" source="208" target="204"/> + <edge id="5842" source="208" target="209"/> + <edge id="5843" source="208" target="205"/> + <edge id="5844" source="208" target="206"/> + <edge id="5845" source="208" target="207"/> + <edge id="5846" source="1602" target="1603"/> + <edge id="5847" source="1604" target="82"/> + <edge id="5848" source="1604" target="495"/> + <edge id="5849" source="1604" target="128"/> + <edge id="5850" source="1604" target="344"/> + <edge id="5851" source="1604" target="1126"/> + <edge id="5852" source="825" target="490"/> + <edge id="5853" source="825" target="493"/> + <edge id="5854" source="825" target="495"/> + <edge id="5855" source="1605" target="175"/> + <edge id="5856" source="1605" target="567"/> + <edge id="5857" source="1605" target="1"/> + <edge id="5858" source="1605" target="109"/> + <edge id="5859" source="1606" target="1579"/> + <edge id="5860" source="1606" target="1282"/> + <edge id="5861" source="1606" target="1607"/> + <edge id="5862" source="1606" target="1249"/> + <edge id="5863" source="1606" target="618"/> + <edge id="5864" source="1606" target="421"/> + <edge id="5865" source="1606" target="1409"/> + <edge id="5866" source="1606" target="1279"/> + <edge id="5867" source="1327" target="422"/> + <edge id="5868" source="1327" target="53"/> + <edge id="5869" source="1327" target="437"/> + <edge id="5870" source="1327" target="65"/> + <edge id="5871" source="1327" target="497"/> + <edge id="5872" source="1327" target="567"/> + <edge id="5873" source="1327" target="654"/> + <edge id="5874" source="1327" target="424"/> + <edge id="5875" source="1327" target="109"/> + <edge id="5876" source="1461" target="1"/> + <edge id="5877" source="1608" target="148"/> + <edge id="5878" source="1608" target="79"/> + <edge id="5879" source="1608" target="89"/> + <edge id="5880" source="1608" target="803"/> + <edge id="5881" source="1608" target="1609"/> + <edge id="5882" source="191" target="192"/> + <edge id="5883" source="191" target="188"/> + <edge id="5884" source="191" target="190"/> + <edge id="5885" source="1610" target="1"/> + <edge id="5886" source="1610" target="5"/> + <edge id="5887" source="1282" target="1279"/> + <edge id="5888" source="1282" target="1248"/> + <edge id="5889" source="1282" target="1249"/> + <edge id="5890" source="1282" target="1283"/> + <edge id="5891" source="1282" target="618"/> + <edge id="5892" source="1282" target="1200"/> + <edge id="5893" source="1248" target="618"/> + <edge id="5894" source="1248" target="421"/> + <edge id="5895" source="1248" target="1409"/> + <edge id="5896" source="1248" target="1279"/> + <edge id="5897" source="1248" target="1282"/> + <edge id="5898" source="1248" target="1607"/> + <edge id="5899" source="1248" target="1249"/> + <edge id="5900" source="1248" target="1283"/> + <edge id="5901" source="1607" target="421"/> + <edge id="5902" source="1607" target="1409"/> + <edge id="5903" source="1607" target="1279"/> + <edge id="5904" source="1607" target="1282"/> + <edge id="5905" source="1607" target="1248"/> + <edge id="5906" source="1607" target="1249"/> + <edge id="5907" source="1607" target="618"/> + <edge id="5908" source="1249" target="1607"/> + <edge id="5909" source="1249" target="618"/> + <edge id="5910" source="1249" target="421"/> + <edge id="5911" source="1249" target="1409"/> + <edge id="5912" source="1249" target="1279"/> + <edge id="5913" source="1249" target="1282"/> + <edge id="5914" source="1249" target="1248"/> + <edge id="5915" source="1454" target="1"/> + <edge id="5916" source="1611" target="1612"/> + <edge id="5917" source="1611" target="600"/> + <edge id="5918" source="1611" target="1613"/> + <edge id="5919" source="1611" target="1614"/> + <edge id="5920" source="1615" target="988"/> + <edge id="5921" source="1615" target="618"/> + <edge id="5922" source="1615" target="421"/> + <edge id="5923" source="1615" target="1279"/> + <edge id="5924" source="1615" target="1282"/> + <edge id="5925" source="1615" target="1607"/> + <edge id="5926" source="1615" target="1249"/> + <edge id="5927" source="1083" target="653"/> + <edge id="5928" source="1083" target="367"/> + <edge id="5929" source="1083" target="913"/> + <edge id="5930" source="1083" target="1082"/> + <edge id="5931" source="1083" target="899"/> + <edge id="5932" source="1116" target="1060"/> + <edge id="5933" source="1116" target="1114"/> + <edge id="5934" source="1116" target="1115"/> + <edge id="5935" source="1130" target="652"/> + <edge id="5936" source="1130" target="900"/> + <edge id="5937" source="1130" target="653"/> + <edge id="5938" source="1130" target="913"/> + <edge id="5939" source="1185" target="1083"/> + <edge id="5940" source="1616" target="652"/> + <edge id="5941" source="1616" target="911"/> + <edge id="5942" source="1616" target="912"/> + <edge id="5943" source="1616" target="653"/> + <edge id="5944" source="1616" target="913"/> + <edge id="5945" source="1616" target="1083"/> + <edge id="5946" source="1616" target="1130"/> + <edge id="5947" source="1616" target="1617"/> + <edge id="5948" source="1283" target="401"/> + <edge id="5949" source="1618" target="537"/> + <edge id="5950" source="1618" target="896"/> + <edge id="5951" source="1618" target="765"/> + <edge id="5952" source="1618" target="533"/> + <edge id="5953" source="1618" target="388"/> + <edge id="5954" source="1618" target="281"/> + <edge id="5955" source="1111" target="238"/> + <edge id="5956" source="1323" target="1619"/> + <edge id="5957" source="1323" target="885"/> + <edge id="5958" source="261" target="68"/> + <edge id="5959" source="261" target="238"/> + <edge id="5960" source="261" target="732"/> + <edge id="5961" source="1620" target="1493"/> + <edge id="5962" source="1620" target="1111"/> + <edge id="5963" source="1620" target="262"/> + <edge id="5964" source="1620" target="260"/> + <edge id="5965" source="1620" target="76"/> + <edge id="5966" source="1620" target="849"/> + <edge id="5967" source="238" target="261"/> + <edge id="5968" source="732" target="469"/> + <edge id="5969" source="732" target="1386"/> + <edge id="5970" source="732" target="1547"/> + <edge id="5971" source="732" target="261"/> + <edge id="5972" source="732" target="238"/> + <edge id="5973" source="732" target="1621"/> + <edge id="5974" source="1622" target="1106"/> + <edge id="5975" source="1622" target="1484"/> + <edge id="5976" source="262" target="25"/> + <edge id="5977" source="262" target="211"/> + <edge id="5978" source="262" target="1262"/> + <edge id="5979" source="262" target="1493"/> + <edge id="5980" source="1621" target="469"/> + <edge id="5981" source="1621" target="1386"/> + <edge id="5982" source="1621" target="1547"/> + <edge id="5983" source="1621" target="261"/> + <edge id="5984" source="1623" target="1619"/> + <edge id="5985" source="1623" target="1547"/> + <edge id="5986" source="1623" target="238"/> + <edge id="5987" source="1624" target="238"/> + <edge id="5988" source="1624" target="648"/> + <edge id="5989" source="1624" target="159"/> + <edge id="5990" source="1624" target="1547"/> + <edge id="5991" source="215" target="128"/> + <edge id="5992" source="215" target="1"/> + <edge id="5993" source="215" target="82"/> + <edge id="5994" source="657" target="128"/> + <edge id="5995" source="657" target="437"/> + <edge id="5996" source="657" target="567"/> + <edge id="5997" source="657" target="606"/> + <edge id="5998" source="657" target="654"/> + <edge id="5999" source="657" target="656"/> + <edge id="6000" source="657" target="1593"/> + <edge id="6001" source="579" target="82"/> + <edge id="6002" source="579" target="253"/> + <edge id="6003" source="1625" target="163"/> + <edge id="6004" source="1625" target="324"/> + <edge id="6005" source="1625" target="934"/> + <edge id="6006" source="1625" target="1324"/> + <edge id="6007" source="1625" target="164"/> + <edge id="6008" source="1626" target="53"/> + <edge id="6009" source="1626" target="79"/> + <edge id="6010" source="1626" target="1243"/> + <edge id="6011" source="1626" target="1255"/> + <edge id="6012" source="1626" target="513"/> + <edge id="6013" source="1626" target="1627"/> + <edge id="6014" source="1626" target="50"/> + <edge id="6015" source="1628" target="532"/> + <edge id="6016" source="1628" target="335"/> + <edge id="6017" source="1628" target="535"/> + <edge id="6018" source="1628" target="405"/> + <edge id="6019" source="1628" target="537"/> + <edge id="6020" source="1628" target="409"/> + <edge id="6021" source="1628" target="533"/> + <edge id="6022" source="1629" target="907"/> + <edge id="6023" source="1629" target="463"/> + <edge id="6024" source="1629" target="547"/> + <edge id="6025" source="1629" target="177"/> + <edge id="6026" source="1629" target="548"/> + <edge id="6027" source="1629" target="79"/> + <edge id="6028" source="1629" target="549"/> + <edge id="6029" source="1629" target="649"/> + <edge id="6030" source="1630" target="313"/> + <edge id="6031" source="619" target="298"/> + <edge id="6032" source="619" target="523"/> + <edge id="6033" source="619" target="617"/> + <edge id="6034" source="619" target="79"/> + <edge id="6035" source="619" target="526"/> + <edge id="6036" source="1631" target="1034"/> + <edge id="6037" source="1631" target="206"/> + <edge id="6038" source="1631" target="1403"/> + <edge id="6039" source="1631" target="208"/> + <edge id="6040" source="1631" target="204"/> + <edge id="6041" source="1631" target="420"/> + <edge id="6042" source="1631" target="209"/> + <edge id="6043" source="1631" target="1033"/> + <edge id="6044" source="1632" target="344"/> + <edge id="6045" source="1632" target="573"/> + <edge id="6046" source="1632" target="335"/> + <edge id="6047" source="1632" target="999"/> + <edge id="6048" source="1632" target="281"/> + <edge id="6049" source="1632" target="1266"/> + <edge id="6050" source="1632" target="806"/> + <edge id="6051" source="1632" target="168"/> + <edge id="6052" source="806" target="1266"/> + <edge id="6053" source="806" target="111"/> + <edge id="6054" source="806" target="48"/> + <edge id="6055" source="806" target="600"/> + <edge id="6056" source="661" target="888"/> + <edge id="6057" source="1633" target="1634"/> + <edge id="6058" source="1633" target="669"/> + <edge id="6059" source="1633" target="435"/> + <edge id="6060" source="1633" target="1513"/> + <edge id="6061" source="1633" target="1165"/> + <edge id="6062" source="1633" target="366"/> + <edge id="6063" source="1635" target="1"/> + <edge id="6064" source="1636" target="1034"/> + <edge id="6065" source="1636" target="1035"/> + <edge id="6066" source="1636" target="1036"/> + <edge id="6067" source="1636" target="1297"/> + <edge id="6068" source="1636" target="1152"/> + <edge id="6069" source="1636" target="420"/> + <edge id="6070" source="1636" target="209"/> + <edge id="6071" source="1637" target="996"/> + <edge id="6072" source="1637" target="998"/> + <edge id="6073" source="1637" target="57"/> + <edge id="6074" source="1637" target="313"/> + <edge id="6075" source="1637" target="993"/> + <edge id="6076" source="1637" target="1638"/> + <edge id="6077" source="928" target="148"/> + <edge id="6078" source="928" target="150"/> + <edge id="6079" source="930" target="150"/> + <edge id="6080" source="909" target="906"/> + <edge id="6081" source="533" target="532"/> + <edge id="6082" source="533" target="335"/> + <edge id="6083" source="533" target="956"/> + <edge id="6084" source="533" target="1122"/> + <edge id="6085" source="533" target="537"/> + <edge id="6086" source="225" target="211"/> + <edge id="6087" source="225" target="361"/> + <edge id="6088" source="225" target="224"/> + <edge id="6089" source="1639" target="862"/> + <edge id="6090" source="1639" target="27"/> + <edge id="6091" source="1639" target="1379"/> + <edge id="6092" source="1639" target="287"/> + <edge id="6093" source="1639" target="552"/> + <edge id="6094" source="1639" target="456"/> + <edge id="6095" source="1639" target="68"/> + <edge id="6096" source="1639" target="1640"/> + <edge id="6097" source="1641" target="630"/> + <edge id="6098" source="1641" target="920"/> + <edge id="6099" source="1642" target="1407"/> + <edge id="6100" source="1246" target="100"/> + <edge id="6101" source="1246" target="689"/> + <edge id="6102" source="1246" target="98"/> + <edge id="6103" source="1246" target="99"/> + <edge id="6104" source="1246" target="53"/> + <edge id="6105" source="1246" target="688"/> + <edge id="6106" source="689" target="99"/> + <edge id="6107" source="689" target="53"/> + <edge id="6108" source="689" target="65"/> + <edge id="6109" source="689" target="104"/> + <edge id="6110" source="689" target="82"/> + <edge id="6111" source="544" target="1233"/> + <edge id="6112" source="544" target="1295"/> + <edge id="6113" source="544" target="87"/> + <edge id="6114" source="1643" target="863"/> + <edge id="6115" source="1643" target="861"/> + <edge id="6116" source="860" target="347"/> + <edge id="6117" source="860" target="348"/> + <edge id="6118" source="860" target="116"/> + <edge id="6119" source="860" target="113"/> + <edge id="6120" source="1644" target="280"/> + <edge id="6121" source="1644" target="833"/> + <edge id="6122" source="1644" target="963"/> + <edge id="6123" source="1644" target="444"/> + <edge id="6124" source="1644" target="324"/> + <edge id="6125" source="1644" target="1266"/> + <edge id="6126" source="1644" target="839"/> + <edge id="6127" source="1644" target="48"/> + <edge id="6128" source="1644" target="502"/> + <edge id="6129" source="1644" target="49"/> + <edge id="6130" source="1645" target="505"/> + <edge id="6131" source="1645" target="1177"/> + <edge id="6132" source="1646" target="313"/> + <edge id="6133" source="1647" target="128"/> + <edge id="6134" source="1647" target="175"/> + <edge id="6135" source="1647" target="85"/> + <edge id="6136" source="1647" target="82"/> + <edge id="6137" source="1648" target="50"/> + <edge id="6138" source="1648" target="1009"/> + <edge id="6139" source="1648" target="166"/> + <edge id="6140" source="1648" target="279"/> + <edge id="6141" source="1648" target="280"/> + <edge id="6142" source="1648" target="53"/> + <edge id="6143" source="1648" target="281"/> + <edge id="6144" source="1648" target="49"/> + <edge id="6145" source="1649" target="128"/> + <edge id="6146" source="1649" target="85"/> + <edge id="6147" source="1649" target="217"/> + <edge id="6148" source="1649" target="82"/> + <edge id="6149" source="137" target="136"/> + <edge id="6150" source="137" target="861"/> + <edge id="6151" source="140" target="136"/> + <edge id="6152" source="861" target="137"/> + <edge id="6153" source="1650" target="281"/> + <edge id="6154" source="1650" target="370"/> + <edge id="6155" source="1650" target="406"/> + <edge id="6156" source="1650" target="334"/> + <edge id="6157" source="1650" target="49"/> + <edge id="6158" source="1650" target="484"/> + <edge id="6159" source="1650" target="1292"/> + <edge id="6160" source="1650" target="533"/> + <edge id="6161" source="1650" target="532"/> + <edge id="6162" source="1650" target="535"/> + <edge id="6163" source="642" target="161"/> + <edge id="6164" source="642" target="641"/> + <edge id="6165" source="682" target="642"/> + <edge id="6166" source="682" target="161"/> + <edge id="6167" source="682" target="640"/> + <edge id="6168" source="682" target="641"/> + <edge id="6169" source="138" target="133"/> + <edge id="6170" source="1651" target="37"/> + <edge id="6171" source="1651" target="209"/> + <edge id="6172" source="1651" target="1034"/> + <edge id="6173" source="1651" target="1404"/> + <edge id="6174" source="1651" target="272"/> + <edge id="6175" source="1651" target="429"/> + <edge id="6176" source="1440" target="111"/> + <edge id="6177" source="1440" target="1"/> + <edge id="6178" source="1652" target="236"/> + <edge id="6179" source="1652" target="498"/> + <edge id="6180" source="1652" target="497"/> + <edge id="6181" source="1652" target="48"/> + <edge id="6182" source="1652" target="695"/> + <edge id="6183" source="1652" target="109"/> + <edge id="6184" source="1652" target="284"/> + <edge id="6185" source="1652" target="166"/> + <edge id="6186" source="1652" target="496"/> + <edge id="6187" source="1652" target="53"/> + <edge id="6188" source="1653" target="351"/> + <edge id="6189" source="1653" target="1430"/> + <edge id="6190" source="1654" target="1261"/> + <edge id="6191" source="1654" target="1"/> + <edge id="6192" source="1654" target="1124"/> + <edge id="6193" source="1655" target="1015"/> + <edge id="6194" source="1656" target="872"/> + <edge id="6195" source="1656" target="65"/> + <edge id="6196" source="1656" target="903"/> + <edge id="6197" source="1656" target="246"/> + <edge id="6198" source="1656" target="1160"/> + <edge id="6199" source="1408" target="79"/> + <edge id="6200" source="1408" target="224"/> + <edge id="6201" source="1408" target="185"/> + <edge id="6202" source="1657" target="667"/> + <edge id="6203" source="1657" target="287"/> + <edge id="6204" source="1657" target="457"/> + <edge id="6205" source="1657" target="431"/> + <edge id="6206" source="1657" target="455"/> + <edge id="6207" source="1657" target="65"/> + <edge id="6208" source="1657" target="559"/> + <edge id="6209" source="1657" target="666"/> + <edge id="6210" source="141" target="79"/> + <edge id="6211" source="1658" target="302"/> + <edge id="6212" source="1658" target="303"/> + <edge id="6213" source="1658" target="296"/> + <edge id="6214" source="1658" target="376"/> + <edge id="6215" source="1658" target="377"/> + <edge id="6216" source="1658" target="979"/> + <edge id="6217" source="1658" target="295"/> + <edge id="6218" source="1658" target="1659"/> + <edge id="6219" source="1658" target="1448"/> + <edge id="6220" source="1660" target="958"/> + <edge id="6221" source="1660" target="959"/> + <edge id="6222" source="1660" target="960"/> + <edge id="6223" source="1660" target="505"/> + <edge id="6224" source="1660" target="961"/> + <edge id="6225" source="1660" target="48"/> + <edge id="6226" source="1660" target="502"/> + <edge id="6227" source="1660" target="49"/> + <edge id="6228" source="1660" target="962"/> + <edge id="6229" source="1661" target="453"/> + <edge id="6230" source="1661" target="901"/> + <edge id="6231" source="1661" target="1352"/> + <edge id="6232" source="1661" target="68"/> + <edge id="6233" source="1661" target="1662"/> + <edge id="6234" source="1661" target="76"/> + <edge id="6235" source="1663" target="431"/> + <edge id="6236" source="1663" target="408"/> + <edge id="6237" source="1663" target="515"/> + <edge id="6238" source="1663" target="455"/> + <edge id="6239" source="1663" target="666"/> + <edge id="6240" source="1663" target="667"/> + <edge id="6241" source="1663" target="287"/> + <edge id="6242" source="1663" target="262"/> + <edge id="6243" source="1663" target="457"/> + <edge id="6244" source="1664" target="471"/> + <edge id="6245" source="1664" target="485"/> + <edge id="6246" source="1664" target="855"/> + <edge id="6247" source="1664" target="618"/> + <edge id="6248" source="1664" target="1407"/> + <edge id="6249" source="1664" target="470"/> + <edge id="6250" source="1119" target="51"/> + <edge id="6251" source="1119" target="53"/> + <edge id="6252" source="1119" target="66"/> + <edge id="6253" source="1119" target="405"/> + <edge id="6254" source="1119" target="397"/> + <edge id="6255" source="1119" target="48"/> + <edge id="6256" source="1119" target="409"/> + <edge id="6257" source="1119" target="49"/> + <edge id="6258" source="1119" target="50"/> + <edge id="6259" source="822" target="53"/> + <edge id="6260" source="822" target="405"/> + <edge id="6261" source="822" target="181"/> + <edge id="6262" source="822" target="397"/> + <edge id="6263" source="822" target="48"/> + <edge id="6264" source="822" target="409"/> + <edge id="6265" source="822" target="49"/> + <edge id="6266" source="822" target="798"/> + <edge id="6267" source="822" target="50"/> + <edge id="6268" source="822" target="1119"/> + <edge id="6269" source="1665" target="239"/> + <edge id="6270" source="1665" target="159"/> + <edge id="6271" source="1665" target="1666"/> + <edge id="6272" source="1667" target="76"/> + <edge id="6273" source="1667" target="1668"/> + <edge id="6274" source="1667" target="1"/> + <edge id="6275" source="1667" target="215"/> + <edge id="6276" source="1667" target="579"/> + <edge id="6277" source="686" target="685"/> + <edge id="6278" source="349" target="133"/> + <edge id="6279" source="1669" target="1"/> + <edge id="6280" source="1670" target="73"/> + <edge id="6281" source="1670" target="74"/> + <edge id="6282" source="1670" target="70"/> + <edge id="6283" source="1670" target="71"/> + <edge id="6284" source="1670" target="1671"/> + <edge id="6285" source="1670" target="69"/> + <edge id="6286" source="1670" target="72"/> + <edge id="6287" source="1670" target="561"/> + <edge id="6288" source="87" target="380"/> + <edge id="6289" source="87" target="512"/> + <edge id="6290" source="87" target="544"/> + <edge id="6291" source="1672" target="897"/> + <edge id="6292" source="1672" target="87"/> + <edge id="6293" source="1672" target="434"/> + <edge id="6294" source="1672" target="598"/> + <edge id="6295" source="1672" target="816"/> + <edge id="6296" source="1672" target="1295"/> + <edge id="6297" source="1672" target="702"/> + <edge id="6298" source="1673" target="597"/> + <edge id="6299" source="1673" target="512"/> + <edge id="6300" source="1673" target="598"/> + <edge id="6301" source="1673" target="498"/> + <edge id="6302" source="1673" target="816"/> + <edge id="6303" source="1673" target="817"/> + <edge id="6304" source="1673" target="544"/> + <edge id="6305" source="1673" target="87"/> + <edge id="6306" source="1673" target="239"/> + <edge id="6307" source="1674" target="61"/> + <edge id="6308" source="1674" target="53"/> + <edge id="6309" source="1674" target="118"/> + <edge id="6310" source="1674" target="64"/> + <edge id="6311" source="1674" target="65"/> + <edge id="6312" source="1674" target="131"/> + <edge id="6313" source="1674" target="104"/> + <edge id="6314" source="1674" target="50"/> + <edge id="6315" source="1674" target="68"/> + <edge id="6316" source="1674" target="363"/> + <edge id="6317" source="1572" target="79"/> + <edge id="6318" source="1572" target="1108"/> + <edge id="6319" source="1572" target="626"/> + <edge id="6320" source="1572" target="1407"/> + <edge id="6321" source="1572" target="1408"/> + <edge id="6322" source="1675" target="68"/> + <edge id="6323" source="1675" target="216"/> + <edge id="6324" source="1675" target="53"/> + <edge id="6325" source="1675" target="512"/> + <edge id="6326" source="1675" target="64"/> + <edge id="6327" source="1675" target="65"/> + <edge id="6328" source="1675" target="119"/> + <edge id="6329" source="1675" target="592"/> + <edge id="6330" source="1675" target="50"/> + <edge id="6331" source="510" target="555"/> + <edge id="6332" source="510" target="262"/> + <edge id="6333" source="510" target="436"/> + <edge id="6334" source="510" target="53"/> + <edge id="6335" source="510" target="554"/> + <edge id="6336" source="1046" target="1042"/> + <edge id="6337" source="1046" target="567"/> + <edge id="6338" source="1046" target="1138"/> + <edge id="6339" source="1046" target="171"/> + <edge id="6340" source="1046" target="1524"/> + <edge id="6341" source="457" target="259"/> + <edge id="6342" source="457" target="1017"/> + <edge id="6343" source="457" target="513"/> + <edge id="6344" source="457" target="51"/> + <edge id="6345" source="736" target="154"/> + <edge id="6346" source="283" target="293"/> + <edge id="6347" source="283" target="61"/> + <edge id="6348" source="283" target="525"/> + <edge id="6349" source="283" target="281"/> + <edge id="6350" source="283" target="282"/> + <edge id="6351" source="283" target="334"/> + <edge id="6352" source="283" target="279"/> + <edge id="6353" source="1676" target="281"/> + <edge id="6354" source="284" target="323"/> + <edge id="6355" source="962" target="961"/> + <edge id="6356" source="1677" target="370"/> + <edge id="6357" source="1677" target="374"/> + <edge id="6358" source="1677" target="513"/> + <edge id="6359" source="1677" target="254"/> + <edge id="6360" source="1677" target="181"/> + <edge id="6361" source="1677" target="1293"/> + <edge id="6362" source="1677" target="47"/> + <edge id="6363" source="1373" target="84"/> + <edge id="6364" source="1373" target="167"/> + <edge id="6365" source="1373" target="82"/> + <edge id="6366" source="1373" target="698"/> + <edge id="6367" source="168" target="165"/> + <edge id="6368" source="168" target="167"/> + <edge id="6369" source="1678" target="185"/> + <edge id="6370" source="1678" target="619"/> + <edge id="6371" source="1678" target="79"/> + <edge id="6372" source="1678" target="315"/> + <edge id="6373" source="1678" target="334"/> + <edge id="6374" source="1678" target="50"/> + <edge id="6375" source="1679" target="556"/> + <edge id="6376" source="1679" target="1196"/> + <edge id="6377" source="1679" target="1680"/> + <edge id="6378" source="1681" target="1682"/> + <edge id="6379" source="1683" target="20"/> + <edge id="6380" source="1683" target="814"/> + <edge id="6381" source="1683" target="109"/> + <edge id="6382" source="1684" target="981"/> + <edge id="6383" source="1684" target="111"/> + <edge id="6384" source="1684" target="1136"/> + <edge id="6385" source="1684" target="1142"/> + <edge id="6386" source="1684" target="600"/> + <edge id="6387" source="1684" target="886"/> + <edge id="6388" source="1684" target="281"/> + <edge id="6389" source="1684" target="1141"/> + <edge id="6390" source="768" target="769"/> + <edge id="6391" source="768" target="504"/> + <edge id="6392" source="768" target="708"/> + <edge id="6393" source="768" target="771"/> + <edge id="6394" source="1685" target="1"/> + <edge id="6395" source="1685" target="1686"/> + <edge id="6396" source="1687" target="1158"/> + <edge id="6397" source="1687" target="1688"/> + <edge id="6398" source="1301" target="531"/> + <edge id="6399" source="1302" target="1300"/> + <edge id="6400" source="1302" target="1301"/> + <edge id="6401" source="1689" target="133"/> + <edge id="6402" source="1689" target="380"/> + <edge id="6403" source="1689" target="399"/> + <edge id="6404" source="1689" target="159"/> + <edge id="6405" source="1689" target="113"/> + <edge id="6406" source="1689" target="647"/> + <edge id="6407" source="1689" target="1079"/> + <edge id="6408" source="1689" target="675"/> + <edge id="6409" source="771" target="770"/> + <edge id="6410" source="771" target="109"/> + <edge id="6411" source="771" target="768"/> + <edge id="6412" source="771" target="769"/> + <edge id="6413" source="771" target="708"/> + <edge id="6414" source="1690" target="314"/> + <edge id="6415" source="1690" target="297"/> + <edge id="6416" source="1690" target="316"/> + <edge id="6417" source="1690" target="1152"/> + <edge id="6418" source="1690" target="1691"/> + <edge id="6419" source="1692" target="1693"/> + <edge id="6420" source="1692" target="791"/> + <edge id="6421" source="1694" target="966"/> + <edge id="6422" source="1694" target="1695"/> + <edge id="6423" source="1694" target="303"/> + <edge id="6424" source="1694" target="182"/> + <edge id="6425" source="1696" target="53"/> + <edge id="6426" source="1696" target="65"/> + <edge id="6427" source="1696" target="1057"/> + <edge id="6428" source="1696" target="179"/> + <edge id="6429" source="1696" target="924"/> + <edge id="6430" source="1696" target="50"/> + <edge id="6431" source="473" target="313"/> + <edge id="6432" source="473" target="474"/> + <edge id="6433" source="1425" target="293"/> + <edge id="6434" source="1425" target="1235"/> + <edge id="6435" source="1425" target="524"/> + <edge id="6436" source="82" target="84"/> + <edge id="6437" source="82" target="128"/> + <edge id="6438" source="698" target="696"/> + <edge id="6439" source="33" target="344"/> + <edge id="6440" source="1697" target="85"/> + <edge id="6441" source="1442" target="79"/> + <edge id="6442" source="1442" target="1"/> + <edge id="6443" source="1210" target="290"/> + <edge id="6444" source="1210" target="1077"/> + <edge id="6445" source="1210" target="1078"/> + <edge id="6446" source="1210" target="1262"/> + <edge id="6447" source="1210" target="1079"/> + <edge id="6448" source="1698" target="646"/> + <edge id="6449" source="239" target="1698"/> + <edge id="6450" source="239" target="648"/> + <edge id="6451" source="239" target="149"/> + <edge id="6452" source="1699" target="159"/> + <edge id="6453" source="1699" target="1"/> + <edge id="6454" source="1699" target="155"/> + <edge id="6455" source="1079" target="1078"/> + <edge id="6456" source="386" target="239"/> + <edge id="6457" source="362" target="360"/> + <edge id="6458" source="362" target="177"/> + <edge id="6459" source="362" target="224"/> + <edge id="6460" source="362" target="56"/> + <edge id="6461" source="362" target="372"/> + <edge id="6462" source="1700" target="324"/> + <edge id="6463" source="1700" target="150"/> + <edge id="6464" source="787" target="321"/> + <edge id="6465" source="787" target="785"/> + <edge id="6466" source="787" target="206"/> + <edge id="6467" source="787" target="1312"/> + <edge id="6468" source="787" target="322"/> + <edge id="6469" source="787" target="786"/> + <edge id="6470" source="787" target="1037"/> + <edge id="6471" source="1688" target="1"/> + <edge id="6472" source="511" target="50"/> + <edge id="6473" source="511" target="68"/> + <edge id="6474" source="511" target="53"/> + <edge id="6475" source="511" target="65"/> + <edge id="6476" source="1701" target="68"/> + <edge id="6477" source="1701" target="408"/> + <edge id="6478" source="1701" target="53"/> + <edge id="6479" source="1701" target="460"/> + <edge id="6480" source="1701" target="515"/> + <edge id="6481" source="1701" target="65"/> + <edge id="6482" source="1701" target="287"/> + <edge id="6483" source="1702" target="1646"/> + <edge id="6484" source="1702" target="1703"/> + <edge id="6485" source="1702" target="1704"/> + <edge id="6486" source="1702" target="1238"/> + <edge id="6487" source="1702" target="79"/> + <edge id="6488" source="1702" target="853"/> + <edge id="6489" source="1702" target="1103"/> + <edge id="6490" source="1702" target="313"/> + <edge id="6491" source="1703" target="79"/> + <edge id="6492" source="1703" target="853"/> + <edge id="6493" source="1703" target="1103"/> + <edge id="6494" source="1703" target="313"/> + <edge id="6495" source="1703" target="1646"/> + <edge id="6496" source="1317" target="391"/> + <edge id="6497" source="1317" target="1316"/> + <edge id="6498" source="1705" target="174"/> + <edge id="6499" source="1705" target="779"/> + <edge id="6500" source="1705" target="624"/> + <edge id="6501" source="1705" target="1022"/> + <edge id="6502" source="1705" target="120"/> + <edge id="6503" source="1705" target="68"/> + <edge id="6504" source="1705" target="157"/> + <edge id="6505" source="1705" target="53"/> + <edge id="6506" source="1561" target="433"/> + <edge id="6507" source="1561" target="609"/> + <edge id="6508" source="1561" target="119"/> + <edge id="6509" source="116" target="363"/> + <edge id="6510" source="116" target="373"/> + <edge id="6511" source="116" target="113"/> + <edge id="6512" source="116" target="115"/> + <edge id="6513" source="1364" target="631"/> + <edge id="6514" source="1364" target="1293"/> + <edge id="6515" source="1364" target="113"/> + <edge id="6516" source="807" target="198"/> + <edge id="6517" source="807" target="411"/> + <edge id="6518" source="495" target="493"/> + <edge id="6519" source="495" target="825"/> + <edge id="6520" source="495" target="82"/> + <edge id="6521" source="495" target="1706"/> + <edge id="6522" source="1706" target="493"/> + <edge id="6523" source="1706" target="33"/> + <edge id="6524" source="1706" target="495"/> + <edge id="6525" source="1241" target="1238"/> + <edge id="6526" source="1704" target="1238"/> + <edge id="6527" source="1704" target="313"/> + <edge id="6528" source="704" target="64"/> + <edge id="6529" source="704" target="541"/> + <edge id="6530" source="704" target="91"/> + <edge id="6531" source="1707" target="270"/> + <edge id="6532" source="1707" target="1002"/> + <edge id="6533" source="1707" target="144"/> + <edge id="6534" source="1707" target="567"/> + <edge id="6535" source="1707" target="1049"/> + <edge id="6536" source="1707" target="423"/> + <edge id="6537" source="1707" target="656"/> + <edge id="6538" source="1707" target="109"/> + <edge id="6539" source="534" target="532"/> + <edge id="6540" source="1708" target="508"/> + <edge id="6541" source="1708" target="49"/> + <edge id="6542" source="1709" target="301"/> + <edge id="6543" source="1709" target="303"/> + <edge id="6544" source="1709" target="296"/> + <edge id="6545" source="1709" target="967"/> + <edge id="6546" source="1709" target="1062"/> + <edge id="6547" source="1709" target="479"/> + <edge id="6548" source="1709" target="1"/> + <edge id="6549" source="1709" target="182"/> + <edge id="6550" source="1709" target="183"/> + <edge id="6551" source="1709" target="1557"/> + <edge id="6552" source="1586" target="122"/> + <edge id="6553" source="1586" target="1"/> + <edge id="6554" source="1710" target="122"/> + <edge id="6555" source="1710" target="1"/> + <edge id="6556" source="1253" target="296"/> + <edge id="6557" source="1253" target="79"/> + <edge id="6558" source="1253" target="377"/> + <edge id="6559" source="1253" target="852"/> + <edge id="6560" source="1253" target="182"/> + <edge id="6561" source="1253" target="185"/> + <edge id="6562" source="1638" target="367"/> + <edge id="6563" source="1638" target="899"/> + <edge id="6564" source="1515" target="163"/> + <edge id="6565" source="1515" target="1518"/> + <edge id="6566" source="1082" target="307"/> + <edge id="6567" source="1082" target="911"/> + <edge id="6568" source="1082" target="912"/> + <edge id="6569" source="1082" target="653"/> + <edge id="6570" source="1082" target="309"/> + <edge id="6571" source="1082" target="367"/> + <edge id="6572" source="1082" target="913"/> + <edge id="6573" source="1082" target="1083"/> + <edge id="6574" source="899" target="367"/> + <edge id="6575" source="941" target="1"/> + <edge id="6576" source="941" target="12"/> + <edge id="6577" source="1410" target="304"/> + <edge id="6578" source="1410" target="1556"/> + <edge id="6579" source="616" target="296"/> + <edge id="6580" source="616" target="177"/> + <edge id="6581" source="616" target="79"/> + <edge id="6582" source="1711" target="79"/> + <edge id="6583" source="1711" target="150"/> + <edge id="6584" source="276" target="275"/> + <edge id="6585" source="276" target="270"/> + <edge id="6586" source="276" target="36"/> + <edge id="6587" source="276" target="1384"/> + <edge id="6588" source="276" target="38"/> + <edge id="6589" source="276" target="313"/> + <edge id="6590" source="1712" target="303"/> + <edge id="6591" source="1712" target="293"/> + <edge id="6592" source="1712" target="79"/> + <edge id="6593" source="1712" target="894"/> + <edge id="6594" source="1712" target="377"/> + <edge id="6595" source="1712" target="1227"/> + <edge id="6596" source="1712" target="182"/> + <edge id="6597" source="1712" target="302"/> + <edge id="6598" source="1712" target="183"/> + <edge id="6599" source="1713" target="1"/> + <edge id="6600" source="1713" target="272"/> + <edge id="6601" source="1713" target="429"/> + <edge id="6602" source="1713" target="37"/> + <edge id="6603" source="1713" target="209"/> + <edge id="6604" source="1713" target="207"/> + <edge id="6605" source="474" target="475"/> + <edge id="6606" source="474" target="313"/> + <edge id="6607" source="474" target="473"/> + <edge id="6608" source="1714" target="79"/> + <edge id="6609" source="1714" target="1711"/> + <edge id="6610" source="1715" target="652"/> + <edge id="6611" source="1715" target="415"/> + <edge id="6612" source="1715" target="182"/> + <edge id="6613" source="1715" target="1279"/> + <edge id="6614" source="1716" target="1120"/> + <edge id="6615" source="1716" target="1121"/> + <edge id="6616" source="1716" target="1717"/> + <edge id="6617" source="1716" target="1718"/> + <edge id="6618" source="1716" target="149"/> + <edge id="6619" source="1142" target="1120"/> + <edge id="6620" source="1142" target="1718"/> + <edge id="6621" source="1717" target="203"/> + <edge id="6622" source="1717" target="1120"/> + <edge id="6623" source="1717" target="1121"/> + <edge id="6624" source="1717" target="1718"/> + <edge id="6625" source="1718" target="1717"/> + <edge id="6626" source="1718" target="149"/> + <edge id="6627" source="1718" target="1120"/> + <edge id="6628" source="1718" target="1121"/> + <edge id="6629" source="1719" target="53"/> + <edge id="6630" source="1719" target="50"/> + <edge id="6631" source="675" target="69"/> + <edge id="6632" source="675" target="280"/> + <edge id="6633" source="675" target="512"/> + <edge id="6634" source="202" target="403"/> + <edge id="6635" source="202" target="438"/> + <edge id="6636" source="202" target="264"/> + <edge id="6637" source="202" target="265"/> + <edge id="6638" source="202" target="266"/> + <edge id="6639" source="202" target="835"/> + <edge id="6640" source="713" target="715"/> + <edge id="6641" source="713" target="96"/> + <edge id="6642" source="713" target="85"/> + <edge id="6643" source="713" target="712"/> + <edge id="6644" source="713" target="502"/> + <edge id="6645" source="713" target="82"/> + <edge id="6646" source="713" target="714"/> + <edge id="6647" source="714" target="502"/> + <edge id="6648" source="714" target="713"/> + <edge id="6649" source="714" target="129"/> + <edge id="6650" source="714" target="715"/> + <edge id="6651" source="714" target="85"/> + <edge id="6652" source="714" target="712"/> + <edge id="6653" source="714" target="444"/> + <edge id="6654" source="714" target="870"/> + <edge id="6655" source="1360" target="408"/> + <edge id="6656" source="1360" target="600"/> + <edge id="6657" source="1360" target="119"/> + <edge id="6658" source="1360" target="49"/> + <edge id="6659" source="1360" target="513"/> + <edge id="6660" source="1360" target="51"/> + <edge id="6661" source="1720" target="264"/> + <edge id="6662" source="1720" target="265"/> + <edge id="6663" source="1720" target="263"/> + <edge id="6664" source="1720" target="144"/> + <edge id="6665" source="1720" target="62"/> + <edge id="6666" source="1720" target="146"/> + <edge id="6667" source="1720" target="438"/> + <edge id="6668" source="1721" target="166"/> + <edge id="6669" source="1721" target="53"/> + <edge id="6670" source="1721" target="816"/> + <edge id="6671" source="1721" target="114"/> + <edge id="6672" source="1721" target="119"/> + <edge id="6673" source="1721" target="1289"/> + <edge id="6674" source="1722" target="166"/> + <edge id="6675" source="1722" target="82"/> + </edges> + </graph> +</gexf> \ No newline at end of file diff --git a/sigma.js-1.2.0/examples/data/arctic.json b/sigma.js-1.2.0/examples/data/arctic.json new file mode 100644 index 0000000..5115411 --- /dev/null +++ b/sigma.js-1.2.0/examples/data/arctic.json @@ -0,0 +1 @@ +{"edges":[{"source":"473","target":"313","id":"6432"},{"source":"285","target":"50","id":"357"},{"source":"441","target":"1394","id":"4376"},{"source":"51","target":"50","id":"5581"},{"source":"1051","target":"428","id":"2763"},{"source":"1712","target":"377","id":"6595"},{"source":"1197","target":"79","id":"3431"},{"source":"515","target":"608","id":"1171"},{"source":"397","target":"396","id":"3911"},{"source":"499","target":"49","id":"829"},{"source":"362","target":"177","id":"6459"},{"source":"634","target":"281","id":"1234"},{"source":"1070","target":"436","id":"2819"},{"source":"1672","target":"816","id":"6296"},{"source":"279","target":"335","id":"504"},{"source":"424","target":"130","id":"4942"},{"source":"744","target":"65","id":"1559"},{"source":"1176","target":"1177","id":"3296"},{"source":"957","target":"958","id":"2426"},{"source":"1631","target":"206","id":"6038"},{"source":"631","target":"53","id":"1216"},{"source":"1594","target":"76","id":"5762"},{"source":"832","target":"237","id":"1880"},{"source":"494","target":"128","id":"4201"},{"source":"1034","target":"209","id":"2675"},{"source":"451","target":"452","id":"739"},{"source":"573","target":"279","id":"1044"},{"source":"1540","target":"335","id":"5303"},{"source":"631","target":"632","id":"1218"},{"source":"1563","target":"1564","id":"5497"},{"source":"778","target":"645","id":"1682"},{"source":"765","target":"747","id":"4823"},{"source":"1249","target":"1409","id":"5912"},{"source":"1650","target":"484","id":"6159"},{"source":"630","target":"240","id":"1211"},{"source":"1524","target":"1138","id":"5262"},{"source":"308","target":"368","id":"566"},{"source":"1718","target":"1717","id":"6626"},{"source":"730","target":"51","id":"1522"},{"source":"1513","target":"68","id":"5214"},{"source":"42","target":"281","id":"344"},{"source":"1453","target":"1","id":"4761"},{"source":"64","target":"67","id":"1828"},{"source":"868","target":"82","id":"2021"},{"source":"408","target":"50","id":"875"},{"source":"982","target":"250","id":"2513"},{"source":"115","target":"364","id":"2320"},{"source":"271","target":"38","id":"4327"},{"source":"117","target":"120","id":"124"},{"source":"1052","target":"208","id":"2769"},{"source":"1378","target":"293","id":"4282"},{"source":"496","target":"403","id":"822"},{"source":"1696","target":"53","id":"6426"},{"source":"761","target":"82","id":"1615"},{"source":"252","target":"250","id":"758"},{"source":"1353","target":"281","id":"4174"},{"source":"186","target":"188","id":"208"},{"source":"1179","target":"284","id":"3309"},{"source":"453","target":"76","id":"1617"},{"source":"451","target":"53","id":"740"},{"source":"1177","target":"427","id":"5363"},{"source":"1000","target":"567","id":"3291"},{"source":"1590","target":"567","id":"5716"},{"source":"716","target":"711","id":"1449"},{"source":"199","target":"201","id":"3322"},{"source":"1273","target":"1229","id":"3764"},{"source":"1372","target":"216","id":"4258"},{"source":"434","target":"433","id":"940"},{"source":"660","target":"662","id":"4041"},{"source":"1575","target":"281","id":"5603"},{"source":"1629","target":"177","id":"6026"},{"source":"611","target":"53","id":"1176"},{"source":"794","target":"102","id":"1736"},{"source":"687","target":"53","id":"1381"},{"source":"1054","target":"1","id":"2777"},{"source":"1214","target":"82","id":"3488"},{"source":"61","target":"408","id":"862"},{"source":"42","target":"282","id":"345"},{"source":"452","target":"50","id":"2279"},{"source":"225","target":"211","id":"6087"},{"source":"1715","target":"182","id":"6613"},{"source":"1253","target":"377","id":"6559"},{"source":"385","target":"303","id":"3685"},{"source":"1480","target":"919","id":"4981"},{"source":"1253","target":"182","id":"6561"},{"source":"1709","target":"1062","id":"6547"},{"source":"1583","target":"241","id":"5667"},{"source":"1604","target":"1126","id":"5852"},{"source":"456","target":"30","id":"5812"},{"source":"333","target":"50","id":"493"},{"source":"574","target":"573","id":"1062"},{"source":"1420","target":"344","id":"4557"},{"source":"878","target":"645","id":"2076"},{"source":"1109","target":"177","id":"3001"},{"source":"1349","target":"628","id":"4140"},{"source":"504","target":"568","id":"1638"},{"source":"138","target":"133","id":"6170"},{"source":"971","target":"311","id":"2472"},{"source":"245","target":"53","id":"1735"},{"source":"1536","target":"104","id":"5287"},{"source":"1558","target":"79","id":"5446"},{"source":"1091","target":"119","id":"2914"},{"source":"714","target":"870","id":"6655"},{"source":"1601","target":"965","id":"5798"},{"source":"450","target":"272","id":"4689"},{"source":"535","target":"537","id":"2466"},{"source":"1253","target":"185","id":"6562"},{"source":"1457","target":"166","id":"4781"},{"source":"1162","target":"379","id":"3222"},{"source":"1179","target":"282","id":"3307"},{"source":"570","target":"571","id":"1039"},{"source":"1571","target":"1572","id":"5541"},{"source":"49","target":"182","id":"5183"},{"source":"865","target":"511","id":"2290"},{"source":"1082","target":"1083","id":"6574"},{"source":"484","target":"411","id":"5588"},{"source":"755","target":"211","id":"1591"},{"source":"988","target":"316","id":"2523"},{"source":"0","target":"1","id":"1"},{"source":"1261","target":"298","id":"3690"},{"source":"256","target":"296","id":"5165"},{"source":"787","target":"322","id":"6469"},{"source":"1164","target":"424","id":"3989"},{"source":"1222","target":"185","id":"3537"},{"source":"1263","target":"570","id":"3708"},{"source":"1560","target":"1561","id":"5481"},{"source":"462","target":"79","id":"772"},{"source":"578","target":"580","id":"5679"},{"source":"987","target":"335","id":"3049"},{"source":"311","target":"79","id":"468"},{"source":"758","target":"403","id":"5833"},{"source":"95","target":"82","id":"103"},{"source":"895","target":"64","id":"2138"},{"source":"944","target":"53","id":"2362"},{"source":"1660","target":"48","id":"6226"},{"source":"45","target":"46","id":"3235"},{"source":"808","target":"280","id":"1788"},{"source":"969","target":"970","id":"2470"},{"source":"1628","target":"405","id":"6019"},{"source":"1685","target":"1","id":"6395"},{"source":"100","target":"68","id":"1842"},{"source":"1219","target":"685","id":"3518"},{"source":"717","target":"713","id":"1459"},{"source":"901","target":"872","id":"2166"},{"source":"1050","target":"1402","id":"4443"},{"source":"1290","target":"325","id":"3835"},{"source":"492","target":"121","id":"814"},{"source":"754","target":"312","id":"5439"},{"source":"1411","target":"537","id":"4513"},{"source":"779","target":"84","id":"1687"},{"source":"180","target":"79","id":"201"},{"source":"1355","target":"296","id":"4176"},{"source":"469","target":"974","id":"3191"},{"source":"1001","target":"460","id":"2547"},{"source":"1454","target":"1","id":"5916"},{"source":"119","target":"114","id":"3176"},{"source":"910","target":"177","id":"2224"},{"source":"53","target":"68","id":"1110"},{"source":"1374","target":"406","id":"4269"},{"source":"1483","target":"648","id":"4992"},{"source":"1349","target":"177","id":"4141"},{"source":"998","target":"993","id":"2545"},{"source":"44","target":"46","id":"42"},{"source":"36","target":"40","id":"441"},{"source":"279","target":"61","id":"503"},{"source":"833","target":"715","id":"1888"},{"source":"752","target":"847","id":"1941"},{"source":"1604","target":"495","id":"5849"},{"source":"1191","target":"1025","id":"3399"},{"source":"1427","target":"1155","id":"4611"},{"source":"510","target":"262","id":"6333"},{"source":"1152","target":"996","id":"4495"},{"source":"1337","target":"48","id":"4072"},{"source":"730","target":"731","id":"1520"},{"source":"410","target":"280","id":"671"},{"source":"577","target":"581","id":"4393"},{"source":"1293","target":"113","id":"3843"},{"source":"681","target":"53","id":"1368"},{"source":"1346","target":"872","id":"4122"},{"source":"750","target":"312","id":"1585"},{"source":"871","target":"68","id":"2040"},{"source":"1405","target":"638","id":"4454"},{"source":"1426","target":"323","id":"4595"},{"source":"1713","target":"37","id":"6603"},{"source":"45","target":"852","id":"3234"},{"source":"1606","target":"1579","id":"5860"},{"source":"482","target":"334","id":"3839"},{"source":"587","target":"590","id":"1108"},{"source":"49","target":"281","id":"5190"},{"source":"65","target":"118","id":"2130"},{"source":"1362","target":"105","id":"4226"},{"source":"1512","target":"1","id":"5213"},{"source":"1269","target":"49","id":"3750"},{"source":"305","target":"309","id":"400"},{"source":"677","target":"53","id":"1361"},{"source":"1545","target":"772","id":"5353"},{"source":"73","target":"70","id":"1709"},{"source":"1146","target":"613","id":"3658"},{"source":"1168","target":"185","id":"3261"},{"source":"1178","target":"170","id":"3298"},{"source":"1571","target":"329","id":"5537"},{"source":"1230","target":"230","id":"3581"},{"source":"1577","target":"712","id":"5619"},{"source":"1397","target":"378","id":"4411"},{"source":"1344","target":"498","id":"4115"},{"source":"590","target":"267","id":"5169"},{"source":"1291","target":"1292","id":"5644"},{"source":"568","target":"708","id":"1644"},{"source":"1188","target":"76","id":"3382"},{"source":"853","target":"313","id":"1969"},{"source":"716","target":"109","id":"1454"},{"source":"1025","target":"65","id":"4625"},{"source":"1290","target":"826","id":"3836"},{"source":"1046","target":"1138","id":"6339"},{"source":"1632","target":"806","id":"6051"},{"source":"930","target":"150","id":"6080"},{"source":"1361","target":"217","id":"4203"},{"source":"639","target":"53","id":"1257"},{"source":"862","target":"772","id":"2628"},{"source":"1150","target":"976","id":"3134"},{"source":"1333","target":"623","id":"4047"},{"source":"273","target":"37","id":"5565"},{"source":"1457","target":"49","id":"4789"},{"source":"243","target":"247","id":"282"},{"source":"330","target":"294","id":"482"},{"source":"1657","target":"65","id":"6208"},{"source":"75","target":"76","id":"69"},{"source":"1223","target":"292","id":"3563"},{"source":"310","target":"45","id":"405"},{"source":"687","target":"96","id":"1383"},{"source":"187","target":"190","id":"218"},{"source":"109","target":"150","id":"5723"},{"source":"644","target":"743","id":"1554"},{"source":"374","target":"119","id":"5177"},{"source":"1248","target":"1607","id":"5899"},{"source":"1388","target":"974","id":"4358"},{"source":"1163","target":"422","id":"3217"},{"source":"1017","target":"277","id":"3978"},{"source":"1292","target":"1582","id":"5659"},{"source":"871","target":"61","id":"2041"},{"source":"1359","target":"1360","id":"4198"},{"source":"660","target":"888","id":"4043"},{"source":"424","target":"654","id":"4945"},{"source":"86","target":"87","id":"79"},{"source":"274","target":"40","id":"323"},{"source":"363","target":"364","id":"555"},{"source":"693","target":"97","id":"1399"},{"source":"1074","target":"262","id":"2845"},{"source":"597","target":"598","id":"1143"},{"source":"538","target":"51","id":"4661"},{"source":"408","target":"49","id":"873"},{"source":"114","target":"598","id":"2214"},{"source":"538","target":"50","id":"4660"},{"source":"1707","target":"1049","id":"6536"},{"source":"1606","target":"1282","id":"5861"},{"source":"1080","target":"301","id":"2849"},{"source":"1485","target":"498","id":"5003"},{"source":"169","target":"171","id":"191"},{"source":"1684","target":"281","id":"6389"},{"source":"1131","target":"1132","id":"3067"},{"source":"547","target":"463","id":"949"},{"source":"799","target":"405","id":"1758"},{"source":"931","target":"147","id":"2315"},{"source":"982","target":"439","id":"2512"},{"source":"266","target":"444","id":"3992"},{"source":"1401","target":"53","id":"4418"},{"source":"807","target":"198","id":"6517"},{"source":"634","target":"335","id":"1233"},{"source":"47","target":"48","id":"4429"},{"source":"949","target":"1","id":"2397"},{"source":"939","target":"53","id":"2348"},{"source":"833","target":"281","id":"1890"},{"source":"725","target":"65","id":"1498"},{"source":"1421","target":"723","id":"4569"},{"source":"761","target":"175","id":"1614"},{"source":"1464","target":"883","id":"4827"},{"source":"430","target":"37","id":"4834"},{"source":"1386","target":"974","id":"4343"},{"source":"118","target":"65","id":"1297"},{"source":"1315","target":"296","id":"4483"},{"source":"778","target":"96","id":"1675"},{"source":"1670","target":"561","id":"6288"},{"source":"1341","target":"1015","id":"4089"},{"source":"171","target":"567","id":"5259"},{"source":"631","target":"49","id":"1213"},{"source":"778","target":"53","id":"1680"},{"source":"983","target":"216","id":"4693"},{"source":"1408","target":"224","id":"6201"},{"source":"1230","target":"170","id":"3583"},{"source":"1246","target":"99","id":"6104"},{"source":"526","target":"524","id":"3544"},{"source":"833","target":"280","id":"1886"},{"source":"538","target":"200","id":"4658"},{"source":"328","target":"46","id":"476"},{"source":"1647","target":"85","id":"6136"},{"source":"1523","target":"1123","id":"5254"},{"source":"272","target":"209","id":"4682"},{"source":"754","target":"137","id":"5441"},{"source":"1324","target":"79","id":"4646"},{"source":"199","target":"200","id":"3321"},{"source":"786","target":"323","id":"3949"},{"source":"1151","target":"1152","id":"3139"},{"source":"723","target":"724","id":"1482"},{"source":"481","target":"281","id":"800"},{"source":"1209","target":"431","id":"3473"},{"source":"96","target":"95","id":"1808"},{"source":"370","target":"334","id":"4583"},{"source":"351","target":"1","id":"4447"},{"source":"47","target":"281","id":"4426"},{"source":"876","target":"1150","id":"3129"},{"source":"1278","target":"1279","id":"3798"},{"source":"1365","target":"494","id":"4244"},{"source":"1705","target":"68","id":"6504"},{"source":"1661","target":"76","id":"6235"},{"source":"1436","target":"1","id":"4706"},{"source":"1631","target":"1033","id":"6044"},{"source":"335","target":"533","id":"1057"},{"source":"1103","target":"79","id":"2967"},{"source":"119","target":"289","id":"3172"},{"source":"1468","target":"67","id":"4863"},{"source":"837","target":"444","id":"1905"},{"source":"541","target":"540","id":"2742"},{"source":"370","target":"533","id":"4585"},{"source":"1190","target":"96","id":"5058"},{"source":"1646","target":"313","id":"6133"},{"source":"336","target":"281","id":"3146"},{"source":"1197","target":"852","id":"3429"},{"source":"1434","target":"429","id":"4950"},{"source":"356","target":"508","id":"851"},{"source":"1608","target":"79","id":"5879"},{"source":"1408","target":"79","id":"6200"},{"source":"1558","target":"82","id":"5448"},{"source":"1631","target":"1403","id":"6039"},{"source":"134","target":"139","id":"150"},{"source":"1296","target":"484","id":"3858"},{"source":"587","target":"513","id":"1103"},{"source":"891","target":"325","id":"2112"},{"source":"1285","target":"49","id":"3816"},{"source":"1249","target":"1607","id":"5909"},{"source":"740","target":"50","id":"1538"},{"source":"708","target":"568","id":"2874"},{"source":"716","target":"713","id":"1455"},{"source":"1140","target":"426","id":"3088"},{"source":"993","target":"292","id":"4526"},{"source":"1360","target":"513","id":"6660"},{"source":"1589","target":"53","id":"5707"},{"source":"1324","target":"318","id":"4645"},{"source":"992","target":"313","id":"2533"},{"source":"569","target":"65","id":"2200"},{"source":"472","target":"177","id":"786"},{"source":"410","target":"48","id":"677"},{"source":"829","target":"556","id":"1867"},{"source":"927","target":"150","id":"2297"},{"source":"1108","target":"74","id":"2994"},{"source":"811","target":"175","id":"1803"},{"source":"629","target":"628","id":"2682"},{"source":"315","target":"296","id":"3508"},{"source":"1144","target":"296","id":"3101"},{"source":"1663","target":"287","id":"6242"},{"source":"1552","target":"128","id":"5395"},{"source":"120","target":"582","id":"4022"},{"source":"725","target":"610","id":"1503"},{"source":"801","target":"51","id":"4218"},{"source":"1231","target":"230","id":"5530"},{"source":"1554","target":"53","id":"5418"},{"source":"595","target":"65","id":"1132"},{"source":"1683","target":"20","id":"6380"},{"source":"1661","target":"1662","id":"6234"},{"source":"759","target":"695","id":"5775"},{"source":"264","target":"403","id":"1569"},{"source":"789","target":"798","id":"3028"},{"source":"124","target":"125","id":"132"},{"source":"1374","target":"983","id":"4268"},{"source":"66","target":"53","id":"2607"},{"source":"301","target":"182","id":"387"},{"source":"859","target":"817","id":"1998"},{"source":"714","target":"502","id":"6648"},{"source":"1144","target":"381","id":"3103"},{"source":"730","target":"48","id":"1519"},{"source":"412","target":"1","id":"2645"},{"source":"1242","target":"569","id":"3607"},{"source":"1431","target":"607","id":"4666"},{"source":"901","target":"111","id":"2171"},{"source":"1575","target":"801","id":"5604"},{"source":"1365","target":"757","id":"4239"},{"source":"11","target":"12","id":"13"},{"source":"896","target":"128","id":"4819"},{"source":"30","target":"24","id":"5045"},{"source":"466","target":"1","id":"777"},{"source":"1341","target":"65","id":"4094"},{"source":"1594","target":"172","id":"5759"},{"source":"198","target":"203","id":"232"},{"source":"252","target":"53","id":"761"},{"source":"633","target":"50","id":"1229"},{"source":"463","target":"177","id":"2634"},{"source":"1008","target":"344","id":"5692"},{"source":"684","target":"1","id":"1375"},{"source":"904","target":"567","id":"2206"},{"source":"1404","target":"272","id":"4536"},{"source":"366","target":"65","id":"5457"},{"source":"1015","target":"1","id":"3680"},{"source":"535","target":"533","id":"2467"},{"source":"249","target":"252","id":"290"},{"source":"393","target":"201","id":"643"},{"source":"1597","target":"409","id":"5784"},{"source":"268","target":"271","id":"315"},{"source":"722","target":"96","id":"1477"},{"source":"50","target":"105","id":"5477"},{"source":"53","target":"79","id":"1112"},{"source":"918","target":"919","id":"2261"},{"source":"195","target":"272","id":"5389"},{"source":"691","target":"692","id":"1394"},{"source":"1082","target":"367","id":"6572"},{"source":"484","target":"119","id":"5590"},{"source":"317","target":"325","id":"4545"},{"source":"146","target":"161","id":"1540"},{"source":"978","target":"979","id":"2504"},{"source":"1626","target":"79","id":"6010"},{"source":"1536","target":"708","id":"5288"},{"source":"421","target":"191","id":"3689"},{"source":"279","target":"49","id":"500"},{"source":"720","target":"79","id":"3511"},{"source":"359","target":"79","id":"554"},{"source":"1228","target":"1229","id":"3579"},{"source":"1661","target":"453","id":"6230"},{"source":"66","target":"61","id":"2606"},{"source":"943","target":"498","id":"2359"},{"source":"349","target":"133","id":"6279"},{"source":"370","target":"281","id":"4582"},{"source":"665","target":"666","id":"1329"},{"source":"1503","target":"1","id":"5105"},{"source":"459","target":"53","id":"764"},{"source":"1485","target":"120","id":"5004"},{"source":"980","target":"365","id":"2507"},{"source":"631","target":"50","id":"1214"},{"source":"438","target":"264","id":"1564"},{"source":"1620","target":"76","id":"5966"},{"source":"1500","target":"705","id":"5098"},{"source":"26","target":"253","id":"2881"},{"source":"707","target":"769","id":"1630"},{"source":"319","target":"182","id":"3897"},{"source":"944","target":"607","id":"2364"},{"source":"640","target":"1140","id":"5319"},{"source":"355","target":"712","id":"4008"},{"source":"902","target":"65","id":"3166"},{"source":"643","target":"68","id":"1267"},{"source":"1051","target":"96","id":"2759"},{"source":"1136","target":"600","id":"4389"},{"source":"744","target":"67","id":"1562"},{"source":"1677","target":"374","id":"6358"},{"source":"1296","target":"48","id":"3863"},{"source":"1509","target":"374","id":"5198"},{"source":"433","target":"434","id":"711"},{"source":"460","target":"515","id":"1162"},{"source":"542","target":"1","id":"933"},{"source":"357","target":"356","id":"918"},{"source":"625","target":"177","id":"1207"},{"source":"121","target":"122","id":"128"},{"source":"50","target":"66","id":"5474"},{"source":"1443","target":"68","id":"4720"},{"source":"1415","target":"979","id":"4535"},{"source":"517","target":"323","id":"3056"},{"source":"1084","target":"259","id":"2869"},{"source":"1142","target":"1718","id":"6621"},{"source":"1703","target":"1103","id":"6494"},{"source":"275","target":"270","id":"4322"},{"source":"178","target":"549","id":"1243"},{"source":"716","target":"502","id":"1453"},{"source":"264","target":"266","id":"1572"},{"source":"1264","target":"647","id":"3713"},{"source":"1435","target":"344","id":"4698"},{"source":"881","target":"498","id":"2090"},{"source":"1048","target":"539","id":"2744"},{"source":"1717","target":"203","id":"6622"},{"source":"773","target":"708","id":"1649"},{"source":"809","target":"61","id":"1800"},{"source":"1469","target":"510","id":"4870"},{"source":"1374","target":"53","id":"4265"},{"source":"492","target":"217","id":"817"},{"source":"543","target":"537","id":"939"},{"source":"165","target":"167","id":"187"},{"source":"1011","target":"1013","id":"2586"},{"source":"1320","target":"1322","id":"3996"},{"source":"495","target":"82","id":"6521"},{"source":"797","target":"397","id":"1749"},{"source":"281","target":"335","id":"3079"},{"source":"35","target":"273","id":"418"},{"source":"1298","target":"411","id":"3871"},{"source":"724","target":"79","id":"2831"},{"source":"852","target":"185","id":"3254"},{"source":"775","target":"1","id":"1674"},{"source":"914","target":"104","id":"2247"},{"source":"957","target":"961","id":"2429"},{"source":"1650","target":"532","id":"6162"},{"source":"779","target":"120","id":"1689"},{"source":"501","target":"50","id":"833"},{"source":"888","target":"889","id":"4032"},{"source":"54","target":"57","id":"52"},{"source":"277","target":"185","id":"339"},{"source":"912","target":"367","id":"2861"},{"source":"45","target":"311","id":"3231"},{"source":"1336","target":"53","id":"4062"},{"source":"1245","target":"690","id":"3625"},{"source":"193","target":"37","id":"222"},{"source":"1656","target":"1160","id":"6199"},{"source":"65","target":"67","id":"2125"},{"source":"53","target":"592","id":"1117"},{"source":"799","target":"370","id":"1761"},{"source":"750","target":"753","id":"1586"},{"source":"105","target":"64","id":"5381"},{"source":"1368","target":"1096","id":"4252"},{"source":"319","target":"79","id":"3895"},{"source":"1702","target":"1704","id":"6486"},{"source":"482","target":"600","id":"3842"},{"source":"1362","target":"591","id":"4222"},{"source":"779","target":"175","id":"1685"},{"source":"1119","target":"53","id":"6252"},{"source":"1332","target":"53","id":"4046"},{"source":"1352","target":"76","id":"4163"},{"source":"634","target":"636","id":"1235"},{"source":"181","target":"325","id":"3524"},{"source":"1280","target":"494","id":"3801"},{"source":"397","target":"51","id":"3910"},{"source":"837","target":"781","id":"1906"},{"source":"1285","target":"51","id":"3818"},{"source":"465","target":"368","id":"953"},{"source":"1353","target":"749","id":"4169"},{"source":"1694","target":"966","id":"6422"},{"source":"532","target":"49","id":"927"},{"source":"348","target":"1429","id":"4623"},{"source":"327","target":"306","id":"459"},{"source":"183","target":"79","id":"5118"},{"source":"1561","target":"119","id":"6509"},{"source":"1107","target":"62","id":"2983"},{"source":"487","target":"198","id":"812"},{"source":"1670","target":"74","id":"6282"},{"source":"153","target":"379","id":"2229"},{"source":"1279","target":"1249","id":"5631"},{"source":"68","target":"109","id":"108"},{"source":"135","target":"572","id":"1040"},{"source":"1481","target":"440","id":"4983"},{"source":"1701","target":"68","id":"6477"},{"source":"330","target":"181","id":"485"},{"source":"266","target":"403","id":"3994"},{"source":"483","target":"1308","id":"3923"},{"source":"622","target":"182","id":"4460"},{"source":"1706","target":"33","id":"6524"},{"source":"156","target":"82","id":"178"},{"source":"872","target":"150","id":"2052"},{"source":"263","target":"264","id":"307"},{"source":"383","target":"259","id":"634"},{"source":"664","target":"663","id":"3704"},{"source":"1091","target":"408","id":"2909"},{"source":"626","target":"177","id":"3225"},{"source":"1145","target":"20","id":"3111"},{"source":"795","target":"796","id":"1746"},{"source":"481","target":"484","id":"804"},{"source":"885","target":"79","id":"4004"},{"source":"1550","target":"915","id":"5373"},{"source":"689","target":"53","id":"6108"},{"source":"551","target":"167","id":"969"},{"source":"1570","target":"97","id":"5528"},{"source":"1082","target":"911","id":"6568"},{"source":"1339","target":"975","id":"4077"},{"source":"1294","target":"61","id":"3847"},{"source":"409","target":"200","id":"4651"},{"source":"716","target":"128","id":"1457"},{"source":"319","target":"296","id":"3893"},{"source":"1468","target":"65","id":"4862"},{"source":"199","target":"411","id":"3319"},{"source":"492","target":"128","id":"815"},{"source":"296","target":"319","id":"430"},{"source":"937","target":"698","id":"2341"},{"source":"976","target":"876","id":"3131"},{"source":"1594","target":"109","id":"5758"},{"source":"544","target":"1233","id":"6112"},{"source":"594","target":"53","id":"4875"},{"source":"927","target":"650","id":"2296"},{"source":"1452","target":"412","id":"4752"},{"source":"335","target":"574","id":"1053"},{"source":"1212","target":"82","id":"3481"},{"source":"1041","target":"598","id":"2706"},{"source":"26","target":"25","id":"2882"},{"source":"747","target":"20","id":"3776"},{"source":"869","target":"232","id":"2023"},{"source":"1656","target":"65","id":"6196"},{"source":"145","target":"82","id":"1000"},{"source":"1383","target":"185","id":"4317"},{"source":"1401","target":"695","id":"4420"},{"source":"294","target":"377","id":"903"},{"source":"69","target":"74","id":"68"},{"source":"44","target":"52","id":"48"},{"source":"643","target":"53","id":"1268"},{"source":"369","target":"47","id":"574"},{"source":"901","target":"68","id":"2173"},{"source":"322","target":"1311","id":"3942"},{"source":"725","target":"608","id":"1504"},{"source":"388","target":"537","id":"2392"},{"source":"1636","target":"1036","id":"6067"},{"source":"1070","target":"732","id":"2821"},{"source":"58","target":"59","id":"53"},{"source":"808","target":"409","id":"1793"},{"source":"550","target":"65","id":"963"},{"source":"884","target":"468","id":"2095"},{"source":"778","target":"84","id":"1681"},{"source":"694","target":"695","id":"1406"},{"source":"1288","target":"219","id":"3826"},{"source":"214","target":"215","id":"242"},{"source":"288","target":"68","id":"364"},{"source":"658","target":"659","id":"1319"},{"source":"785","target":"322","id":"1713"},{"source":"1643","target":"863","id":"6115"},{"source":"533","target":"1122","id":"6085"},{"source":"567","target":"428","id":"2722"},{"source":"1334","target":"401","id":"4054"},{"source":"1327","target":"567","id":"5873"},{"source":"905","target":"907","id":"2217"},{"source":"245","target":"131","id":"1729"},{"source":"750","target":"79","id":"1581"},{"source":"1040","target":"1034","id":"2696"},{"source":"431","target":"50","id":"708"},{"source":"1540","target":"344","id":"5308"},{"source":"72","target":"73","id":"1021"},{"source":"1397","target":"68","id":"4407"},{"source":"860","target":"348","id":"6118"},{"source":"1519","target":"607","id":"5243"},{"source":"387","target":"48","id":"637"},{"source":"676","target":"567","id":"1359"},{"source":"415","target":"416","id":"3642"},{"source":"295","target":"79","id":"3181"},{"source":"1616","target":"1130","id":"5947"},{"source":"262","target":"25","id":"5977"},{"source":"928","target":"150","id":"6079"},{"source":"1643","target":"861","id":"6116"},{"source":"830","target":"556","id":"1877"},{"source":"753","target":"185","id":"5133"},{"source":"688","target":"25","id":"1655"},{"source":"1432","target":"444","id":"4679"},{"source":"1198","target":"498","id":"3436"},{"source":"912","target":"307","id":"2858"},{"source":"290","target":"50","id":"1856"},{"source":"1456","target":"607","id":"4775"},{"source":"1632","target":"168","id":"6052"},{"source":"603","target":"166","id":"1427"},{"source":"1558","target":"1","id":"5447"},{"source":"1318","target":"1133","id":"3970"},{"source":"183","target":"325","id":"5121"},{"source":"1222","target":"79","id":"3533"},{"source":"577","target":"519","id":"4397"},{"source":"993","target":"995","id":"4527"},{"source":"294","target":"185","id":"904"},{"source":"1122","target":"335","id":"3043"},{"source":"182","target":"79","id":"4469"},{"source":"1161","target":"65","id":"3196"},{"source":"939","target":"167","id":"2350"},{"source":"569","target":"427","id":"2197"},{"source":"333","target":"279","id":"494"},{"source":"381","target":"185","id":"614"},{"source":"944","target":"49","id":"2368"},{"source":"965","target":"109","id":"2444"},{"source":"891","target":"51","id":"2114"},{"source":"843","target":"85","id":"1925"},{"source":"1179","target":"336","id":"3306"},{"source":"1705","target":"624","id":"6501"},{"source":"425","target":"427","id":"698"},{"source":"437","target":"423","id":"1314"},{"source":"1123","target":"1137","id":"3084"},{"source":"1620","target":"1111","id":"5963"},{"source":"1250","target":"301","id":"3634"},{"source":"1405","target":"1098","id":"4453"},{"source":"1250","target":"1253","id":"3640"},{"source":"1091","target":"65","id":"2912"},{"source":"753","target":"852","id":"5132"},{"source":"1696","target":"924","id":"6430"},{"source":"611","target":"287","id":"1180"},{"source":"382","target":"282","id":"622"},{"source":"285","target":"63","id":"352"},{"source":"1250","target":"1252","id":"3639"},{"source":"1298","target":"280","id":"3868"},{"source":"395","target":"76","id":"647"},{"source":"510","target":"555","id":"6332"},{"source":"797","target":"49","id":"1753"},{"source":"1349","target":"79","id":"4142"},{"source":"719","target":"721","id":"1470"},{"source":"1644","target":"963","id":"6123"},{"source":"1114","target":"1115","id":"3059"},{"source":"868","target":"498","id":"2019"},{"source":"1402","target":"206","id":"5838"},{"source":"472","target":"474","id":"784"},{"source":"589","target":"267","id":"1662"},{"source":"869","target":"132","id":"2024"},{"source":"268","target":"40","id":"317"},{"source":"1327","target":"422","id":"5868"},{"source":"1330","target":"662","id":"4036"},{"source":"971","target":"185","id":"2475"},{"source":"375","target":"363","id":"596"},{"source":"902","target":"131","id":"3168"},{"source":"142","target":"147","id":"167"},{"source":"1170","target":"988","id":"3270"},{"source":"1592","target":"101","id":"5745"},{"source":"1159","target":"238","id":"3185"},{"source":"1479","target":"391","id":"4975"},{"source":"904","target":"104","id":"2205"},{"source":"838","target":"281","id":"2454"},{"source":"208","target":"204","id":"5842"},{"source":"363","target":"64","id":"558"},{"source":"1457","target":"370","id":"4787"},{"source":"1657","target":"667","id":"6203"},{"source":"1681","target":"1682","id":"6379"},{"source":"855","target":"296","id":"1973"},{"source":"1404","target":"37","id":"4539"},{"source":"1216","target":"1217","id":"3494"},{"source":"1620","target":"849","id":"5967"},{"source":"1712","target":"302","id":"6598"},{"source":"104","target":"597","id":"2210"},{"source":"1712","target":"303","id":"6591"},{"source":"702","target":"541","id":"3884"},{"source":"1052","target":"206","id":"2766"},{"source":"1543","target":"109","id":"5340"},{"source":"258","target":"570","id":"1306"},{"source":"118","target":"131","id":"1299"},{"source":"192","target":"188","id":"213"},{"source":"1567","target":"571","id":"5503"},{"source":"1608","target":"148","id":"5878"},{"source":"1172","target":"455","id":"3275"},{"source":"223","target":"225","id":"255"},{"source":"411","target":"48","id":"1785"},{"source":"301","target":"302","id":"388"},{"source":"1652","target":"497","id":"6181"},{"source":"886","target":"883","id":"2103"},{"source":"1500","target":"958","id":"5099"},{"source":"887","target":"889","id":"2108"},{"source":"23","target":"25","id":"5803"},{"source":"1184","target":"1185","id":"3347"},{"source":"366","target":"560","id":"5455"},{"source":"770","target":"707","id":"5552"},{"source":"438","target":"202","id":"1567"},{"source":"1629","target":"547","id":"6025"},{"source":"846","target":"883","id":"5689"},{"source":"1189","target":"76","id":"3392"},{"source":"364","target":"316","id":"583"},{"source":"1484","target":"663","id":"4993"},{"source":"1223","target":"617","id":"3556"},{"source":"843","target":"711","id":"1923"},{"source":"249","target":"104","id":"286"},{"source":"143","target":"378","id":"609"},{"source":"1016","target":"66","id":"2592"},{"source":"1577","target":"1135","id":"5620"},{"source":"1314","target":"297","id":"4448"},{"source":"864","target":"53","id":"2008"},{"source":"1411","target":"1124","id":"4509"},{"source":"1571","target":"310","id":"5532"},{"source":"1665","target":"1666","id":"6272"},{"source":"65","target":"64","id":"2131"},{"source":"439","target":"441","id":"718"},{"source":"1066","target":"1062","id":"2804"},{"source":"519","target":"577","id":"1071"},{"source":"1175","target":"284","id":"3325"},{"source":"479","target":"1066","id":"4297"},{"source":"105","target":"592","id":"5384"},{"source":"1098","target":"1094","id":"2944"},{"source":"1459","target":"352","id":"4801"},{"source":"789","target":"49","id":"3037"},{"source":"1495","target":"806","id":"5080"},{"source":"458","target":"697","id":"5372"},{"source":"1372","target":"579","id":"4261"},{"source":"852","target":"46","id":"3252"},{"source":"1610","target":"5","id":"5887"},{"source":"1120","target":"1121","id":"3038"},{"source":"130","target":"131","id":"141"},{"source":"1530","target":"236","id":"5276"},{"source":"1672","target":"434","id":"6294"},{"source":"1621","target":"1386","id":"5982"},{"source":"206","target":"272","id":"2688"},{"source":"1044","target":"1046","id":"2728"},{"source":"243","target":"244","id":"279"},{"source":"1277","target":"335","id":"3793"},{"source":"895","target":"242","id":"2141"},{"source":"585","target":"110","id":"5577"},{"source":"727","target":"50","id":"1513"},{"source":"1672","target":"897","id":"6292"},{"source":"333","target":"335","id":"497"},{"source":"1615","target":"1282","id":"5925"},{"source":"1506","target":"1","id":"5835"},{"source":"1426","target":"517","id":"4593"},{"source":"1250","target":"294","id":"3635"},{"source":"650","target":"443","id":"1283"},{"source":"1267","target":"532","id":"3739"},{"source":"1689","target":"380","id":"6403"},{"source":"1593","target":"437","id":"5750"},{"source":"260","target":"261","id":"303"},{"source":"1329","target":"128","id":"5601"},{"source":"268","target":"273","id":"318"},{"source":"486","target":"313","id":"2502"},{"source":"65","target":"93","id":"2132"},{"source":"333","target":"334","id":"491"},{"source":"640","target":"642","id":"5322"},{"source":"262","target":"211","id":"5978"},{"source":"873","target":"65","id":"2055"},{"source":"677","target":"582","id":"1364"},{"source":"500","target":"228","id":"5795"},{"source":"947","target":"155","id":"2402"},{"source":"375","target":"51","id":"602"},{"source":"651","target":"570","id":"1303"},{"source":"1341","target":"1340","id":"4087"},{"source":"523","target":"294","id":"909"},{"source":"1209","target":"667","id":"3470"},{"source":"1351","target":"1138","id":"4160"},{"source":"1214","target":"94","id":"3484"},{"source":"961","target":"962","id":"4578"},{"source":"60","target":"61","id":"54"},{"source":"1134","target":"166","id":"3072"},{"source":"1582","target":"1580","id":"5648"},{"source":"1509","target":"1293","id":"5193"},{"source":"970","target":"82","id":"3096"},{"source":"592","target":"105","id":"4817"},{"source":"535","target":"543","id":"2463"},{"source":"328","target":"182","id":"477"},{"source":"1663","target":"667","id":"6241"},{"source":"156","target":"109","id":"177"},{"source":"1376","target":"1377","id":"4278"},{"source":"1658","target":"979","id":"6217"},{"source":"1070","target":"262","id":"2822"},{"source":"1363","target":"53","id":"4236"},{"source":"267","target":"113","id":"4437"},{"source":"1011","target":"1014","id":"2587"},{"source":"1071","target":"262","id":"2838"},{"source":"1597","target":"634","id":"5780"},{"source":"375","target":"113","id":"598"},{"source":"509","target":"61","id":"853"},{"source":"535","target":"364","id":"2461"},{"source":"75","target":"77","id":"70"},{"source":"410","target":"53","id":"673"},{"source":"608","target":"50","id":"1496"},{"source":"1038","target":"1037","id":"5030"},{"source":"1156","target":"68","id":"3156"},{"source":"326","target":"306","id":"465"},{"source":"1201","target":"1003","id":"4996"},{"source":"1543","target":"65","id":"5336"},{"source":"1152","target":"1314","id":"4497"},{"source":"459","target":"366","id":"770"},{"source":"117","target":"119","id":"123"},{"source":"668","target":"378","id":"1334"},{"source":"463","target":"1","id":"2638"},{"source":"1595","target":"1394","id":"5772"},{"source":"497","target":"109","id":"2625"},{"source":"944","target":"339","id":"2365"},{"source":"268","target":"36","id":"313"},{"source":"1161","target":"50","id":"3201"},{"source":"320","target":"322","id":"437"},{"source":"1652","target":"53","id":"6188"},{"source":"1629","target":"549","id":"6029"},{"source":"815","target":"607","id":"1820"},{"source":"252","target":"131","id":"756"},{"source":"1372","target":"167","id":"4259"},{"source":"781","target":"50","id":"2787"},{"source":"1109","target":"463","id":"3003"},{"source":"1230","target":"1181","id":"3582"},{"source":"581","target":"883","id":"4183"},{"source":"93","target":"64","id":"2158"},{"source":"550","target":"93","id":"964"},{"source":"1258","target":"1259","id":"3669"},{"source":"1705","target":"53","id":"6506"},{"source":"172","target":"101","id":"5735"},{"source":"69","target":"71","id":"65"},{"source":"421","target":"292","id":"3686"},{"source":"760","target":"53","id":"1608"},{"source":"931","target":"170","id":"2313"},{"source":"592","target":"96","id":"4815"},{"source":"874","target":"104","id":"2065"},{"source":"1674","target":"53","id":"6309"},{"source":"300","target":"299","id":"3008"},{"source":"1326","target":"424","id":"4029"},{"source":"483","target":"801","id":"3926"},{"source":"1047","target":"463","id":"4330"},{"source":"1716","target":"1718","id":"6618"},{"source":"1327","target":"654","id":"5874"},{"source":"573","target":"335","id":"1045"},{"source":"1705","target":"1022","id":"6502"},{"source":"96","target":"812","id":"1809"},{"source":"1530","target":"1018","id":"5277"},{"source":"625","target":"463","id":"1209"},{"source":"402","target":"82","id":"653"},{"source":"88","target":"79","id":"80"},{"source":"925","target":"119","id":"2286"},{"source":"778","target":"175","id":"1678"},{"source":"860","target":"113","id":"6120"},{"source":"352","target":"353","id":"536"},{"source":"966","target":"256","id":"5823"},{"source":"1205","target":"571","id":"3457"},{"source":"224","target":"225","id":"2828"},{"source":"729","target":"229","id":"1514"},{"source":"859","target":"860","id":"1995"},{"source":"1421","target":"311","id":"4567"},{"source":"9","target":"1","id":"10"},{"source":"547","target":"177","id":"945"},{"source":"339","target":"53","id":"4209"},{"source":"1555","target":"644","id":"5425"},{"source":"328","target":"185","id":"478"},{"source":"1156","target":"65","id":"3162"},{"source":"694","target":"49","id":"1407"},{"source":"552","target":"287","id":"4895"},{"source":"502","target":"444","id":"5075"},{"source":"1302","target":"1300","id":"6400"},{"source":"1589","target":"118","id":"5708"},{"source":"1577","target":"715","id":"5617"},{"source":"1140","target":"82","id":"3090"},{"source":"675","target":"280","id":"6633"},{"source":"1401","target":"49","id":"4421"},{"source":"924","target":"1542","id":"5328"},{"source":"468","target":"159","id":"778"},{"source":"1169","target":"824","id":"3262"},{"source":"38","target":"275","id":"1287"},{"source":"1493","target":"262","id":"5056"},{"source":"1180","target":"411","id":"3315"},{"source":"1552","target":"217","id":"5397"},{"source":"1428","target":"196","id":"4617"},{"source":"1246","target":"53","id":"6105"},{"source":"1480","target":"1316","id":"4979"},{"source":"34","target":"38","id":"36"},{"source":"1012","target":"53","id":"5569"},{"source":"363","target":"67","id":"560"},{"source":"134","target":"140","id":"154"},{"source":"1652","target":"236","id":"6179"},{"source":"1294","target":"868","id":"3849"},{"source":"161","target":"435","id":"5310"},{"source":"375","target":"116","id":"603"},{"source":"1224","target":"215","id":"3565"},{"source":"903","target":"93","id":"2179"},{"source":"139","target":"135","id":"157"},{"source":"359","target":"177","id":"553"},{"source":"1532","target":"94","id":"5279"},{"source":"1135","target":"857","id":"3077"},{"source":"1683","target":"109","id":"6382"},{"source":"801","target":"48","id":"4215"},{"source":"857","target":"858","id":"2017"},{"source":"497","target":"166","id":"2626"},{"source":"1625","target":"934","id":"6006"},{"source":"1582","target":"1292","id":"5646"},{"source":"1343","target":"200","id":"4111"},{"source":"170","target":"915","id":"4792"},{"source":"1292","target":"1580","id":"5660"},{"source":"1469","target":"698","id":"4871"},{"source":"925","target":"552","id":"2288"},{"source":"1163","target":"424","id":"3215"},{"source":"747","target":"170","id":"3782"},{"source":"133","target":"138","id":"148"},{"source":"1455","target":"65","id":"4764"},{"source":"1397","target":"155","id":"4406"},{"source":"742","target":"989","id":"5147"},{"source":"532","target":"538","id":"926"},{"source":"935","target":"109","id":"4797"},{"source":"671","target":"131","id":"1348"},{"source":"1604","target":"82","id":"5848"},{"source":"125","target":"123","id":"133"},{"source":"1368","target":"1097","id":"4253"},{"source":"165","target":"168","id":"188"},{"source":"1525","target":"1526","id":"5263"},{"source":"1573","target":"48","id":"5543"},{"source":"703","target":"704","id":"3889"},{"source":"1688","target":"1","id":"6472"},{"source":"1713","target":"272","id":"6601"},{"source":"944","target":"715","id":"2363"},{"source":"1276","target":"281","id":"3773"},{"source":"595","target":"109","id":"1137"},{"source":"1182","target":"200","id":"3335"},{"source":"1086","target":"105","id":"2896"},{"source":"1472","target":"156","id":"4920"},{"source":"1625","target":"164","id":"6008"},{"source":"1004","target":"444","id":"2568"},{"source":"1624","target":"159","id":"5990"},{"source":"1588","target":"498","id":"5699"},{"source":"1608","target":"803","id":"5881"},{"source":"1650","target":"1292","id":"6160"},{"source":"93","target":"82","id":"2164"},{"source":"288","target":"51","id":"363"},{"source":"1083","target":"1082","id":"5931"},{"source":"1097","target":"312","id":"2954"},{"source":"1202","target":"648","id":"5000"},{"source":"52","target":"68","id":"5765"},{"source":"63","target":"65","id":"995"},{"source":"318","target":"296","id":"531"},{"source":"628","target":"629","id":"4153"},{"source":"1675","target":"68","id":"6323"},{"source":"1345","target":"182","id":"4119"},{"source":"1350","target":"906","id":"4147"},{"source":"1592","target":"567","id":"5744"},{"source":"1276","target":"335","id":"3771"},{"source":"393","target":"394","id":"644"},{"source":"24","target":"947","id":"5815"},{"source":"1652","target":"284","id":"6185"},{"source":"242","target":"153","id":"2226"},{"source":"273","target":"274","id":"5563"},{"source":"901","target":"451","id":"2165"},{"source":"1180","target":"406","id":"3312"},{"source":"1670","target":"72","id":"6287"},{"source":"788","target":"48","id":"1720"},{"source":"1051","target":"949","id":"2760"},{"source":"816","target":"498","id":"1992"},{"source":"299","target":"361","id":"1248"},{"source":"908","target":"907","id":"3514"},{"source":"1052","target":"209","id":"2772"},{"source":"472","target":"79","id":"787"},{"source":"334","target":"1451","id":"4742"},{"source":"1537","target":"458","id":"5298"},{"source":"741","target":"280","id":"1543"},{"source":"589","target":"513","id":"1666"},{"source":"39","target":"313","id":"4305"},{"source":"825","target":"490","id":"5853"},{"source":"1017","target":"457","id":"3979"},{"source":"369","target":"267","id":"575"},{"source":"1663","target":"455","id":"6239"},{"source":"1118","target":"166","id":"3023"},{"source":"295","target":"292","id":"3178"},{"source":"252","target":"104","id":"757"},{"source":"1167","target":"1157","id":"3255"},{"source":"1224","target":"495","id":"3567"},{"source":"1713","target":"209","id":"6604"},{"source":"1420","target":"280","id":"4558"},{"source":"1381","target":"1152","id":"4291"},{"source":"695","target":"731","id":"4955"},{"source":"1226","target":"1197","id":"3573"},{"source":"745","target":"746","id":"1575"},{"source":"250","target":"252","id":"3363"},{"source":"1499","target":"606","id":"5092"},{"source":"1618","target":"281","id":"5955"},{"source":"598","target":"597","id":"1982"},{"source":"182","target":"296","id":"4468"},{"source":"640","target":"174","id":"5317"},{"source":"407","target":"216","id":"664"},{"source":"637","target":"79","id":"1251"},{"source":"132","target":"1442","id":"5346"},{"source":"315","target":"298","id":"3507"},{"source":"778","target":"65","id":"1676"},{"source":"1477","target":"424","id":"4938"},{"source":"780","target":"174","id":"1691"},{"source":"201","target":"391","id":"4758"},{"source":"755","target":"368","id":"1592"},{"source":"1455","target":"62","id":"4769"},{"source":"904","target":"131","id":"2203"},{"source":"918","target":"65","id":"2257"},{"source":"361","target":"211","id":"1958"},{"source":"1487","target":"1488","id":"5016"},{"source":"6","target":"5","id":"8"},{"source":"1307","target":"167","id":"3919"},{"source":"461","target":"118","id":"2620"},{"source":"1312","target":"296","id":"3931"},{"source":"1334","target":"1126","id":"4052"},{"source":"609","target":"161","id":"3066"},{"source":"775","target":"777","id":"1673"},{"source":"528","target":"526","id":"3553"},{"source":"322","target":"785","id":"3941"},{"source":"283","target":"281","id":"6350"},{"source":"1056","target":"1057","id":"2778"},{"source":"118","target":"567","id":"1292"},{"source":"1478","target":"456","id":"4966"},{"source":"1556","target":"1557","id":"5433"},{"source":"1034","target":"272","id":"2677"},{"source":"1264","target":"1","id":"3714"},{"source":"633","target":"104","id":"1227"},{"source":"580","target":"577","id":"1075"},{"source":"303","target":"182","id":"391"},{"source":"950","target":"79","id":"2398"},{"source":"1347","target":"1208","id":"4131"},{"source":"92","target":"65","id":"86"},{"source":"893","target":"181","id":"2559"},{"source":"298","target":"300","id":"381"},{"source":"1588","target":"1379","id":"5701"},{"source":"1025","target":"258","id":"4629"},{"source":"1119","target":"49","id":"6258"},{"source":"793","target":"53","id":"2964"},{"source":"279","target":"336","id":"507"},{"source":"1060","target":"1114","id":"3016"},{"source":"866","target":"1018","id":"2612"},{"source":"583","target":"577","id":"1088"},{"source":"526","target":"528","id":"3543"},{"source":"67","target":"68","id":"2709"},{"source":"1102","target":"638","id":"3500"},{"source":"1363","target":"48","id":"4230"},{"source":"1633","target":"435","id":"6060"},{"source":"326","target":"315","id":"462"},{"source":"794","target":"50","id":"1741"},{"source":"745","target":"747","id":"1576"},{"source":"837","target":"839","id":"1907"},{"source":"681","target":"106","id":"1370"},{"source":"1585","target":"1","id":"5673"},{"source":"496","target":"166","id":"821"},{"source":"912","target":"653","id":"2859"},{"source":"176","target":"177","id":"196"},{"source":"1266","target":"806","id":"3730"},{"source":"1231","target":"354","id":"5531"},{"source":"510","target":"436","id":"6334"},{"source":"1434","target":"272","id":"4949"},{"source":"1471","target":"65","id":"4909"},{"source":"881","target":"883","id":"2085"},{"source":"463","target":"906","id":"2637"},{"source":"973","target":"1","id":"2479"},{"source":"267","target":"119","id":"4439"},{"source":"272","target":"1434","id":"4684"},{"source":"828","target":"65","id":"1862"},{"source":"1116","target":"1115","id":"5935"},{"source":"1323","target":"885","id":"5958"},{"source":"192","target":"191","id":"215"},{"source":"1478","target":"582","id":"4964"},{"source":"633","target":"635","id":"1228"},{"source":"1032","target":"82","id":"2665"},{"source":"745","target":"749","id":"1579"},{"source":"823","target":"82","id":"1845"},{"source":"1498","target":"781","id":"5083"},{"source":"727","target":"728","id":"1512"},{"source":"1065","target":"1063","id":"2801"},{"source":"728","target":"114","id":"5453"},{"source":"1226","target":"613","id":"3571"},{"source":"868","target":"109","id":"2020"},{"source":"1636","target":"1297","id":"6068"},{"source":"889","target":"888","id":"4403"},{"source":"884","target":"53","id":"2096"},{"source":"1244","target":"49","id":"3616"},{"source":"1483","target":"1003","id":"4989"},{"source":"641","target":"642","id":"5324"},{"source":"808","target":"48","id":"1792"},{"source":"1319","target":"68","id":"3980"},{"source":"216","target":"1","id":"543"},{"source":"1198","target":"281","id":"3437"},{"source":"1169","target":"238","id":"3263"},{"source":"269","target":"37","id":"333"},{"source":"990","target":"950","id":"2531"},{"source":"256","target":"182","id":"5161"},{"source":"1470","target":"65","id":"4902"},{"source":"809","target":"279","id":"1798"},{"source":"35","target":"38","id":"415"},{"source":"938","target":"975","id":"2483"},{"source":"955","target":"335","id":"2423"},{"source":"607","target":"65","id":"1485"},{"source":"1396","target":"211","id":"4384"},{"source":"1210","target":"290","id":"6444"},{"source":"1571","target":"367","id":"5539"},{"source":"299","target":"177","id":"1246"},{"source":"1710","target":"122","id":"6555"},{"source":"1692","target":"1693","id":"6420"},{"source":"547","target":"548","id":"946"},{"source":"248","target":"1","id":"5349"},{"source":"671","target":"105","id":"1351"},{"source":"1477","target":"422","id":"4931"},{"source":"553","target":"68","id":"982"},{"source":"1626","target":"50","id":"6015"},{"source":"580","target":"379","id":"1082"},{"source":"393","target":"216","id":"645"},{"source":"461","target":"65","id":"2622"},{"source":"652","target":"653","id":"1309"},{"source":"900","target":"652","id":"2153"},{"source":"460","target":"608","id":"1164"},{"source":"1472","target":"158","id":"4921"},{"source":"1066","target":"79","id":"2802"},{"source":"833","target":"48","id":"1892"},{"source":"951","target":"287","id":"2409"},{"source":"1664","target":"618","id":"6248"},{"source":"865","target":"926","id":"2292"},{"source":"1258","target":"524","id":"3670"},{"source":"576","target":"582","id":"2375"},{"source":"619","target":"298","id":"6032"},{"source":"1236","target":"622","id":"3594"},{"source":"687","target":"65","id":"1384"},{"source":"1418","target":"758","id":"4556"},{"source":"249","target":"250","id":"287"},{"source":"520","target":"521","id":"897"},{"source":"368","target":"177","id":"3004"},{"source":"1011","target":"408","id":"2583"},{"source":"1359","target":"696","id":"4193"},{"source":"534","target":"532","id":"6540"},{"source":"615","target":"1039","id":"4335"},{"source":"1427","target":"65","id":"4609"},{"source":"514","target":"498","id":"890"},{"source":"1611","target":"1614","id":"5920"},{"source":"873","target":"874","id":"2054"},{"source":"1210","target":"1077","id":"6445"},{"source":"442","target":"445","id":"721"},{"source":"1117","target":"177","id":"3020"},{"source":"1658","target":"295","id":"6218"},{"source":"60","target":"68","id":"63"},{"source":"1492","target":"53","id":"5049"},{"source":"625","target":"626","id":"1204"},{"source":"36","target":"122","id":"445"},{"source":"296","target":"292","id":"433"},{"source":"441","target":"129","id":"4374"},{"source":"1278","target":"227","id":"3796"},{"source":"675","target":"512","id":"6634"},{"source":"1708","target":"49","id":"6542"},{"source":"1110","target":"1111","id":"3012"},{"source":"1341","target":"444","id":"4096"},{"source":"1663","target":"262","id":"6243"},{"source":"830","target":"237","id":"1874"},{"source":"1174","target":"1126","id":"3290"},{"source":"1104","target":"177","id":"2975"},{"source":"802","target":"79","id":"1767"},{"source":"957","target":"502","id":"2431"},{"source":"717","target":"502","id":"1458"},{"source":"367","target":"309","id":"4319"},{"source":"1495","target":"1474","id":"5081"},{"source":"1401","target":"279","id":"4417"},{"source":"1047","target":"207","id":"4332"},{"source":"1016","target":"1017","id":"2594"},{"source":"321","target":"296","id":"731"},{"source":"754","target":"185","id":"5440"},{"source":"397","target":"49","id":"3908"},{"source":"750","target":"754","id":"1587"},{"source":"383","target":"385","id":"628"},{"source":"929","target":"53","id":"2303"},{"source":"939","target":"466","id":"2347"},{"source":"48","target":"405","id":"4639"},{"source":"676","target":"674","id":"1360"},{"source":"904","target":"427","id":"2207"},{"source":"1673","target":"597","id":"6299"},{"source":"1664","target":"485","id":"6246"},{"source":"1163","target":"428","id":"3214"},{"source":"607","target":"515","id":"1488"},{"source":"1257","target":"1","id":"3661"},{"source":"965","target":"964","id":"2443"},{"source":"590","target":"116","id":"5174"},{"source":"82","target":"128","id":"6438"},{"source":"1083","target":"367","id":"5929"},{"source":"1122","target":"388","id":"3044"},{"source":"851","target":"312","id":"1962"},{"source":"1460","target":"1461","id":"4807"},{"source":"79","target":"638","id":"1256"},{"source":"1432","target":"1395","id":"4680"},{"source":"1097","target":"324","id":"2952"},{"source":"593","target":"82","id":"1128"},{"source":"509","target":"365","id":"856"},{"source":"310","target":"46","id":"407"},{"source":"470","target":"471","id":"780"},{"source":"1705","target":"174","id":"6499"},{"source":"1498","target":"567","id":"5086"},{"source":"672","target":"118","id":"5403"},{"source":"1129","target":"323","id":"4598"},{"source":"167","target":"698","id":"2340"},{"source":"1574","target":"65","id":"5560"},{"source":"335","target":"532","id":"1058"},{"source":"1571","target":"46","id":"5538"},{"source":"495","target":"493","id":"6519"},{"source":"377","target":"295","id":"2151"},{"source":"920","target":"646","id":"2263"},{"source":"881","target":"53","id":"2088"},{"source":"801","target":"956","id":"4211"},{"source":"411","target":"807","id":"1779"},{"source":"1084","target":"397","id":"2870"},{"source":"1203","target":"238","id":"3453"},{"source":"409","target":"405","id":"4649"},{"source":"1184","target":"133","id":"3349"},{"source":"568","target":"504","id":"1642"},{"source":"1124","target":"896","id":"4846"},{"source":"1663","target":"457","id":"6244"},{"source":"550","target":"53","id":"967"},{"source":"714","target":"444","id":"6654"},{"source":"1706","target":"493","id":"6523"},{"source":"1458","target":"170","id":"4796"},{"source":"504","target":"708","id":"1640"},{"source":"716","target":"714","id":"1456"},{"source":"1115","target":"1116","id":"3062"},{"source":"1718","target":"1121","id":"6629"},{"source":"1026","target":"1","id":"2649"},{"source":"342","target":"310","id":"519"},{"source":"549","target":"463","id":"1277"},{"source":"829","target":"101","id":"1873"},{"source":"1650","target":"535","id":"6163"},{"source":"373","target":"364","id":"589"},{"source":"400","target":"136","id":"2389"},{"source":"1589","target":"104","id":"5712"},{"source":"1591","target":"109","id":"5733"},{"source":"841","target":"48","id":"2446"},{"source":"22","target":"25","id":"25"},{"source":"971","target":"972","id":"2474"},{"source":"768","target":"504","id":"6392"},{"source":"1605","target":"567","id":"5857"},{"source":"48","target":"49","id":"4633"},{"source":"129","target":"82","id":"139"},{"source":"142","target":"51","id":"166"},{"source":"1455","target":"50","id":"4765"},{"source":"760","target":"65","id":"1609"},{"source":"939","target":"68","id":"2346"},{"source":"1455","target":"53","id":"4771"},{"source":"545","target":"1","id":"943"},{"source":"537","target":"533","id":"3334"},{"source":"520","target":"1","id":"898"},{"source":"1212","target":"175","id":"3483"},{"source":"1721","target":"166","id":"6669"},{"source":"795","target":"50","id":"1745"},{"source":"437","target":"655","id":"1316"},{"source":"1054","target":"79","id":"2773"},{"source":"490","target":"491","id":"813"},{"source":"308","target":"162","id":"567"},{"source":"302","target":"301","id":"5113"},{"source":"1048","target":"702","id":"2747"},{"source":"224","target":"223","id":"2825"},{"source":"527","target":"525","id":"3547"},{"source":"1702","target":"1646","id":"6484"},{"source":"750","target":"752","id":"1583"},{"source":"1428","target":"752","id":"4619"},{"source":"1457","target":"267","id":"4785"},{"source":"310","target":"185","id":"408"},{"source":"388","target":"533","id":"2394"},{"source":"986","target":"985","id":"2521"},{"source":"994","target":"166","id":"2539"},{"source":"250","target":"451","id":"3370"},{"source":"553","target":"67","id":"989"},{"source":"906","target":"177","id":"2219"},{"source":"321","target":"194","id":"734"},{"source":"669","target":"65","id":"1335"},{"source":"314","target":"317","id":"426"},{"source":"699","target":"700","id":"1416"},{"source":"912","target":"1082","id":"2862"},{"source":"838","target":"49","id":"2456"},{"source":"222","target":"97","id":"249"},{"source":"1573","target":"51","id":"5547"},{"source":"342","target":"182","id":"521"},{"source":"1249","target":"618","id":"5910"},{"source":"30","target":"25","id":"5042"},{"source":"1540","target":"1466","id":"5306"},{"source":"257","target":"238","id":"299"},{"source":"1409","target":"1248","id":"4503"},{"source":"862","target":"118","id":"2629"},{"source":"274","target":"269","id":"325"},{"source":"673","target":"541","id":"1354"},{"source":"1317","target":"391","id":"6497"},{"source":"1011","target":"53","id":"2584"},{"source":"1105","target":"53","id":"2979"},{"source":"929","target":"25","id":"2302"},{"source":"1720","target":"144","id":"6665"},{"source":"1120","target":"5","id":"3040"},{"source":"1543","target":"99","id":"5334"},{"source":"1325","target":"1113","id":"4011"},{"source":"1428","target":"137","id":"4616"},{"source":"1312","target":"786","id":"3936"},{"source":"510","target":"554","id":"6336"},{"source":"1420","target":"568","id":"4560"},{"source":"413","target":"418","id":"684"},{"source":"85","target":"128","id":"1930"},{"source":"161","target":"641","id":"5311"},{"source":"735","target":"120","id":"1531"},{"source":"1191","target":"408","id":"3403"},{"source":"939","target":"467","id":"2352"},{"source":"68","target":"65","id":"110"},{"source":"1573","target":"484","id":"5548"},{"source":"273","target":"38","id":"5566"},{"source":"977","target":"82","id":"2496"},{"source":"461","target":"591","id":"2619"},{"source":"1673","target":"498","id":"6302"},{"source":"1226","target":"296","id":"3574"},{"source":"105","target":"50","id":"5385"},{"source":"1397","target":"379","id":"4412"},{"source":"1536","target":"1165","id":"5290"},{"source":"411","target":"409","id":"1777"},{"source":"864","target":"66","id":"2011"},{"source":"250","target":"65","id":"3366"},{"source":"1290","target":"626","id":"3834"},{"source":"220","target":"221","id":"247"},{"source":"682","target":"640","id":"6168"},{"source":"453","target":"249","id":"1616"},{"source":"1076","target":"1078","id":"3697"},{"source":"1360","target":"119","id":"6658"},{"source":"92","target":"53","id":"84"},{"source":"483","target":"397","id":"3925"},{"source":"719","target":"141","id":"1472"},{"source":"334","target":"50","id":"4743"},{"source":"1025","target":"120","id":"4626"},{"source":"1599","target":"1526","id":"5792"},{"source":"1201","target":"159","id":"4998"},{"source":"205","target":"900","id":"2678"},{"source":"882","target":"253","id":"2884"},{"source":"268","target":"34","id":"319"},{"source":"245","target":"50","id":"1732"},{"source":"1186","target":"53","id":"3354"},{"source":"235","target":"53","id":"269"},{"source":"1342","target":"50","id":"4097"},{"source":"499","target":"500","id":"830"},{"source":"1644","target":"502","id":"6129"},{"source":"1618","target":"896","id":"5951"},{"source":"141","target":"79","id":"6211"},{"source":"118","target":"93","id":"1298"},{"source":"429","target":"207","id":"4691"},{"source":"515","target":"607","id":"1170"},{"source":"957","target":"960","id":"2428"},{"source":"1145","target":"61","id":"3113"},{"source":"1152","target":"417","id":"4498"},{"source":"723","target":"309","id":"1483"},{"source":"714","target":"85","id":"6652"},{"source":"279","target":"282","id":"498"},{"source":"1674","target":"104","id":"6314"},{"source":"398","target":"50","id":"5160"},{"source":"1122","target":"82","id":"3041"},{"source":"1660","target":"959","id":"6222"},{"source":"957","target":"962","id":"2432"},{"source":"1167","target":"852","id":"3256"},{"source":"1629","target":"463","id":"6024"},{"source":"187","target":"192","id":"216"},{"source":"1638","target":"367","id":"6563"},{"source":"1658","target":"1659","id":"6219"},{"source":"1672","target":"598","id":"6295"},{"source":"311","target":"224","id":"469"},{"source":"1082","target":"309","id":"6571"},{"source":"1672","target":"87","id":"6293"},{"source":"1082","target":"913","id":"6573"},{"source":"1637","target":"1638","id":"6077"},{"source":"373","target":"116","id":"587"},{"source":"1537","target":"109","id":"5299"},{"source":"1156","target":"515","id":"3161"},{"source":"891","target":"181","id":"2118"},{"source":"1278","target":"313","id":"3797"},{"source":"1689","target":"113","id":"6406"},{"source":"815","target":"403","id":"1819"},{"source":"346","target":"646","id":"1272"},{"source":"1165","target":"65","id":"5230"},{"source":"1665","target":"239","id":"6270"},{"source":"1690","target":"314","id":"6415"},{"source":"793","target":"170","id":"2966"},{"source":"574","target":"281","id":"1064"},{"source":"285","target":"286","id":"355"},{"source":"1301","target":"531","id":"6399"},{"source":"1515","target":"163","id":"6565"},{"source":"1341","target":"806","id":"4091"},{"source":"1536","target":"96","id":"5285"},{"source":"1134","target":"281","id":"3074"},{"source":"1071","target":"1075","id":"2836"},{"source":"1280","target":"759","id":"3804"},{"source":"977","target":"48","id":"2495"},{"source":"1104","target":"626","id":"2971"},{"source":"892","target":"185","id":"5145"},{"source":"219","target":"324","id":"449"},{"source":"437","target":"654","id":"1315"},{"source":"773","target":"768","id":"1651"},{"source":"1049","target":"567","id":"2755"},{"source":"1397","target":"1165","id":"4405"},{"source":"153","target":"120","id":"2228"},{"source":"61","target":"133","id":"870"},{"source":"819","target":"79","id":"1835"},{"source":"173","target":"95","id":"194"},{"source":"1336","target":"279","id":"4060"},{"source":"1084","target":"51","id":"2867"},{"source":"64","target":"65","id":"1826"},{"source":"329","target":"79","id":"3241"},{"source":"1254","target":"42","id":"3646"},{"source":"578","target":"68","id":"5677"},{"source":"671","target":"672","id":"1352"},{"source":"143","target":"120","id":"610"},{"source":"845","target":"707","id":"1935"},{"source":"786","target":"322","id":"3948"},{"source":"42","target":"283","id":"348"},{"source":"1360","target":"51","id":"6661"},{"source":"598","target":"104","id":"1984"},{"source":"843","target":"502","id":"1921"},{"source":"1429","target":"693","id":"4967"},{"source":"68","target":"53","id":"109"},{"source":"1016","target":"53","id":"2590"},{"source":"1316","target":"391","id":"4969"},{"source":"291","target":"295","id":"372"},{"source":"716","target":"444","id":"1452"},{"source":"823","target":"824","id":"1847"},{"source":"756","target":"53","id":"1601"},{"source":"49","target":"280","id":"5187"},{"source":"1637","target":"313","id":"6075"},{"source":"1513","target":"65","id":"5216"},{"source":"1479","target":"68","id":"4972"},{"source":"1615","target":"421","id":"5923"},{"source":"1148","target":"351","id":"3123"},{"source":"792","target":"61","id":"1725"},{"source":"394","target":"391","id":"4930"},{"source":"502","target":"870","id":"5077"},{"source":"42","target":"280","id":"342"},{"source":"1459","target":"50","id":"4798"},{"source":"937","target":"469","id":"2344"},{"source":"1594","target":"68","id":"5761"},{"source":"1313","target":"292","id":"3955"},{"source":"732","target":"1386","id":"5970"},{"source":"1087","target":"79","id":"5443"},{"source":"603","target":"411","id":"1424"},{"source":"513","target":"335","id":"5207"},{"source":"797","target":"405","id":"1748"},{"source":"1162","target":"120","id":"3221"},{"source":"326","target":"79","id":"466"},{"source":"1286","target":"1287","id":"3825"},{"source":"1696","target":"179","id":"6429"},{"source":"472","target":"464","id":"781"},{"source":"639","target":"554","id":"1258"},{"source":"329","target":"45","id":"3243"},{"source":"1273","target":"1","id":"3765"},{"source":"654","target":"656","id":"3421"},{"source":"1438","target":"1440","id":"4709"},{"source":"1707","target":"656","id":"6538"},{"source":"690","target":"163","id":"1388"},{"source":"689","target":"104","id":"6110"},{"source":"837","target":"495","id":"1910"},{"source":"1247","target":"1152","id":"3630"},{"source":"92","target":"67","id":"88"},{"source":"836","target":"490","id":"1900"},{"source":"345","target":"349","id":"528"},{"source":"425","target":"104","id":"699"},{"source":"197","target":"198","id":"226"},{"source":"1304","target":"444","id":"3899"},{"source":"714","target":"713","id":"6649"},{"source":"219","target":"79","id":"448"},{"source":"554","target":"510","id":"2050"},{"source":"426","target":"104","id":"1031"},{"source":"644","target":"645","id":"1551"},{"source":"1616","target":"1617","id":"5948"},{"source":"877","target":"107","id":"2071"},{"source":"922","target":"91","id":"2273"},{"source":"311","target":"46","id":"471"},{"source":"869","target":"85","id":"2028"},{"source":"244","target":"645","id":"1667"},{"source":"1276","target":"20","id":"3768"},{"source":"1626","target":"1627","id":"6014"},{"source":"914","target":"251","id":"2249"},{"source":"2","target":"3","id":"3"},{"source":"763","target":"764","id":"3441"},{"source":"422","target":"1","id":"694"},{"source":"118","target":"82","id":"1293"},{"source":"352","target":"166","id":"535"},{"source":"1421","target":"1422","id":"4571"},{"source":"133","target":"137","id":"147"},{"source":"741","target":"535","id":"1544"},{"source":"1658","target":"302","id":"6212"},{"source":"725","target":"104","id":"1500"},{"source":"1506","target":"296","id":"5834"},{"source":"1194","target":"607","id":"3410"},{"source":"233","target":"447","id":"1007"},{"source":"781","target":"131","id":"2784"},{"source":"1086","target":"132","id":"2895"},{"source":"51","target":"281","id":"5585"},{"source":"1263","target":"65","id":"3709"},{"source":"281","target":"1125","id":"3083"},{"source":"1492","target":"1493","id":"5051"},{"source":"1345","target":"370","id":"4120"},{"source":"337","target":"182","id":"515"},{"source":"814","target":"97","id":"1816"},{"source":"574","target":"409","id":"1066"},{"source":"1540","target":"409","id":"5305"},{"source":"54","target":"56","id":"51"},{"source":"1432","target":"607","id":"4677"},{"source":"1574","target":"68","id":"5557"},{"source":"1456","target":"53","id":"4774"},{"source":"1327","target":"109","id":"5876"},{"source":"117","target":"65","id":"121"},{"source":"1188","target":"250","id":"3384"},{"source":"514","target":"65","id":"881"},{"source":"1478","target":"68","id":"4960"},{"source":"260","target":"262","id":"305"},{"source":"289","target":"62","id":"3723"},{"source":"1593","target":"567","id":"5751"},{"source":"213","target":"87","id":"240"},{"source":"1584","target":"1219","id":"5671"},{"source":"925","target":"65","id":"2285"},{"source":"1236","target":"852","id":"3592"},{"source":"319","target":"311","id":"3894"},{"source":"1050","target":"206","id":"4442"},{"source":"1285","target":"979","id":"3815"},{"source":"1283","target":"401","id":"5949"},{"source":"269","target":"276","id":"330"},{"source":"211","target":"225","id":"1947"},{"source":"834","target":"202","id":"5070"},{"source":"310","target":"312","id":"406"},{"source":"869","target":"82","id":"2026"},{"source":"1402","target":"401","id":"5841"},{"source":"954","target":"647","id":"3694"},{"source":"1645","target":"505","id":"6131"},{"source":"625","target":"629","id":"1210"},{"source":"397","target":"50","id":"3909"},{"source":"1303","target":"888","id":"4034"},{"source":"1419","target":"645","id":"5355"},{"source":"197","target":"199","id":"228"},{"source":"1035","target":"209","id":"2683"},{"source":"1014","target":"177","id":"3596"},{"source":"619","target":"526","id":"6036"},{"source":"1425","target":"524","id":"6436"},{"source":"1572","target":"1408","id":"6322"},{"source":"485","target":"79","id":"905"},{"source":"1001","target":"1002","id":"2551"},{"source":"1330","target":"262","id":"4038"},{"source":"1441","target":"1442","id":"4712"},{"source":"1432","target":"262","id":"4675"},{"source":"815","target":"817","id":"1818"},{"source":"898","target":"899","id":"2149"},{"source":"1359","target":"513","id":"4196"},{"source":"1590","target":"93","id":"5715"},{"source":"783","target":"1","id":"1699"},{"source":"192","target":"190","id":"214"},{"source":"822","target":"50","id":"6268"},{"source":"583","target":"585","id":"1090"},{"source":"1123","target":"1138","id":"3085"},{"source":"406","target":"53","id":"4736"},{"source":"811","target":"109","id":"1807"},{"source":"1189","target":"82","id":"3390"},{"source":"1433","target":"79","id":"4681"},{"source":"1591","target":"114","id":"5730"},{"source":"463","target":"79","id":"2635"},{"source":"936","target":"469","id":"2331"},{"source":"348","target":"76","id":"4621"},{"source":"1267","target":"405","id":"3733"},{"source":"697","target":"883","id":"5686"},{"source":"249","target":"76","id":"289"},{"source":"712","target":"868","id":"2036"},{"source":"779","target":"157","id":"1684"},{"source":"1574","target":"174","id":"5559"},{"source":"333","target":"53","id":"488"},{"source":"568","target":"427","id":"1641"},{"source":"1156","target":"408","id":"3159"},{"source":"1156","target":"364","id":"3158"},{"source":"1647","target":"175","id":"6135"},{"source":"771","target":"770","id":"6410"},{"source":"210","target":"211","id":"238"},{"source":"92","target":"93","id":"87"},{"source":"481","target":"482","id":"801"},{"source":"281","target":"600","id":"3080"},{"source":"499","target":"370","id":"828"},{"source":"223","target":"5","id":"254"},{"source":"606","target":"657","id":"3117"},{"source":"744","target":"241","id":"1560"},{"source":"94","target":"95","id":"90"},{"source":"1187","target":"65","id":"3371"},{"source":"327","target":"315","id":"461"},{"source":"756","target":"339","id":"1603"},{"source":"871","target":"65","id":"2046"},{"source":"48","target":"334","id":"4642"},{"source":"808","target":"50","id":"1786"},{"source":"866","target":"53","id":"2609"},{"source":"533","target":"956","id":"6084"},{"source":"274","target":"37","id":"328"},{"source":"657","target":"128","id":"5995"},{"source":"69","target":"73","id":"67"},{"source":"676","target":"646","id":"1358"},{"source":"15","target":"16","id":"18"},{"source":"411","target":"806","id":"1778"},{"source":"913","target":"1130","id":"5134"},{"source":"1361","target":"492","id":"4202"},{"source":"1457","target":"455","id":"4783"},{"source":"528","target":"617","id":"3552"},{"source":"1545","target":"1546","id":"5351"},{"source":"1081","target":"79","id":"2855"},{"source":"999","target":"1000","id":"2546"},{"source":"914","target":"915","id":"2248"},{"source":"677","target":"51","id":"1366"},{"source":"97","target":"94","id":"5266"},{"source":"1163","target":"567","id":"3210"},{"source":"89","target":"141","id":"2235"},{"source":"665","target":"431","id":"1325"},{"source":"93","target":"50","id":"2163"},{"source":"1144","target":"185","id":"3107"},{"source":"253","target":"76","id":"805"},{"source":"784","target":"65","id":"1706"},{"source":"1369","target":"1370","id":"4255"},{"source":"832","target":"65","id":"1884"},{"source":"1701","target":"53","id":"6479"},{"source":"98","target":"100","id":"94"},{"source":"664","target":"660","id":"3706"},{"source":"1480","target":"1317","id":"4982"},{"source":"896","target":"765","id":"4821"},{"source":"1203","target":"570","id":"3451"},{"source":"1554","target":"65","id":"5419"},{"source":"1327","target":"53","id":"5869"},{"source":"1104","target":"224","id":"2969"},{"source":"1267","target":"747","id":"3735"},{"source":"1148","target":"79","id":"3122"},{"source":"577","target":"585","id":"4394"},{"source":"1156","target":"53","id":"3160"},{"source":"1622","target":"1484","id":"5976"},{"source":"851","target":"79","id":"1961"},{"source":"760","target":"68","id":"1606"},{"source":"397","target":"801","id":"3914"},{"source":"1298","target":"335","id":"3869"},{"source":"271","target":"36","id":"4325"},{"source":"1568","target":"772","id":"5508"},{"source":"1045","target":"65","id":"2733"},{"source":"1315","target":"323","id":"4487"},{"source":"1074","target":"1076","id":"2844"},{"source":"1359","target":"335","id":"4200"},{"source":"1126","target":"33","id":"4813"},{"source":"366","target":"598","id":"5456"},{"source":"1001","target":"361","id":"2549"},{"source":"298","target":"219","id":"378"},{"source":"1701","target":"460","id":"6480"},{"source":"407","target":"146","id":"667"},{"source":"691","target":"217","id":"1392"},{"source":"1290","target":"79","id":"3832"},{"source":"477","target":"368","id":"3517"},{"source":"549","target":"79","id":"1276"},{"source":"570","target":"159","id":"1038"},{"source":"65","target":"50","id":"2127"},{"source":"728","target":"104","id":"5452"},{"source":"322","target":"296","id":"3945"},{"source":"1626","target":"513","id":"6013"},{"source":"955","target":"48","id":"2418"},{"source":"1363","target":"49","id":"4232"},{"source":"1592","target":"109","id":"5747"},{"source":"41","target":"43","id":"40"},{"source":"1607","target":"1409","id":"5903"},{"source":"1471","target":"53","id":"4907"},{"source":"813","target":"645","id":"1810"},{"source":"161","target":"1541","id":"5313"},{"source":"945","target":"1","id":"2371"},{"source":"901","target":"109","id":"2172"},{"source":"61","target":"66","id":"866"},{"source":"1295","target":"544","id":"3857"},{"source":"296","target":"79","id":"429"},{"source":"1709","target":"479","id":"6548"},{"source":"1489","target":"1038","id":"5021"},{"source":"1022","target":"250","id":"3359"},{"source":"1677","target":"370","id":"6357"},{"source":"958","target":"959","id":"2811"},{"source":"1539","target":"1","id":"5300"},{"source":"465","target":"462","id":"954"},{"source":"379","target":"68","id":"4126"},{"source":"713","target":"714","id":"6647"},{"source":"708","target":"769","id":"2872"},{"source":"18","target":"981","id":"2511"},{"source":"275","target":"36","id":"4323"},{"source":"1709","target":"183","id":"6551"},{"source":"1339","target":"724","id":"4079"},{"source":"1573","target":"66","id":"5542"},{"source":"884","target":"515","id":"2097"},{"source":"167","target":"53","id":"2336"},{"source":"1107","target":"513","id":"2988"},{"source":"1443","target":"53","id":"4721"},{"source":"1569","target":"772","id":"5515"},{"source":"333","target":"48","id":"490"},{"source":"705","target":"568","id":"1423"},{"source":"1294","target":"970","id":"3851"},{"source":"1589","target":"114","id":"5704"},{"source":"967","target":"1027","id":"2653"},{"source":"195","target":"194","id":"5388"},{"source":"1227","target":"294","id":"3576"},{"source":"1000","target":"1175","id":"3292"},{"source":"1471","target":"1015","id":"4911"},{"source":"1709","target":"303","id":"6544"},{"source":"659","target":"661","id":"3882"},{"source":"404","target":"48","id":"656"},{"source":"70","target":"73","id":"2492"},{"source":"1652","target":"48","id":"6182"},{"source":"1518","target":"163","id":"5234"},{"source":"1383","target":"79","id":"4313"},{"source":"1019","target":"1021","id":"2615"},{"source":"711","target":"712","id":"1436"},{"source":"1022","target":"65","id":"3356"},{"source":"714","target":"712","id":"6653"},{"source":"355","target":"505","id":"4010"},{"source":"1590","target":"430","id":"5718"},{"source":"275","target":"276","id":"4321"},{"source":"270","target":"38","id":"410"},{"source":"515","target":"216","id":"1172"},{"source":"509","target":"511","id":"859"},{"source":"1226","target":"79","id":"3569"},{"source":"365","target":"264","id":"1339"},{"source":"894","target":"177","id":"2119"},{"source":"1712","target":"1227","id":"6596"},{"source":"628","target":"177","id":"4149"},{"source":"532","target":"537","id":"925"},{"source":"30","target":"456","id":"5044"},{"source":"1070","target":"109","id":"2820"},{"source":"1472","target":"736","id":"4918"},{"source":"1041","target":"1043","id":"2705"},{"source":"1078","target":"1079","id":"3643"},{"source":"1591","target":"104","id":"5729"},{"source":"1639","target":"456","id":"6095"},{"source":"50","target":"64","id":"5471"},{"source":"528","target":"523","id":"3551"},{"source":"856","target":"321","id":"1977"},{"source":"414","target":"420","id":"690"},{"source":"657","target":"1593","id":"6001"},{"source":"249","target":"65","id":"285"},{"source":"779","target":"68","id":"1683"},{"source":"482","target":"483","id":"3838"},{"source":"1409","target":"1249","id":"4504"},{"source":"184","target":"325","id":"5125"},{"source":"1215","target":"238","id":"3492"},{"source":"471","target":"485","id":"807"},{"source":"1194","target":"732","id":"3408"},{"source":"741","target":"364","id":"1542"},{"source":"717","target":"441","id":"1465"},{"source":"1312","target":"321","id":"3932"},{"source":"1187","target":"68","id":"3374"},{"source":"391","target":"983","id":"3965"},{"source":"14","target":"5","id":"17"},{"source":"1519","target":"51","id":"5237"},{"source":"1160","target":"177","id":"3193"},{"source":"1081","target":"368","id":"2857"},{"source":"1395","target":"571","id":"4382"},{"source":"959","target":"163","id":"3163"},{"source":"579","target":"253","id":"6003"},{"source":"78","target":"79","id":"72"},{"source":"1188","target":"53","id":"3383"},{"source":"1639","target":"27","id":"6091"},{"source":"274","target":"38","id":"329"},{"source":"378","target":"120","id":"3207"},{"source":"1313","target":"1152","id":"3954"},{"source":"1165","target":"53","id":"5227"},{"source":"589","target":"113","id":"1660"},{"source":"171","target":"1046","id":"5261"},{"source":"864","target":"480","id":"2006"},{"source":"506","target":"50","id":"847"},{"source":"1269","target":"1268","id":"3749"},{"source":"1499","target":"424","id":"5093"},{"source":"292","target":"219","id":"374"},{"source":"1187","target":"82","id":"3373"},{"source":"625","target":"300","id":"1203"},{"source":"1509","target":"370","id":"5197"},{"source":"1637","target":"998","id":"6073"},{"source":"1063","target":"1069","id":"4301"},{"source":"363","target":"365","id":"557"},{"source":"1690","target":"1152","id":"6418"},{"source":"537","target":"335","id":"3331"},{"source":"152","target":"154","id":"172"},{"source":"292","target":"297","id":"375"},{"source":"1708","target":"508","id":"6541"},{"source":"1576","target":"68","id":"5608"},{"source":"784","target":"53","id":"1704"},{"source":"460","target":"119","id":"1167"},{"source":"1319","target":"53","id":"3981"},{"source":"1579","target":"79","id":"5635"},{"source":"1597","target":"66","id":"5781"},{"source":"873","target":"109","id":"2061"},{"source":"151","target":"150","id":"170"},{"source":"595","target":"591","id":"1130"},{"source":"257","target":"50","id":"297"},{"source":"354","target":"1","id":"1147"},{"source":"1510","target":"1236","id":"5201"},{"source":"1249","target":"1248","id":"5915"},{"source":"1490","target":"494","id":"5032"},{"source":"730","target":"702","id":"1518"},{"source":"179","target":"1117","id":"3398"},{"source":"330","target":"296","id":"479"},{"source":"1099","target":"1094","id":"2949"},{"source":"1271","target":"746","id":"3755"},{"source":"837","target":"280","id":"1904"},{"source":"73","target":"561","id":"1708"},{"source":"1188","target":"109","id":"3385"},{"source":"794","target":"65","id":"1739"},{"source":"206","target":"209","id":"2691"},{"source":"955","target":"279","id":"2421"},{"source":"1124","target":"543","id":"4848"},{"source":"561","target":"70","id":"1025"},{"source":"979","target":"488","id":"2657"},{"source":"1211","target":"159","id":"3474"},{"source":"1517","target":"1515","id":"5233"},{"source":"645","target":"95","id":"1555"},{"source":"67","target":"93","id":"2714"},{"source":"1006","target":"82","id":"2574"},{"source":"1091","target":"66","id":"2913"},{"source":"894","target":"79","id":"2120"},{"source":"1699","target":"159","id":"6453"},{"source":"856","target":"295","id":"1980"},{"source":"1281","target":"1200","id":"3809"},{"source":"362","target":"56","id":"6461"},{"source":"1108","target":"177","id":"2997"},{"source":"580","target":"582","id":"1076"},{"source":"382","target":"284","id":"625"},{"source":"26","target":"947","id":"2883"},{"source":"498","target":"80","id":"1987"},{"source":"108","target":"65","id":"5491"},{"source":"1455","target":"591","id":"4763"},{"source":"1678","target":"619","id":"6371"},{"source":"1432","target":"608","id":"4678"},{"source":"1720","target":"265","id":"6663"},{"source":"1259","target":"524","id":"3963"},{"source":"864","target":"498","id":"2009"},{"source":"1248","target":"618","id":"5894"},{"source":"1359","target":"53","id":"4192"},{"source":"264","target":"202","id":"1573"},{"source":"1679","target":"1196","id":"6377"},{"source":"630","target":"120","id":"1212"},{"source":"929","target":"154","id":"2305"},{"source":"336","target":"284","id":"3142"},{"source":"1687","target":"1688","id":"6398"},{"source":"591","target":"1","id":"1239"},{"source":"1050","target":"208","id":"4444"},{"source":"505","target":"232","id":"4001"},{"source":"180","target":"185","id":"206"},{"source":"553","target":"554","id":"987"},{"source":"1376","target":"525","id":"4280"},{"source":"1628","target":"535","id":"6018"},{"source":"1188","target":"239","id":"3386"},{"source":"312","target":"638","id":"3246"},{"source":"608","target":"216","id":"1490"},{"source":"64","target":"349","id":"1831"},{"source":"1129","target":"517","id":"4597"},{"source":"1720","target":"438","id":"6668"},{"source":"1651","target":"1404","id":"6174"},{"source":"451","target":"453","id":"742"},{"source":"48","target":"53","id":"4637"},{"source":"325","target":"79","id":"5138"},{"source":"703","target":"540","id":"3892"},{"source":"1440","target":"111","id":"6177"},{"source":"1572","target":"79","id":"6318"},{"source":"1086","target":"68","id":"2891"},{"source":"1427","target":"400","id":"4610"},{"source":"1134","target":"170","id":"3075"},{"source":"1510","target":"113","id":"5199"},{"source":"589","target":"49","id":"1665"},{"source":"505","target":"493","id":"4000"},{"source":"909","target":"906","id":"6081"},{"source":"1486","target":"79","id":"5011"},{"source":"1543","target":"82","id":"5333"},{"source":"695","target":"111","id":"4954"},{"source":"1711","target":"79","id":"6583"},{"source":"837","target":"48","id":"1908"},{"source":"133","target":"136","id":"146"},{"source":"322","target":"1312","id":"3943"},{"source":"1459","target":"279","id":"4800"},{"source":"1022","target":"93","id":"3357"},{"source":"1571","target":"79","id":"5534"},{"source":"1086","target":"65","id":"2893"},{"source":"730","target":"607","id":"1517"},{"source":"921","target":"498","id":"2269"},{"source":"108","target":"50","id":"5492"},{"source":"929","target":"68","id":"2301"},{"source":"1426","target":"1129","id":"4596"},{"source":"726","target":"607","id":"2190"},{"source":"722","target":"239","id":"1475"},{"source":"1513","target":"366","id":"5218"},{"source":"376","target":"294","id":"608"},{"source":"712","target":"869","id":"2037"},{"source":"1242","target":"568","id":"3606"},{"source":"26","target":"76","id":"2880"},{"source":"719","target":"720","id":"1469"},{"source":"1247","target":"1248","id":"3631"},{"source":"1470","target":"552","id":"4904"},{"source":"289","target":"286","id":"3722"},{"source":"1547","target":"159","id":"5522"},{"source":"877","target":"740","id":"2069"},{"source":"822","target":"397","id":"6263"},{"source":"528","target":"524","id":"3554"},{"source":"1363","target":"52","id":"4234"},{"source":"452","target":"53","id":"2281"},{"source":"1256","target":"65","id":"3651"},{"source":"1049","target":"1050","id":"2756"},{"source":"539","target":"541","id":"929"},{"source":"1577","target":"129","id":"5616"},{"source":"1466","target":"335","id":"4836"},{"source":"1024","target":"121","id":"2644"},{"source":"265","target":"834","id":"1895"},{"source":"977","target":"46","id":"2494"},{"source":"487","target":"489","id":"811"},{"source":"841","target":"51","id":"2449"},{"source":"153","target":"152","id":"2232"},{"source":"1053","target":"209","id":"4601"},{"source":"410","target":"49","id":"678"},{"source":"398","target":"1244","id":"5155"},{"source":"64","target":"53","id":"1824"},{"source":"197","target":"166","id":"227"},{"source":"1507","target":"79","id":"5148"},{"source":"1678","target":"185","id":"6370"},{"source":"191","target":"190","id":"5885"},{"source":"1183","target":"1","id":"3345"},{"source":"1303","target":"663","id":"4033"},{"source":"1548","target":"5","id":"5357"},{"source":"747","target":"600","id":"3779"},{"source":"1292","target":"1291","id":"5658"},{"source":"397","target":"1206","id":"3913"},{"source":"145","target":"436","id":"1002"},{"source":"371","target":"372","id":"578"},{"source":"1573","target":"53","id":"5550"},{"source":"938","target":"53","id":"2481"},{"source":"797","target":"370","id":"1750"},{"source":"250","target":"53","id":"3364"},{"source":"537","target":"532","id":"3329"},{"source":"1605","target":"175","id":"5856"},{"source":"1594","target":"53","id":"5763"},{"source":"64","target":"50","id":"1830"},{"source":"434","target":"161","id":"941"},{"source":"1362","target":"65","id":"4224"},{"source":"1716","target":"1120","id":"6615"},{"source":"1063","target":"1066","id":"4300"},{"source":"1689","target":"399","id":"6404"},{"source":"1489","target":"1037","id":"5020"},{"source":"760","target":"624","id":"1610"},{"source":"1432","target":"515","id":"4676"},{"source":"1452","target":"66","id":"4751"},{"source":"1721","target":"53","id":"6670"},{"source":"569","target":"568","id":"2199"},{"source":"943","target":"120","id":"2361"},{"source":"1362","target":"68","id":"4219"},{"source":"650","target":"324","id":"1284"},{"source":"81","target":"82","id":"74"},{"source":"1298","target":"397","id":"3873"},{"source":"285","target":"61","id":"350"},{"source":"1038","target":"206","id":"5028"},{"source":"53","target":"64","id":"1113"},{"source":"613","target":"313","id":"1966"},{"source":"1343","target":"393","id":"4107"},{"source":"925","target":"287","id":"2287"},{"source":"1268","target":"63","id":"3743"},{"source":"1667","target":"1668","id":"6274"},{"source":"613","target":"292","id":"1963"},{"source":"833","target":"109","id":"1894"},{"source":"1611","target":"600","id":"5918"},{"source":"459","target":"460","id":"765"},{"source":"1257","target":"5","id":"3662"},{"source":"261","target":"238","id":"5960"},{"source":"85","target":"82","id":"1932"},{"source":"1458","target":"497","id":"4794"},{"source":"832","target":"53","id":"1882"},{"source":"1639","target":"552","id":"6094"},{"source":"408","target":"61","id":"877"},{"source":"1373","target":"698","id":"6367"},{"source":"805","target":"166","id":"1771"},{"source":"39","target":"270","id":"4304"},{"source":"1427","target":"53","id":"4607"},{"source":"1286","target":"53","id":"3823"},{"source":"1624","target":"648","id":"5989"},{"source":"225","target":"224","id":"6089"},{"source":"740","target":"53","id":"1535"},{"source":"358","target":"360","id":"548"},{"source":"1092","target":"409","id":"2919"},{"source":"1606","target":"421","id":"5865"},{"source":"310","target":"79","id":"404"},{"source":"1245","target":"141","id":"3628"},{"source":"142","target":"145","id":"163"},{"source":"1345","target":"267","id":"4118"},{"source":"1548","target":"1","id":"5356"},{"source":"684","target":"5","id":"1376"},{"source":"304","target":"966","id":"4506"},{"source":"1242","target":"427","id":"3609"},{"source":"606","target":"437","id":"3115"},{"source":"269","target":"273","id":"338"},{"source":"849","target":"79","id":"1950"},{"source":"50","target":"111","id":"5476"},{"source":"398","target":"48","id":"5157"},{"source":"47","target":"49","id":"4431"},{"source":"730","target":"732","id":"1524"},{"source":"726","target":"53","id":"2195"},{"source":"642","target":"641","id":"6165"},{"source":"426","target":"427","id":"1030"},{"source":"1337","target":"200","id":"4073"},{"source":"274","target":"36","id":"327"},{"source":"1568","target":"1569","id":"5513"},{"source":"820","target":"167","id":"1836"},{"source":"1393","target":"233","id":"4371"},{"source":"1223","target":"528","id":"3561"},{"source":"574","target":"334","id":"1067"},{"source":"1341","target":"784","id":"4093"},{"source":"513","target":"50","id":"5209"},{"source":"216","target":"214","id":"545"},{"source":"1673","target":"512","id":"6300"},{"source":"330","target":"219","id":"480"},{"source":"1033","target":"177","id":"2671"},{"source":"363","target":"161","id":"561"},{"source":"204","target":"207","id":"235"},{"source":"703","target":"702","id":"3886"},{"source":"100","target":"248","id":"1844"},{"source":"385","target":"294","id":"3683"},{"source":"87","target":"380","id":"6289"},{"source":"1175","target":"33","id":"3326"},{"source":"726","target":"65","id":"2191"},{"source":"394","target":"390","id":"4928"},{"source":"759","target":"284","id":"5777"},{"source":"1099","target":"312","id":"2950"},{"source":"713","target":"715","id":"6641"},{"source":"951","target":"65","id":"2408"},{"source":"153","target":"242","id":"2233"},{"source":"375","target":"115","id":"599"},{"source":"1014","target":"463","id":"3598"},{"source":"63","target":"62","id":"993"},{"source":"729","target":"402","id":"1515"},{"source":"1674","target":"131","id":"6313"},{"source":"995","target":"993","id":"2541"},{"source":"654","target":"437","id":"3418"},{"source":"24","target":"23","id":"5817"},{"source":"1624","target":"1547","id":"5991"},{"source":"1046","target":"567","id":"6338"},{"source":"482","target":"1292","id":"3841"},{"source":"533","target":"532","id":"6082"},{"source":"1475","target":"900","id":"4925"},{"source":"831","target":"1085","id":"2876"},{"source":"296","target":"185","id":"432"},{"source":"298","target":"299","id":"379"},{"source":"1513","target":"897","id":"5219"},{"source":"378","target":"668","id":"3205"},{"source":"457","target":"1017","id":"6343"},{"source":"246","target":"915","id":"2641"},{"source":"1350","target":"79","id":"4146"},{"source":"374","target":"267","id":"5179"},{"source":"881","target":"68","id":"2087"},{"source":"808","target":"406","id":"1794"},{"source":"113","target":"267","id":"1097"},{"source":"1357","target":"367","id":"5314"},{"source":"405","target":"51","id":"2926"},{"source":"780","target":"175","id":"1698"},{"source":"239","target":"648","id":"6451"},{"source":"1318","target":"1316","id":"3973"},{"source":"1359","target":"49","id":"4195"},{"source":"1451","target":"185","id":"5109"},{"source":"321","target":"294","id":"732"},{"source":"1174","target":"388","id":"3289"},{"source":"1187","target":"103","id":"3375"},{"source":"1500","target":"961","id":"5096"},{"source":"946","target":"76","id":"2377"},{"source":"768","target":"708","id":"6393"},{"source":"788","target":"114","id":"1717"},{"source":"509","target":"408","id":"854"},{"source":"633","target":"634","id":"1223"},{"source":"696","target":"697","id":"1411"},{"source":"665","target":"287","id":"1331"},{"source":"1107","target":"1015","id":"2987"},{"source":"878","target":"68","id":"2074"},{"source":"68","target":"108","id":"107"},{"source":"743","target":"644","id":"1549"},{"source":"315","target":"306","id":"3504"},{"source":"611","target":"119","id":"1179"},{"source":"891","target":"893","id":"2117"},{"source":"1169","target":"82","id":"3264"},{"source":"1208","target":"211","id":"3462"},{"source":"1490","target":"833","id":"5038"},{"source":"777","target":"16","id":"3464"},{"source":"1387","target":"974","id":"4350"},{"source":"1712","target":"182","id":"6597"},{"source":"673","target":"675","id":"1356"},{"source":"980","target":"916","id":"2509"},{"source":"251","target":"453","id":"3974"},{"source":"1163","target":"656","id":"3216"},{"source":"804","target":"1","id":"1770"},{"source":"237","target":"238","id":"272"},{"source":"174","target":"423","id":"1525"},{"source":"402","target":"403","id":"652"},{"source":"1033","target":"209","id":"2672"},{"source":"769","target":"768","id":"1635"},{"source":"1146","target":"381","id":"3660"},{"source":"594","target":"510","id":"4879"},{"source":"211","target":"361","id":"1946"},{"source":"1636","target":"420","id":"6070"},{"source":"621","target":"372","id":"3958"},{"source":"1416","target":"296","id":"4547"},{"source":"1182","target":"411","id":"3338"},{"source":"580","target":"576","id":"1080"},{"source":"288","target":"289","id":"361"},{"source":"725","target":"726","id":"1499"},{"source":"404","target":"405","id":"654"},{"source":"1279","target":"79","id":"5626"},{"source":"459","target":"65","id":"767"},{"source":"750","target":"137","id":"1589"},{"source":"1071","target":"1074","id":"2835"},{"source":"1540","target":"427","id":"5302"},{"source":"1183","target":"1155","id":"3343"},{"source":"1720","target":"263","id":"6664"},{"source":"954","target":"436","id":"3692"},{"source":"1260","target":"1","id":"3677"},{"source":"509","target":"65","id":"857"},{"source":"1071","target":"1073","id":"2834"},{"source":"431","target":"53","id":"709"},{"source":"481","target":"334","id":"803"},{"source":"1250","target":"500","id":"3638"},{"source":"1421","target":"310","id":"4566"},{"source":"502","target":"85","id":"5073"},{"source":"1716","target":"1717","id":"6617"},{"source":"1273","target":"1274","id":"3761"},{"source":"552","target":"53","id":"4891"},{"source":"651","target":"53","id":"1304"},{"source":"883","target":"915","id":"4188"},{"source":"1652","target":"498","id":"6180"},{"source":"1035","target":"1034","id":"2684"},{"source":"1378","target":"291","id":"4283"},{"source":"188","target":"190","id":"224"},{"source":"828","target":"53","id":"1860"},{"source":"711","target":"714","id":"1441"},{"source":"312","target":"852","id":"3247"},{"source":"476","target":"473","id":"793"},{"source":"103","target":"234","id":"264"},{"source":"1211","target":"96","id":"3475"},{"source":"245","target":"68","id":"1734"},{"source":"304","target":"185","id":"4507"},{"source":"1222","target":"892","id":"3536"},{"source":"610","target":"53","id":"1183"},{"source":"1005","target":"885","id":"3269"},{"source":"1124","target":"82","id":"4847"},{"source":"1501","target":"48","id":"5102"},{"source":"750","target":"311","id":"1580"},{"source":"681","target":"682","id":"1367"},{"source":"369","target":"254","id":"572"},{"source":"1649","target":"85","id":"6147"},{"source":"979","target":"978","id":"2656"},{"source":"1101","target":"1100","id":"2958"},{"source":"288","target":"53","id":"366"},{"source":"824","target":"823","id":"3265"},{"source":"965","target":"82","id":"2445"},{"source":"267","target":"374","id":"4433"},{"source":"949","target":"204","id":"2396"},{"source":"1223","target":"523","id":"3555"},{"source":"604","target":"428","id":"1152"},{"source":"1254","target":"279","id":"3647"},{"source":"1576","target":"1117","id":"5610"},{"source":"133","target":"135","id":"145"},{"source":"1053","target":"208","id":"4599"},{"source":"806","target":"111","id":"6054"},{"source":"732","target":"238","id":"5973"},{"source":"202","target":"265","id":"6638"},{"source":"918","target":"781","id":"2260"},{"source":"1063","target":"1064","id":"4299"},{"source":"1119","target":"409","id":"6257"},{"source":"842","target":"85","id":"1919"},{"source":"1315","target":"79","id":"4485"},{"source":"404","target":"50","id":"660"},{"source":"874","target":"114","id":"2066"},{"source":"279","target":"42","id":"501"},{"source":"757","target":"344","id":"5830"},{"source":"547","target":"79","id":"947"},{"source":"683","target":"21","id":"1444"},{"source":"242","target":"241","id":"2225"},{"source":"914","target":"50","id":"2250"},{"source":"1227","target":"377","id":"3577"},{"source":"548","target":"463","id":"962"},{"source":"1092","target":"66","id":"2924"},{"source":"1674","target":"65","id":"6312"},{"source":"498","target":"857","id":"1986"},{"source":"1637","target":"57","id":"6074"},{"source":"1325","target":"408","id":"4015"},{"source":"276","target":"313","id":"6590"},{"source":"1700","target":"150","id":"6464"},{"source":"540","target":"541","id":"2189"},{"source":"1267","target":"364","id":"3738"},{"source":"1504","target":"50","id":"5106"},{"source":"1650","target":"334","id":"6157"},{"source":"383","target":"61","id":"632"},{"source":"1027","target":"967","id":"5435"},{"source":"1405","target":"312","id":"4456"},{"source":"1551","target":"439","id":"5387"},{"source":"937","target":"458","id":"2345"},{"source":"1625","target":"1324","id":"6007"},{"source":"131","target":"567","id":"2186"},{"source":"457","target":"259","id":"6342"},{"source":"276","target":"38","id":"6589"},{"source":"48","target":"409","id":"4641"},{"source":"336","target":"50","id":"3148"},{"source":"337","target":"53","id":"509"},{"source":"23","target":"28","id":"5805"},{"source":"975","target":"510","id":"2489"},{"source":"1042","target":"209","id":"2716"},{"source":"400","target":"133","id":"2387"},{"source":"799","target":"48","id":"1762"},{"source":"1049","target":"495","id":"2752"},{"source":"643","target":"645","id":"1270"},{"source":"1421","target":"79","id":"4568"},{"source":"1230","target":"1231","id":"3584"},{"source":"524","target":"1259","id":"4501"},{"source":"36","target":"275","id":"440"},{"source":"126","target":"127","id":"135"},{"source":"1595","target":"97","id":"5773"},{"source":"1104","target":"638","id":"2970"},{"source":"51","target":"408","id":"5583"},{"source":"1455","target":"262","id":"4766"},{"source":"145","target":"166","id":"1001"},{"source":"864","target":"50","id":"2005"},{"source":"1616","target":"1083","id":"5946"},{"source":"642","target":"161","id":"6164"},{"source":"1705","target":"120","id":"6503"},{"source":"587","target":"589","id":"1105"},{"source":"1066","target":"1065","id":"2803"},{"source":"474","target":"473","id":"6608"},{"source":"273","target":"40","id":"5568"},{"source":"918","target":"104","id":"2258"},{"source":"525","target":"293","id":"930"},{"source":"884","target":"216","id":"2094"},{"source":"918","target":"458","id":"2262"},{"source":"266","target":"264","id":"3991"},{"source":"841","target":"49","id":"2447"},{"source":"595","target":"592","id":"1134"},{"source":"556","target":"830","id":"3424"},{"source":"87","target":"544","id":"6291"},{"source":"1373","target":"82","id":"6366"},{"source":"748","target":"364","id":"3788"},{"source":"1339","target":"1015","id":"4081"},{"source":"1007","target":"1009","id":"2578"},{"source":"1638","target":"899","id":"6564"},{"source":"414","target":"219","id":"688"},{"source":"1570","target":"570","id":"5526"},{"source":"770","target":"769","id":"5553"},{"source":"285","target":"51","id":"358"},{"source":"829","target":"76","id":"1869"},{"source":"1339","target":"223","id":"4085"},{"source":"944","target":"484","id":"2369"},{"source":"1269","target":"61","id":"3754"},{"source":"1125","target":"533","id":"4522"},{"source":"347","target":"348","id":"4031"},{"source":"268","target":"38","id":"314"},{"source":"866","target":"66","id":"2611"},{"source":"769","target":"708","id":"1633"},{"source":"484","target":"166","id":"5587"},{"source":"216","target":"351","id":"544"},{"source":"1354","target":"479","id":"4175"},{"source":"644","target":"96","id":"1552"},{"source":"574","target":"49","id":"1059"},{"source":"461","target":"64","id":"2621"},{"source":"21","target":"20","id":"1310"},{"source":"321","target":"322","id":"733"},{"source":"610","target":"216","id":"1182"},{"source":"1486","target":"591","id":"5010"},{"source":"207","target":"1","id":"2695"},{"source":"524","target":"1258","id":"4500"},{"source":"1025","target":"53","id":"4628"},{"source":"1368","target":"312","id":"4254"},{"source":"856","target":"310","id":"1974"},{"source":"1125","target":"335","id":"4518"},{"source":"1214","target":"96","id":"3487"},{"source":"543","target":"532","id":"935"},{"source":"417","target":"1152","id":"4467"},{"source":"346","target":"647","id":"1273"},{"source":"263","target":"266","id":"309"},{"source":"1187","target":"53","id":"3378"},{"source":"687","target":"82","id":"1378"},{"source":"1501","target":"49","id":"5103"},{"source":"902","target":"93","id":"3167"},{"source":"97","target":"82","id":"5267"},{"source":"613","target":"296","id":"1964"},{"source":"363","target":"68","id":"563"},{"source":"1390","target":"365","id":"4362"},{"source":"381","target":"296","id":"613"},{"source":"115","target":"113","id":"2322"},{"source":"437","target":"657","id":"1318"},{"source":"336","target":"51","id":"3141"},{"source":"594","target":"61","id":"4874"},{"source":"1179","target":"516","id":"3305"},{"source":"1674","target":"118","id":"6310"},{"source":"1443","target":"82","id":"4719"},{"source":"1279","target":"1282","id":"5629"},{"source":"418","target":"219","id":"4564"},{"source":"53","target":"65","id":"1114"},{"source":"1201","target":"1077","id":"4995"},{"source":"443","target":"79","id":"1288"},{"source":"1606","target":"1249","id":"5863"},{"source":"183","target":"296","id":"5117"},{"source":"1226","target":"819","id":"3570"},{"source":"261","target":"732","id":"5961"},{"source":"361","target":"299","id":"1956"},{"source":"328","target":"45","id":"474"},{"source":"1636","target":"1152","id":"6069"},{"source":"538","target":"280","id":"4662"},{"source":"118","target":"64","id":"1295"},{"source":"991","target":"272","id":"4947"},{"source":"597","target":"65","id":"1144"},{"source":"786","target":"787","id":"3950"},{"source":"770","target":"771","id":"5556"},{"source":"463","target":"549","id":"2636"},{"source":"330","target":"79","id":"484"},{"source":"903","target":"901","id":"2180"},{"source":"1579","target":"1279","id":"5632"},{"source":"1483","target":"1202","id":"4991"},{"source":"488","target":"150","id":"2524"},{"source":"202","target":"403","id":"6635"},{"source":"1456","target":"759","id":"4779"},{"source":"51","target":"1015","id":"5578"},{"source":"67","target":"50","id":"2715"},{"source":"22","target":"24","id":"24"},{"source":"952","target":"348","id":"2410"},{"source":"1670","target":"71","id":"6284"},{"source":"1006","target":"834","id":"2573"},{"source":"1628","target":"537","id":"6020"},{"source":"1256","target":"170","id":"3653"},{"source":"929","target":"736","id":"2300"},{"source":"1414","target":"1200","id":"4534"},{"source":"1673","target":"598","id":"6301"},{"source":"658","target":"660","id":"1320"},{"source":"1268","target":"61","id":"3741"},{"source":"184","target":"892","id":"5126"},{"source":"1320","target":"1321","id":"3995"},{"source":"397","target":"956","id":"3912"},{"source":"535","target":"536","id":"2465"},{"source":"23","target":"24","id":"5807"},{"source":"267","target":"589","id":"4438"},{"source":"1198","target":"312","id":"3439"},{"source":"1486","target":"651","id":"5012"},{"source":"1553","target":"1384","id":"5410"},{"source":"383","target":"335","id":"633"},{"source":"1650","target":"49","id":"6158"},{"source":"852","target":"79","id":"3249"},{"source":"320","target":"292","id":"434"},{"source":"1313","target":"417","id":"3953"},{"source":"459","target":"68","id":"763"},{"source":"658","target":"663","id":"1323"},{"source":"1598","target":"354","id":"5786"},{"source":"244","target":"111","id":"1669"},{"source":"1585","target":"122","id":"5672"},{"source":"102","target":"50","id":"101"},{"source":"1650","target":"533","id":"6161"},{"source":"573","target":"66","id":"1047"},{"source":"1079","target":"1078","id":"6456"},{"source":"833","target":"444","id":"1889"},{"source":"1312","target":"1311","id":"3934"},{"source":"637","target":"299","id":"1250"},{"source":"119","target":"636","id":"3171"},{"source":"1412","target":"1199","id":"4524"},{"source":"1452","target":"50","id":"4747"},{"source":"857","target":"80","id":"2015"},{"source":"1048","target":"701","id":"2745"},{"source":"752","target":"137","id":"1942"},{"source":"1588","target":"68","id":"5703"},{"source":"1623","target":"1619","id":"5985"},{"source":"451","target":"104","id":"747"},{"source":"1601","target":"712","id":"5797"},{"source":"301","target":"296","id":"384"},{"source":"827","target":"1","id":"1857"},{"source":"1065","target":"1062","id":"2799"},{"source":"708","target":"768","id":"2875"},{"source":"65","target":"105","id":"2126"},{"source":"1262","target":"1078","id":"4631"},{"source":"1593","target":"118","id":"5749"},{"source":"243","target":"245","id":"280"},{"source":"1714","target":"79","id":"6609"},{"source":"639","target":"640","id":"1261"},{"source":"246","target":"1023","id":"2643"},{"source":"142","target":"143","id":"161"},{"source":"1044","target":"118","id":"2731"},{"source":"1343","target":"344","id":"4106"},{"source":"449","target":"5","id":"729"},{"source":"1093","target":"79","id":"2935"},{"source":"717","target":"128","id":"1461"},{"source":"1216","target":"128","id":"3493"},{"source":"1720","target":"264","id":"6662"},{"source":"592","target":"53","id":"4814"},{"source":"1560","target":"1001","id":"5484"},{"source":"577","target":"580","id":"4398"},{"source":"1105","target":"468","id":"2978"},{"source":"1459","target":"166","id":"4799"},{"source":"1026","target":"967","id":"2648"},{"source":"845","target":"379","id":"1936"},{"source":"1479","target":"167","id":"4974"},{"source":"891","target":"53","id":"2115"},{"source":"1035","target":"1036","id":"2686"},{"source":"1041","target":"104","id":"2701"},{"source":"1579","target":"1282","id":"5633"},{"source":"1611","target":"1612","id":"5917"},{"source":"472","target":"473","id":"783"},{"source":"789","target":"405","id":"3033"},{"source":"131","target":"104","id":"2184"},{"source":"298","target":"296","id":"377"},{"source":"1380","target":"1379","id":"4289"},{"source":"668","target":"669","id":"1333"},{"source":"937","target":"167","id":"2342"},{"source":"201","target":"519","id":"4756"},{"source":"569","target":"130","id":"2196"},{"source":"433","target":"435","id":"712"},{"source":"1330","target":"664","id":"4037"},{"source":"1173","target":"532","id":"3276"},{"source":"215","target":"1","id":"5993"},{"source":"640","target":"641","id":"5321"},{"source":"456","target":"28","id":"5811"},{"source":"869","target":"172","id":"2025"},{"source":"1597","target":"519","id":"5779"},{"source":"593","target":"61","id":"1120"},{"source":"1468","target":"53","id":"4859"},{"source":"42","target":"48","id":"346"},{"source":"1137","target":"1123","id":"5255"},{"source":"315","target":"219","id":"3503"},{"source":"741","target":"536","id":"1545"},{"source":"1554","target":"901","id":"5420"},{"source":"1712","target":"79","id":"6593"},{"source":"170","target":"109","id":"4791"},{"source":"560","target":"366","id":"1019"},{"source":"139","target":"138","id":"158"},{"source":"785","target":"787","id":"1716"},{"source":"391","target":"1317","id":"3967"},{"source":"893","target":"53","id":"2556"},{"source":"784","target":"50","id":"1702"},{"source":"236","target":"235","id":"1231"},{"source":"1517","target":"163","id":"5232"},{"source":"538","target":"49","id":"4659"},{"source":"1705","target":"157","id":"6505"},{"source":"457","target":"513","id":"6344"},{"source":"1360","target":"49","id":"6659"},{"source":"688","target":"53","id":"1656"},{"source":"1004","target":"519","id":"2567"},{"source":"656","target":"82","id":"5332"},{"source":"1051","target":"344","id":"2757"},{"source":"282","target":"293","id":"3284"},{"source":"1343","target":"201","id":"4112"},{"source":"768","target":"769","id":"6391"},{"source":"1276","target":"364","id":"3769"},{"source":"1616","target":"652","id":"5941"},{"source":"717","target":"710","id":"1462"},{"source":"6","target":"7","id":"7"},{"source":"1256","target":"53","id":"3649"},{"source":"656","target":"654","id":"5330"},{"source":"1014","target":"1013","id":"3599"},{"source":"1221","target":"183","id":"3528"},{"source":"1660","target":"961","id":"6225"},{"source":"28","target":"30","id":"5039"},{"source":"1052","target":"205","id":"2765"},{"source":"1583","target":"551","id":"5664"},{"source":"408","target":"119","id":"871"},{"source":"274","target":"270","id":"326"},{"source":"1334","target":"987","id":"4057"},{"source":"873","target":"458","id":"2059"},{"source":"848","target":"79","id":"1943"},{"source":"454","target":"455","id":"751"},{"source":"687","target":"98","id":"1379"},{"source":"312","target":"79","id":"3245"},{"source":"1237","target":"1238","id":"3601"},{"source":"102","target":"65","id":"98"},{"source":"789","target":"397","id":"3034"},{"source":"1342","target":"200","id":"4105"},{"source":"1302","target":"1301","id":"6401"},{"source":"1250","target":"182","id":"3636"},{"source":"67","target":"65","id":"2713"},{"source":"167","target":"50","id":"2339"},{"source":"1086","target":"635","id":"2894"},{"source":"779","target":"53","id":"1686"},{"source":"1559","target":"124","id":"5465"},{"source":"459","target":"461","id":"769"},{"source":"1456","target":"757","id":"4780"},{"source":"1353","target":"170","id":"4170"},{"source":"911","target":"309","id":"2241"},{"source":"635","target":"50","id":"4402"},{"source":"448","target":"195","id":"726"},{"source":"283","target":"282","id":"6351"},{"source":"1558","target":"128","id":"5445"},{"source":"371","target":"316","id":"579"},{"source":"933","target":"650","id":"2316"},{"source":"913","target":"900","id":"5136"},{"source":"871","target":"64","id":"2045"},{"source":"969","target":"85","id":"2468"},{"source":"589","target":"233","id":"1659"},{"source":"578","target":"577","id":"5683"},{"source":"172","target":"439","id":"5741"},{"source":"92","target":"68","id":"83"},{"source":"61","target":"48","id":"867"},{"source":"1277","target":"731","id":"3795"},{"source":"19","target":"20","id":"21"},{"source":"416","target":"418","id":"3666"},{"source":"131","target":"53","id":"2181"},{"source":"1337","target":"807","id":"4076"},{"source":"1306","target":"18","id":"3907"},{"source":"10","target":"1","id":"11"},{"source":"1547","target":"238","id":"5520"},{"source":"671","target":"67","id":"1349"},{"source":"929","target":"27","id":"2306"},{"source":"971","target":"224","id":"2473"},{"source":"1443","target":"67","id":"4716"},{"source":"1571","target":"185","id":"5540"},{"source":"446","target":"309","id":"907"},{"source":"377","target":"852","id":"2152"},{"source":"264","target":"438","id":"1570"},{"source":"48","target":"280","id":"4635"},{"source":"727","target":"390","id":"1507"},{"source":"52","target":"554","id":"5767"},{"source":"943","target":"857","id":"2360"},{"source":"1054","target":"1055","id":"2775"},{"source":"926","target":"76","id":"2386"},{"source":"945","target":"170","id":"2372"},{"source":"1107","target":"65","id":"2985"},{"source":"884","target":"885","id":"2100"},{"source":"1667","target":"579","id":"6277"},{"source":"532","target":"535","id":"923"},{"source":"1256","target":"215","id":"3654"},{"source":"805","target":"411","id":"1774"},{"source":"1012","target":"334","id":"5574"},{"source":"1077","target":"1201","id":"3448"},{"source":"1520","target":"560","id":"5246"},{"source":"921","target":"152","id":"2268"},{"source":"165","target":"68","id":"185"},{"source":"41","target":"42","id":"39"},{"source":"931","target":"287","id":"2314"},{"source":"504","target":"569","id":"1639"},{"source":"268","target":"274","id":"320"},{"source":"1095","target":"313","id":"2939"},{"source":"187","target":"188","id":"217"},{"source":"1081","target":"465","id":"2854"},{"source":"63","target":"53","id":"994"},{"source":"593","target":"591","id":"1121"},{"source":"1178","target":"42","id":"3300"},{"source":"944","target":"109","id":"2370"},{"source":"712","target":"870","id":"2038"},{"source":"717","target":"85","id":"1463"},{"source":"1389","target":"313","id":"4365"},{"source":"335","target":"281","id":"1054"},{"source":"857","target":"581","id":"2016"},{"source":"312","target":"185","id":"3248"},{"source":"244","target":"109","id":"1670"},{"source":"370","target":"364","id":"4579"},{"source":"47","target":"374","id":"4430"},{"source":"747","target":"281","id":"3780"},{"source":"595","target":"104","id":"1133"},{"source":"1201","target":"569","id":"4994"},{"source":"177","target":"79","id":"956"},{"source":"805","target":"48","id":"1776"},{"source":"1387","target":"1388","id":"4353"},{"source":"460","target":"53","id":"1161"},{"source":"1226","target":"381","id":"3568"},{"source":"878","target":"877","id":"2077"},{"source":"803","target":"148","id":"3757"},{"source":"1041","target":"1042","id":"2703"},{"source":"731","target":"234","id":"4959"},{"source":"259","target":"457","id":"2155"},{"source":"1673","target":"544","id":"6305"},{"source":"511","target":"68","id":"6474"},{"source":"422","target":"423","id":"693"},{"source":"1468","target":"1161","id":"4865"},{"source":"538","target":"66","id":"4655"},{"source":"811","target":"173","id":"1802"},{"source":"727","target":"200","id":"1511"},{"source":"314","target":"182","id":"424"},{"source":"701","target":"539","id":"1417"},{"source":"202","target":"835","id":"6640"},{"source":"1592","target":"964","id":"5743"},{"source":"1485","target":"519","id":"5001"},{"source":"621","target":"182","id":"3960"},{"source":"915","target":"935","id":"2326"},{"source":"697","target":"846","id":"5688"},{"source":"1569","target":"159","id":"5516"},{"source":"336","target":"279","id":"3143"},{"source":"368","target":"361","id":"3006"},{"source":"1220","target":"1","id":"3520"},{"source":"612","target":"615","id":"1192"},{"source":"1345","target":"181","id":"4117"},{"source":"1509","target":"113","id":"5192"},{"source":"1365","target":"51","id":"4246"},{"source":"1006","target":"1003","id":"2572"},{"source":"724","target":"224","id":"2829"},{"source":"1244","target":"398","id":"3615"},{"source":"590","target":"51","id":"5173"},{"source":"958","target":"961","id":"2813"},{"source":"1268","target":"62","id":"3742"},{"source":"1562","target":"159","id":"5494"},{"source":"1298","target":"48","id":"3874"},{"source":"364","target":"113","id":"581"},{"source":"346","target":"648","id":"1274"},{"source":"837","target":"49","id":"1909"},{"source":"711","target":"85","id":"1435"},{"source":"332","target":"521","id":"4386"},{"source":"322","target":"320","id":"3939"},{"source":"293","target":"292","id":"615"},{"source":"574","target":"48","id":"1065"},{"source":"833","target":"403","id":"1887"},{"source":"1087","target":"53","id":"5442"},{"source":"953","target":"661","id":"2416"},{"source":"1180","target":"983","id":"3311"},{"source":"1644","target":"833","id":"6122"},{"source":"36","target":"270","id":"444"},{"source":"1253","target":"296","id":"6557"},{"source":"216","target":"166","id":"546"},{"source":"257","target":"258","id":"301"},{"source":"1194","target":"634","id":"3409"},{"source":"1452","target":"53","id":"4750"},{"source":"499","target":"267","id":"826"},{"source":"103","target":"65","id":"265"},{"source":"144","target":"436","id":"713"},{"source":"45","target":"310","id":"3230"},{"source":"1364","target":"113","id":"6516"},{"source":"1702","target":"853","id":"6489"},{"source":"940","target":"1","id":"2355"},{"source":"1555","target":"53","id":"5424"},{"source":"274","target":"272","id":"322"},{"source":"840","target":"48","id":"1916"},{"source":"305","target":"185","id":"401"},{"source":"1105","target":"51","id":"2981"},{"source":"1280","target":"607","id":"3799"},{"source":"1369","target":"1","id":"4256"},{"source":"1715","target":"652","id":"6611"},{"source":"908","target":"79","id":"3513"},{"source":"172","target":"712","id":"5734"},{"source":"1334","target":"82","id":"4053"},{"source":"792","target":"793","id":"1727"},{"source":"283","target":"293","id":"6347"},{"source":"112","target":"113","id":"112"},{"source":"992","target":"994","id":"2535"},{"source":"181","target":"79","id":"3521"},{"source":"1573","target":"334","id":"5544"},{"source":"1104","target":"62","id":"2976"},{"source":"1410","target":"304","id":"6578"},{"source":"31","target":"33","id":"32"},{"source":"530","target":"529","id":"2506"},{"source":"50","target":"591","id":"5470"},{"source":"709","target":"85","id":"1434"},{"source":"797","target":"48","id":"1751"},{"source":"576","target":"120","id":"2374"},{"source":"498","target":"816","id":"1990"},{"source":"897","target":"90","id":"5461"},{"source":"435","target":"598","id":"3149"},{"source":"305","target":"79","id":"399"},{"source":"181","target":"892","id":"3525"},{"source":"1435","target":"567","id":"4702"},{"source":"177","target":"549","id":"957"},{"source":"134","target":"136","id":"153"},{"source":"62","target":"68","id":"975"},{"source":"303","target":"304","id":"392"},{"source":"1279","target":"1579","id":"5628"},{"source":"946","target":"883","id":"2382"},{"source":"308","target":"211","id":"565"},{"source":"1436","target":"1437","id":"4707"},{"source":"526","target":"79","id":"3542"},{"source":"1583","target":"744","id":"5665"},{"source":"695","target":"618","id":"4953"},{"source":"322","target":"323","id":"3944"},{"source":"1016","target":"65","id":"2591"},{"source":"451","target":"65","id":"744"},{"source":"883","target":"109","id":"4191"},{"source":"707","target":"708","id":"1626"},{"source":"1448","target":"377","id":"4733"},{"source":"1033","target":"37","id":"2670"},{"source":"1373","target":"84","id":"6364"},{"source":"101","target":"109","id":"2878"},{"source":"877","target":"65","id":"2070"},{"source":"506","target":"409","id":"845"},{"source":"987","target":"1122","id":"3051"},{"source":"543","target":"405","id":"938"},{"source":"1588","target":"53","id":"5697"},{"source":"916","target":"96","id":"2253"},{"source":"74","target":"70","id":"1712"},{"source":"134","target":"135","id":"151"},{"source":"966","target":"183","id":"5822"},{"source":"1472","target":"1474","id":"4919"},{"source":"217","target":"495","id":"3121"},{"source":"131","target":"118","id":"2182"},{"source":"445","target":"225","id":"2824"},{"source":"892","target":"306","id":"5140"},{"source":"611","target":"166","id":"1174"},{"source":"1663","target":"515","id":"6238"},{"source":"593","target":"68","id":"1119"},{"source":"1262","target":"262","id":"4632"},{"source":"344","target":"82","id":"523"},{"source":"723","target":"307","id":"1480"},{"source":"1500","target":"960","id":"5095"},{"source":"52","target":"1429","id":"5771"},{"source":"391","target":"883","id":"3964"},{"source":"1236","target":"621","id":"3593"},{"source":"1083","target":"899","id":"5932"},{"source":"187","target":"191","id":"219"},{"source":"821","target":"109","id":"1840"},{"source":"382","target":"281","id":"621"},{"source":"1536","target":"109","id":"5283"},{"source":"773","target":"769","id":"1646"},{"source":"708","target":"504","id":"2873"},{"source":"245","target":"65","id":"1728"},{"source":"895","target":"131","id":"2140"},{"source":"1575","target":"457","id":"5607"},{"source":"577","target":"120","id":"4400"},{"source":"929","target":"120","id":"2307"},{"source":"1347","target":"79","id":"4130"},{"source":"824","target":"82","id":"3268"},{"source":"408","target":"48","id":"872"},{"source":"696","target":"100","id":"1414"},{"source":"596","target":"76","id":"1139"},{"source":"61","target":"65","id":"865"},{"source":"47","target":"513","id":"4432"},{"source":"1709","target":"301","id":"6543"},{"source":"617","target":"219","id":"1194"},{"source":"622","target":"372","id":"4458"},{"source":"49","target":"513","id":"5185"},{"source":"1014","target":"79","id":"3597"},{"source":"667","target":"1","id":"3595"},{"source":"1468","target":"68","id":"4858"},{"source":"981","target":"18","id":"3906"},{"source":"755","target":"299","id":"1597"},{"source":"1097","target":"1094","id":"2953"},{"source":"25","target":"456","id":"1014"},{"source":"1061","target":"1062","id":"2793"},{"source":"511","target":"50","id":"6473"},{"source":"1709","target":"296","id":"6545"},{"source":"49","target":"66","id":"5189"},{"source":"1629","target":"548","id":"6027"},{"source":"710","target":"83","id":"1466"},{"source":"15","target":"1","id":"19"},{"source":"1651","target":"209","id":"6172"},{"source":"1162","target":"1165","id":"3223"},{"source":"1245","target":"99","id":"3624"},{"source":"1125","target":"535","id":"4519"},{"source":"1376","target":"293","id":"4277"},{"source":"1299","target":"1302","id":"3880"},{"source":"1362","target":"64","id":"4223"},{"source":"746","target":"20","id":"4856"},{"source":"287","target":"286","id":"4883"},{"source":"459","target":"64","id":"766"},{"source":"802","target":"637","id":"1766"},{"source":"592","target":"82","id":"4818"},{"source":"754","target":"136","id":"5437"},{"source":"1675","target":"119","id":"6329"},{"source":"606","target":"422","id":"3114"},{"source":"93","target":"105","id":"2162"},{"source":"1090","target":"292","id":"3237"},{"source":"958","target":"962","id":"2815"},{"source":"1365","target":"607","id":"4242"},{"source":"1035","target":"272","id":"2687"},{"source":"626","target":"638","id":"3228"},{"source":"173","target":"174","id":"193"},{"source":"1509","target":"267","id":"5195"},{"source":"808","target":"411","id":"1789"},{"source":"398","target":"396","id":"5153"},{"source":"1595","target":"759","id":"5774"},{"source":"479","target":"1064","id":"4296"},{"source":"345","target":"159","id":"524"},{"source":"1282","target":"618","id":"5892"},{"source":"1469","target":"926","id":"4872"},{"source":"1083","target":"653","id":"5928"},{"source":"1615","target":"988","id":"5921"},{"source":"1365","target":"339","id":"4245"},{"source":"836","target":"266","id":"1903"},{"source":"774","target":"82","id":"1653"},{"source":"1258","target":"1235","id":"3668"},{"source":"374","target":"49","id":"5181"},{"source":"1138","target":"1123","id":"5251"},{"source":"1012","target":"709","id":"5570"},{"source":"1116","target":"1060","id":"5933"},{"source":"1703","target":"313","id":"6495"},{"source":"1286","target":"48","id":"3820"},{"source":"389","target":"167","id":"639"},{"source":"964","target":"175","id":"2436"},{"source":"1051","target":"567","id":"2762"},{"source":"980","target":"65","id":"2508"},{"source":"1087","target":"635","id":"5444"},{"source":"10","target":"5","id":"12"},{"source":"301","target":"292","id":"383"},{"source":"1292","target":"218","id":"5654"},{"source":"633","target":"53","id":"1222"},{"source":"437","target":"422","id":"1312"},{"source":"848","target":"752","id":"1944"},{"source":"745","target":"170","id":"1574"},{"source":"474","target":"475","id":"6606"},{"source":"1446","target":"982","id":"4730"},{"source":"495","target":"825","id":"6520"},{"source":"362","target":"372","id":"6462"},{"source":"1190","target":"101","id":"5059"},{"source":"1675","target":"64","id":"6327"},{"source":"106","target":"53","id":"2252"},{"source":"239","target":"149","id":"6452"},{"source":"745","target":"748","id":"1577"},{"source":"1291","target":"1580","id":"5643"},{"source":"528","target":"293","id":"3549"},{"source":"1607","target":"1248","id":"5906"},{"source":"653","target":"1083","id":"2865"},{"source":"1051","target":"437","id":"2758"},{"source":"200","target":"607","id":"4664"},{"source":"854","target":"1","id":"1970"},{"source":"1397","target":"65","id":"4410"},{"source":"1086","target":"1087","id":"2889"},{"source":"1471","target":"66","id":"4910"},{"source":"1707","target":"270","id":"6532"},{"source":"815","target":"438","id":"1821"},{"source":"951","target":"457","id":"2403"},{"source":"1037","target":"1434","id":"5027"},{"source":"1636","target":"1035","id":"6066"},{"source":"532","target":"534","id":"921"},{"source":"1325","target":"66","id":"4019"},{"source":"1540","target":"747","id":"5304"},{"source":"1382","target":"463","id":"4292"},{"source":"687","target":"99","id":"1380"},{"source":"182","target":"621","id":"4470"},{"source":"287","target":"62","id":"4885"},{"source":"1363","target":"47","id":"4229"},{"source":"1319","target":"79","id":"3982"},{"source":"616","target":"177","id":"6581"},{"source":"987","target":"388","id":"3050"},{"source":"1091","target":"61","id":"2908"},{"source":"1339","target":"784","id":"4086"},{"source":"273","target":"36","id":"5564"},{"source":"463","target":"430","id":"2639"},{"source":"846","target":"935","id":"5690"},{"source":"1575","target":"49","id":"5605"},{"source":"871","target":"408","id":"2042"},{"source":"1043","target":"567","id":"5676"},{"source":"1044","target":"166","id":"2729"},{"source":"509","target":"68","id":"852"},{"source":"687","target":"109","id":"1385"},{"source":"1512","target":"128","id":"5212"},{"source":"1337","target":"201","id":"4074"},{"source":"337","target":"296","id":"508"},{"source":"882","target":"109","id":"2888"},{"source":"1650","target":"370","id":"6155"},{"source":"1707","target":"144","id":"6534"},{"source":"204","target":"205","id":"233"},{"source":"80","target":"109","id":"3097"},{"source":"893","target":"571","id":"2561"},{"source":"815","target":"816","id":"1817"},{"source":"1593","target":"422","id":"5748"},{"source":"578","target":"519","id":"5678"},{"source":"1086","target":"50","id":"2890"},{"source":"1204","target":"238","id":"3454"},{"source":"1677","target":"254","id":"6360"},{"source":"256","target":"302","id":"5162"},{"source":"1452","target":"48","id":"4755"},{"source":"501","target":"51","id":"834"},{"source":"1327","target":"497","id":"5872"},{"source":"724","target":"5","id":"2830"},{"source":"1145","target":"1146","id":"3109"},{"source":"1183","target":"133","id":"3341"},{"source":"704","target":"91","id":"6531"},{"source":"46","target":"185","id":"4308"},{"source":"1670","target":"1671","id":"6285"},{"source":"915","target":"458","id":"2327"},{"source":"454","target":"431","id":"748"},{"source":"1286","target":"279","id":"3822"},{"source":"1096","target":"148","id":"2940"},{"source":"266","target":"502","id":"3993"},{"source":"1016","target":"49","id":"2596"},{"source":"1362","target":"119","id":"4225"},{"source":"1468","target":"119","id":"4864"},{"source":"1255","target":"1231","id":"3648"},{"source":"1266","target":"498","id":"3727"},{"source":"1004","target":"76","id":"2565"},{"source":"1092","target":"50","id":"2921"},{"source":"1326","target":"1329","id":"4030"},{"source":"63","target":"67","id":"996"},{"source":"1037","target":"1","id":"5026"},{"source":"1359","target":"88","id":"4199"},{"source":"786","target":"1312","id":"3947"},{"source":"398","target":"409","id":"5158"},{"source":"320","target":"296","id":"435"},{"source":"1391","target":"1115","id":"4368"},{"source":"47","target":"113","id":"4424"},{"source":"1125","target":"364","id":"4515"},{"source":"1652","target":"166","id":"6186"},{"source":"1402","target":"208","id":"5840"},{"source":"404","target":"65","id":"662"},{"source":"356","target":"357","id":"850"},{"source":"760","target":"519","id":"1607"},{"source":"1248","target":"1409","id":"5896"},{"source":"702","target":"161","id":"3885"},{"source":"1091","target":"51","id":"2916"},{"source":"711","target":"444","id":"1437"},{"source":"1336","target":"166","id":"4059"},{"source":"1086","target":"53","id":"2892"},{"source":"247","target":"175","id":"4604"},{"source":"53","target":"82","id":"1109"},{"source":"180","target":"181","id":"202"},{"source":"694","target":"334","id":"1405"},{"source":"459","target":"114","id":"768"},{"source":"1597","target":"1396","id":"5783"},{"source":"511","target":"65","id":"6476"},{"source":"208","target":"207","id":"5846"},{"source":"873","target":"50","id":"2060"},{"source":"1455","target":"511","id":"4767"},{"source":"869","target":"53","id":"2027"},{"source":"1209","target":"408","id":"3466"},{"source":"1297","target":"1036","id":"3866"},{"source":"1172","target":"666","id":"3273"},{"source":"727","target":"307","id":"1506"},{"source":"1198","target":"61","id":"3432"},{"source":"752","target":"136","id":"1940"},{"source":"1077","target":"647","id":"3446"},{"source":"306","target":"325","id":"452"},{"source":"1342","target":"194","id":"4103"},{"source":"948","target":"24","id":"3444"},{"source":"4","target":"5","id":"5"},{"source":"84","target":"82","id":"1301"},{"source":"1590","target":"64","id":"5714"},{"source":"1462","target":"1463","id":"4808"},{"source":"514","target":"62","id":"887"},{"source":"525","target":"517","id":"931"},{"source":"1579","target":"1249","id":"5634"},{"source":"1462","target":"1260","id":"4809"},{"source":"822","target":"48","id":"6264"},{"source":"727","target":"65","id":"1509"},{"source":"639","target":"65","id":"1259"},{"source":"62","target":"67","id":"971"},{"source":"358","target":"79","id":"550"},{"source":"756","target":"758","id":"1599"},{"source":"334","target":"65","id":"4745"},{"source":"438","target":"265","id":"1565"},{"source":"1178","target":"284","id":"3299"},{"source":"1690","target":"297","id":"6416"},{"source":"1102","target":"626","id":"3501"},{"source":"1486","target":"53","id":"5009"},{"source":"1326","target":"606","id":"4027"},{"source":"768","target":"771","id":"6394"},{"source":"1282","target":"1248","id":"5889"},{"source":"1648","target":"50","id":"6138"},{"source":"291","target":"219","id":"369"},{"source":"670","target":"159","id":"1343"},{"source":"411","target":"805","id":"1783"},{"source":"1189","target":"109","id":"3389"},{"source":"1362","target":"53","id":"4220"},{"source":"33","target":"344","id":"6440"},{"source":"1222","target":"325","id":"3535"},{"source":"1654","target":"1261","id":"6191"},{"source":"263","target":"113","id":"306"},{"source":"455","target":"621","id":"1200"},{"source":"288","target":"290","id":"367"},{"source":"283","target":"334","id":"6352"},{"source":"113","target":"116","id":"1100"},{"source":"302","target":"256","id":"5116"},{"source":"94","target":"96","id":"91"},{"source":"1458","target":"976","id":"4795"},{"source":"1334","target":"1122","id":"4056"},{"source":"65","target":"104","id":"2124"},{"source":"964","target":"95","id":"2435"},{"source":"878","target":"53","id":"2075"},{"source":"417","target":"1314","id":"4466"},{"source":"1593","target":"109","id":"5755"},{"source":"778","target":"109","id":"1677"},{"source":"649","target":"547","id":"1278"},{"source":"829","target":"109","id":"1868"},{"source":"1407","target":"185","id":"4490"},{"source":"190","target":"187","id":"2526"},{"source":"1684","target":"1141","id":"6390"},{"source":"1493","target":"698","id":"5057"},{"source":"453","target":"65","id":"1618"},{"source":"526","target":"619","id":"3538"},{"source":"1038","target":"1039","id":"5029"},{"source":"1559","target":"123","id":"5464"},{"source":"461","target":"53","id":"2618"},{"source":"1629","target":"907","id":"6023"},{"source":"169","target":"68","id":"189"},{"source":"897","target":"91","id":"5463"},{"source":"1184","target":"1082","id":"3348"},{"source":"694","target":"111","id":"1403"},{"source":"1448","target":"979","id":"4734"},{"source":"800","target":"498","id":"2030"},{"source":"610","target":"515","id":"1184"},{"source":"528","target":"294","id":"3550"},{"source":"1336","target":"321","id":"4061"},{"source":"631","target":"397","id":"1220"},{"source":"773","target":"771","id":"1652"},{"source":"506","target":"133","id":"840"},{"source":"174","target":"1","id":"1526"},{"source":"484","target":"281","id":"5589"},{"source":"1470","target":"64","id":"4901"},{"source":"592","target":"65","id":"4816"},{"source":"417","target":"371","id":"4464"},{"source":"317","target":"79","id":"4543"},{"source":"1347","target":"1263","id":"4132"},{"source":"1713","target":"429","id":"6602"},{"source":"393","target":"391","id":"642"},{"source":"22","target":"23","id":"23"},{"source":"68","target":"50","id":"106"},{"source":"1329","target":"437","id":"5596"},{"source":"451","target":"118","id":"741"},{"source":"1209","target":"62","id":"3467"},{"source":"1712","target":"183","id":"6599"},{"source":"417","target":"292","id":"4462"},{"source":"240","target":"242","id":"276"},{"source":"593","target":"300","id":"1124"},{"source":"1022","target":"451","id":"3355"},{"source":"1039","target":"206","id":"2698"},{"source":"645","target":"96","id":"1556"},{"source":"1663","target":"408","id":"6237"},{"source":"194","target":"195","id":"4481"},{"source":"752","target":"211","id":"1939"},{"source":"131","target":"114","id":"2185"},{"source":"404","target":"66","id":"663"},{"source":"1586","target":"1","id":"6554"},{"source":"142","target":"146","id":"164"},{"source":"1326","target":"422","id":"4025"},{"source":"689","target":"99","id":"6107"},{"source":"631","target":"48","id":"1221"},{"source":"781","target":"109","id":"2788"},{"source":"905","target":"906","id":"2216"},{"source":"50","target":"53","id":"5469"},{"source":"1202","target":"647","id":"4999"},{"source":"538","target":"48","id":"4657"},{"source":"1537","target":"823","id":"5293"},{"source":"235","target":"160","id":"268"},{"source":"771","target":"769","id":"6413"},{"source":"397","target":"398","id":"3916"},{"source":"1170","target":"1090","id":"3271"},{"source":"1648","target":"280","id":"6142"},{"source":"1599","target":"659","id":"5791"},{"source":"206","target":"1","id":"2693"},{"source":"984","target":"985","id":"2516"},{"source":"1175","target":"598","id":"3328"},{"source":"856","target":"294","id":"1978"},{"source":"1218","target":"1","id":"3510"},{"source":"608","target":"515","id":"1492"},{"source":"79","target":"300","id":"1255"},{"source":"329","target":"311","id":"3240"},{"source":"1577","target":"441","id":"5621"},{"source":"1191","target":"52","id":"3400"},{"source":"792","target":"159","id":"1726"},{"source":"1405","target":"1197","id":"4457"},{"source":"835","target":"264","id":"5066"},{"source":"1621","target":"1547","id":"5983"},{"source":"1446","target":"1447","id":"4729"},{"source":"574","target":"292","id":"1061"},{"source":"797","target":"798","id":"1754"},{"source":"1221","target":"182","id":"3532"},{"source":"19","target":"21","id":"22"},{"source":"1519","target":"732","id":"5241"},{"source":"67","target":"118","id":"2711"},{"source":"244","target":"643","id":"1671"},{"source":"742","target":"203","id":"5146"},{"source":"864","target":"865","id":"2010"},{"source":"715","target":"1","id":"1448"},{"source":"52","target":"114","id":"5769"},{"source":"392","target":"1133","id":"4273"},{"source":"838","target":"51","id":"2458"},{"source":"1329","target":"422","id":"5595"},{"source":"994","target":"170","id":"2540"},{"source":"1501","target":"513","id":"5104"},{"source":"913","target":"137","id":"5135"},{"source":"1198","target":"408","id":"3433"},{"source":"1180","target":"334","id":"3313"},{"source":"1348","target":"433","id":"4137"},{"source":"1004","target":"439","id":"2566"},{"source":"992","target":"993","id":"2534"},{"source":"843","target":"444","id":"1920"},{"source":"1094","target":"312","id":"2937"},{"source":"656","target":"424","id":"5331"},{"source":"834","target":"403","id":"5071"},{"source":"1014","target":"1","id":"3600"},{"source":"1631","target":"420","id":"6042"},{"source":"904","target":"118","id":"2208"},{"source":"46","target":"723","id":"4309"},{"source":"1107","target":"50","id":"2989"},{"source":"1390","target":"90","id":"4360"},{"source":"1125","target":"532","id":"4516"},{"source":"1644","target":"48","id":"6128"},{"source":"1319","target":"50","id":"3984"},{"source":"327","target":"219","id":"458"},{"source":"597","target":"104","id":"1141"},{"source":"1597","target":"405","id":"5782"},{"source":"727","target":"229","id":"1505"},{"source":"1376","target":"516","id":"4279"},{"source":"658","target":"662","id":"1322"},{"source":"1091","target":"53","id":"2910"},{"source":"975","target":"167","id":"2487"},{"source":"703","target":"161","id":"3887"},{"source":"1631","target":"209","id":"6043"},{"source":"112","target":"114","id":"115"},{"source":"327","target":"298","id":"456"},{"source":"1304","target":"1305","id":"3901"},{"source":"67","target":"64","id":"2712"},{"source":"1080","target":"294","id":"2850"},{"source":"200","target":"444","id":"4665"},{"source":"321","target":"185","id":"730"},{"source":"82","target":"84","id":"6437"},{"source":"1689","target":"159","id":"6405"},{"source":"437","target":"656","id":"1317"},{"source":"1050","target":"401","id":"4441"},{"source":"1660","target":"502","id":"6227"},{"source":"35","target":"36","id":"414"},{"source":"607","target":"216","id":"1486"},{"source":"1471","target":"48","id":"4912"},{"source":"285","target":"65","id":"354"},{"source":"1334","target":"1123","id":"4049"},{"source":"616","target":"79","id":"6582"},{"source":"31","target":"32","id":"31"},{"source":"1404","target":"429","id":"4538"},{"source":"664","target":"646","id":"3702"},{"source":"1011","target":"1012","id":"2581"},{"source":"336","target":"335","id":"3144"},{"source":"876","target":"976","id":"3128"},{"source":"635","target":"53","id":"4401"},{"source":"1248","target":"1249","id":"5900"},{"source":"378","target":"68","id":"3204"},{"source":"991","target":"429","id":"4948"},{"source":"1325","target":"53","id":"4016"},{"source":"441","target":"82","id":"4378"},{"source":"1307","target":"1308","id":"3918"},{"source":"862","target":"554","id":"2632"},{"source":"1591","target":"118","id":"5725"},{"source":"279","target":"53","id":"505"},{"source":"931","target":"61","id":"2310"},{"source":"333","target":"61","id":"496"},{"source":"391","target":"1133","id":"3969"},{"source":"214","target":"217","id":"245"},{"source":"1707","target":"109","id":"6539"},{"source":"167","target":"334","id":"2338"},{"source":"651","target":"132","id":"1305"},{"source":"1423","target":"1424","id":"4586"},{"source":"208","target":"209","id":"5843"},{"source":"276","target":"1384","id":"6588"},{"source":"896","target":"388","id":"4820"},{"source":"1374","target":"334","id":"4270"},{"source":"499","target":"181","id":"825"},{"source":"621","target":"1315","id":"3961"},{"source":"647","target":"1003","id":"3711"},{"source":"144","target":"437","id":"715"},{"source":"953","target":"76","id":"2412"},{"source":"1423","target":"1258","id":"4589"},{"source":"375","target":"112","id":"595"},{"source":"409","target":"49","id":"4652"},{"source":"304","target":"1410","id":"4508"},{"source":"926","target":"436","id":"2383"},{"source":"532","target":"536","id":"924"},{"source":"425","target":"250","id":"700"},{"source":"1637","target":"993","id":"6076"},{"source":"1294","target":"833","id":"3848"},{"source":"204","target":"209","id":"237"},{"source":"24","target":"68","id":"5814"},{"source":"322","target":"321","id":"3940"},{"source":"748","target":"281","id":"3784"},{"source":"659","target":"1303","id":"3881"},{"source":"993","target":"998","id":"4530"},{"source":"894","target":"463","id":"2122"},{"source":"1654","target":"1","id":"6192"},{"source":"305","target":"308","id":"398"},{"source":"1107","target":"66","id":"2986"},{"source":"1483","target":"1077","id":"4986"},{"source":"1152","target":"316","id":"4499"},{"source":"285","target":"53","id":"353"},{"source":"1215","target":"159","id":"3490"},{"source":"462","target":"177","id":"771"},{"source":"1470","target":"62","id":"4898"},{"source":"619","target":"617","id":"6034"},{"source":"1468","target":"50","id":"4866"},{"source":"712","target":"713","id":"2033"},{"source":"1152","target":"292","id":"4493"},{"source":"1336","target":"839","id":"4064"},{"source":"436","target":"266","id":"1006"},{"source":"1256","target":"100","id":"3650"},{"source":"432","target":"1","id":"710"},{"source":"115","target":"112","id":"2324"},{"source":"1500","target":"959","id":"5100"},{"source":"413","target":"419","id":"685"},{"source":"645","target":"82","id":"1557"},{"source":"1188","target":"103","id":"3380"},{"source":"684","target":"685","id":"1374"},{"source":"1591","target":"53","id":"5724"},{"source":"364","target":"116","id":"585"},{"source":"1099","target":"313","id":"2951"},{"source":"978","target":"310","id":"2503"},{"source":"1543","target":"251","id":"5339"},{"source":"1707","target":"567","id":"6535"},{"source":"1522","target":"1","id":"5249"},{"source":"748","target":"335","id":"3789"},{"source":"1194","target":"833","id":"3411"},{"source":"1126","target":"896","id":"4811"},{"source":"1065","target":"751","id":"2797"},{"source":"1083","target":"913","id":"5930"},{"source":"1246","target":"688","id":"6106"},{"source":"541","target":"539","id":"2740"},{"source":"288","target":"65","id":"360"},{"source":"1214","target":"128","id":"3485"},{"source":"397","target":"48","id":"3915"},{"source":"756","target":"757","id":"1598"},{"source":"98","target":"99","id":"93"},{"source":"587","target":"267","id":"1107"},{"source":"443","target":"150","id":"1290"},{"source":"890","target":"790","id":"2109"},{"source":"253","target":"84","id":"806"},{"source":"183","target":"966","id":"5122"},{"source":"452","target":"451","id":"2280"},{"source":"502","target":"109","id":"5078"},{"source":"163","target":"162","id":"2236"},{"source":"1467","target":"444","id":"4852"},{"source":"1505","target":"500","id":"5110"},{"source":"1696","target":"50","id":"6431"},{"source":"943","target":"169","id":"2358"},{"source":"858","target":"584","id":"5063"},{"source":"357","target":"216","id":"917"},{"source":"1519","target":"757","id":"5240"},{"source":"1353","target":"335","id":"4173"},{"source":"182","target":"185","id":"4472"},{"source":"1368","target":"1095","id":"4251"},{"source":"713","target":"82","id":"6646"},{"source":"780","target":"782","id":"1695"},{"source":"1194","target":"484","id":"3416"},{"source":"1411","target":"230","id":"4511"},{"source":"48","target":"50","id":"4634"},{"source":"287","target":"53","id":"4886"},{"source":"707","target":"82","id":"1628"},{"source":"799","target":"280","id":"1765"},{"source":"1683","target":"814","id":"6381"},{"source":"1580","target":"1291","id":"5649"},{"source":"829","target":"453","id":"1870"},{"source":"681","target":"640","id":"1372"},{"source":"501","target":"504","id":"836"},{"source":"1182","target":"166","id":"3337"},{"source":"392","target":"585","id":"4275"},{"source":"109","target":"101","id":"5722"},{"source":"1333","target":"624","id":"4048"},{"source":"49","target":"50","id":"5186"},{"source":"1165","target":"64","id":"5229"},{"source":"1158","target":"122","id":"3182"},{"source":"583","target":"580","id":"1084"},{"source":"1004","target":"95","id":"2563"},{"source":"1120","target":"1","id":"3039"},{"source":"838","target":"513","id":"2457"},{"source":"612","target":"37","id":"1189"},{"source":"186","target":"189","id":"209"},{"source":"128","target":"85","id":"137"},{"source":"637","target":"300","id":"1252"},{"source":"698","target":"696","id":"6439"},{"source":"1383","target":"311","id":"4312"},{"source":"1554","target":"938","id":"5422"},{"source":"1435","target":"656","id":"4705"},{"source":"1607","target":"618","id":"5908"},{"source":"840","target":"502","id":"1917"},{"source":"741","target":"20","id":"1541"},{"source":"1633","target":"1513","id":"6061"},{"source":"859","target":"87","id":"1997"},{"source":"569","target":"504","id":"2198"},{"source":"462","target":"463","id":"773"},{"source":"1145","target":"381","id":"3112"},{"source":"104","target":"598","id":"2211"},{"source":"665","target":"455","id":"1328"},{"source":"293","target":"294","id":"617"},{"source":"1475","target":"1476","id":"4926"},{"source":"748","target":"600","id":"3790"},{"source":"1001","target":"433","id":"2552"},{"source":"701","target":"91","id":"1421"},{"source":"1173","target":"334","id":"3282"},{"source":"222","target":"166","id":"250"},{"source":"1719","target":"53","id":"6630"},{"source":"1702","target":"1703","id":"6485"},{"source":"373","target":"51","id":"594"},{"source":"1674","target":"61","id":"6308"},{"source":"1675","target":"53","id":"6325"},{"source":"186","target":"190","id":"210"},{"source":"983","target":"937","id":"4694"},{"source":"924","target":"1379","id":"5325"},{"source":"1178","target":"282","id":"3301"},{"source":"98","target":"101","id":"95"},{"source":"921","target":"120","id":"2271"},{"source":"135","target":"133","id":"1043"},{"source":"1141","target":"1136","id":"3093"},{"source":"298","target":"79","id":"380"},{"source":"492","target":"494","id":"818"},{"source":"552","target":"68","id":"4888"},{"source":"456","target":"24","id":"5808"},{"source":"24","target":"456","id":"5818"},{"source":"263","target":"265","id":"308"},{"source":"317","target":"181","id":"4544"},{"source":"1023","target":"581","id":"4356"},{"source":"1353","target":"748","id":"4167"},{"source":"1425","target":"1235","id":"6435"},{"source":"1296","target":"352","id":"3859"},{"source":"797","target":"50","id":"1755"},{"source":"60","target":"67","id":"61"},{"source":"454","target":"457","id":"755"},{"source":"34","target":"35","id":"33"},{"source":"1208","target":"16","id":"3463"},{"source":"1490","target":"758","id":"5035"},{"source":"385","target":"1","id":"3684"},{"source":"811","target":"65","id":"1805"},{"source":"296","target":"182","id":"431"},{"source":"750","target":"185","id":"1588"},{"source":"1519","target":"1015","id":"5244"},{"source":"117","target":"67","id":"122"},{"source":"209","target":"272","id":"2669"},{"source":"541","target":"703","id":"2738"},{"source":"670","target":"504","id":"1346"},{"source":"364","target":"371","id":"586"},{"source":"64","target":"68","id":"1823"},{"source":"583","target":"114","id":"1085"},{"source":"168","target":"165","id":"6368"},{"source":"1507","target":"325","id":"5151"},{"source":"117","target":"53","id":"118"},{"source":"1709","target":"1557","id":"6552"},{"source":"1194","target":"51","id":"3415"},{"source":"301","target":"295","id":"386"},{"source":"1721","target":"114","id":"6672"},{"source":"178","target":"1","id":"1240"},{"source":"824","target":"1159","id":"3266"},{"source":"398","target":"405","id":"5154"},{"source":"1088","target":"1090","id":"2906"},{"source":"1286","target":"339","id":"3824"},{"source":"1088","target":"146","id":"2905"},{"source":"124","target":"123","id":"131"},{"source":"604","target":"495","id":"1154"},{"source":"914","target":"79","id":"2245"},{"source":"99","target":"89","id":"159"},{"source":"1189","target":"159","id":"3393"},{"source":"660","target":"1330","id":"4040"},{"source":"1362","target":"108","id":"4228"},{"source":"1124","target":"335","id":"4843"},{"source":"251","target":"708","id":"3975"},{"source":"1665","target":"159","id":"6271"},{"source":"1402","target":"1050","id":"5839"},{"source":"1033","target":"1034","id":"2673"},{"source":"1259","target":"1235","id":"3962"},{"source":"1568","target":"97","id":"5511"},{"source":"695","target":"234","id":"4952"},{"source":"1353","target":"747","id":"4166"},{"source":"509","target":"62","id":"855"},{"source":"1608","target":"89","id":"5880"},{"source":"311","target":"45","id":"470"},{"source":"1483","target":"1201","id":"4990"},{"source":"257","target":"51","id":"298"},{"source":"465","target":"177","id":"950"},{"source":"464","target":"1","id":"3865"},{"source":"984","target":"127","id":"2515"},{"source":"1420","target":"49","id":"4562"},{"source":"266","target":"438","id":"3990"},{"source":"1164","target":"426","id":"3986"},{"source":"44","target":"50","id":"46"},{"source":"475","target":"473","id":"795"},{"source":"1673","target":"816","id":"6303"},{"source":"711","target":"715","id":"1442"},{"source":"1355","target":"1356","id":"4177"},{"source":"314","target":"292","id":"420"},{"source":"1161","target":"120","id":"3199"},{"source":"873","target":"131","id":"2056"},{"source":"249","target":"53","id":"284"},{"source":"413","target":"416","id":"682"},{"source":"1134","target":"284","id":"3076"},{"source":"1293","target":"49","id":"3844"},{"source":"1346","target":"903","id":"4123"},{"source":"1004","target":"216","id":"2564"},{"source":"258","target":"571","id":"1308"},{"source":"1580","target":"1581","id":"5652"},{"source":"988","target":"292","id":"2522"},{"source":"195","target":"450","id":"5390"},{"source":"1027","target":"966","id":"5436"},{"source":"1678","target":"50","id":"6375"},{"source":"628","target":"906","id":"4151"},{"source":"519","target":"120","id":"1070"},{"source":"1391","target":"1060","id":"4366"},{"source":"893","target":"65","id":"2557"},{"source":"1051","target":"82","id":"2764"},{"source":"270","target":"40","id":"412"},{"source":"1712","target":"894","id":"6594"},{"source":"1131","target":"512","id":"3068"},{"source":"1366","target":"82","id":"4250"},{"source":"1499","target":"437","id":"5090"},{"source":"1605","target":"109","id":"5859"},{"source":"131","target":"65","id":"2183"},{"source":"583","target":"584","id":"1089"},{"source":"131","target":"50","id":"2188"},{"source":"413","target":"420","id":"687"},{"source":"1096","target":"1097","id":"2943"},{"source":"373","target":"113","id":"590"},{"source":"548","target":"547","id":"959"},{"source":"617","target":"79","id":"1195"},{"source":"184","target":"79","id":"5123"},{"source":"201","target":"200","id":"4760"},{"source":"607","target":"608","id":"1489"},{"source":"1232","target":"1233","id":"3588"},{"source":"907","target":"906","id":"2221"},{"source":"134","target":"138","id":"155"},{"source":"245","target":"102","id":"1733"},{"source":"1011","target":"1015","id":"2588"},{"source":"606","target":"104","id":"3116"},{"source":"1357","target":"185","id":"5315"},{"source":"753","target":"79","id":"5128"},{"source":"1689","target":"1079","id":"6408"},{"source":"903","target":"53","id":"2177"},{"source":"1189","target":"1190","id":"3388"},{"source":"136","target":"752","id":"2400"},{"source":"1642","target":"1407","id":"6100"},{"source":"1325","target":"513","id":"4012"},{"source":"1060","target":"1116","id":"3018"},{"source":"1536","target":"65","id":"5286"},{"source":"1304","target":"311","id":"3904"},{"source":"1470","target":"63","id":"4899"},{"source":"410","target":"61","id":"672"},{"source":"334","target":"53","id":"4744"},{"source":"1578","target":"105","id":"5624"},{"source":"805","target":"281","id":"1775"},{"source":"1553","target":"167","id":"5411"},{"source":"1537","target":"68","id":"5291"},{"source":"1591","target":"50","id":"5732"},{"source":"1216","target":"214","id":"3495"},{"source":"514","target":"68","id":"885"},{"source":"483","target":"279","id":"3922"},{"source":"240","target":"152","id":"274"},{"source":"93","target":"53","id":"2156"},{"source":"868","target":"531","id":"2022"},{"source":"1342","target":"335","id":"4100"},{"source":"1658","target":"296","id":"6214"},{"source":"658","target":"664","id":"1324"},{"source":"1046","target":"1042","id":"6337"},{"source":"1675","target":"216","id":"6324"},{"source":"607","target":"53","id":"1487"},{"source":"873","target":"114","id":"2058"},{"source":"1714","target":"1711","id":"6610"},{"source":"339","target":"65","id":"4210"},{"source":"251","target":"97","id":"3977"},{"source":"1133","target":"391","id":"3071"},{"source":"102","target":"103","id":"96"},{"source":"1657","target":"666","id":"6210"},{"source":"573","target":"281","id":"1048"},{"source":"895","target":"67","id":"2142"},{"source":"569","target":"82","id":"2201"},{"source":"1107","target":"61","id":"2991"},{"source":"1499","target":"422","id":"5087"},{"source":"773","target":"568","id":"1648"},{"source":"283","target":"61","id":"6348"},{"source":"1702","target":"79","id":"6488"},{"source":"1520","target":"659","id":"5247"},{"source":"1480","target":"391","id":"4978"},{"source":"598","target":"816","id":"1983"},{"source":"47","target":"267","id":"4428"},{"source":"1601","target":"84","id":"5801"},{"source":"1177","target":"493","id":"5364"},{"source":"801","target":"397","id":"4213"},{"source":"593","target":"131","id":"1123"},{"source":"85","target":"709","id":"1931"},{"source":"1004","target":"1005","id":"2569"},{"source":"268","target":"270","id":"312"},{"source":"410","target":"45","id":"676"},{"source":"1405","target":"613","id":"4452"},{"source":"180","target":"184","id":"205"},{"source":"1296","target":"498","id":"3862"},{"source":"1230","target":"216","id":"3586"},{"source":"1189","target":"101","id":"3387"},{"source":"518","target":"519","id":"895"},{"source":"881","target":"109","id":"2086"},{"source":"1687","target":"1158","id":"6397"},{"source":"47","target":"589","id":"4425"},{"source":"1221","target":"255","id":"3531"},{"source":"1314","target":"292","id":"4449"},{"source":"1280","target":"732","id":"3807"},{"source":"789","target":"50","id":"3029"},{"source":"224","target":"724","id":"2827"},{"source":"176","target":"79","id":"198"},{"source":"1443","target":"248","id":"4717"},{"source":"1108","target":"73","id":"2999"},{"source":"373","target":"115","id":"591"},{"source":"682","target":"161","id":"6167"},{"source":"1292","target":"983","id":"5655"},{"source":"314","target":"315","id":"423"},{"source":"580","target":"578","id":"1077"},{"source":"895","target":"50","id":"2134"},{"source":"1125","target":"281","id":"4520"},{"source":"1122","target":"987","id":"3045"},{"source":"741","target":"742","id":"1547"},{"source":"1244","target":"50","id":"3617"},{"source":"39","target":"275","id":"4306"},{"source":"1694","target":"1695","id":"6423"},{"source":"1039","target":"1037","id":"2700"},{"source":"398","target":"397","id":"5156"},{"source":"720","target":"141","id":"3512"},{"source":"504","target":"427","id":"1637"},{"source":"1048","target":"703","id":"2748"},{"source":"808","target":"405","id":"1791"},{"source":"1466","target":"505","id":"4842"},{"source":"1510","target":"513","id":"5205"},{"source":"250","target":"109","id":"3368"},{"source":"749","target":"1449","id":"4739"},{"source":"1407","target":"1408","id":"4491"},{"source":"1037","target":"1039","id":"5025"},{"source":"561","target":"72","id":"1023"},{"source":"1537","target":"1538","id":"5294"},{"source":"1408","target":"185","id":"6202"},{"source":"108","target":"118","id":"5489"},{"source":"1156","target":"51","id":"3154"},{"source":"653","target":"1082","id":"2866"},{"source":"1319","target":"108","id":"3985"},{"source":"834","target":"835","id":"5072"},{"source":"1247","target":"1249","id":"3632"},{"source":"915","target":"697","id":"2328"},{"source":"629","target":"177","id":"2679"},{"source":"249","target":"251","id":"288"},{"source":"859","target":"863","id":"2000"},{"source":"871","target":"513","id":"2049"},{"source":"694","target":"53","id":"1401"},{"source":"290","target":"53","id":"1852"},{"source":"850","target":"718","id":"1954"},{"source":"881","target":"167","id":"2092"},{"source":"1490","target":"235","id":"5036"},{"source":"197","target":"202","id":"231"},{"source":"1651","target":"37","id":"6171"},{"source":"529","target":"353","id":"914"},{"source":"830","target":"831","id":"1876"},{"source":"1519","target":"759","id":"5239"},{"source":"93","target":"84","id":"2157"},{"source":"1590","target":"606","id":"5717"},{"source":"883","target":"68","id":"4185"},{"source":"926","target":"262","id":"2384"},{"source":"1401","target":"284","id":"4423"},{"source":"100","target":"53","id":"1843"},{"source":"703","target":"539","id":"3890"},{"source":"379","target":"118","id":"4127"},{"source":"1012","target":"50","id":"5575"},{"source":"1420","target":"335","id":"4559"},{"source":"348","target":"347","id":"4622"},{"source":"1109","target":"465","id":"3000"},{"source":"69","target":"70","id":"64"},{"source":"514","target":"515","id":"889"},{"source":"60","target":"63","id":"56"},{"source":"1657","target":"457","id":"6205"},{"source":"1201","target":"427","id":"4997"},{"source":"184","target":"181","id":"5124"},{"source":"127","target":"812","id":"2354"},{"source":"851","target":"852","id":"1960"},{"source":"1556","target":"182","id":"5432"},{"source":"954","target":"159","id":"3693"},{"source":"1041","target":"567","id":"2704"},{"source":"1413","target":"1200","id":"4531"},{"source":"329","target":"626","id":"3242"},{"source":"984","target":"987","id":"2518"},{"source":"382","target":"53","id":"620"},{"source":"1472","target":"241","id":"4923"},{"source":"605","target":"204","id":"2898"},{"source":"6","target":"1","id":"6"},{"source":"1334","target":"1174","id":"4050"},{"source":"413","target":"417","id":"683"},{"source":"196","target":"136","id":"225"},{"source":"1701","target":"515","id":"6481"},{"source":"722","target":"234","id":"1478"},{"source":"821","target":"822","id":"1841"},{"source":"822","target":"181","id":"6262"},{"source":"1130","target":"653","id":"5938"},{"source":"376","target":"377","id":"604"},{"source":"1012","target":"103","id":"5576"},{"source":"590","target":"113","id":"5166"},{"source":"1235","target":"524","id":"3591"},{"source":"738","target":"1289","id":"3830"},{"source":"857","target":"816","id":"2014"},{"source":"717","target":"712","id":"1464"},{"source":"250","target":"249","id":"3369"},{"source":"670","target":"53","id":"1344"},{"source":"514","target":"50","id":"884"},{"source":"1594","target":"498","id":"5764"},{"source":"436","target":"556","id":"1005"},{"source":"1146","target":"318","id":"3659"},{"source":"609","target":"433","id":"3064"},{"source":"627","target":"861","id":"3856"},{"source":"283","target":"279","id":"6353"},{"source":"681","target":"641","id":"1373"},{"source":"455","target":"301","id":"1199"},{"source":"553","target":"61","id":"983"},{"source":"713","target":"502","id":"6645"},{"source":"1456","target":"279","id":"4773"},{"source":"112","target":"65","id":"113"},{"source":"1588","target":"109","id":"5702"},{"source":"946","target":"95","id":"2376"},{"source":"1185","target":"1083","id":"5940"},{"source":"951","target":"455","id":"2407"},{"source":"72","target":"70","id":"1022"},{"source":"1618","target":"388","id":"5954"},{"source":"835","target":"265","id":"5067"},{"source":"405","target":"411","id":"2929"},{"source":"829","target":"830","id":"1871"},{"source":"292","target":"296","id":"373"},{"source":"622","target":"1315","id":"4461"},{"source":"142","target":"144","id":"162"},{"source":"51","target":"119","id":"5586"},{"source":"567","target":"1044","id":"2720"},{"source":"1037","target":"206","id":"5024"},{"source":"407","target":"61","id":"665"},{"source":"427","target":"504","id":"1034"},{"source":"1117","target":"79","id":"3021"},{"source":"1168","target":"1166","id":"3257"},{"source":"1337","target":"411","id":"4070"},{"source":"26","target":"23","id":"2879"},{"source":"1500","target":"962","id":"5097"},{"source":"951","target":"431","id":"2404"},{"source":"543","target":"335","id":"936"},{"source":"1513","target":"668","id":"5215"},{"source":"1305","target":"415","id":"4576"},{"source":"562","target":"559","id":"1026"},{"source":"1182","target":"201","id":"3336"},{"source":"199","target":"166","id":"3317"},{"source":"880","target":"53","id":"2081"},{"source":"624","target":"896","id":"2145"},{"source":"881","target":"882","id":"2084"},{"source":"565","target":"1430","id":"4644"},{"source":"1491","target":"1","id":"5046"},{"source":"472","target":"475","id":"785"},{"source":"1325","target":"50","id":"4013"},{"source":"1563","target":"1566","id":"5501"},{"source":"1337","target":"805","id":"4069"},{"source":"1168","target":"312","id":"3258"},{"source":"237","target":"239","id":"273"},{"source":"1606","target":"1409","id":"5866"},{"source":"1162","target":"519","id":"3219"},{"source":"1081","target":"361","id":"2856"},{"source":"1193","target":"1","id":"3407"},{"source":"583","target":"120","id":"1087"},{"source":"1583","target":"936","id":"5668"},{"source":"1660","target":"505","id":"6224"},{"source":"691","target":"128","id":"1390"},{"source":"628","target":"1324","id":"4148"},{"source":"45","target":"185","id":"3236"},{"source":"1254","target":"280","id":"3644"},{"source":"1568","target":"258","id":"5510"},{"source":"364","target":"115","id":"582"},{"source":"1101","target":"1102","id":"2960"},{"source":"1632","target":"335","id":"6047"},{"source":"1365","target":"147","id":"4241"},{"source":"1356","target":"57","id":"4284"},{"source":"977","target":"432","id":"2498"},{"source":"740","target":"65","id":"1537"},{"source":"691","target":"215","id":"1395"},{"source":"1056","target":"479","id":"2779"},{"source":"1280","target":"51","id":"3803"},{"source":"1316","target":"201","id":"4970"},{"source":"44","target":"49","id":"45"},{"source":"1525","target":"1527","id":"5264"},{"source":"967","target":"1026","id":"2654"},{"source":"1349","target":"463","id":"4144"},{"source":"732","target":"1621","id":"5974"},{"source":"1570","target":"96","id":"5527"},{"source":"1456","target":"758","id":"4772"},{"source":"1563","target":"1565","id":"5498"},{"source":"1501","target":"1502","id":"5101"},{"source":"1644","target":"444","id":"6124"},{"source":"291","target":"293","id":"370"},{"source":"786","target":"206","id":"3946"},{"source":"1530","target":"53","id":"5275"},{"source":"1296","target":"788","id":"3861"},{"source":"1048","target":"704","id":"2750"},{"source":"314","target":"296","id":"421"},{"source":"379","target":"155","id":"4129"},{"source":"1576","target":"1401","id":"5612"},{"source":"1599","target":"661","id":"5794"},{"source":"938","target":"976","id":"2484"},{"source":"1329","target":"1","id":"5599"},{"source":"260","target":"238","id":"304"},{"source":"334","target":"406","id":"4741"},{"source":"1553","target":"166","id":"5408"},{"source":"341","target":"1","id":"518"},{"source":"1309","target":"114","id":"3928"},{"source":"293","target":"381","id":"616"},{"source":"969","target":"48","id":"2471"},{"source":"1121","target":"313","id":"3682"},{"source":"1351","target":"104","id":"4157"},{"source":"1232","target":"86","id":"3587"},{"source":"1349","target":"1350","id":"4139"},{"source":"1418","target":"95","id":"4552"},{"source":"1276","target":"370","id":"3766"},{"source":"1281","target":"618","id":"3808"},{"source":"1383","target":"723","id":"4314"},{"source":"663","target":"888","id":"2791"},{"source":"565","target":"777","id":"4643"},{"source":"828","target":"76","id":"1859"},{"source":"649","target":"177","id":"1279"},{"source":"1244","target":"956","id":"3620"},{"source":"555","target":"510","id":"3190"},{"source":"405","target":"66","id":"2930"},{"source":"64","target":"93","id":"1827"},{"source":"1621","target":"261","id":"5984"},{"source":"670","target":"65","id":"1347"},{"source":"807","target":"411","id":"6518"},{"source":"362","target":"360","id":"6458"},{"source":"862","target":"504","id":"2630"},{"source":"376","target":"296","id":"606"},{"source":"1336","target":"281","id":"4063"},{"source":"595","target":"53","id":"1129"},{"source":"51","target":"49","id":"5579"},{"source":"1107","target":"53","id":"2984"},{"source":"1269","target":"62","id":"3747"},{"source":"342","target":"183","id":"522"},{"source":"665","target":"457","id":"1332"},{"source":"1209","target":"666","id":"3469"},{"source":"64","target":"118","id":"1825"},{"source":"787","target":"786","id":"6470"},{"source":"703","target":"91","id":"3888"},{"source":"936","target":"498","id":"2329"},{"source":"1471","target":"607","id":"4908"},{"source":"252","target":"95","id":"760"},{"source":"984","target":"986","id":"2517"},{"source":"841","target":"967","id":"2452"},{"source":"1152","target":"371","id":"4494"},{"source":"1567","target":"238","id":"5504"},{"source":"656","target":"423","id":"5329"},{"source":"1197","target":"626","id":"3427"},{"source":"1101","target":"1094","id":"2956"},{"source":"357","target":"1","id":"919"},{"source":"544","target":"87","id":"6114"},{"source":"696","target":"167","id":"1415"},{"source":"1512","target":"82","id":"5211"},{"source":"244","target":"104","id":"1668"},{"source":"903","target":"104","id":"2174"},{"source":"1320","target":"232","id":"3997"},{"source":"841","target":"259","id":"2451"},{"source":"1577","target":"172","id":"5622"},{"source":"555","target":"436","id":"3186"},{"source":"903","target":"65","id":"2178"},{"source":"938","target":"165","id":"2480"},{"source":"616","target":"296","id":"6580"},{"source":"686","target":"685","id":"6278"},{"source":"1623","target":"1547","id":"5986"},{"source":"512","target":"784","id":"1701"},{"source":"318","target":"1","id":"532"},{"source":"553","target":"287","id":"981"},{"source":"290","target":"826","id":"1855"},{"source":"351","target":"79","id":"4446"},{"source":"731","target":"111","id":"4956"},{"source":"1143","target":"1","id":"3098"},{"source":"605","target":"428","id":"2901"},{"source":"1694","target":"303","id":"6424"},{"source":"643","target":"109","id":"1266"},{"source":"105","target":"53","id":"5380"},{"source":"997","target":"313","id":"2543"},{"source":"1418","target":"1419","id":"4555"},{"source":"1684","target":"1136","id":"6385"},{"source":"917","target":"76","id":"2254"},{"source":"269","target":"275","id":"335"},{"source":"1358","target":"1379","id":"4288"},{"source":"163","target":"164","id":"2238"},{"source":"387","target":"388","id":"636"},{"source":"1054","target":"908","id":"2776"},{"source":"161","target":"434","id":"5309"},{"source":"1707","target":"423","id":"6537"},{"source":"1631","target":"204","id":"6041"},{"source":"478","target":"479","id":"796"},{"source":"541","target":"704","id":"2739"},{"source":"1628","target":"532","id":"6016"},{"source":"54","target":"55","id":"50"},{"source":"826","target":"626","id":"5360"},{"source":"1584","target":"1060","id":"5670"},{"source":"442","target":"443","id":"719"},{"source":"1076","target":"1262","id":"3698"},{"source":"425","target":"426","id":"697"},{"source":"1562","target":"596","id":"5495"},{"source":"181","target":"312","id":"3522"},{"source":"337","target":"48","id":"516"},{"source":"958","target":"48","id":"2814"},{"source":"821","target":"88","id":"1837"},{"source":"1653","target":"351","id":"6189"},{"source":"374","target":"113","id":"5175"},{"source":"979","target":"415","id":"2659"},{"source":"1230","target":"533","id":"3585"},{"source":"110","target":"111","id":"111"},{"source":"405","target":"48","id":"2932"},{"source":"882","target":"101","id":"2887"},{"source":"92","target":"64","id":"85"},{"source":"614","target":"324","id":"2816"},{"source":"186","target":"192","id":"212"},{"source":"113","target":"374","id":"1098"},{"source":"1104","target":"286","id":"2972"},{"source":"134","target":"82","id":"156"},{"source":"172","target":"441","id":"5737"},{"source":"1093","target":"312","id":"2936"},{"source":"137","target":"861","id":"6151"},{"source":"1376","target":"291","id":"4276"},{"source":"1441","target":"132","id":"4711"},{"source":"1180","target":"405","id":"3316"},{"source":"537","target":"543","id":"3330"},{"source":"787","target":"321","id":"6465"},{"source":"947","target":"26","id":"2401"},{"source":"987","target":"896","id":"3054"},{"source":"1269","target":"408","id":"3746"},{"source":"1276","target":"533","id":"3767"},{"source":"84","target":"53","id":"1300"},{"source":"375","target":"374","id":"601"},{"source":"113","target":"372","id":"1096"},{"source":"264","target":"265","id":"1571"},{"source":"66","target":"498","id":"2598"},{"source":"232","target":"353","id":"4372"},{"source":"856","target":"219","id":"1975"},{"source":"805","target":"344","id":"1772"},{"source":"481","target":"166","id":"798"},{"source":"582","target":"897","id":"4714"},{"source":"675","target":"69","id":"6632"},{"source":"964","target":"882","id":"2439"},{"source":"352","target":"128","id":"534"},{"source":"951","target":"53","id":"2406"},{"source":"1210","target":"1079","id":"6448"},{"source":"853","target":"292","id":"1968"},{"source":"1144","target":"318","id":"3102"},{"source":"1343","target":"505","id":"4110"},{"source":"1560","target":"636","id":"5480"},{"source":"1552","target":"970","id":"5396"},{"source":"977","target":"279","id":"2497"},{"source":"567","target":"424","id":"2723"},{"source":"161","target":"642","id":"5312"},{"source":"670","target":"591","id":"1345"},{"source":"558","target":"556","id":"1012"},{"source":"1675","target":"512","id":"6326"},{"source":"1194","target":"339","id":"3413"},{"source":"1554","target":"132","id":"5423"},{"source":"1451","target":"79","id":"5108"},{"source":"311","target":"296","id":"467"},{"source":"223","target":"79","id":"251"},{"source":"1144","target":"79","id":"3104"},{"source":"800","target":"581","id":"2031"},{"source":"970","target":"217","id":"3095"},{"source":"1109","target":"79","id":"3002"},{"source":"713","target":"712","id":"6644"},{"source":"660","target":"1303","id":"4039"},{"source":"975","target":"696","id":"2486"},{"source":"103","target":"82","id":"267"},{"source":"108","target":"68","id":"5485"},{"source":"1523","target":"96","id":"5253"},{"source":"1664","target":"471","id":"6245"},{"source":"1022","target":"109","id":"3362"},{"source":"1456","target":"494","id":"4776"},{"source":"498","target":"858","id":"1989"},{"source":"247","target":"215","id":"4605"},{"source":"689","target":"82","id":"6111"},{"source":"305","target":"219","id":"395"},{"source":"1315","target":"292","id":"4482"},{"source":"1125","target":"537","id":"4521"},{"source":"1606","target":"1279","id":"5867"},{"source":"1237","target":"1241","id":"3605"},{"source":"52","target":"67","id":"5770"},{"source":"1420","target":"48","id":"4561"},{"source":"1602","target":"1603","id":"5847"},{"source":"1358","target":"428","id":"4287"},{"source":"1272","target":"1181","id":"3760"},{"source":"984","target":"82","id":"2520"},{"source":"1292","target":"1581","id":"5653"},{"source":"424","target":"567","id":"4944"},{"source":"1543","target":"708","id":"5337"},{"source":"102","target":"104","id":"99"},{"source":"1581","target":"585","id":"5662"},{"source":"1498","target":"655","id":"5084"},{"source":"1397","target":"668","id":"4408"},{"source":"553","target":"460","id":"985"},{"source":"880","target":"68","id":"2079"},{"source":"1507","target":"212","id":"5150"},{"source":"224","target":"445","id":"2826"},{"source":"609","target":"119","id":"3065"},{"source":"1112","target":"136","id":"3013"},{"source":"352","target":"1","id":"540"},{"source":"830","target":"76","id":"1875"},{"source":"1582","target":"1581","id":"5647"},{"source":"622","target":"621","id":"4459"},{"source":"607","target":"598","id":"1484"},{"source":"501","target":"49","id":"832"},{"source":"461","target":"68","id":"2616"},{"source":"1054","target":"718","id":"2774"},{"source":"587","target":"374","id":"1101"},{"source":"904","target":"569","id":"2204"},{"source":"48","target":"61","id":"4636"},{"source":"555","target":"554","id":"3188"},{"source":"1568","target":"570","id":"5509"},{"source":"1678","target":"79","id":"6372"},{"source":"23","target":"26","id":"5804"},{"source":"1126","target":"82","id":"4812"},{"source":"1597","target":"1458","id":"5785"},{"source":"179","target":"300","id":"3397"},{"source":"554","target":"348","id":"2051"},{"source":"452","target":"79","id":"2282"},{"source":"171","target":"65","id":"5257"},{"source":"1513","target":"1165","id":"5217"},{"source":"519","target":"578","id":"1072"},{"source":"394","target":"167","id":"4929"},{"source":"612","target":"292","id":"1188"},{"source":"1387","target":"1385","id":"4352"},{"source":"1543","target":"453","id":"5335"},{"source":"1573","target":"61","id":"5549"},{"source":"324","target":"150","id":"2818"},{"source":"730","target":"49","id":"1521"},{"source":"327","target":"79","id":"460"},{"source":"1406","target":"181","id":"4473"},{"source":"1606","target":"1607","id":"5862"},{"source":"638","target":"626","id":"3100"},{"source":"1013","target":"1014","id":"3026"},{"source":"539","target":"540","id":"928"},{"source":"78","target":"80","id":"73"},{"source":"1696","target":"1057","id":"6428"},{"source":"1625","target":"324","id":"6005"},{"source":"1341","target":"223","id":"4092"},{"source":"231","target":"233","id":"262"},{"source":"1039","target":"1040","id":"2699"},{"source":"1211","target":"82","id":"3477"},{"source":"195","target":"429","id":"5391"},{"source":"1610","target":"1","id":"5886"},{"source":"818","target":"221","id":"1832"},{"source":"740","target":"174","id":"1536"},{"source":"22","target":"27","id":"27"},{"source":"771","target":"708","id":"6414"},{"source":"747","target":"748","id":"3781"},{"source":"438","target":"403","id":"1568"},{"source":"284","target":"323","id":"6355"},{"source":"207","target":"37","id":"2694"},{"source":"382","target":"42","id":"627"},{"source":"1499","target":"657","id":"5094"},{"source":"725","target":"216","id":"1501"},{"source":"42","target":"279","id":"341"},{"source":"408","target":"53","id":"878"},{"source":"1226","target":"1144","id":"3572"},{"source":"693","target":"258","id":"1398"},{"source":"1490","target":"607","id":"5037"},{"source":"1387","target":"150","id":"4351"},{"source":"1073","target":"1074","id":"2840"},{"source":"1294","target":"48","id":"3846"},{"source":"1044","target":"171","id":"2727"},{"source":"1519","target":"53","id":"5242"},{"source":"628","target":"463","id":"4152"},{"source":"295","target":"294","id":"3180"},{"source":"1313","target":"296","id":"3956"},{"source":"572","target":"135","id":"2668"},{"source":"1407","target":"79","id":"4488"},{"source":"152","target":"153","id":"171"},{"source":"39","target":"34","id":"4303"},{"source":"298","target":"185","id":"382"},{"source":"152","target":"155","id":"173"},{"source":"411","target":"166","id":"1780"},{"source":"1444","target":"351","id":"4726"},{"source":"1184","target":"1183","id":"3352"},{"source":"1383","target":"312","id":"4315"},{"source":"1626","target":"1255","id":"6012"},{"source":"1194","target":"731","id":"3414"},{"source":"410","target":"412","id":"675"},{"source":"1674","target":"50","id":"6315"},{"source":"194","target":"270","id":"4480"},{"source":"305","target":"306","id":"396"},{"source":"1173","target":"335","id":"3277"},{"source":"236","target":"403","id":"1232"},{"source":"741","target":"370","id":"1546"},{"source":"955","target":"502","id":"2419"},{"source":"1684","target":"1142","id":"6386"},{"source":"1660","target":"960","id":"6223"},{"source":"1357","target":"899","id":"5316"},{"source":"762","target":"765","id":"1622"},{"source":"858","target":"581","id":"5062"},{"source":"1010","target":"1","id":"2580"},{"source":"1485","target":"1","id":"5005"},{"source":"68","target":"106","id":"104"},{"source":"1421","target":"46","id":"4573"},{"source":"1182","target":"391","id":"3340"},{"source":"1242","target":"504","id":"3610"},{"source":"1047","target":"1036","id":"4333"},{"source":"1499","target":"515","id":"5089"},{"source":"563","target":"566","id":"1029"},{"source":"93","target":"104","id":"2160"},{"source":"1715","target":"415","id":"6612"},{"source":"1618","target":"765","id":"5952"},{"source":"416","target":"420","id":"3664"},{"source":"1499","target":"280","id":"5088"},{"source":"475","target":"313","id":"794"},{"source":"1294","target":"412","id":"3850"},{"source":"1336","target":"48","id":"4065"},{"source":"480","target":"170","id":"797"},{"source":"1052","target":"207","id":"2767"},{"source":"272","target":"429","id":"4683"},{"source":"815","target":"598","id":"1822"},{"source":"1279","target":"1248","id":"5630"},{"source":"294","target":"219","id":"900"},{"source":"1481","target":"1196","id":"4984"},{"source":"1137","target":"1138","id":"5256"},{"source":"1221","target":"181","id":"3530"},{"source":"303","target":"219","id":"390"},{"source":"1519","target":"484","id":"5238"},{"source":"197","target":"200","id":"229"},{"source":"1315","target":"294","id":"4484"},{"source":"71","target":"72","id":"3672"},{"source":"1139","target":"76","id":"3086"},{"source":"1715","target":"1279","id":"6614"},{"source":"795","target":"234","id":"1743"},{"source":"604","target":"82","id":"1153"},{"source":"243","target":"248","id":"283"},{"source":"413","target":"415","id":"681"},{"source":"181","target":"185","id":"3526"},{"source":"704","target":"541","id":"6530"},{"source":"461","target":"50","id":"2623"},{"source":"968","target":"272","id":"2459"},{"source":"1007","target":"1008","id":"2577"},{"source":"603","target":"200","id":"1426"},{"source":"71","target":"561","id":"3673"},{"source":"771","target":"768","id":"6412"},{"source":"416","target":"185","id":"3667"},{"source":"287","target":"119","id":"4882"},{"source":"64","target":"105","id":"1829"},{"source":"1466","target":"504","id":"4837"},{"source":"1647","target":"128","id":"6134"},{"source":"1367","target":"1328","id":"4829"},{"source":"1571","target":"723","id":"5535"},{"source":"666","target":"1003","id":"3465"},{"source":"1593","target":"175","id":"5756"},{"source":"563","target":"565","id":"1028"},{"source":"1470","target":"61","id":"4897"},{"source":"735","target":"154","id":"1530"},{"source":"375","target":"119","id":"600"},{"source":"199","target":"402","id":"3318"},{"source":"345","target":"348","id":"527"},{"source":"1362","target":"460","id":"4221"},{"source":"1213","target":"761","id":"5343"},{"source":"1246","target":"98","id":"6103"},{"source":"672","target":"93","id":"5406"},{"source":"1101","target":"79","id":"2961"},{"source":"1667","target":"1","id":"6275"},{"source":"493","target":"495","id":"1850"},{"source":"1176","target":"49","id":"3295"},{"source":"176","target":"1","id":"200"},{"source":"1457","target":"409","id":"4788"},{"source":"882","target":"708","id":"2886"},{"source":"454","target":"456","id":"754"},{"source":"95","target":"96","id":"102"},{"source":"850","target":"99","id":"1951"},{"source":"279","target":"280","id":"502"},{"source":"977","target":"937","id":"2501"},{"source":"1065","target":"479","id":"2800"},{"source":"439","target":"440","id":"717"},{"source":"195","target":"448","id":"5393"},{"source":"238","target":"261","id":"5968"},{"source":"1119","target":"48","id":"6256"},{"source":"90","target":"91","id":"82"},{"source":"382","target":"166","id":"626"},{"source":"1016","target":"45","id":"2593"},{"source":"1075","target":"211","id":"3460"},{"source":"1130","target":"652","id":"5936"},{"source":"1601","target":"439","id":"5800"},{"source":"703","target":"701","id":"3891"},{"source":"426","target":"114","id":"1032"},{"source":"365","target":"120","id":"1341"},{"source":"1372","target":"489","id":"4260"},{"source":"765","target":"388","id":"4822"},{"source":"892","target":"181","id":"5143"},{"source":"1098","target":"626","id":"2945"},{"source":"1380","target":"1358","id":"4290"},{"source":"525","target":"323","id":"932"},{"source":"1404","target":"209","id":"4540"},{"source":"1489","target":"206","id":"5022"},{"source":"1618","target":"533","id":"5953"},{"source":"734","target":"733","id":"1528"},{"source":"176","target":"179","id":"199"},{"source":"42","target":"49","id":"347"},{"source":"1537","target":"883","id":"5297"},{"source":"1374","target":"489","id":"4266"},{"source":"958","target":"960","id":"2812"},{"source":"1545","target":"1547","id":"5352"},{"source":"1510","target":"279","id":"5206"},{"source":"62","target":"552","id":"973"},{"source":"1675","target":"50","id":"6331"},{"source":"1607","target":"1279","id":"5904"},{"source":"727","target":"119","id":"1510"},{"source":"765","target":"82","id":"4826"},{"source":"93","target":"67","id":"2161"},{"source":"1317","target":"1316","id":"6498"},{"source":"835","target":"403","id":"5064"},{"source":"279","target":"48","id":"499"},{"source":"887","target":"608","id":"2105"},{"source":"1411","target":"536","id":"4512"},{"source":"901","target":"93","id":"2168"},{"source":"1574","target":"461","id":"5562"},{"source":"899","target":"367","id":"6575"},{"source":"835","target":"438","id":"5065"},{"source":"654","target":"567","id":"3419"},{"source":"308","target":"360","id":"569"},{"source":"1115","target":"1130","id":"3063"},{"source":"117","target":"50","id":"126"},{"source":"1018","target":"146","id":"4383"},{"source":"548","target":"177","id":"960"},{"source":"282","target":"525","id":"3285"},{"source":"833","target":"50","id":"1893"},{"source":"996","target":"993","id":"2542"},{"source":"158","target":"159","id":"180"},{"source":"1507","target":"1508","id":"5149"},{"source":"1296","target":"607","id":"3860"},{"source":"1576","target":"201","id":"5613"},{"source":"1339","target":"502","id":"4083"},{"source":"108","target":"61","id":"5486"},{"source":"1556","target":"1","id":"5431"},{"source":"281","target":"1136","id":"3082"},{"source":"1720","target":"146","id":"6667"},{"source":"578","target":"576","id":"5681"},{"source":"1472","target":"779","id":"4922"},{"source":"859","target":"862","id":"1999"},{"source":"1631","target":"1034","id":"6037"},{"source":"276","target":"275","id":"6585"},{"source":"1560","target":"1002","id":"5482"},{"source":"1426","target":"295","id":"4594"},{"source":"771","target":"109","id":"6411"},{"source":"118","target":"104","id":"1291"},{"source":"289","target":"65","id":"3720"},{"source":"444","target":"82","id":"2554"},{"source":"1263","target":"262","id":"3707"},{"source":"917","target":"453","id":"2255"},{"source":"1244","target":"801","id":"3622"},{"source":"24","target":"26","id":"5816"},{"source":"1198","target":"403","id":"3434"},{"source":"1540","target":"364","id":"5301"},{"source":"1498","target":"437","id":"5085"},{"source":"1645","target":"1177","id":"6132"},{"source":"1339","target":"1340","id":"4078"},{"source":"49","target":"48","id":"5184"},{"source":"809","target":"48","id":"1801"},{"source":"286","target":"238","id":"3717"},{"source":"501","target":"48","id":"839"},{"source":"255","target":"254","id":"3864"},{"source":"172","target":"579","id":"5739"},{"source":"1365","target":"759","id":"4247"},{"source":"1559","target":"125","id":"5466"},{"source":"237","target":"76","id":"271"},{"source":"1101","target":"1093","id":"2962"},{"source":"756","target":"51","id":"1604"},{"source":"1440","target":"1","id":"6178"},{"source":"125","target":"124","id":"134"},{"source":"427","target":"569","id":"1036"},{"source":"1469","target":"1218","id":"4868"},{"source":"340","target":"163","id":"4341"},{"source":"1184","target":"1112","id":"3350"},{"source":"1423","target":"1259","id":"4590"},{"source":"120","target":"930","id":"4023"},{"source":"360","target":"79","id":"571"},{"source":"644","target":"592","id":"1553"},{"source":"519","target":"114","id":"1068"},{"source":"845","target":"846","id":"1933"},{"source":"527","target":"528","id":"3548"},{"source":"507","target":"160","id":"848"},{"source":"1022","target":"50","id":"3361"},{"source":"1173","target":"53","id":"3278"},{"source":"479","target":"1062","id":"4293"},{"source":"1064","target":"1063","id":"2796"},{"source":"1162","target":"668","id":"3220"},{"source":"497","target":"53","id":"2627"},{"source":"1136","target":"1141","id":"4391"},{"source":"1064","target":"1062","id":"2795"},{"source":"1700","target":"324","id":"6463"},{"source":"1661","target":"1352","id":"6232"},{"source":"836","target":"837","id":"1901"},{"source":"2","target":"1","id":"2"},{"source":"1013","target":"79","id":"3025"},{"source":"803","target":"79","id":"3758"},{"source":"1362","target":"50","id":"4227"},{"source":"626","target":"300","id":"3227"},{"source":"951","target":"408","id":"2405"},{"source":"728","target":"597","id":"5451"},{"source":"605","target":"606","id":"2900"},{"source":"1184","target":"1155","id":"3351"},{"source":"927","target":"79","id":"2295"},{"source":"929","target":"930","id":"2299"},{"source":"173","target":"175","id":"195"},{"source":"256","target":"183","id":"5163"},{"source":"1292","target":"334","id":"5656"},{"source":"506","target":"48","id":"844"},{"source":"639","target":"642","id":"1264"},{"source":"202","target":"264","id":"6637"},{"source":"1490","target":"759","id":"5033"},{"source":"1607","target":"421","id":"5902"},{"source":"1543","target":"250","id":"5338"},{"source":"929","target":"109","id":"2308"},{"source":"1223","target":"619","id":"3562"},{"source":"1349","target":"906","id":"4143"},{"source":"784","target":"68","id":"1703"},{"source":"1053","target":"204","id":"4600"},{"source":"753","target":"312","id":"5131"},{"source":"697","target":"915","id":"5685"},{"source":"1639","target":"287","id":"6093"},{"source":"711","target":"502","id":"1438"},{"source":"955","target":"956","id":"2424"},{"source":"1247","target":"618","id":"3629"},{"source":"119","target":"511","id":"3174"},{"source":"753","target":"45","id":"5130"},{"source":"1575","target":"259","id":"5602"},{"source":"895","target":"567","id":"2133"},{"source":"799","target":"631","id":"1756"},{"source":"53","target":"93","id":"1115"},{"source":"1312","target":"1034","id":"3933"},{"source":"1263","target":"348","id":"3710"},{"source":"492","target":"495","id":"819"},{"source":"522","target":"471","id":"899"},{"source":"878","target":"781","id":"2073"},{"source":"1491","target":"79","id":"5047"},{"source":"408","target":"51","id":"876"},{"source":"1525","target":"1528","id":"5265"},{"source":"746","target":"281","id":"4857"},{"source":"665","target":"408","id":"1326"},{"source":"25","target":"27","id":"1013"},{"source":"552","target":"65","id":"4893"},{"source":"785","target":"323","id":"1715"},{"source":"657","target":"437","id":"5996"},{"source":"649","target":"79","id":"1281"},{"source":"739","target":"313","id":"1534"},{"source":"1191","target":"65","id":"3404"},{"source":"821","target":"53","id":"1838"},{"source":"1242","target":"1","id":"3608"},{"source":"1601","target":"697","id":"5799"},{"source":"367","target":"307","id":"4318"},{"source":"625","target":"628","id":"1206"},{"source":"493","target":"82","id":"1849"},{"source":"1095","target":"312","id":"2938"},{"source":"1639","target":"1640","id":"6097"},{"source":"1407","target":"182","id":"4489"},{"source":"383","target":"387","id":"631"},{"source":"875","target":"576","id":"2064"},{"source":"1515","target":"1518","id":"6566"},{"source":"518","target":"436","id":"894"},{"source":"405","target":"335","id":"2928"},{"source":"880","target":"167","id":"2082"},{"source":"587","target":"49","id":"1102"},{"source":"319","target":"185","id":"3898"},{"source":"1326","target":"1327","id":"4024"},{"source":"765","target":"896","id":"4824"},{"source":"1026","target":"182","id":"2650"},{"source":"34","target":"36","id":"34"},{"source":"1261","target":"401","id":"3691"},{"source":"975","target":"68","id":"2490"},{"source":"694","target":"484","id":"1409"},{"source":"1571","target":"311","id":"5533"},{"source":"334","target":"66","id":"4740"},{"source":"179","target":"178","id":"3395"},{"source":"570","target":"76","id":"1037"},{"source":"505","target":"495","id":"4003"},{"source":"1076","target":"1079","id":"3700"},{"source":"914","target":"65","id":"2246"},{"source":"946","target":"948","id":"2381"},{"source":"793","target":"863","id":"2965"},{"source":"519","target":"579","id":"1073"},{"source":"107","target":"50","id":"2334"},{"source":"1224","target":"33","id":"3566"},{"source":"62","target":"64","id":"979"},{"source":"1510","target":"590","id":"5203"},{"source":"1577","target":"1373","id":"5614"},{"source":"1650","target":"406","id":"6156"},{"source":"684","target":"686","id":"1377"},{"source":"1567","target":"174","id":"5506"},{"source":"462","target":"464","id":"774"},{"source":"441","target":"439","id":"4375"},{"source":"1279","target":"618","id":"5627"},{"source":"435","target":"816","id":"3150"},{"source":"1248","target":"1282","id":"5898"},{"source":"1176","target":"280","id":"3294"},{"source":"1102","target":"312","id":"3502"},{"source":"479","target":"1","id":"4295"},{"source":"1653","target":"1430","id":"6190"},{"source":"523","target":"526","id":"911"},{"source":"621","target":"622","id":"3959"},{"source":"445","target":"911","id":"2823"},{"source":"914","target":"53","id":"2244"},{"source":"672","target":"105","id":"5399"},{"source":"472","target":"361","id":"788"},{"source":"1453","target":"1454","id":"4762"},{"source":"787","target":"1037","id":"6471"},{"source":"1519","target":"339","id":"5236"},{"source":"1341","target":"502","id":"4090"},{"source":"379","target":"668","id":"4128"},{"source":"1701","target":"408","id":"6478"},{"source":"561","target":"73","id":"1024"},{"source":"61","target":"53","id":"863"},{"source":"1580","target":"1582","id":"5650"},{"source":"814","target":"95","id":"1814"},{"source":"348","target":"661","id":"4624"},{"source":"895","target":"118","id":"2137"},{"source":"365","target":"624","id":"1340"},{"source":"835","target":"202","id":"5069"},{"source":"1573","target":"65","id":"5551"},{"source":"714","target":"129","id":"6650"},{"source":"417","target":"314","id":"4463"},{"source":"79","target":"299","id":"1254"},{"source":"1505","target":"1506","id":"5111"},{"source":"1385","target":"1","id":"4346"},{"source":"701","target":"704","id":"1422"},{"source":"797","target":"53","id":"1747"},{"source":"1677","target":"47","id":"6363"},{"source":"430","target":"463","id":"4831"},{"source":"1591","target":"904","id":"5728"},{"source":"1684","target":"981","id":"6383"},{"source":"458","target":"167","id":"5370"},{"source":"1325","target":"498","id":"4017"},{"source":"1459","target":"280","id":"4802"},{"source":"430","target":"908","id":"4832"},{"source":"633","target":"511","id":"1230"},{"source":"1431","target":"262","id":"4673"},{"source":"711","target":"82","id":"1439"},{"source":"604","target":"606","id":"1158"},{"source":"1702","target":"313","id":"6491"},{"source":"1658","target":"377","id":"6216"},{"source":"664","target":"888","id":"3705"},{"source":"1282","target":"1200","id":"5893"},{"source":"610","target":"79","id":"1185"},{"source":"476","target":"477","id":"792"},{"source":"1375","target":"21","id":"4271"},{"source":"1343","target":"1000","id":"4108"},{"source":"1166","target":"351","id":"3238"},{"source":"368","target":"300","id":"3007"},{"source":"1457","target":"280","id":"4782"},{"source":"287","target":"552","id":"4884"},{"source":"911","target":"307","id":"2239"},{"source":"1012","target":"111","id":"5573"},{"source":"1406","target":"256","id":"4475"},{"source":"1577","target":"710","id":"5618"},{"source":"1107","target":"108","id":"2990"},{"source":"1443","target":"50","id":"4718"},{"source":"1326","target":"1328","id":"4026"},{"source":"68","target":"107","id":"105"},{"source":"166","target":"20","id":"259"},{"source":"809","target":"810","id":"1796"},{"source":"1455","target":"76","id":"4768"},{"source":"1140","target":"76","id":"3087"},{"source":"1567","target":"159","id":"5505"},{"source":"214","target":"82","id":"244"},{"source":"1077","target":"1003","id":"3447"},{"source":"1125","target":"543","id":"4517"},{"source":"836","target":"838","id":"1902"},{"source":"965","target":"96","id":"2442"},{"source":"1312","target":"323","id":"3937"},{"source":"502","target":"555","id":"5076"},{"source":"891","target":"892","id":"2113"},{"source":"1165","target":"668","id":"5228"},{"source":"92","target":"50","id":"89"},{"source":"907","target":"908","id":"2222"},{"source":"330","target":"185","id":"487"},{"source":"713","target":"85","id":"6643"},{"source":"506","target":"53","id":"841"},{"source":"940","target":"941","id":"2356"},{"source":"1514","target":"1516","id":"5223"},{"source":"413","target":"414","id":"680"},{"source":"1307","target":"166","id":"3917"},{"source":"483","target":"482","id":"3924"},{"source":"895","target":"93","id":"2139"},{"source":"1098","target":"312","id":"2946"},{"source":"370","target":"634","id":"4581"},{"source":"392","target":"391","id":"4274"},{"source":"817","target":"498","id":"2004"},{"source":"52","target":"65","id":"5768"},{"source":"1514","target":"164","id":"5226"},{"source":"977","target":"570","id":"2500"},{"source":"852","target":"312","id":"3251"},{"source":"1084","target":"53","id":"2868"},{"source":"1276","target":"747","id":"3774"},{"source":"1401","target":"281","id":"4419"},{"source":"1161","target":"444","id":"3197"},{"source":"94","target":"97","id":"92"},{"source":"62","target":"63","id":"977"},{"source":"1081","target":"476","id":"2853"},{"source":"1363","target":"334","id":"4231"},{"source":"169","target":"170","id":"190"},{"source":"1506","target":"182","id":"5836"},{"source":"162","target":"164","id":"184"},{"source":"1179","target":"42","id":"3303"},{"source":"1487","target":"626","id":"5017"},{"source":"294","target":"376","id":"901"},{"source":"532","target":"335","id":"922"},{"source":"1599","target":"888","id":"5793"},{"source":"923","target":"924","id":"2276"},{"source":"598","target":"114","id":"1985"},{"source":"1311","target":"322","id":"3930"},{"source":"1373","target":"167","id":"6365"},{"source":"1346","target":"1160","id":"4125"},{"source":"535","target":"335","id":"2464"},{"source":"911","target":"913","id":"2242"},{"source":"140","target":"136","id":"6152"},{"source":"658","target":"661","id":"1321"},{"source":"254","target":"183","id":"295"},{"source":"688","target":"99","id":"1654"},{"source":"1157","target":"1","id":"3164"},{"source":"1616","target":"912","id":"5943"},{"source":"1187","target":"550","id":"3377"},{"source":"567","target":"1042","id":"2719"},{"source":"1173","target":"49","id":"3283"},{"source":"821","target":"498","id":"1839"},{"source":"1008","target":"121","id":"5691"},{"source":"453","target":"250","id":"1619"},{"source":"904","target":"65","id":"2209"},{"source":"1383","target":"852","id":"4316"},{"source":"190","target":"188","id":"2527"},{"source":"792","target":"68","id":"1724"},{"source":"619","target":"523","id":"6033"},{"source":"780","target":"740","id":"1692"},{"source":"861","target":"137","id":"6153"},{"source":"895","target":"68","id":"2135"},{"source":"769","target":"707","id":"1632"},{"source":"653","target":"911","id":"2864"},{"source":"1486","target":"68","id":"5007"},{"source":"180","target":"182","id":"203"},{"source":"406","target":"334","id":"4737"},{"source":"127","target":"111","id":"2353"},{"source":"1405","target":"819","id":"4451"},{"source":"452","target":"65","id":"2277"},{"source":"964","target":"101","id":"2438"},{"source":"1483","target":"1484","id":"4988"},{"source":"825","target":"493","id":"5854"},{"source":"712","target":"128","id":"2034"},{"source":"1221","target":"302","id":"3527"},{"source":"375","target":"373","id":"597"},{"source":"481","target":"483","id":"802"},{"source":"1161","target":"502","id":"3200"},{"source":"713","target":"96","id":"6642"},{"source":"263","target":"267","id":"310"},{"source":"799","target":"397","id":"1759"},{"source":"1559","target":"1","id":"5467"},{"source":"1304","target":"328","id":"3905"},{"source":"514","target":"287","id":"883"},{"source":"1421","target":"185","id":"4574"},{"source":"1466","target":"1266","id":"4840"},{"source":"1467","target":"502","id":"4853"},{"source":"1365","target":"27","id":"4243"},{"source":"212","target":"885","id":"3999"},{"source":"1477","target":"437","id":"4932"},{"source":"170","target":"313","id":"4793"},{"source":"1337","target":"806","id":"4075"},{"source":"987","target":"1125","id":"3052"},{"source":"577","target":"576","id":"4399"},{"source":"270","target":"36","id":"409"},{"source":"1404","target":"450","id":"4537"},{"source":"1510","target":"589","id":"5200"},{"source":"208","target":"206","id":"5845"},{"source":"190","target":"192","id":"2525"},{"source":"1466","target":"281","id":"4839"},{"source":"1008","target":"437","id":"5694"},{"source":"410","target":"50","id":"679"},{"source":"63","target":"511","id":"999"},{"source":"1588","target":"96","id":"5698"},{"source":"306","target":"79","id":"455"},{"source":"270","target":"313","id":"411"},{"source":"1631","target":"208","id":"6040"},{"source":"529","target":"530","id":"915"},{"source":"1071","target":"1072","id":"2833"},{"source":"1155","target":"440","id":"3152"},{"source":"552","target":"512","id":"4892"},{"source":"1108","target":"300","id":"2996"},{"source":"481","target":"279","id":"799"},{"source":"881","target":"65","id":"2091"},{"source":"903","target":"109","id":"2175"},{"source":"631","target":"280","id":"1215"},{"source":"681","target":"683","id":"1369"},{"source":"1007","target":"502","id":"2575"},{"source":"600","target":"497","id":"1148"},{"source":"44","target":"45","id":"41"},{"source":"1427","target":"82","id":"4612"},{"source":"1560","target":"609","id":"5478"},{"source":"726","target":"426","id":"2194"},{"source":"186","target":"191","id":"211"},{"source":"963","target":"571","id":"2433"},{"source":"1332","target":"128","id":"4045"},{"source":"30","target":"23","id":"5043"},{"source":"1618","target":"537","id":"5950"},{"source":"103","target":"53","id":"263"},{"source":"178","target":"79","id":"1242"},{"source":"132","target":"53","id":"5345"},{"source":"828","target":"109","id":"1863"},{"source":"726","target":"104","id":"2192"},{"source":"577","target":"578","id":"4395"},{"source":"706","target":"82","id":"1432"},{"source":"217","target":"33","id":"3120"},{"source":"744","target":"120","id":"1563"},{"source":"519","target":"576","id":"1069"},{"source":"116","target":"115","id":"6513"},{"source":"53","target":"104","id":"1116"},{"source":"1281","target":"1283","id":"3811"},{"source":"1292","target":"585","id":"5657"},{"source":"1557","target":"183","id":"5828"},{"source":"34","target":"39","id":"37"},{"source":"356","target":"216","id":"849"},{"source":"1363","target":"51","id":"4233"},{"source":"893","target":"50","id":"2560"},{"source":"287","target":"460","id":"4880"},{"source":"35","target":"39","id":"416"},{"source":"890","target":"1","id":"2110"},{"source":"573","target":"48","id":"1049"},{"source":"34","target":"40","id":"38"},{"source":"1670","target":"69","id":"6286"},{"source":"377","target":"294","id":"2150"},{"source":"214","target":"216","id":"243"},{"source":"1218","target":"721","id":"3509"},{"source":"103","target":"97","id":"266"},{"source":"882","target":"96","id":"2885"},{"source":"1105","target":"511","id":"2982"},{"source":"1616","target":"911","id":"5942"},{"source":"286","target":"159","id":"3715"},{"source":"1269","target":"1222","id":"3748"},{"source":"1051","target":"1042","id":"2761"},{"source":"1237","target":"1240","id":"3604"},{"source":"1647","target":"82","id":"6137"},{"source":"181","target":"184","id":"3523"},{"source":"1674","target":"363","id":"6317"},{"source":"408","target":"66","id":"879"},{"source":"178","target":"177","id":"1241"},{"source":"328","target":"311","id":"473"},{"source":"383","target":"386","id":"629"},{"source":"653","target":"652","id":"2863"},{"source":"832","target":"571","id":"1885"},{"source":"953","target":"954","id":"2414"},{"source":"1036","target":"207","id":"3853"},{"source":"1260","target":"377","id":"3676"},{"source":"1644","target":"839","id":"6127"},{"source":"274","target":"275","id":"321"},{"source":"1015","target":"166","id":"3678"},{"source":"974","target":"313","id":"4337"},{"source":"1620","target":"1493","id":"5962"},{"source":"426","target":"567","id":"1033"},{"source":"946","target":"96","id":"2378"},{"source":"423","target":"656","id":"3140"},{"source":"1626","target":"1243","id":"6011"},{"source":"931","target":"480","id":"2309"},{"source":"477","target":"476","id":"3515"},{"source":"339","target":"280","id":"4208"},{"source":"541","target":"701","id":"2741"},{"source":"326","target":"298","id":"463"},{"source":"564","target":"446","id":"3224"},{"source":"1421","target":"312","id":"4572"},{"source":"809","target":"42","id":"1797"},{"source":"560","target":"104","id":"1017"},{"source":"1353","target":"1124","id":"4171"},{"source":"877","target":"111","id":"2072"},{"source":"251","target":"250","id":"3976"},{"source":"1170","target":"1171","id":"3272"},{"source":"1197","target":"638","id":"3426"},{"source":"1573","target":"50","id":"5546"},{"source":"694","target":"128","id":"1400"},{"source":"17","target":"18","id":"20"},{"source":"1545","target":"159","id":"5354"},{"source":"551","target":"497","id":"970"},{"source":"1345","target":"587","id":"4116"},{"source":"1134","target":"497","id":"3073"},{"source":"1276","target":"600","id":"3772"},{"source":"133","target":"134","id":"144"},{"source":"172","target":"82","id":"5740"},{"source":"1303","target":"660","id":"4035"},{"source":"191","target":"188","id":"5884"},{"source":"409","target":"335","id":"4648"},{"source":"1191","target":"114","id":"3406"},{"source":"983","target":"444","id":"4695"},{"source":"460","target":"607","id":"1163"},{"source":"183","target":"182","id":"5119"},{"source":"722","target":"82","id":"1474"},{"source":"921","target":"153","id":"2270"},{"source":"382","target":"48","id":"623"},{"source":"1622","target":"1106","id":"5975"},{"source":"46","target":"45","id":"4310"},{"source":"1398","target":"1400","id":"4415"},{"source":"1571","target":"45","id":"5536"},{"source":"960","target":"1284","id":"3813"},{"source":"883","target":"498","id":"4187"},{"source":"1435","target":"354","id":"4700"},{"source":"517","target":"1129","id":"3057"},{"source":"249","target":"253","id":"291"},{"source":"789","target":"1119","id":"3030"},{"source":"1554","target":"903","id":"5421"},{"source":"1347","target":"640","id":"4135"},{"source":"421","target":"486","id":"3688"},{"source":"413","target":"296","id":"686"},{"source":"1598","target":"76","id":"5787"},{"source":"1327","target":"65","id":"5871"},{"source":"696","target":"458","id":"1410"},{"source":"1678","target":"315","id":"6373"},{"source":"780","target":"109","id":"1696"},{"source":"781","target":"53","id":"2782"},{"source":"1235","target":"149","id":"3590"},{"source":"404","target":"53","id":"661"},{"source":"1428","target":"810","id":"4618"},{"source":"1260","target":"381","id":"3675"},{"source":"366","target":"728","id":"5460"},{"source":"812","target":"96","id":"5413"},{"source":"1227","target":"974","id":"3578"},{"source":"780","target":"234","id":"1693"},{"source":"553","target":"286","id":"990"},{"source":"760","target":"262","id":"1613"},{"source":"756","target":"279","id":"1600"},{"source":"401","target":"79","id":"651"},{"source":"1615","target":"1607","id":"5926"},{"source":"612","target":"616","id":"1193"},{"source":"40","target":"272","id":"4685"},{"source":"809","target":"382","id":"1799"},{"source":"130","target":"104","id":"142"},{"source":"550","target":"104","id":"966"},{"source":"1446","target":"391","id":"4728"},{"source":"1416","target":"79","id":"4548"},{"source":"826","target":"79","id":"5359"},{"source":"418","target":"961","id":"4563"},{"source":"252","target":"65","id":"762"},{"source":"1464","target":"935","id":"4828"},{"source":"388","target":"20","id":"2391"},{"source":"1669","target":"1","id":"6280"},{"source":"65","target":"68","id":"2128"},{"source":"706","target":"708","id":"1430"},{"source":"108","target":"53","id":"5487"},{"source":"4","target":"1","id":"4"},{"source":"744","target":"53","id":"1558"},{"source":"1607","target":"1249","id":"5907"},{"source":"281","target":"111","id":"3081"},{"source":"955","target":"324","id":"2417"},{"source":"936","target":"167","id":"2330"},{"source":"672","target":"50","id":"5400"},{"source":"265","target":"202","id":"1896"},{"source":"37","target":"430","id":"706"},{"source":"1006","target":"233","id":"2571"},{"source":"832","target":"76","id":"1881"},{"source":"1664","target":"1407","id":"6249"},{"source":"538","target":"335","id":"4653"},{"source":"1388","target":"1385","id":"4359"},{"source":"410","target":"42","id":"670"},{"source":"1282","target":"1283","id":"5891"},{"source":"627","target":"73","id":"3854"},{"source":"350","target":"318","id":"529"},{"source":"1611","target":"1613","id":"5919"},{"source":"657","target":"654","id":"5999"},{"source":"1679","target":"556","id":"6376"},{"source":"509","target":"510","id":"858"},{"source":"276","target":"36","id":"6587"},{"source":"1150","target":"101","id":"3137"},{"source":"736","target":"154","id":"6346"},{"source":"438","target":"266","id":"1566"},{"source":"543","target":"535","id":"937"},{"source":"1176","target":"759","id":"3297"},{"source":"799","target":"49","id":"1764"},{"source":"1191","target":"511","id":"3402"},{"source":"1060","target":"1115","id":"3017"},{"source":"1105","target":"68","id":"2977"},{"source":"673","target":"113","id":"1353"},{"source":"1560","target":"433","id":"5483"},{"source":"911","target":"912","id":"2240"},{"source":"991","target":"908","id":"4946"},{"source":"1418","target":"1","id":"4554"},{"source":"267","target":"513","id":"4435"},{"source":"587","target":"47","id":"1106"},{"source":"1363","target":"1364","id":"4235"},{"source":"63","target":"287","id":"997"},{"source":"1697","target":"85","id":"6441"},{"source":"755","target":"300","id":"1593"},{"source":"1183","target":"556","id":"3344"},{"source":"330","target":"332","id":"486"},{"source":"1577","target":"82","id":"5615"},{"source":"1048","target":"91","id":"2749"},{"source":"1575","target":"513","id":"5606"},{"source":"871","target":"53","id":"2044"},{"source":"1082","target":"912","id":"6569"},{"source":"300","target":"463","id":"3009"},{"source":"732","target":"261","id":"5972"},{"source":"1337","target":"1338","id":"4068"},{"source":"788","target":"632","id":"1718"},{"source":"1146","target":"79","id":"3657"},{"source":"1718","target":"1120","id":"6628"},{"source":"901","target":"65","id":"2167"},{"source":"1620","target":"260","id":"5965"},{"source":"342","target":"343","id":"520"},{"source":"1168","target":"852","id":"3259"},{"source":"1048","target":"540","id":"2746"},{"source":"1563","target":"1084","id":"5500"},{"source":"380","target":"87","id":"612"},{"source":"892","target":"312","id":"5142"},{"source":"1351","target":"65","id":"4156"},{"source":"1385","target":"150","id":"4345"},{"source":"1520","target":"213","id":"5245"},{"source":"762","target":"764","id":"1621"},{"source":"1345","target":"254","id":"4121"},{"source":"715","target":"85","id":"1447"},{"source":"158","target":"53","id":"181"},{"source":"526","target":"523","id":"3540"},{"source":"404","target":"406","id":"657"},{"source":"822","target":"53","id":"6260"},{"source":"672","target":"67","id":"5398"},{"source":"799","target":"800","id":"1757"},{"source":"382","target":"280","id":"619"},{"source":"649","target":"549","id":"1282"},{"source":"608","target":"498","id":"1494"},{"source":"743","target":"174","id":"1548"},{"source":"568","target":"569","id":"1643"},{"source":"856","target":"293","id":"1976"},{"source":"649","target":"548","id":"1280"},{"source":"822","target":"1119","id":"6269"},{"source":"913","target":"136","id":"5137"},{"source":"1203","target":"68","id":"3450"},{"source":"1472","target":"109","id":"4917"},{"source":"469","target":"732","id":"3192"},{"source":"116","target":"113","id":"6512"},{"source":"1053","target":"1034","id":"4602"},{"source":"1310","target":"522","id":"3929"},{"source":"876","target":"104","id":"3127"},{"source":"1016","target":"48","id":"2595"},{"source":"1325","target":"61","id":"4014"},{"source":"1365","target":"758","id":"4240"},{"source":"620","target":"170","id":"1198"},{"source":"723","target":"223","id":"1479"},{"source":"1599","target":"662","id":"5790"},{"source":"998","target":"996","id":"2544"},{"source":"248","target":"247","id":"5350"},{"source":"465","target":"463","id":"952"},{"source":"860","target":"116","id":"6119"},{"source":"1716","target":"1121","id":"6616"},{"source":"134","target":"84","id":"152"},{"source":"1590","target":"82","id":"5719"},{"source":"865","target":"262","id":"2294"},{"source":"966","target":"1410","id":"5824"},{"source":"1444","target":"82","id":"4727"},{"source":"1435","target":"424","id":"4704"},{"source":"329","target":"185","id":"3244"},{"source":"1011","target":"66","id":"2585"},{"source":"208","target":"205","id":"5844"},{"source":"332","target":"331","id":"4385"},{"source":"79","target":"177","id":"1253"},{"source":"1187","target":"453","id":"3379"},{"source":"1648","target":"49","id":"6145"},{"source":"574","target":"405","id":"1063"},{"source":"1431","target":"1206","id":"4669"},{"source":"1482","target":"211","id":"4985"},{"source":"1364","target":"1293","id":"6515"},{"source":"1312","target":"787","id":"3938"},{"source":"1576","target":"216","id":"5609"},{"source":"1537","target":"469","id":"5295"},{"source":"396","target":"398","id":"649"},{"source":"762","target":"763","id":"1620"},{"source":"11","target":"1","id":"14"},{"source":"676","target":"673","id":"1357"},{"source":"1562","target":"76","id":"5493"},{"source":"318","target":"351","id":"533"},{"source":"814","target":"96","id":"1815"},{"source":"921","target":"883","id":"2265"},{"source":"202","target":"438","id":"6636"},{"source":"1452","target":"1401","id":"4754"},{"source":"240","target":"241","id":"275"},{"source":"1467","target":"411","id":"4850"},{"source":"990","target":"991","id":"2532"},{"source":"177","target":"463","id":"958"},{"source":"724","target":"211","id":"2832"},{"source":"484","target":"1401","id":"5591"},{"source":"1478","target":"65","id":"4962"},{"source":"336","target":"53","id":"3145"},{"source":"891","target":"184","id":"2111"},{"source":"479","target":"1068","id":"4298"},{"source":"1722","target":"82","id":"6676"},{"source":"886","target":"170","id":"2104"},{"source":"692","target":"1","id":"5720"},{"source":"1211","target":"215","id":"3476"},{"source":"954","target":"262","id":"3695"},{"source":"589","target":"374","id":"1664"},{"source":"369","target":"181","id":"573"},{"source":"593","target":"105","id":"1126"},{"source":"278","target":"238","id":"340"},{"source":"745","target":"111","id":"1578"},{"source":"83","target":"84","id":"76"},{"source":"794","target":"25","id":"1737"},{"source":"1563","target":"513","id":"5502"},{"source":"1151","target":"417","id":"3138"},{"source":"234","target":"85","id":"1927"},{"source":"1456","target":"339","id":"4777"},{"source":"897","target":"64","id":"5462"},{"source":"1629","target":"79","id":"6028"},{"source":"91","target":"541","id":"5415"},{"source":"1616","target":"653","id":"5944"},{"source":"1421","target":"45","id":"4570"},{"source":"1657","target":"455","id":"6207"},{"source":"1601","target":"96","id":"5802"},{"source":"573","target":"49","id":"1050"},{"source":"1654","target":"1124","id":"6193"},{"source":"808","target":"65","id":"1790"},{"source":"1478","target":"120","id":"4963"},{"source":"980","target":"67","id":"2510"},{"source":"1677","target":"513","id":"6359"},{"source":"454","target":"62","id":"749"},{"source":"219","target":"182","id":"450"},{"source":"404","target":"397","id":"655"},{"source":"1280","target":"758","id":"3806"},{"source":"1135","target":"167","id":"3078"},{"source":"537","target":"405","id":"3333"},{"source":"1456","target":"484","id":"4778"},{"source":"1658","target":"376","id":"6215"},{"source":"862","target":"568","id":"2631"},{"source":"829","target":"831","id":"1872"},{"source":"1506","target":"302","id":"5837"},{"source":"849","target":"324","id":"1949"},{"source":"1237","target":"1239","id":"3603"},{"source":"1244","target":"1206","id":"3621"},{"source":"553","target":"53","id":"984"},{"source":"885","target":"1323","id":"4006"},{"source":"339","target":"50","id":"4207"},{"source":"657","target":"567","id":"5997"},{"source":"1477","target":"423","id":"4935"},{"source":"1140","target":"53","id":"3089"},{"source":"1704","target":"1238","id":"6527"},{"source":"1141","target":"1142","id":"3094"},{"source":"374","target":"589","id":"5176"},{"source":"571","target":"159","id":"5523"},{"source":"137","target":"136","id":"6150"},{"source":"850","target":"690","id":"1953"},{"source":"183","target":"302","id":"5120"},{"source":"71","target":"70","id":"3674"},{"source":"854","target":"429","id":"1972"},{"source":"1245","target":"1246","id":"3627"},{"source":"430","target":"79","id":"4830"},{"source":"628","target":"1350","id":"4155"},{"source":"1004","target":"392","id":"2570"},{"source":"1067","target":"1063","id":"2807"},{"source":"191","target":"192","id":"5883"},{"source":"669","target":"155","id":"1337"},{"source":"750","target":"136","id":"1584"},{"source":"1234","target":"277","id":"3589"},{"source":"297","target":"292","id":"4165"},{"source":"595","target":"50","id":"1136"},{"source":"325","target":"181","id":"5139"},{"source":"967","target":"182","id":"2652"},{"source":"1008","target":"1","id":"5695"},{"source":"1709","target":"1","id":"6549"},{"source":"1012","target":"104","id":"5572"},{"source":"1044","target":"424","id":"2726"},{"source":"1130","target":"913","id":"5939"},{"source":"1444","target":"1445","id":"4724"},{"source":"1347","target":"1348","id":"4133"},{"source":"1451","target":"310","id":"5107"},{"source":"435","target":"155","id":"3151"},{"source":"317","target":"296","id":"4542"},{"source":"964","target":"96","id":"2437"},{"source":"327","target":"296","id":"457"},{"source":"593","target":"65","id":"1122"},{"source":"589","target":"47","id":"1661"},{"source":"1341","target":"724","id":"4088"},{"source":"382","target":"381","id":"618"},{"source":"1632","target":"573","id":"6046"},{"source":"1150","target":"104","id":"3136"},{"source":"364","target":"373","id":"580"},{"source":"411","target":"1","id":"1784"},{"source":"1092","target":"224","id":"2917"},{"source":"623","target":"624","id":"1202"},{"source":"363","target":"366","id":"562"},{"source":"1673","target":"239","id":"6307"},{"source":"740","target":"109","id":"1539"},{"source":"1036","target":"209","id":"3852"},{"source":"287","target":"515","id":"4881"},{"source":"262","target":"1493","id":"5980"},{"source":"1269","target":"513","id":"3751"},{"source":"1557","target":"818","id":"5825"},{"source":"376","target":"306","id":"607"},{"source":"590","target":"513","id":"5172"},{"source":"156","target":"152","id":"174"},{"source":"1325","target":"65","id":"4018"},{"source":"626","target":"79","id":"3226"},{"source":"883","target":"1358","id":"4190"},{"source":"1656","target":"872","id":"6195"},{"source":"1174","target":"230","id":"3288"},{"source":"217","target":"128","id":"3118"},{"source":"725","target":"498","id":"1497"},{"source":"1487","target":"1315","id":"5018"},{"source":"639","target":"50","id":"1263"},{"source":"1648","target":"53","id":"6143"},{"source":"1660","target":"958","id":"6221"},{"source":"119","target":"61","id":"3175"},{"source":"201","target":"212","id":"4759"},{"source":"268","target":"272","id":"316"},{"source":"799","target":"801","id":"1760"},{"source":"1285","target":"841","id":"3814"},{"source":"780","target":"68","id":"1697"},{"source":"310","target":"311","id":"403"},{"source":"828","target":"237","id":"1858"},{"source":"1374","target":"519","id":"4264"},{"source":"116","target":"363","id":"6510"},{"source":"1243","target":"79","id":"3612"},{"source":"67","target":"53","id":"2710"},{"source":"203","target":"296","id":"736"},{"source":"1529","target":"1225","id":"5270"},{"source":"743","target":"645","id":"1550"},{"source":"254","target":"1","id":"293"},{"source":"1179","target":"279","id":"3304"},{"source":"391","target":"68","id":"3968"},{"source":"268","target":"269","id":"311"},{"source":"414","target":"421","id":"691"},{"source":"717","target":"714","id":"1460"},{"source":"1385","target":"79","id":"4347"},{"source":"1061","target":"1063","id":"2794"},{"source":"1210","target":"1078","id":"6446"},{"source":"1073","target":"662","id":"2839"},{"source":"330","target":"331","id":"483"},{"source":"1537","target":"156","id":"5292"},{"source":"1015","target":"127","id":"3679"},{"source":"747","target":"335","id":"3778"},{"source":"707","target":"706","id":"1629"},{"source":"974","target":"150","id":"4338"},{"source":"580","target":"498","id":"1079"},{"source":"1069","target":"1063","id":"2810"},{"source":"1329","target":"567","id":"5597"},{"source":"1266","target":"495","id":"3731"},{"source":"1268","target":"53","id":"3744"},{"source":"1452","target":"281","id":"4753"},{"source":"1267","target":"409","id":"3736"},{"source":"828","target":"511","id":"1865"},{"source":"664","target":"662","id":"3703"},{"source":"1674","target":"64","id":"6311"},{"source":"583","target":"578","id":"1091"},{"source":"758","target":"344","id":"5832"},{"source":"306","target":"315","id":"451"},{"source":"1209","target":"457","id":"3471"},{"source":"1676","target":"281","id":"6354"},{"source":"482","target":"1291","id":"3840"},{"source":"1111","target":"238","id":"5956"},{"source":"1241","target":"1238","id":"6526"},{"source":"672","target":"451","id":"5401"},{"source":"1067","target":"1062","id":"2806"},{"source":"1267","target":"600","id":"3732"},{"source":"1510","target":"47","id":"5202"},{"source":"838","target":"48","id":"2455"},{"source":"583","target":"576","id":"1086"},{"source":"803","target":"928","id":"3759"},{"source":"728","target":"113","id":"5450"},{"source":"661","target":"888","id":"6057"},{"source":"451","target":"64","id":"743"},{"source":"1342","target":"411","id":"4101"},{"source":"1675","target":"65","id":"6328"},{"source":"1033","target":"206","id":"2674"},{"source":"707","target":"768","id":"1627"},{"source":"302","target":"182","id":"5115"},{"source":"390","target":"391","id":"640"},{"source":"448","target":"192","id":"724"},{"source":"305","target":"307","id":"397"},{"source":"1586","target":"122","id":"6553"},{"source":"1008","target":"422","id":"5693"},{"source":"1632","target":"1266","id":"6050"},{"source":"795","target":"65","id":"1744"},{"source":"22","target":"26","id":"26"},{"source":"1673","target":"87","id":"6306"},{"source":"1607","target":"1282","id":"5905"},{"source":"294","target":"79","id":"902"},{"source":"199","target":"391","id":"3320"},{"source":"924","target":"53","id":"5327"},{"source":"186","target":"187","id":"207"},{"source":"165","target":"166","id":"186"},{"source":"1529","target":"1242","id":"5269"},{"source":"1630","target":"313","id":"6031"},{"source":"801","target":"49","id":"4216"},{"source":"1315","target":"486","id":"4486"},{"source":"613","target":"79","id":"1965"},{"source":"706","target":"707","id":"1428"},{"source":"671","target":"120","id":"1350"},{"source":"450","target":"908","id":"4688"},{"source":"53","target":"591","id":"1111"},{"source":"1459","target":"48","id":"4805"},{"source":"514","target":"53","id":"888"},{"source":"1417","target":"917","id":"4551"},{"source":"1082","target":"653","id":"6570"},{"source":"1555","target":"428","id":"5427"},{"source":"416","target":"855","id":"3665"},{"source":"1214","target":"84","id":"3486"},{"source":"267","target":"116","id":"4436"},{"source":"368","target":"79","id":"3005"},{"source":"414","target":"401","id":"689"},{"source":"533","target":"335","id":"6083"},{"source":"1224","target":"1225","id":"3564"},{"source":"1016","target":"277","id":"2589"},{"source":"990","target":"905","id":"2530"},{"source":"234","target":"82","id":"1929"},{"source":"880","target":"519","id":"2080"},{"source":"468","target":"469","id":"779"},{"source":"775","target":"776","id":"1672"},{"source":"599","target":"128","id":"1145"},{"source":"537","target":"535","id":"3332"},{"source":"1652","target":"496","id":"6187"},{"source":"1644","target":"49","id":"6130"},{"source":"1076","target":"1074","id":"3701"},{"source":"105","target":"82","id":"5386"},{"source":"1644","target":"280","id":"6121"},{"source":"1478","target":"50","id":"4965"},{"source":"1152","target":"297","id":"4496"},{"source":"1471","target":"50","id":"4913"},{"source":"1163","target":"437","id":"3218"},{"source":"1670","target":"70","id":"6283"},{"source":"1452","target":"280","id":"4748"},{"source":"1339","target":"48","id":"4082"},{"source":"1675","target":"592","id":"6330"},{"source":"933","target":"607","id":"2317"},{"source":"112","target":"116","id":"117"},{"source":"819","target":"292","id":"1834"},{"source":"333","target":"280","id":"495"},{"source":"1341","target":"975","id":"4095"},{"source":"604","target":"204","id":"1155"},{"source":"471","target":"79","id":"808"},{"source":"412","target":"429","id":"2647"},{"source":"411","target":"603","id":"1782"},{"source":"1267","target":"335","id":"3740"},{"source":"75","target":"1","id":"71"},{"source":"1177","target":"569","id":"5365"},{"source":"48","target":"66","id":"4638"},{"source":"1360","target":"600","id":"6657"},{"source":"826","target":"177","id":"5358"},{"source":"1625","target":"163","id":"6004"},{"source":"25","target":"53","id":"1015"},{"source":"1486","target":"130","id":"5008"},{"source":"404","target":"334","id":"658"},{"source":"1448","target":"294","id":"4732"},{"source":"1550","target":"883","id":"5374"},{"source":"828","target":"682","id":"1864"},{"source":"639","target":"641","id":"1262"},{"source":"176","target":"178","id":"197"},{"source":"47","target":"119","id":"4427"},{"source":"543","target":"409","id":"934"},{"source":"117","target":"64","id":"120"},{"source":"1428","target":"848","id":"4613"},{"source":"1560","target":"1131","id":"5479"},{"source":"964","target":"109","id":"2440"},{"source":"115","target":"373","id":"2321"},{"source":"1104","target":"408","id":"2974"},{"source":"1717","target":"1718","id":"6625"},{"source":"1461","target":"1","id":"5877"},{"source":"1569","target":"1567","id":"5517"},{"source":"1011","target":"459","id":"2582"},{"source":"405","target":"280","id":"2927"},{"source":"966","target":"304","id":"5819"},{"source":"691","target":"82","id":"1396"},{"source":"1225","target":"215","id":"3827"},{"source":"1163","target":"65","id":"3209"},{"source":"1188","target":"175","id":"3381"},{"source":"1476","target":"900","id":"5048"},{"source":"326","target":"219","id":"464"},{"source":"292","target":"182","id":"376"},{"source":"840","target":"715","id":"1913"},{"source":"350","target":"296","id":"530"},{"source":"1291","target":"334","id":"5641"},{"source":"581","target":"858","id":"4184"},{"source":"1077","target":"1202","id":"3449"},{"source":"62","target":"289","id":"972"},{"source":"102","target":"53","id":"97"},{"source":"36","target":"273","id":"442"},{"source":"1266","target":"857","id":"3728"},{"source":"866","target":"61","id":"2608"},{"source":"1639","target":"68","id":"6096"},{"source":"790","target":"791","id":"1723"},{"source":"732","target":"1547","id":"5971"},{"source":"1156","target":"636","id":"3153"},{"source":"1455","target":"159","id":"4770"},{"source":"314","target":"316","id":"425"},{"source":"801","target":"50","id":"4217"},{"source":"1198","target":"79","id":"3435"},{"source":"634","target":"51","id":"1236"},{"source":"1298","target":"502","id":"3875"},{"source":"627","target":"863","id":"3855"},{"source":"1670","target":"73","id":"6281"},{"source":"514","target":"66","id":"882"},{"source":"551","target":"166","id":"968"},{"source":"3","target":"1","id":"2663"},{"source":"1718","target":"149","id":"6627"},{"source":"63","target":"50","id":"998"},{"source":"544","target":"1295","id":"6113"},{"source":"1161","target":"53","id":"3202"},{"source":"590","target":"49","id":"5171"},{"source":"898","target":"367","id":"2147"},{"source":"1699","target":"155","id":"6455"},{"source":"1529","target":"215","id":"5271"},{"source":"1636","target":"209","id":"6071"},{"source":"955","target":"444","id":"2425"},{"source":"1052","target":"1053","id":"2768"},{"source":"552","target":"119","id":"4894"},{"source":"1049","target":"128","id":"2753"},{"source":"1716","target":"149","id":"6619"},{"source":"1112","target":"137","id":"3014"},{"source":"1651","target":"429","id":"6176"},{"source":"922","target":"90","id":"2272"},{"source":"752","target":"79","id":"1938"},{"source":"407","target":"370","id":"668"},{"source":"269","target":"274","id":"331"},{"source":"1044","target":"428","id":"2725"},{"source":"1553","target":"165","id":"5407"},{"source":"378","target":"1162","id":"3206"},{"source":"1344","target":"408","id":"4113"},{"source":"45","target":"79","id":"3232"},{"source":"611","target":"608","id":"1177"},{"source":"1180","target":"409","id":"3310"},{"source":"225","target":"361","id":"6088"},{"source":"833","target":"505","id":"1891"},{"source":"382","target":"49","id":"624"},{"source":"1469","target":"119","id":"4873"},{"source":"1034","target":"206","id":"2676"},{"source":"731","target":"695","id":"4957"},{"source":"1092","target":"61","id":"2922"},{"source":"718","target":"89","id":"1468"},{"source":"591","target":"300","id":"1238"},{"source":"1299","target":"1300","id":"3878"},{"source":"1104","target":"262","id":"2973"},{"source":"1703","target":"1646","id":"6496"},{"source":"373","target":"119","id":"592"},{"source":"1245","target":"850","id":"3626"},{"source":"1069","target":"1062","id":"2809"},{"source":"1633","target":"669","id":"6059"},{"source":"1142","target":"1120","id":"6620"},{"source":"1173","target":"281","id":"3279"},{"source":"674","target":"1265","id":"3726"},{"source":"1483","target":"647","id":"4987"},{"source":"887","target":"888","id":"2107"},{"source":"1615","target":"618","id":"5922"},{"source":"1164","target":"437","id":"3987"},{"source":"1203","target":"571","id":"3452"},{"source":"1390","target":"433","id":"4361"},{"source":"1651","target":"1034","id":"6173"},{"source":"764","target":"763","id":"3442"},{"source":"1479","target":"696","id":"4973"},{"source":"573","target":"484","id":"1052"},{"source":"524","target":"1235","id":"4502"},{"source":"822","target":"49","id":"6266"},{"source":"71","target":"69","id":"3671"},{"source":"823","target":"84","id":"1846"},{"source":"425","target":"175","id":"696"},{"source":"902","target":"109","id":"3170"},{"source":"1493","target":"53","id":"5054"},{"source":"1291","target":"166","id":"5638"},{"source":"1467","target":"82","id":"4854"},{"source":"709","target":"710","id":"1433"},{"source":"677","target":"680","id":"1365"},{"source":"1105","target":"1106","id":"2980"},{"source":"449","target":"195","id":"728"},{"source":"37","target":"207","id":"702"},{"source":"691","target":"85","id":"1391"},{"source":"1628","target":"335","id":"6017"},{"source":"315","target":"326","id":"3505"},{"source":"1431","target":"885","id":"4670"},{"source":"256","target":"966","id":"5164"},{"source":"1529","target":"1224","id":"5268"},{"source":"50","target":"68","id":"5468"},{"source":"118","target":"598","id":"1296"},{"source":"265","target":"438","id":"1897"},{"source":"983","target":"391","id":"4696"},{"source":"1657","target":"431","id":"6206"},{"source":"319","target":"150","id":"3896"},{"source":"195","target":"193","id":"5392"},{"source":"1677","target":"181","id":"6361"},{"source":"1663","target":"431","id":"6236"},{"source":"341","target":"121","id":"517"},{"source":"1570","target":"159","id":"5525"},{"source":"884","target":"68","id":"2093"},{"source":"939","target":"937","id":"2351"},{"source":"957","target":"48","id":"2430"},{"source":"493","target":"825","id":"1848"},{"source":"334","target":"167","id":"4746"},{"source":"755","target":"185","id":"1596"},{"source":"1249","target":"1279","id":"5913"},{"source":"1267","target":"533","id":"3737"},{"source":"1721","target":"1289","id":"6674"},{"source":"538","target":"397","id":"4656"},{"source":"362","target":"224","id":"6460"},{"source":"852","target":"45","id":"3250"},{"source":"1290","target":"210","id":"3831"},{"source":"1092","target":"48","id":"2918"},{"source":"1589","target":"569","id":"5710"},{"source":"862","target":"708","id":"2633"},{"source":"267","target":"49","id":"4434"},{"source":"261","target":"68","id":"5959"},{"source":"1398","target":"1399","id":"4414"},{"source":"1115","target":"1060","id":"3060"},{"source":"1342","target":"48","id":"4104"},{"source":"617","target":"619","id":"1197"},{"source":"444","target":"1003","id":"2553"},{"source":"1523","target":"95","id":"5252"},{"source":"1065","target":"1064","id":"2798"},{"source":"150","target":"163","id":"4340"},{"source":"339","target":"334","id":"4206"},{"source":"144","target":"403","id":"714"},{"source":"337","target":"319","id":"512"},{"source":"22","target":"30","id":"30"},{"source":"1136","target":"281","id":"4390"},{"source":"275","target":"313","id":"4320"},{"source":"610","target":"498","id":"1187"},{"source":"660","target":"664","id":"4042"},{"source":"337","target":"339","id":"513"},{"source":"501","target":"281","id":"837"},{"source":"396","target":"397","id":"648"},{"source":"320","target":"323","id":"438"},{"source":"871","target":"62","id":"2043"},{"source":"893","target":"51","id":"2562"},{"source":"715","target":"710","id":"1446"},{"source":"813","target":"132","id":"1813"},{"source":"840","target":"713","id":"1918"},{"source":"941","target":"1","id":"6576"},{"source":"66","target":"119","id":"2600"},{"source":"246","target":"1022","id":"2642"},{"source":"683","target":"82","id":"1445"},{"source":"866","target":"50","id":"2613"},{"source":"904","target":"93","id":"2202"},{"source":"716","target":"85","id":"1451"},{"source":"1355","target":"1357","id":"4179"},{"source":"727","target":"53","id":"1508"},{"source":"1353","target":"746","id":"4172"},{"source":"657","target":"656","id":"6000"},{"source":"753","target":"310","id":"5127"},{"source":"757","target":"238","id":"5831"},{"source":"1136","target":"1142","id":"4392"},{"source":"750","target":"751","id":"1582"},{"source":"442","target":"444","id":"720"},{"source":"302","target":"296","id":"5114"},{"source":"1213","target":"82","id":"5344"},{"source":"257","target":"259","id":"302"},{"source":"46","target":"309","id":"4307"},{"source":"70","target":"74","id":"2493"},{"source":"1126","target":"128","id":"4810"},{"source":"121","target":"1","id":"129"},{"source":"1130","target":"900","id":"5937"},{"source":"1637","target":"996","id":"6072"},{"source":"1076","target":"262","id":"3699"},{"source":"1477","target":"131","id":"4933"},{"source":"42","target":"53","id":"343"},{"source":"345","target":"346","id":"525"},{"source":"466","target":"467","id":"776"},{"source":"1495","target":"1496","id":"5079"},{"source":"506","target":"397","id":"843"},{"source":"376","target":"295","id":"605"},{"source":"398","target":"49","id":"5159"},{"source":"1117","target":"300","id":"3019"},{"source":"931","target":"403","id":"2311"},{"source":"1131","target":"609","id":"3070"},{"source":"1486","target":"92","id":"5014"},{"source":"460","target":"609","id":"1166"},{"source":"1319","target":"65","id":"3983"},{"source":"556","target":"76","id":"3423"},{"source":"1459","target":"66","id":"4803"},{"source":"386","target":"239","id":"6457"},{"source":"1282","target":"1249","id":"5890"},{"source":"924","target":"82","id":"5326"},{"source":"711","target":"710","id":"1443"},{"source":"1327","target":"437","id":"5870"},{"source":"1507","target":"210","id":"5152"},{"source":"1176","target":"279","id":"3293"},{"source":"1237","target":"1144","id":"3602"},{"source":"1696","target":"65","id":"6427"},{"source":"987","target":"1126","id":"3053"},{"source":"242","target":"120","id":"2227"},{"source":"506","target":"49","id":"846"},{"source":"1246","target":"689","id":"6102"},{"source":"1435","target":"1","id":"4703"},{"source":"374","target":"590","id":"5180"},{"source":"840","target":"280","id":"1911"},{"source":"854","target":"272","id":"1971"},{"source":"66","target":"49","id":"2602"},{"source":"1363","target":"45","id":"4237"},{"source":"817","target":"598","id":"2003"},{"source":"1243","target":"53","id":"3611"},{"source":"1219","target":"1","id":"3519"},{"source":"883","target":"976","id":"4189"},{"source":"1082","target":"307","id":"6567"},{"source":"722","target":"128","id":"1476"},{"source":"38","target":"270","id":"1286"},{"source":"1583","target":"875","id":"5666"},{"source":"1673","target":"817","id":"6304"},{"source":"113","target":"587","id":"1094"},{"source":"1080","target":"1","id":"2851"},{"source":"133","target":"82","id":"149"},{"source":"1031","target":"104","id":"2662"},{"source":"162","target":"163","id":"183"},{"source":"1045","target":"1042","id":"2736"},{"source":"1200","target":"1413","id":"4532"},{"source":"474","target":"313","id":"6607"},{"source":"770","target":"768","id":"5555"},{"source":"1091","target":"68","id":"2907"},{"source":"1353","target":"111","id":"4168"},{"source":"61","target":"279","id":"861"},{"source":"366","target":"114","id":"5459"},{"source":"164","target":"162","id":"5367"},{"source":"1148","target":"350","id":"3124"},{"source":"299","target":"79","id":"1247"},{"source":"734","target":"592","id":"1529"},{"source":"1344","target":"562","id":"4114"},{"source":"785","target":"786","id":"1714"},{"source":"879","target":"648","id":"2078"},{"source":"450","target":"37","id":"4687"},{"source":"66","target":"132","id":"2603"},{"source":"328","target":"329","id":"475"},{"source":"1390","target":"897","id":"4364"},{"source":"123","target":"124","id":"130"},{"source":"1243","target":"513","id":"3613"},{"source":"864","target":"866","id":"2012"},{"source":"650","target":"79","id":"1285"},{"source":"1655","target":"1015","id":"6194"},{"source":"828","target":"591","id":"1861"},{"source":"283","target":"525","id":"6349"},{"source":"369","target":"182","id":"576"},{"source":"594","target":"287","id":"4877"},{"source":"548","target":"79","id":"961"},{"source":"477","target":"79","id":"3516"},{"source":"816","target":"858","id":"1994"},{"source":"875","target":"760","id":"2063"},{"source":"373","target":"374","id":"593"},{"source":"171","target":"1138","id":"5260"},{"source":"87","target":"512","id":"6290"},{"source":"1282","target":"1279","id":"5888"},{"source":"1200","target":"1414","id":"4533"},{"source":"61","target":"49","id":"868"},{"source":"1042","target":"567","id":"2717"},{"source":"1537","target":"1256","id":"5296"},{"source":"250","target":"453","id":"3365"},{"source":"580","target":"120","id":"1081"},{"source":"1304","target":"319","id":"3900"},{"source":"689","target":"65","id":"6109"},{"source":"104","target":"114","id":"2212"},{"source":"455","target":"622","id":"1201"},{"source":"640","target":"106","id":"5318"},{"source":"576","target":"107","id":"2373"},{"source":"1557","target":"303","id":"5829"},{"source":"738","target":"440","id":"3829"},{"source":"1119","target":"66","id":"6253"},{"source":"1722","target":"166","id":"6675"},{"source":"866","target":"65","id":"2610"},{"source":"1031","target":"76","id":"2661"},{"source":"1342","target":"166","id":"4099"},{"source":"1459","target":"281","id":"4804"},{"source":"1570","target":"82","id":"5529"},{"source":"88","target":"89","id":"81"},{"source":"850","target":"79","id":"1952"},{"source":"1663","target":"666","id":"6240"},{"source":"789","target":"53","id":"3031"},{"source":"1052","target":"204","id":"2771"},{"source":"1398","target":"281","id":"4413"},{"source":"1685","target":"1686","id":"6396"},{"source":"1323","target":"1619","id":"5957"},{"source":"756","target":"759","id":"1605"},{"source":"1266","target":"48","id":"3729"},{"source":"1514","target":"1517","id":"5224"},{"source":"1395","target":"444","id":"4380"},{"source":"471","target":"486","id":"809"},{"source":"1435","target":"82","id":"4697"},{"source":"460","target":"160","id":"1159"},{"source":"657","target":"606","id":"5998"},{"source":"1113","target":"79","id":"3015"},{"source":"704","target":"64","id":"6529"},{"source":"171","target":"1042","id":"5258"},{"source":"639","target":"112","id":"1265"},{"source":"907","target":"909","id":"2223"},{"source":"168","target":"167","id":"6369"},{"source":"779","target":"174","id":"1688"},{"source":"513","target":"49","id":"5208"},{"source":"492","target":"493","id":"816"},{"source":"118","target":"53","id":"1294"},{"source":"1374","target":"487","id":"4263"},{"source":"1707","target":"1002","id":"6533"},{"source":"291","target":"294","id":"371"},{"source":"1092","target":"53","id":"2923"},{"source":"590","target":"374","id":"5170"},{"source":"578","target":"120","id":"5682"},{"source":"893","target":"104","id":"2558"},{"source":"1557","target":"182","id":"5827"},{"source":"518","target":"444","id":"896"},{"source":"1401","target":"109","id":"4422"},{"source":"142","target":"27","id":"165"},{"source":"393","target":"390","id":"646"},{"source":"1587","target":"18","id":"5675"},{"source":"1395","target":"839","id":"4381"},{"source":"712","target":"82","id":"2032"},{"source":"783","target":"50","id":"1700"},{"source":"66","target":"65","id":"2599"},{"source":"1074","target":"1079","id":"2846"},{"source":"843","target":"715","id":"1924"},{"source":"1547","target":"571","id":"5519"},{"source":"1594","target":"101","id":"5757"},{"source":"172","target":"109","id":"5738"},{"source":"816","target":"435","id":"1993"},{"source":"1108","target":"79","id":"2998"},{"source":"1195","target":"618","id":"3417"},{"source":"282","target":"283","id":"3286"},{"source":"1246","target":"100","id":"6101"},{"source":"117","target":"105","id":"125"},{"source":"262","target":"1262","id":"5979"},{"source":"993","target":"997","id":"4529"},{"source":"197","target":"201","id":"230"},{"source":"526","target":"617","id":"3541"},{"source":"832","target":"82","id":"1878"},{"source":"212","target":"79","id":"3998"},{"source":"83","target":"53","id":"75"},{"source":"1149","target":"170","id":"3126"},{"source":"290","target":"65","id":"1853"},{"source":"1150","target":"876","id":"3133"},{"source":"269","target":"38","id":"334"},{"source":"787","target":"785","id":"6466"},{"source":"219","target":"296","id":"447"},{"source":"1572","target":"1108","id":"6319"},{"source":"1145","target":"638","id":"3108"},{"source":"1628","target":"533","id":"6022"},{"source":"966","target":"317","id":"5821"},{"source":"1644","target":"324","id":"6125"},{"source":"944","target":"502","id":"2367"},{"source":"194","target":"193","id":"4479"},{"source":"363","target":"113","id":"556"},{"source":"1276","target":"230","id":"3770"},{"source":"532","target":"533","id":"920"},{"source":"202","target":"266","id":"6639"},{"source":"903","target":"451","id":"2176"},{"source":"1001","target":"160","id":"2550"},{"source":"1013","target":"1","id":"3027"},{"source":"612","target":"613","id":"1190"},{"source":"235","target":"236","id":"270"},{"source":"1589","target":"567","id":"5705"},{"source":"1290","target":"851","id":"3833"},{"source":"484","target":"51","id":"5594"},{"source":"1183","target":"82","id":"3346"},{"source":"1698","target":"646","id":"6449"},{"source":"1467","target":"925","id":"4851"},{"source":"669","target":"378","id":"1336"},{"source":"1253","target":"852","id":"6560"},{"source":"805","target":"603","id":"1773"},{"source":"920","target":"777","id":"2264"},{"source":"483","target":"166","id":"3921"},{"source":"65","target":"131","id":"2123"},{"source":"710","target":"85","id":"1467"},{"source":"1032","target":"215","id":"2664"},{"source":"808","target":"216","id":"1787"},{"source":"1660","target":"962","id":"6229"},{"source":"1406","target":"294","id":"4478"},{"source":"60","target":"66","id":"60"},{"source":"1372","target":"1373","id":"4262"},{"source":"203","target":"198","id":"735"},{"source":"1629","target":"649","id":"6030"},{"source":"626","target":"312","id":"3229"},{"source":"1108","target":"463","id":"2995"},{"source":"172","target":"84","id":"5742"},{"source":"303","target":"185","id":"393"},{"source":"1022","target":"901","id":"3358"},{"source":"1641","target":"920","id":"6099"},{"source":"1648","target":"1009","id":"6139"},{"source":"458","target":"883","id":"5371"},{"source":"1639","target":"862","id":"6090"},{"source":"361","target":"79","id":"1957"},{"source":"1492","target":"1494","id":"5052"},{"source":"840","target":"335","id":"1912"},{"source":"901","target":"902","id":"2169"},{"source":"1041","target":"67","id":"2702"},{"source":"69","target":"72","id":"66"},{"source":"1556","target":"219","id":"5429"},{"source":"677","target":"678","id":"1362"},{"source":"893","target":"180","id":"2555"},{"source":"701","target":"540","id":"1418"},{"source":"1248","target":"421","id":"5895"},{"source":"631","target":"66","id":"1219"},{"source":"773","target":"504","id":"1647"},{"source":"1215","target":"648","id":"3489"},{"source":"1651","target":"272","id":"6175"},{"source":"1574","target":"114","id":"5561"},{"source":"523","target":"524","id":"908"},{"source":"1390","target":"155","id":"4363"},{"source":"651","target":"216","id":"1302"},{"source":"773","target":"770","id":"1650"},{"source":"422","target":"130","id":"692"},{"source":"610","target":"608","id":"1186"},{"source":"1620","target":"262","id":"5964"},{"source":"1406","target":"302","id":"4474"},{"source":"1267","target":"281","id":"3734"},{"source":"405","target":"397","id":"2931"},{"source":"1141","target":"600","id":"3091"},{"source":"1713","target":"207","id":"6605"},{"source":"514","target":"408","id":"886"},{"source":"884","target":"498","id":"2098"},{"source":"1045","target":"1047","id":"2737"},{"source":"390","target":"392","id":"641"},{"source":"849","target":"361","id":"1948"},{"source":"34","target":"37","id":"35"},{"source":"288","target":"50","id":"362"},{"source":"595","target":"68","id":"1138"},{"source":"28","target":"24","id":"5041"},{"source":"1096","target":"324","id":"2941"},{"source":"748","target":"170","id":"3786"},{"source":"556","target":"1196","id":"3425"},{"source":"63","target":"68","id":"991"},{"source":"1429","target":"1","id":"4968"},{"source":"852","target":"1083","id":"3253"},{"source":"587","target":"116","id":"1104"},{"source":"1624","target":"238","id":"5988"},{"source":"258","target":"53","id":"1307"},{"source":"257","target":"53","id":"300"},{"source":"505","target":"1177","id":"4002"},{"source":"389","target":"166","id":"638"},{"source":"873","target":"53","id":"2053"},{"source":"918","target":"53","id":"2256"},{"source":"591","target":"177","id":"1237"},{"source":"1518","target":"959","id":"5235"},{"source":"1530","target":"235","id":"5274"},{"source":"372","target":"621","id":"3957"},{"source":"1514","target":"162","id":"5221"},{"source":"1092","target":"49","id":"2920"},{"source":"801","target":"1244","id":"4212"},{"source":"72","target":"561","id":"1020"},{"source":"787","target":"1312","id":"6468"},{"source":"179","target":"177","id":"3394"},{"source":"160","target":"161","id":"182"},{"source":"289","target":"53","id":"3724"},{"source":"555","target":"403","id":"3187"},{"source":"458","target":"915","id":"5369"},{"source":"1045","target":"104","id":"2735"},{"source":"784","target":"512","id":"1705"},{"source":"456","target":"25","id":"5809"},{"source":"1205","target":"16","id":"3456"},{"source":"340","target":"150","id":"4342"},{"source":"179","target":"79","id":"3396"},{"source":"1719","target":"50","id":"6631"},{"source":"1425","target":"293","id":"6434"},{"source":"1314","target":"296","id":"4450"},{"source":"1254","target":"838","id":"3645"},{"source":"1276","target":"748","id":"3775"},{"source":"53","target":"50","id":"1118"},{"source":"452","target":"549","id":"2283"},{"source":"383","target":"20","id":"630"},{"source":"992","target":"995","id":"2536"},{"source":"1567","target":"97","id":"5507"},{"source":"358","target":"361","id":"551"},{"source":"1452","target":"61","id":"4749"},{"source":"1690","target":"316","id":"6417"},{"source":"1223","target":"486","id":"3558"},{"source":"74","target":"72","id":"1710"},{"source":"499","target":"182","id":"827"},{"source":"979","target":"1029","id":"2658"},{"source":"1189","target":"344","id":"3391"},{"source":"1581","target":"166","id":"5661"},{"source":"1490","target":"757","id":"5034"},{"source":"563","target":"564","id":"1027"},{"source":"1298","target":"66","id":"3872"},{"source":"8","target":"1","id":"9"},{"source":"1550","target":"707","id":"5376"},{"source":"113","target":"588","id":"1095"},{"source":"1280","target":"757","id":"3805"},{"source":"1632","target":"344","id":"6045"},{"source":"66","target":"48","id":"2601"},{"source":"496","target":"497","id":"820"},{"source":"1490","target":"27","id":"5031"},{"source":"765","target":"1124","id":"4825"},{"source":"114","target":"597","id":"2213"},{"source":"240","target":"120","id":"277"},{"source":"1248","target":"1279","id":"5897"},{"source":"1469","target":"594","id":"4869"},{"source":"1008","target":"424","id":"5696"},{"source":"902","target":"68","id":"3165"},{"source":"977","target":"61","id":"2499"},{"source":"333","target":"66","id":"489"},{"source":"1633","target":"1634","id":"6058"},{"source":"588","target":"116","id":"2144"},{"source":"113","target":"49","id":"1099"},{"source":"547","target":"549","id":"948"},{"source":"167","target":"65","id":"2337"},{"source":"83","target":"85","id":"77"},{"source":"44","target":"51","id":"47"},{"source":"1438","target":"1439","id":"4708"},{"source":"1342","target":"806","id":"4098"},{"source":"285","target":"62","id":"351"},{"source":"370","target":"335","id":"4580"},{"source":"163","target":"79","id":"2237"},{"source":"1553","target":"389","id":"5409"},{"source":"1144","target":"613","id":"3105"},{"source":"131","target":"111","id":"2187"},{"source":"1544","target":"76","id":"5341"},{"source":"1692","target":"791","id":"6421"},{"source":"502","target":"1284","id":"5074"},{"source":"1364","target":"631","id":"6514"},{"source":"523","target":"528","id":"913"},{"source":"832","target":"68","id":"1879"},{"source":"1049","target":"82","id":"2751"},{"source":"50","target":"65","id":"5472"},{"source":"693","target":"571","id":"1397"},{"source":"769","target":"770","id":"1634"},{"source":"330","target":"306","id":"481"},{"source":"682","target":"642","id":"6166"},{"source":"825","target":"495","id":"5855"},{"source":"35","target":"34","id":"419"},{"source":"1336","target":"50","id":"4066"},{"source":"1418","target":"602","id":"4553"},{"source":"770","target":"708","id":"5554"},{"source":"925","target":"50","id":"2289"},{"source":"1684","target":"111","id":"6384"},{"source":"789","target":"48","id":"3035"},{"source":"747","target":"364","id":"3777"},{"source":"1342","target":"1180","id":"4102"},{"source":"427","target":"568","id":"1035"},{"source":"922","target":"897","id":"2274"},{"source":"1423","target":"524","id":"4591"},{"source":"1366","target":"166","id":"4248"},{"source":"40","target":"429","id":"4686"},{"source":"1066","target":"479","id":"2805"},{"source":"286","target":"262","id":"3718"},{"source":"44","target":"47","id":"43"},{"source":"728","target":"116","id":"5454"},{"source":"797","target":"409","id":"1752"},{"source":"1334","target":"817","id":"4055"},{"source":"1359","target":"51","id":"4197"},{"source":"1487","target":"79","id":"5015"},{"source":"462","target":"465","id":"775"},{"source":"794","target":"109","id":"1742"},{"source":"841","target":"966","id":"2450"},{"source":"1144","target":"351","id":"3106"},{"source":"1709","target":"182","id":"6550"},{"source":"906","target":"463","id":"2220"},{"source":"1598","target":"1132","id":"5788"},{"source":"271","target":"1384","id":"4326"},{"source":"732","target":"469","id":"5969"},{"source":"1585","target":"1586","id":"5674"},{"source":"1717","target":"1120","id":"6623"},{"source":"755","target":"79","id":"1590"},{"source":"706","target":"132","id":"1431"},{"source":"1212","target":"761","id":"3478"},{"source":"411","target":"532","id":"1781"},{"source":"1145","target":"1147","id":"3110"},{"source":"1599","target":"890","id":"5789"},{"source":"1444","target":"216","id":"4725"},{"source":"182","target":"256","id":"4471"},{"source":"802","target":"150","id":"1769"},{"source":"681","target":"161","id":"1371"},{"source":"83","target":"82","id":"78"},{"source":"1119","target":"51","id":"6251"},{"source":"560","target":"114","id":"1018"},{"source":"780","target":"781","id":"1694"},{"source":"515","target":"610","id":"1169"},{"source":"1441","target":"1","id":"4710"},{"source":"120","target":"668","id":"4020"},{"source":"1045","target":"93","id":"2734"},{"source":"1509","target":"47","id":"5194"},{"source":"794","target":"53","id":"1738"},{"source":"1347","target":"1265","id":"4134"},{"source":"1209","target":"1210","id":"3472"},{"source":"1336","target":"284","id":"4058"},{"source":"1316","target":"216","id":"4971"},{"source":"605","target":"1046","id":"2903"},{"source":"1331","target":"1","id":"4044"},{"source":"1044","target":"426","id":"2730"},{"source":"328","target":"296","id":"472"},{"source":"926","target":"698","id":"2385"},{"source":"1684","target":"600","id":"6387"},{"source":"1351","target":"567","id":"4159"},{"source":"934","target":"1324","id":"4007"},{"source":"555","target":"469","id":"3189"},{"source":"553","target":"65","id":"988"},{"source":"767","target":"1","id":"1625"},{"source":"1291","target":"218","id":"5637"},{"source":"641","target":"640","id":"5323"},{"source":"568","target":"772","id":"1645"},{"source":"1022","target":"924","id":"3360"},{"source":"89","target":"79","id":"2234"},{"source":"694","target":"48","id":"1404"},{"source":"408","target":"67","id":"880"},{"source":"295","target":"293","id":"3179"},{"source":"835","target":"559","id":"5068"},{"source":"1661","target":"68","id":"6233"},{"source":"1227","target":"293","id":"3575"},{"source":"874","target":"876","id":"2067"},{"source":"957","target":"959","id":"2427"},{"source":"1472","target":"120","id":"4924"},{"source":"662","target":"663","id":"2789"},{"source":"400","target":"570","id":"2388"},{"source":"374","target":"513","id":"5182"},{"source":"1187","target":"76","id":"3376"},{"source":"1573","target":"49","id":"5545"},{"source":"1562","target":"571","id":"5496"},{"source":"404","target":"49","id":"659"},{"source":"1510","target":"374","id":"5204"},{"source":"1479","target":"983","id":"4976"},{"source":"437","target":"606","id":"1313"},{"source":"938","target":"167","id":"2482"},{"source":"156","target":"154","id":"176"},{"source":"593","target":"50","id":"1127"},{"source":"215","target":"128","id":"5992"},{"source":"1536","target":"250","id":"5289"},{"source":"588","target":"113","id":"2143"},{"source":"1369","target":"1371","id":"4257"},{"source":"611","target":"216","id":"1175"},{"source":"860","target":"347","id":"6117"},{"source":"1457","target":"405","id":"4784"},{"source":"1163","target":"1162","id":"3212"},{"source":"338","target":"1284","id":"3812"},{"source":"1391","target":"1392","id":"4369"},{"source":"115","target":"116","id":"2323"},{"source":"722","target":"720","id":"1473"},{"source":"1249","target":"421","id":"5911"},{"source":"157","target":"152","id":"179"},{"source":"1298","target":"53","id":"3870"},{"source":"527","target":"294","id":"3545"},{"source":"358","target":"359","id":"547"},{"source":"545","target":"546","id":"944"},{"source":"799","target":"409","id":"1763"},{"source":"1633","target":"366","id":"6063"},{"source":"245","target":"104","id":"1730"},{"source":"928","target":"148","id":"6078"},{"source":"454","target":"53","id":"750"},{"source":"1101","target":"312","id":"2959"},{"source":"1443","target":"591","id":"4722"},{"source":"285","target":"68","id":"359"},{"source":"1428","target":"136","id":"4614"},{"source":"454","target":"170","id":"752"},{"source":"448","target":"313","id":"725"},{"source":"1163","target":"1164","id":"3213"},{"source":"615","target":"206","id":"4334"},{"source":"291","target":"292","id":"368"},{"source":"1677","target":"1293","id":"6362"},{"source":"864","target":"61","id":"2007"},{"source":"1210","target":"1262","id":"6447"},{"source":"1471","target":"279","id":"4914"},{"source":"1544","target":"82","id":"5342"},{"source":"458","target":"696","id":"5368"},{"source":"1632","target":"999","id":"6048"},{"source":"1589","target":"427","id":"5706"},{"source":"832","target":"693","id":"1883"},{"source":"929","target":"779","id":"2304"},{"source":"1305","target":"296","id":"4575"},{"source":"333","target":"49","id":"492"},{"source":"307","target":"367","id":"564"},{"source":"979","target":"1030","id":"2660"},{"source":"1273","target":"1228","id":"3763"},{"source":"974","target":"1385","id":"4339"},{"source":"1550","target":"106","id":"5378"},{"source":"421","target":"420","id":"3687"},{"source":"901","target":"250","id":"2170"},{"source":"27","target":"428","id":"2993"},{"source":"1547","target":"258","id":"5518"},{"source":"1679","target":"1680","id":"6378"},{"source":"976","target":"1150","id":"3132"},{"source":"1046","target":"1524","id":"6341"},{"source":"580","target":"519","id":"1078"},{"source":"51","target":"61","id":"5582"},{"source":"912","target":"309","id":"2860"},{"source":"259","target":"841","id":"2154"},{"source":"1448","target":"416","id":"4735"},{"source":"308","target":"79","id":"570"},{"source":"1376","target":"295","id":"4281"},{"source":"1650","target":"281","id":"6154"},{"source":"1110","target":"500","id":"3011"},{"source":"1555","target":"498","id":"5426"},{"source":"1114","target":"1060","id":"3058"},{"source":"1248","target":"1283","id":"5901"},{"source":"949","target":"208","id":"2395"},{"source":"944","target":"48","id":"2366"},{"source":"1098","target":"79","id":"2947"},{"source":"1431","target":"608","id":"4667"},{"source":"271","target":"275","id":"4328"},{"source":"1071","target":"1076","id":"2837"},{"source":"690","target":"685","id":"1389"},{"source":"1183","target":"76","id":"3342"},{"source":"1514","target":"163","id":"5222"},{"source":"601","target":"600","id":"1150"},{"source":"755","target":"45","id":"1594"},{"source":"619","target":"79","id":"6035"},{"source":"352","target":"232","id":"539"},{"source":"1472","target":"1473","id":"4916"},{"source":"1720","target":"62","id":"6666"},{"source":"1431","target":"515","id":"4674"},{"source":"227","target":"1","id":"257"},{"source":"746","target":"170","id":"4855"},{"source":"744","target":"131","id":"1561"},{"source":"845","target":"706","id":"1934"},{"source":"143","target":"379","id":"611"},{"source":"1486","target":"1109","id":"5013"},{"source":"60","target":"65","id":"59"},{"source":"1204","target":"239","id":"3455"},{"source":"608","target":"65","id":"1495"},{"source":"1291","target":"279","id":"5639"},{"source":"1387","target":"1","id":"4355"},{"source":"1658","target":"303","id":"6213"},{"source":"572","target":"196","id":"2667"},{"source":"711","target":"713","id":"1440"},{"source":"1023","target":"858","id":"4357"},{"source":"942","target":"76","id":"2357"},{"source":"1101","target":"1098","id":"2957"},{"source":"567","target":"131","id":"2718"},{"source":"339","target":"1243","id":"4205"},{"source":"883","target":"693","id":"4186"},{"source":"424","target":"422","id":"4943"},{"source":"1044","target":"1042","id":"2732"},{"source":"429","target":"1","id":"4692"},{"source":"989","target":"192","id":"2529"},{"source":"1477","target":"130","id":"4939"},{"source":"1550","target":"68","id":"5375"},{"source":"1046","target":"171","id":"6340"},{"source":"1702","target":"1103","id":"6490"},{"source":"1678","target":"334","id":"6374"},{"source":"460","target":"433","id":"1160"},{"source":"992","target":"996","id":"2537"},{"source":"117","target":"118","id":"119"},{"source":"1221","target":"254","id":"3529"},{"source":"1626","target":"53","id":"6009"},{"source":"978","target":"182","id":"2505"},{"source":"483","target":"51","id":"3920"},{"source":"42","target":"284","id":"349"},{"source":"604","target":"605","id":"1157"},{"source":"1470","target":"511","id":"4905"},{"source":"578","target":"241","id":"5680"},{"source":"430","target":"429","id":"4833"},{"source":"374","target":"47","id":"5178"},{"source":"443","target":"309","id":"1289"},{"source":"1187","target":"708","id":"3372"},{"source":"1556","target":"1410","id":"5434"},{"source":"887","target":"598","id":"2106"},{"source":"788","target":"789","id":"1719"},{"source":"1457","target":"182","id":"4786"},{"source":"28","target":"456","id":"5040"},{"source":"93","target":"65","id":"2159"},{"source":"1337","target":"199","id":"4071"},{"source":"612","target":"614","id":"1191"},{"source":"45","target":"626","id":"3233"},{"source":"788","target":"498","id":"1722"},{"source":"726","target":"114","id":"2193"},{"source":"643","target":"644","id":"1269"},{"source":"407","target":"409","id":"669"},{"source":"968","target":"37","id":"2460"},{"source":"558","target":"76","id":"1011"},{"source":"216","target":"357","id":"542"},{"source":"1068","target":"1064","id":"2808"},{"source":"1534","target":"82","id":"5281"},{"source":"447","target":"233","id":"1009"},{"source":"868","target":"84","id":"2018"},{"source":"885","target":"212","id":"4005"},{"source":"611","target":"66","id":"1178"},{"source":"234","target":"215","id":"1928"},{"source":"373","target":"112","id":"588"},{"source":"529","target":"531","id":"916"},{"source":"654","target":"657","id":"3422"},{"source":"1122","target":"1015","id":"3047"},{"source":"108","target":"64","id":"5490"},{"source":"728","target":"363","id":"5449"},{"source":"581","target":"519","id":"4181"},{"source":"429","target":"37","id":"4690"},{"source":"894","target":"74","id":"2121"},{"source":"1493","target":"166","id":"5053"},{"source":"754","target":"638","id":"5438"},{"source":"1250","target":"1251","id":"3633"},{"source":"696","target":"698","id":"1413"},{"source":"589","target":"590","id":"1663"},{"source":"969","target":"444","id":"2469"},{"source":"245","target":"105","id":"1731"},{"source":"1379","target":"1358","id":"4286"},{"source":"952","target":"349","id":"2411"},{"source":"580","target":"581","id":"1074"},{"source":"691","target":"248","id":"1393"},{"source":"801","target":"483","id":"4214"},{"source":"436","target":"555","id":"1004"},{"source":"1583","target":"409","id":"5669"},{"source":"37","target":"272","id":"704"},{"source":"573","target":"50","id":"1051"},{"source":"1198","target":"119","id":"3438"},{"source":"1374","target":"391","id":"4267"},{"source":"766","target":"163","id":"1623"},{"source":"352","target":"354","id":"537"},{"source":"538","target":"53","id":"4654"},{"source":"992","target":"997","id":"2538"},{"source":"1479","target":"170","id":"4977"},{"source":"21","target":"1","id":"1311"},{"source":"61","target":"512","id":"864"},{"source":"1664","target":"855","id":"6247"},{"source":"889","target":"661","id":"4404"},{"source":"476","target":"79","id":"790"},{"source":"1658","target":"1448","id":"6220"},{"source":"405","target":"200","id":"2933"},{"source":"794","target":"104","id":"1740"},{"source":"57","target":"313","id":"3184"},{"source":"223","target":"224","id":"253"},{"source":"1209","target":"455","id":"3468"},{"source":"479","target":"1063","id":"4294"},{"source":"178","target":"463","id":"1244"},{"source":"567","target":"82","id":"2724"},{"source":"1514","target":"1518","id":"5225"},{"source":"625","target":"627","id":"1205"},{"source":"1148","target":"318","id":"3125"},{"source":"1179","target":"170","id":"3308"},{"source":"1286","target":"166","id":"3821"},{"source":"1468","target":"484","id":"4867"},{"source":"254","target":"255","id":"292"},{"source":"1160","target":"1","id":"3195"},{"source":"781","target":"104","id":"2785"},{"source":"1427","target":"128","id":"4606"},{"source":"781","target":"68","id":"2781"},{"source":"457","target":"51","id":"6345"},{"source":"66","target":"50","id":"2604"},{"source":"822","target":"405","id":"6261"},{"source":"613","target":"351","id":"1967"},{"source":"365","target":"155","id":"1342"},{"source":"1156","target":"239","id":"3155"},{"source":"1457","target":"513","id":"4790"},{"source":"363","target":"65","id":"559"},{"source":"282","target":"284","id":"3287"},{"source":"766","target":"1","id":"1624"},{"source":"921","target":"155","id":"2267"},{"source":"628","target":"934","id":"4154"},{"source":"193","target":"194","id":"220"},{"source":"73","target":"72","id":"1707"},{"source":"1016","target":"50","id":"2597"},{"source":"1164","target":"606","id":"3988"},{"source":"1411","target":"532","id":"4510"},{"source":"441","target":"172","id":"4377"},{"source":"62","target":"53","id":"978"},{"source":"449","target":"450","id":"727"},{"source":"1291","target":"983","id":"5640"},{"source":"1412","target":"996","id":"4523"},{"source":"1074","target":"1073","id":"2848"},{"source":"66","target":"88","id":"2605"},{"source":"1007","target":"50","id":"2576"},{"source":"1318","target":"111","id":"3971"},{"source":"608","target":"607","id":"1493"},{"source":"1672","target":"702","id":"6298"},{"source":"476","target":"475","id":"789"},{"source":"409","target":"48","id":"4650"},{"source":"1431","target":"1432","id":"4672"},{"source":"1387","target":"79","id":"4349"},{"source":"714","target":"715","id":"6651"},{"source":"701","target":"702","id":"1419"},{"source":"633","target":"65","id":"1225"},{"source":"1268","target":"513","id":"3745"},{"source":"267","target":"47","id":"4440"},{"source":"180","target":"183","id":"204"},{"source":"600","target":"281","id":"1149"},{"source":"946","target":"250","id":"2380"},{"source":"1466","target":"747","id":"4841"},{"source":"378","target":"424","id":"3208"},{"source":"818","target":"313","id":"1833"},{"source":"1702","target":"1238","id":"6487"},{"source":"248","target":"175","id":"5347"},{"source":"1604","target":"128","id":"5850"},{"source":"1096","target":"1094","id":"2942"},{"source":"933","target":"934","id":"2318"},{"source":"608","target":"53","id":"1491"},{"source":"881","target":"100","id":"2089"},{"source":"254","target":"182","id":"294"},{"source":"120","target":"576","id":"4021"},{"source":"787","target":"206","id":"6467"},{"source":"1181","target":"216","id":"3323"},{"source":"672","target":"53","id":"5402"},{"source":"508","target":"137","id":"3656"},{"source":"496","target":"498","id":"823"},{"source":"1492","target":"104","id":"5050"},{"source":"436","target":"264","id":"1003"},{"source":"1489","target":"1434","id":"5019"},{"source":"172","target":"882","id":"5736"},{"source":"1223","target":"526","id":"3559"},{"source":"148","target":"150","id":"169"},{"source":"44","target":"48","id":"44"},{"source":"231","target":"232","id":"261"},{"source":"65","target":"53","id":"2129"},{"source":"1621","target":"469","id":"5981"},{"source":"169","target":"172","id":"192"},{"source":"52","target":"53","id":"5766"},{"source":"1102","target":"1098","id":"3499"},{"source":"1689","target":"133","id":"6402"},{"source":"1363","target":"46","id":"4238"},{"source":"702","target":"160","id":"3883"},{"source":"931","target":"932","id":"2312"},{"source":"1158","target":"1","id":"3183"},{"source":"228","target":"1","id":"258"},{"source":"1180","target":"166","id":"3314"},{"source":"643","target":"65","id":"1271"},{"source":"67","target":"92","id":"2708"},{"source":"1104","target":"79","id":"2968"},{"source":"1256","target":"469","id":"3652"},{"source":"1161","target":"567","id":"3198"},{"source":"1593","target":"654","id":"5753"},{"source":"1383","target":"310","id":"4311"},{"source":"1636","target":"1034","id":"6065"},{"source":"1568","target":"571","id":"5514"},{"source":"206","target":"1037","id":"2689"},{"source":"482","target":"281","id":"3837"},{"source":"806","target":"1266","id":"6053"},{"source":"1703","target":"853","id":"6493"},{"source":"636","target":"119","id":"3177"},{"source":"232","target":"128","id":"4373"},{"source":"1184","target":"1083","id":"3353"},{"source":"148","target":"149","id":"168"},{"source":"1583","target":"166","id":"5663"},{"source":"1212","target":"81","id":"3482"},{"source":"1269","target":"1270","id":"3753"},{"source":"1633","target":"1165","id":"6062"},{"source":"1592","target":"150","id":"5746"},{"source":"984","target":"765","id":"2519"},{"source":"265","target":"835","id":"1899"},{"source":"1007","target":"833","id":"2579"},{"source":"1250","target":"302","id":"3637"},{"source":"1119","target":"405","id":"6254"},{"source":"1073","target":"262","id":"2841"},{"source":"1339","target":"806","id":"4084"},{"source":"687","target":"689","id":"1386"},{"source":"473","target":"474","id":"6433"},{"source":"405","target":"50","id":"2925"},{"source":"1471","target":"61","id":"4915"},{"source":"778","target":"25","id":"1679"},{"source":"1355","target":"182","id":"4178"},{"source":"976","target":"104","id":"3130"},{"source":"126","target":"82","id":"136"},{"source":"1404","target":"1403","id":"4541"},{"source":"628","target":"79","id":"4150"},{"source":"1150","target":"65","id":"3135"},{"source":"590","target":"589","id":"5167"},{"source":"1053","target":"206","id":"4603"},{"source":"1326","target":"423","id":"4028"},{"source":"1652","target":"695","id":"6183"},{"source":"1194","target":"1182","id":"3412"},{"source":"604","target":"567","id":"1156"},{"source":"286","target":"647","id":"3716"},{"source":"523","target":"525","id":"910"},{"source":"1615","target":"1279","id":"5924"},{"source":"923","target":"110","id":"2275"},{"source":"690","target":"79","id":"1387"},{"source":"573","target":"53","id":"1046"},{"source":"1480","target":"1479","id":"4980"},{"source":"1091","target":"50","id":"2915"},{"source":"1641","target":"630","id":"6098"},{"source":"1591","target":"65","id":"5726"},{"source":"725","target":"515","id":"1502"},{"source":"1074","target":"224","id":"2847"},{"source":"595","target":"79","id":"1131"},{"source":"22","target":"28","id":"28"},{"source":"285","target":"287","id":"356"},{"source":"1197","target":"312","id":"3428"},{"source":"1635","target":"1","id":"6064"},{"source":"788","target":"411","id":"1721"},{"source":"1124","target":"388","id":"4844"},{"source":"279","target":"281","id":"506"},{"source":"20","target":"21","id":"140"},{"source":"694","target":"50","id":"1408"},{"source":"36","target":"276","id":"443"},{"source":"1574","target":"53","id":"5558"},{"source":"1244","target":"48","id":"3623"},{"source":"1604","target":"344","id":"5851"},{"source":"1485","target":"50","id":"5006"},{"source":"751","target":"479","id":"1937"},{"source":"484","target":"49","id":"5593"},{"source":"1285","target":"966","id":"3819"},{"source":"605","target":"495","id":"2904"},{"source":"1401","target":"166","id":"4416"},{"source":"1649","target":"217","id":"6148"},{"source":"950","target":"208","id":"2399"},{"source":"410","target":"411","id":"674"},{"source":"215","target":"82","id":"5994"},{"source":"1249","target":"1282","id":"5914"},{"source":"688","target":"83","id":"1658"},{"source":"982","target":"983","id":"2514"},{"source":"336","target":"334","id":"3147"},{"source":"1411","target":"765","id":"4514"},{"source":"511","target":"53","id":"6475"},{"source":"483","target":"334","id":"3927"},{"source":"461","target":"459","id":"2617"},{"source":"1699","target":"1","id":"6454"},{"source":"1281","target":"1282","id":"3810"},{"source":"1091","target":"498","id":"2911"},{"source":"1032","target":"128","id":"2666"},{"source":"811","target":"592","id":"1806"},{"source":"1572","target":"626","id":"6320"},{"source":"217","target":"82","id":"3119"},{"source":"886","target":"600","id":"2102"},{"source":"602","target":"603","id":"1151"},{"source":"594","target":"262","id":"4878"},{"source":"1578","target":"82","id":"5625"},{"source":"51","target":"53","id":"5584"},{"source":"760","target":"120","id":"1612"},{"source":"1721","target":"119","id":"6673"},{"source":"320","target":"321","id":"436"},{"source":"813","target":"127","id":"1812"},{"source":"335","target":"575","id":"1055"},{"source":"948","target":"668","id":"3443"},{"source":"1517","target":"162","id":"5231"},{"source":"1660","target":"49","id":"6228"},{"source":"1280","target":"339","id":"3802"},{"source":"871","target":"289","id":"2047"},{"source":"1656","target":"903","id":"6197"},{"source":"665","target":"515","id":"1327"},{"source":"49","target":"61","id":"5188"},{"source":"1175","target":"200","id":"3324"},{"source":"22","target":"29","id":"29"},{"source":"156","target":"53","id":"175"},{"source":"526","target":"219","id":"3539"},{"source":"1327","target":"424","id":"5875"},{"source":"388","target":"896","id":"2393"},{"source":"1555","target":"1379","id":"5428"},{"source":"1593","target":"101","id":"5752"},{"source":"902","target":"111","id":"3169"},{"source":"60","target":"53","id":"57"},{"source":"1223","target":"527","id":"3560"},{"source":"1554","target":"68","id":"5417"},{"source":"1244","target":"396","id":"3619"},{"source":"135","target":"137","id":"1042"},{"source":"1291","target":"1581","id":"5645"},{"source":"60","target":"64","id":"58"},{"source":"226","target":"79","id":"256"},{"source":"1243","target":"239","id":"3614"},{"source":"476","target":"368","id":"791"},{"source":"105","target":"65","id":"5382"},{"source":"603","target":"1","id":"1425"},{"source":"535","target":"532","id":"2462"},{"source":"697","target":"170","id":"5687"},{"source":"25","target":"559","id":"1016"},{"source":"1117","target":"894","id":"3022"},{"source":"425","target":"428","id":"701"},{"source":"1705","target":"779","id":"6500"},{"source":"590","target":"47","id":"5168"},{"source":"748","target":"1122","id":"3783"},{"source":"1713","target":"1","id":"6600"},{"source":"962","target":"961","id":"6356"},{"source":"296","target":"219","id":"427"},{"source":"1385","target":"974","id":"4348"},{"source":"61","target":"50","id":"869"},{"source":"1138","target":"1137","id":"5250"},{"source":"1648","target":"281","id":"6144"},{"source":"595","target":"105","id":"1135"},{"source":"1594","target":"95","id":"5760"},{"source":"633","target":"93","id":"1226"},{"source":"925","target":"53","id":"2284"},{"source":"1304","target":"325","id":"3902"},{"source":"583","target":"68","id":"1083"},{"source":"250","target":"50","id":"3367"},{"source":"48","target":"281","id":"4640"},{"source":"1509","target":"254","id":"5191"},{"source":"14","target":"1","id":"16"},{"source":"1563","target":"258","id":"5499"},{"source":"37","target":"429","id":"705"},{"source":"1379","target":"428","id":"4285"},{"source":"1177","target":"505","id":"5362"},{"source":"1579","target":"618","id":"5636"},{"source":"1049","target":"599","id":"2754"},{"source":"1313","target":"297","id":"3951"},{"source":"915","target":"883","id":"2325"},{"source":"1530","target":"641","id":"5273"},{"source":"631","target":"65","id":"1217"},{"source":"200","target":"229","id":"4663"},{"source":"1025","target":"76","id":"4627"},{"source":"1721","target":"816","id":"6671"},{"source":"673","target":"674","id":"1355"},{"source":"1298","target":"50","id":"3867"},{"source":"1467","target":"166","id":"4849"},{"source":"74","target":"73","id":"1711"},{"source":"1649","target":"128","id":"6146"},{"source":"1710","target":"1","id":"6556"},{"source":"1648","target":"279","id":"6141"},{"source":"633","target":"79","id":"1224"},{"source":"516","target":"517","id":"891"},{"source":"806","target":"48","id":"6055"},{"source":"1572","target":"1407","id":"6321"},{"source":"1329","target":"424","id":"5600"},{"source":"1557","target":"967","id":"5826"},{"source":"115","target":"363","id":"2319"},{"source":"206","target":"1038","id":"2690"},{"source":"594","target":"865","id":"4876"},{"source":"677","target":"679","id":"1363"},{"source":"1318","target":"983","id":"3972"},{"source":"206","target":"1039","id":"2692"},{"source":"177","target":"465","id":"955"},{"source":"243","target":"118","id":"278"},{"source":"1608","target":"1609","id":"5882"},{"source":"828","target":"68","id":"1866"},{"source":"850","target":"141","id":"1955"},{"source":"552","target":"61","id":"4889"},{"source":"808","target":"49","id":"1795"},{"source":"201","target":"607","id":"4757"},{"source":"712","target":"232","id":"2039"},{"source":"1471","target":"408","id":"4906"},{"source":"840","target":"444","id":"1915"},{"source":"1197","target":"298","id":"3430"},{"source":"361","target":"368","id":"1959"},{"source":"27","target":"25","id":"2992"},{"source":"456","target":"27","id":"5810"},{"source":"1561","target":"609","id":"6508"},{"source":"1074","target":"1077","id":"2842"},{"source":"1122","target":"1124","id":"3048"},{"source":"1161","target":"64","id":"3203"},{"source":"1549","target":"1073","id":"5366"},{"source":"869","target":"712","id":"2029"},{"source":"1160","target":"79","id":"3194"},{"source":"1694","target":"182","id":"6425"},{"source":"1329","target":"654","id":"5598"},{"source":"1689","target":"647","id":"6407"},{"source":"301","target":"294","id":"385"},{"source":"948","target":"768","id":"3445"},{"source":"859","target":"161","id":"2002"},{"source":"1511","target":"82","id":"5210"},{"source":"1628","target":"409","id":"6021"},{"source":"446","target":"149","id":"906"},{"source":"605","target":"1050","id":"2902"},{"source":"1175","target":"128","id":"3327"},{"source":"252","target":"458","id":"759"},{"source":"973","target":"79","id":"2477"},{"source":"114","target":"104","id":"2215"},{"source":"898","target":"1","id":"2148"},{"source":"701","target":"703","id":"1420"},{"source":"62","target":"50","id":"974"},{"source":"1339","target":"1161","id":"4080"},{"source":"1443","target":"65","id":"4715"},{"source":"1717","target":"1121","id":"6624"},{"source":"306","target":"326","id":"454"},{"source":"552","target":"63","id":"4890"},{"source":"23","target":"456","id":"5806"},{"source":"431","target":"1","id":"707"},{"source":"324","target":"211","id":"2817"},{"source":"1588","target":"65","id":"5700"},{"source":"62","target":"61","id":"976"},{"source":"782","target":"175","id":"2897"},{"source":"392","target":"498","id":"4272"},{"source":"1351","target":"1042","id":"4158"},{"source":"1596","target":"759","id":"5778"},{"source":"1470","target":"68","id":"4896"},{"source":"779","target":"736","id":"1690"},{"source":"663","target":"662","id":"2790"},{"source":"1324","target":"628","id":"4647"},{"source":"408","target":"513","id":"874"},{"source":"1536","target":"97","id":"5282"},{"source":"501","target":"503","id":"835"},{"source":"498","target":"581","id":"1988"},{"source":"335","target":"51","id":"1056"},{"source":"1489","target":"1039","id":"5023"},{"source":"733","target":"174","id":"1527"},{"source":"290","target":"67","id":"1854"},{"source":"696","target":"109","id":"1412"},{"source":"37","target":"1","id":"703"},{"source":"299","target":"300","id":"1249"},{"source":"975","target":"53","id":"2485"},{"source":"1244","target":"51","id":"3618"},{"source":"856","target":"185","id":"1981"},{"source":"731","target":"109","id":"4958"},{"source":"501","target":"502","id":"831"},{"source":"109","target":"964","id":"5721"},{"source":"387","target":"216","id":"635"},{"source":"1277","target":"1275","id":"3792"},{"source":"1661","target":"901","id":"6231"},{"source":"1426","target":"293","id":"4592"},{"source":"1337","target":"166","id":"4067"},{"source":"719","target":"1","id":"1471"},{"source":"629","target":"79","id":"2680"},{"source":"1355","target":"500","id":"4180"},{"source":"1477","target":"430","id":"4937"},{"source":"523","target":"527","id":"912"},{"source":"195","target":"449","id":"5394"},{"source":"135","target":"494","id":"1041"},{"source":"1047","target":"209","id":"4331"},{"source":"1547","target":"648","id":"5521"},{"source":"1657","target":"559","id":"6209"},{"source":"596","target":"159","id":"1140"},{"source":"695","target":"166","id":"4951"},{"source":"113","target":"112","id":"1093"},{"source":"843","target":"714","id":"1922"},{"source":"1709","target":"967","id":"6546"},{"source":"1477","target":"567","id":"4934"},{"source":"501","target":"505","id":"838"},{"source":"50","target":"67","id":"5475"},{"source":"749","target":"166","id":"4738"},{"source":"816","target":"598","id":"1991"},{"source":"987","target":"82","id":"3055"},{"source":"1025","target":"760","id":"4630"},{"source":"611","target":"552","id":"1181"},{"source":"274","target":"276","id":"324"},{"source":"223","target":"211","id":"252"},{"source":"1102","target":"177","id":"3497"},{"source":"1416","target":"317","id":"4549"},{"source":"927","target":"928","id":"2298"},{"source":"472","target":"313","id":"782"},{"source":"1615","target":"1249","id":"5927"},{"source":"856","target":"79","id":"1979"},{"source":"518","target":"166","id":"893"},{"source":"316","target":"1","id":"4492"},{"source":"921","target":"858","id":"2266"},{"source":"204","target":"206","id":"234"},{"source":"1568","target":"1567","id":"5512"},{"source":"310","target":"296","id":"402"},{"source":"730","target":"484","id":"1523"},{"source":"1216","target":"82","id":"3496"},{"source":"153","target":"584","id":"2230"},{"source":"243","target":"246","id":"281"},{"source":"117","target":"95","id":"127"},{"source":"1593","target":"1329","id":"5754"},{"source":"288","target":"62","id":"365"},{"source":"210","target":"212","id":"239"},{"source":"418","target":"416","id":"4565"},{"source":"1701","target":"287","id":"6483"},{"source":"1191","target":"259","id":"3405"},{"source":"1431","target":"760","id":"4668"},{"source":"1350","target":"177","id":"4145"},{"source":"1334","target":"1335","id":"4051"},{"source":"647","target":"1202","id":"3712"},{"source":"289","target":"79","id":"3725"},{"source":"892","target":"325","id":"5144"},{"source":"936","target":"883","id":"2332"},{"source":"355","target":"217","id":"4009"},{"source":"638","target":"79","id":"3099"},{"source":"451","target":"131","id":"746"},{"source":"593","target":"594","id":"1125"},{"source":"605","target":"567","id":"2899"},{"source":"370","target":"51","id":"4584"},{"source":"1253","target":"79","id":"6558"},{"source":"1590","target":"422","id":"5713"},{"source":"461","target":"108","id":"2624"},{"source":"102","target":"105","id":"100"},{"source":"315","target":"79","id":"3506"},{"source":"617","target":"618","id":"1196"},{"source":"776","target":"1060","id":"2792"},{"source":"1173","target":"406","id":"3281"},{"source":"317","target":"185","id":"4546"},{"source":"859","target":"861","id":"1996"},{"source":"1605","target":"1","id":"5858"},{"source":"1485","target":"64","id":"5002"},{"source":"144","target":"438","id":"716"},{"source":"567","target":"1045","id":"2721"},{"source":"874","target":"50","id":"2068"},{"source":"1163","target":"378","id":"3211"},{"source":"112","target":"104","id":"114"},{"source":"918","target":"915","id":"2259"},{"source":"577","target":"68","id":"4396"},{"source":"108","target":"591","id":"5488"},{"source":"1701","target":"65","id":"6482"},{"source":"1343","target":"1175","id":"4109"},{"source":"953","target":"1","id":"2415"},{"source":"687","target":"688","id":"1382"},{"source":"44","target":"53","id":"49"},{"source":"337","target":"340","id":"514"},{"source":"1299","target":"76","id":"3877"},{"source":"499","target":"254","id":"824"},{"source":"1347","target":"641","id":"4136"},{"source":"1212","target":"1213","id":"3480"},{"source":"578","target":"585","id":"5684"},{"source":"203","target":"79","id":"737"},{"source":"967","target":"1","id":"2651"},{"source":"1606","target":"618","id":"5864"},{"source":"304","target":"294","id":"4505"},{"source":"107","target":"53","id":"2333"},{"source":"1444","target":"214","id":"4723"},{"source":"939","target":"107","id":"2349"},{"source":"391","target":"1316","id":"3966"},{"source":"122","target":"1","id":"860"},{"source":"500","target":"1600","id":"5796"},{"source":"188","target":"192","id":"223"},{"source":"1173","target":"48","id":"3280"},{"source":"615","target":"209","id":"4336"},{"source":"1616","target":"913","id":"5945"},{"source":"1589","target":"904","id":"5711"},{"source":"859","target":"513","id":"2001"},{"source":"571","target":"570","id":"5524"},{"source":"487","target":"488","id":"810"},{"source":"735","target":"736","id":"1532"},{"source":"730","target":"634","id":"1516"},{"source":"1040","target":"1039","id":"2697"},{"source":"1468","target":"79","id":"4860"},{"source":"154","target":"152","id":"2434"},{"source":"1442","target":"79","id":"6442"},{"source":"91","target":"704","id":"5416"},{"source":"303","target":"301","id":"394"},{"source":"442","target":"446","id":"722"},{"source":"456","target":"23","id":"5813"},{"source":"1386","target":"1323","id":"4344"},{"source":"1119","target":"397","id":"6255"},{"source":"1223","target":"79","id":"3557"},{"source":"167","target":"68","id":"2335"},{"source":"239","target":"1698","id":"6450"},{"source":"1076","target":"1077","id":"3696"},{"source":"1298","target":"49","id":"3876"},{"source":"1273","target":"1275","id":"3762"},{"source":"1711","target":"150","id":"6584"},{"source":"1531","target":"662","id":"5278"},{"source":"841","target":"513","id":"2448"},{"source":"216","target":"356","id":"541"},{"source":"1206","target":"397","id":"3458"},{"source":"871","target":"287","id":"2048"},{"source":"884","target":"82","id":"2101"},{"source":"1115","target":"1114","id":"3061"},{"source":"130","target":"132","id":"143"},{"source":"1116","target":"1114","id":"5934"},{"source":"1712","target":"293","id":"6592"},{"source":"153","target":"155","id":"2231"},{"source":"1012","target":"65","id":"5571"},{"source":"434","target":"544","id":"942"},{"source":"1561","target":"433","id":"6507"},{"source":"793","target":"61","id":"2963"},{"source":"707","target":"568","id":"1631"},{"source":"1387","target":"1389","id":"4354"},{"source":"506","target":"405","id":"842"},{"source":"1406","target":"301","id":"4477"},{"source":"1001","target":"607","id":"2548"},{"source":"781","target":"65","id":"2783"},{"source":"422","target":"424","id":"695"},{"source":"254","target":"256","id":"296"},{"source":"193","target":"195","id":"221"},{"source":"276","target":"270","id":"6586"},{"source":"665","target":"667","id":"1330"},{"source":"515","target":"53","id":"1168"},{"source":"1081","target":"477","id":"2852"},{"source":"574","target":"51","id":"1060"},{"source":"271","target":"276","id":"4329"},{"source":"366","target":"104","id":"5458"},{"source":"891","target":"79","id":"2116"},{"source":"858","target":"76","id":"5060"},{"source":"1466","target":"568","id":"4838"},{"source":"748","target":"533","id":"3787"},{"source":"789","target":"632","id":"3032"},{"source":"1225","target":"33","id":"3828"},{"source":"1299","target":"1301","id":"3879"},{"source":"557","target":"76","id":"1008"},{"source":"1099","target":"79","id":"2948"},{"source":"1652","target":"109","id":"6184"},{"source":"864","target":"867","id":"2013"},{"source":"611","target":"222","id":"1173"},{"source":"219","target":"292","id":"446"},{"source":"811","target":"53","id":"1804"},{"source":"858","target":"498","id":"5061"},{"source":"1442","target":"1","id":"6443"},{"source":"270","target":"273","id":"413"},{"source":"1459","target":"49","id":"4806"},{"source":"412","target":"1025","id":"2646"},{"source":"1351","target":"171","id":"4161"},{"source":"941","target":"12","id":"6577"},{"source":"1478","target":"25","id":"4961"},{"source":"337","target":"119","id":"510"},{"source":"286","target":"648","id":"3719"},{"source":"1656","target":"246","id":"6198"},{"source":"1644","target":"1266","id":"6126"},{"source":"639","target":"106","id":"1260"},{"source":"1215","target":"596","id":"3491"},{"source":"812","target":"110","id":"5412"},{"source":"112","target":"115","id":"116"},{"source":"271","target":"270","id":"4324"},{"source":"128","target":"82","id":"138"},{"source":"873","target":"104","id":"2057"},{"source":"1019","target":"1020","id":"2614"},{"source":"1269","target":"1079","id":"3752"},{"source":"533","target":"537","id":"6086"},{"source":"723","target":"361","id":"1481"},{"source":"1182","target":"199","id":"3339"},{"source":"1540","target":"1124","id":"5307"},{"source":"1589","target":"65","id":"5709"},{"source":"1351","target":"1046","id":"4162"},{"source":"451","target":"93","id":"745"},{"source":"1131","target":"541","id":"3069"},{"source":"708","target":"707","id":"2871"},{"source":"1423","target":"1235","id":"4588"},{"source":"1623","target":"238","id":"5987"},{"source":"552","target":"50","id":"4887"},{"source":"119","target":"50","id":"3173"},{"source":"966","target":"1415","id":"5820"},{"source":"1063","target":"1","id":"4302"},{"source":"204","target":"208","id":"236"},{"source":"265","target":"264","id":"1898"},{"source":"222","target":"1","id":"248"},{"source":"802","target":"803","id":"1768"},{"source":"1013","target":"177","id":"3024"},{"source":"510","target":"53","id":"6335"},{"source":"1578","target":"53","id":"5623"},{"source":"550","target":"131","id":"965"},{"source":"60","target":"62","id":"55"},{"source":"1428","target":"847","id":"4615"},{"source":"586","target":"1","id":"1092"},{"source":"706","target":"85","id":"1429"},{"source":"246","target":"68","id":"2640"},{"source":"399","target":"400","id":"650"},{"source":"1532","target":"1533","id":"5280"},{"source":"769","target":"771","id":"1636"},{"source":"824","target":"1169","id":"3267"},{"source":"296","target":"318","id":"428"},{"source":"1391","target":"1116","id":"4370"},{"source":"1465","target":"498","id":"4835"},{"source":"549","target":"177","id":"1275"},{"source":"955","target":"49","id":"2420"},{"source":"1122","target":"1123","id":"3046"},{"source":"1468","target":"784","id":"4861"},{"source":"442","target":"447","id":"723"},{"source":"60","target":"50","id":"62"},{"source":"1122","target":"280","id":"3042"},{"source":"1313","target":"1314","id":"3952"},{"source":"105","target":"93","id":"5383"},{"source":"454","target":"287","id":"753"},{"source":"1410","target":"1556","id":"6579"},{"source":"831","target":"76","id":"2877"},{"source":"748","target":"747","id":"3785"},{"source":"1178","target":"1179","id":"3302"},{"source":"51","target":"513","id":"5580"},{"source":"1403","target":"1404","id":"4445"},{"source":"289","target":"119","id":"3721"},{"source":"1212","target":"774","id":"3479"},{"source":"62","target":"65","id":"980"},{"source":"865","target":"436","id":"2291"},{"source":"1550","target":"65","id":"5377"},{"source":"1550","target":"918","id":"5379"},{"source":"1427","target":"752","id":"4608"},{"source":"116","target":"373","id":"6511"},{"source":"214","target":"128","id":"241"},{"source":"269","target":"194","id":"336"},{"source":"306","target":"219","id":"453"},{"source":"1228","target":"5","id":"3580"},{"source":"229","target":"230","id":"260"},{"source":"337","target":"338","id":"511"},{"source":"203","target":"185","id":"738"},{"source":"884","target":"444","id":"2099"},{"source":"415","target":"979","id":"3641"},{"source":"36","target":"38","id":"439"},{"source":"1100","target":"1093","id":"2955"},{"source":"1406","target":"1357","id":"4476"},{"source":"971","target":"296","id":"2476"},{"source":"1580","target":"1292","id":"5651"},{"source":"1690","target":"1691","id":"6419"},{"source":"625","target":"79","id":"1208"},{"source":"358","target":"177","id":"549"},{"source":"1287","target":"348","id":"4620"},{"source":"1493","target":"50","id":"5055"},{"source":"1505","target":"254","id":"5112"},{"source":"1277","target":"748","id":"3794"},{"source":"314","target":"295","id":"422"},{"source":"937","target":"938","id":"2343"},{"source":"748","target":"536","id":"3791"},{"source":"1304","target":"310","id":"3903"},{"source":"407","target":"408","id":"666"},{"source":"822","target":"409","id":"6265"},{"source":"1648","target":"166","id":"6140"},{"source":"1222","target":"312","id":"3534"},{"source":"759","target":"109","id":"5776"},{"source":"840","target":"841","id":"1914"},{"source":"813","target":"96","id":"1811"},{"source":"1674","target":"68","id":"6316"},{"source":"447","target":"498","id":"1010"},{"source":"1312","target":"322","id":"3935"},{"source":"1207","target":"732","id":"3459"},{"source":"1168","target":"351","id":"3260"},{"source":"1075","target":"724","id":"3461"},{"source":"1556","target":"967","id":"5430"},{"source":"1591","target":"567","id":"5731"},{"source":"416","target":"296","id":"3663"},{"source":"308","target":"359","id":"568"},{"source":"844","target":"154","id":"1926"},{"source":"541","target":"702","id":"2743"},{"source":"737","target":"738","id":"1533"},{"source":"789","target":"409","id":"3036"},{"source":"460","target":"65","id":"1165"},{"source":"273","target":"271","id":"5567"},{"source":"597","target":"114","id":"1142"},{"source":"682","target":"641","id":"6169"},{"source":"290","target":"62","id":"1851"},{"source":"1423","target":"1425","id":"4587"},{"source":"716","target":"710","id":"1450"},{"source":"1509","target":"182","id":"5196"},{"source":"1041","target":"65","id":"2707"},{"source":"218","target":"219","id":"246"},{"source":"1141","target":"281","id":"3092"},{"source":"452","target":"93","id":"2278"},{"source":"1689","target":"675","id":"6409"},{"source":"1667","target":"215","id":"6276"},{"source":"1514","target":"1515","id":"5220"},{"source":"760","target":"576","id":"1611"},{"source":"1470","target":"53","id":"4900"},{"source":"905","target":"79","id":"2218"},{"source":"332","target":"149","id":"4387"},{"source":"527","target":"523","id":"3546"},{"source":"838","target":"259","id":"2453"},{"source":"1285","target":"513","id":"3817"},{"source":"63","target":"61","id":"992"},{"source":"848","target":"211","id":"1945"},{"source":"1191","target":"1192","id":"3401"},{"source":"822","target":"798","id":"6267"},{"source":"880","target":"576","id":"2083"},{"source":"672","target":"64","id":"5404"},{"source":"812","target":"111","id":"5414"},{"source":"993","target":"996","id":"4528"},{"source":"781","target":"924","id":"2786"},{"source":"1359","target":"259","id":"4194"},{"source":"1470","target":"287","id":"4903"},{"source":"300","target":"177","id":"3010"},{"source":"1405","target":"626","id":"4455"},{"source":"629","target":"324","id":"2681"},{"source":"1346","target":"246","id":"4124"},{"source":"1706","target":"495","id":"6525"},{"source":"1657","target":"287","id":"6204"},{"source":"1435","target":"175","id":"4699"},{"source":"417","target":"297","id":"4465"},{"source":"1172","target":"431","id":"3274"},{"source":"756","target":"607","id":"1602"},{"source":"1256","target":"82","id":"3655"},{"source":"1280","target":"833","id":"3800"},{"source":"973","target":"974","id":"2478"},{"source":"1477","target":"1","id":"4936"},{"source":"875","target":"858","id":"2062"},{"source":"1672","target":"1295","id":"6297"},{"source":"694","target":"281","id":"1402"},{"source":"190","target":"191","id":"2528"},{"source":"495","target":"1706","id":"6522"},{"source":"345","target":"347","id":"526"},{"source":"1293","target":"513","id":"3845"},{"source":"582","target":"576","id":"4713"},{"source":"365","target":"438","id":"1338"},{"source":"1124","target":"1272","id":"4845"},{"source":"1416","target":"325","id":"4550"},{"source":"1052","target":"491","id":"2770"},{"source":"339","target":"1056","id":"4204"},{"source":"1348","target":"161","id":"4138"},{"source":"13","target":"1","id":"15"},{"source":"352","target":"355","id":"538"},{"source":"70","target":"72","id":"2491"},{"source":"826","target":"312","id":"5361"},{"source":"1499","target":"174","id":"5091"},{"source":"806","target":"600","id":"6056"},{"source":"1156","target":"216","id":"3157"},{"source":"753","target":"638","id":"5129"},{"source":"394","target":"216","id":"4927"},{"source":"1366","target":"1367","id":"4249"},{"source":"1352","target":"453","id":"4164"},{"source":"1632","target":"281","id":"6049"},{"source":"424","target":"656","id":"4941"},{"source":"1649","target":"82","id":"6149"},{"source":"303","target":"296","id":"389"},{"source":"624","target":"897","id":"2146"},{"source":"581","target":"498","id":"4182"},{"source":"755","target":"312","id":"1595"},{"source":"1412","target":"1404","id":"4525"},{"source":"553","target":"64","id":"986"},{"source":"50","target":"104","id":"5473"},{"source":"12","target":"1","id":"4388"},{"source":"400","target":"137","id":"2390"},{"source":"1102","target":"79","id":"3498"},{"source":"1199","target":"1200","id":"3440"},{"source":"640","target":"161","id":"5320"},{"source":"1446","target":"976","id":"4731"},{"source":"269","target":"270","id":"332"},{"source":"35","target":"40","id":"417"},{"source":"654","target":"606","id":"3420"},{"source":"579","target":"82","id":"6002"},{"source":"269","target":"40","id":"337"},{"source":"672","target":"65","id":"5405"},{"source":"895","target":"53","id":"2136"},{"source":"1667","target":"76","id":"6273"},{"source":"865","target":"287","id":"2293"},{"source":"329","target":"310","id":"3239"},{"source":"1015","target":"736","id":"3681"},{"source":"1497","target":"76","id":"5082"},{"source":"712","target":"85","id":"2035"},{"source":"1058","target":"1059","id":"2780"},{"source":"914","target":"109","id":"2251"},{"source":"1435","target":"437","id":"4701"},{"source":"441","target":"713","id":"4379"},{"source":"405","target":"49","id":"2934"},{"source":"946","target":"947","id":"2379"},{"source":"516","target":"323","id":"892"},{"source":"892","target":"79","id":"5141"},{"source":"1684","target":"886","id":"6388"},{"source":"1035","target":"206","id":"2685"},{"source":"1520","target":"1521","id":"5248"},{"source":"1397","target":"710","id":"4409"},{"source":"965","target":"95","id":"2441"},{"source":"369","target":"370","id":"577"},{"source":"1591","target":"131","id":"5727"},{"source":"955","target":"280","id":"2422"},{"source":"979","target":"1028","id":"2655"},{"source":"1704","target":"313","id":"6528"},{"source":"1305","target":"182","id":"4577"},{"source":"1360","target":"408","id":"6656"},{"source":"99","target":"141","id":"160"},{"source":"178","target":"300","id":"1245"},{"source":"424","target":"1","id":"4940"},{"source":"465","target":"79","id":"951"},{"source":"914","target":"253","id":"2243"},{"source":"1271","target":"484","id":"3756"},{"source":"248","target":"53","id":"5348"},{"source":"1119","target":"50","id":"6259"},{"source":"975","target":"938","id":"2488"},{"source":"1391","target":"1114","id":"4367"},{"source":"953","target":"952","id":"2413"},{"source":"364","target":"49","id":"584"},{"source":"1431","target":"1395","id":"4671"},{"source":"1529","target":"33","id":"5272"},{"source":"1536","target":"53","id":"5284"},{"source":"1664","target":"470","id":"6250"},{"source":"1703","target":"79","id":"6492"},{"source":"354","target":"166","id":"1146"},{"source":"688","target":"693","id":"1657"},{"source":"1291","target":"585","id":"5642"},{"source":"484","target":"334","id":"5592"},{"source":"358","target":"362","id":"552"},{"source":"1639","target":"1379","id":"6092"},{"source":"1074","target":"1078","id":"2843"},{"source":"1576","target":"1319","id":"5611"}],"nodes":[{"label":"Sciences De La Terre","x":1412.2230224609375,"y":-2.055976390838623,"id":"262","color":"rgb(255,204,102)","size":8.540210723876953},{"label":"Champ","x":-933.5524291992188,"y":239.07545471191406,"id":"586","color":"rgb(255,51,51)","size":4.0},{"label":"Chaîne Trophique","x":1256.1710205078125,"y":-1671.3907470703125,"id":"580","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Kilometre Carre","x":173.3579559326172,"y":-567.8416137695312,"id":"1015","color":"rgb(102,255,102)","size":5.103478908538818},{"label":"Catastrophe Naturelle","x":1467.9786376953125,"y":-1406.437744140625,"id":"25","color":"rgb(102,102,0)","size":5.6738481521606445},{"label":"Planet In Peril","x":-675.910400390625,"y":744.3154296875,"id":"1491","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Glacial Period","x":-271.1141662597656,"y":1832.915283203125,"id":"1098","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Gaz Parfait","x":2628.283447265625,"y":-645.1771240234375,"id":"541","color":"rgb(255,255,51)","size":5.103478908538818},{"label":"Sable Bitumineux","x":-52.610496520996094,"y":-1401.718994140625,"id":"1327","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Anwr Drilling","x":-2627.632080078125,"y":915.7081298828125,"id":"274","color":"rgb(102,0,102)","size":4.936610698699951},{"label":"Science Center","x":785.2101440429688,"y":399.9143371582031,"id":"1323","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Polycristal","x":2375.138671875,"y":-291.7706298828125,"id":"1520","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Droit","x":-345.1713562011719,"y":-1826.0067138671875,"id":"842","color":"rgb(153,0,0)","size":4.0},{"label":"Mammifères Marins","x":-273.3992614746094,"y":-1182.143798828125,"id":"1318","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Energie Marine","x":761.4014892578125,"y":-970.1514892578125,"id":"726","color":"rgb(0,153,0)","size":4.293514728546143},{"label":"Vent Geostrophique","x":1671.5755615234375,"y":-254.51400756835938,"id":"1561","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Organisme Vivant","x":1507.45263671875,"y":-1434.38671875,"id":"582","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Polluant Secondaire","x":1457.781982421875,"y":-1268.886474609375,"id":"1513","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Limite Des 200 Miles Marins","x":-33.31745529174805,"y":-699.0526123046875,"id":"1294","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Pollution Prevention","x":-1377.6392822265625,"y":713.9226684570312,"id":"1518","color":"rgb(102,102,0)","size":4.075808525085449},{"label":"Satellite Orbit","x":231.1543426513672,"y":2578.50390625,"id":"1130","color":"rgb(255,153,153)","size":4.293514728546143},{"label":"Oil Field","x":-2092.7724609375,"y":969.78466796875,"id":"450","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Océan Arctique","x":28.159622192382812,"y":-147.4086151123047,"id":"48","color":"rgb(0,204,204)","size":32.935298919677734},{"label":"Mesures Conservatoires Et Compensatoires","x":201.2974395751953,"y":-654.922607421875,"id":"1346","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Oiseau Marin","x":-78.5789566040039,"y":-1023.541015625,"id":"983","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Banquise Permanente","x":46.569725036621094,"y":10.34594440460205,"id":"410","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Installations Classées","x":1222.58544921875,"y":-2058.860107421875,"id":"948","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Acide Éthanoïque","x":2378.265625,"y":-1083.8045654296875,"id":"90","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Situation Anticyclonique","x":1643.440185546875,"y":-1384.404052734375,"id":"1633","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Judd Gregg","x":-1378.9903564453125,"y":1433.5750732421875,"id":"1463","color":"rgb(0,204,204)","size":4.0},{"label":"Pole Airship","x":213.51223754882812,"y":28.755355834960938,"id":"398","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Estuaires","x":917.8259887695312,"y":-1474.0455322265625,"id":"943","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Norwegian Oil","x":-2236.421142578125,"y":960.3920288085938,"id":"1404","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Yukon River","x":-1329.87548828125,"y":869.7622680664062,"id":"1717","color":"rgb(153,0,0)","size":4.206028938293457},{"label":"Technologie Gmbh","x":1799.05419921875,"y":-276.313232421875,"id":"1666","color":"rgb(255,255,51)","size":4.0},{"label":"Air Quality","x":-1209.4488525390625,"y":1061.2088623046875,"id":"162","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Nord Géographique","x":456.9866027832031,"y":508.9895935058594,"id":"47","color":"rgb(153,255,255)","size":6.584775924682617},{"label":"Gaz Parfaits","x":2766.4443359375,"y":-772.1646728515625,"id":"1048","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Glaciers Of Iceland","x":-1106.13330078125,"y":1600.585693359375,"id":"1103","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Equivalent Co2","x":350.8734436035156,"y":-349.5634765625,"id":"452","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Fonds Côtiers","x":408.5318603515625,"y":-1242.9537353515625,"id":"1004","color":"rgb(0,153,0)","size":4.39528751373291},{"label":"Groupe Pétrolier","x":-405.83056640625,"y":-1606.5108642578125,"id":"606","color":"rgb(102,0,102)","size":5.103478908538818},{"label":"Arctic National Wildlife Refuge","x":-2764.014404296875,"y":976.0181884765625,"id":"35","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Port Ouest","x":-511.3980407714844,"y":-1958.8724365234375,"id":"1524","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Gaz Carbonique","x":1104.385498046875,"y":-792.3753051757812,"id":"67","color":"rgb(102,255,102)","size":9.501245498657227},{"label":"Ice Records","x":-147.54861450195312,"y":1719.7235107421875,"id":"329","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Chauffage Solaire","x":1274.2322998046875,"y":-937.2332763671875,"id":"597","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Bouclier Canadien","x":309.83795166015625,"y":-842.7721557617188,"id":"496","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Aperture Radar","x":411.4226379394531,"y":864.9448852539062,"id":"810","color":"rgb(153,255,255)","size":4.0086140632629395},{"label":"Hydrate De Méthane","x":503.4374694824219,"y":-844.715576171875,"id":"1161","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Sibérie","x":-367.50750732421875,"y":-766.07080078125,"id":"1632","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Refuge To Oil","x":-2698.738037109375,"y":874.7493286132812,"id":"273","color":"rgb(102,0,102)","size":4.781970500946045},{"label":"Ressources Vivantes","x":774.3036499023438,"y":-1410.3544921875,"id":"1594","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Unique Plateau Continental","x":-320.9755859375,"y":-1846.307861328125,"id":"1697","color":"rgb(153,0,0)","size":4.0},{"label":"Oil Companies","x":-2245.361328125,"y":813.8052978515625,"id":"272","color":"rgb(102,0,102)","size":6.584775924682617},{"label":"Crépuscule Nautique","x":1977.38623046875,"y":-1353.287353515625,"id":"737","color":"rgb(255,255,51)","size":4.0},{"label":"Ice News","x":42.22573471069336,"y":1851.931884765625,"id":"1422","color":"rgb(153,255,255)","size":4.0},{"label":"Admiral Scheer","x":-1439.79736328125,"y":2020.9342041015625,"id":"419","color":"rgb(0,204,204)","size":4.0},{"label":"Ligne De Champ","x":446.68719482421875,"y":556.0613403320312,"id":"1293","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Systeme Meteo","x":2142.0986328125,"y":-530.1538696289062,"id":"1541","color":"rgb(255,204,102)","size":4.0},{"label":"Identité Collective","x":957.6539306640625,"y":-1371.41162109375,"id":"1169","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Highest Mountain","x":-1436.0623779296875,"y":2075.27001953125,"id":"57","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Acidification Des Océans","x":949.3548583984375,"y":-771.9315185546875,"id":"92","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Cape Dorset","x":-1116.916748046875,"y":1553.179931640625,"id":"525","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Quantités D\u0027Eau,1","x":561.6199951171875,"y":-1561.1962890625,"id":"1555","attributes":{"nodedef":"n1555"},"color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Wally Herbert","x":-971.27978515625,"y":1483.9224853515625,"id":"1709","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Aleutian Island","x":-599.6304931640625,"y":307.56365966796875,"id":"198","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Science De La Nature","x":1429.4813232421875,"y":-375.6391906738281,"id":"261","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"King Haakon","x":-664.6025390625,"y":2235.445556640625,"id":"1030","color":"rgb(0,204,204)","size":4.0},{"label":"Oao Gazprom","x":-2060.773681640625,"y":549.4484252929688,"id":"1053","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Calotte Glaciaire","x":591.7031860351562,"y":-123.89764404296875,"id":"61","color":"rgb(153,255,255)","size":19.1311092376709},{"label":"Rétroaction Positive","x":987.7084350585938,"y":-480.2536315917969,"id":"52","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Parc National","x":-282.4018249511719,"y":-606.8483276367188,"id":"170","color":"rgb(153,255,0)","size":8.235326766967773},{"label":"Lynx","x":-1016.044921875,"y":2644.493896484375,"id":"1310","color":"rgb(0,204,204)","size":4.0},{"label":"Nanisivik Mine","x":-1148.0731201171875,"y":1985.365234375,"id":"1378","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Courants Marins Chauds","x":341.8601379394531,"y":-261.7185974121094,"id":"727","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Discover North","x":-1485.690673828125,"y":1784.274658203125,"id":"818","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Sous-Marins","x":-590.5049438476562,"y":-1314.688720703125,"id":"1645","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Science \u0026 Vie","x":1182.782958984375,"y":280.2792053222656,"id":"1111","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Genetic Resources","x":783.1207885742188,"y":-1739.42529296875,"id":"1538","color":"rgb(153,255,0)","size":4.0},{"label":"Fjords Tours","x":-1812.889892578125,"y":1720.9605712890625,"id":"997","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Satellite Image","x":301.9154357910156,"y":2138.177978515625,"id":"1083","color":"rgb(255,153,153)","size":4.781970500946045},{"label":"Grand Nord","x":-362.91522216796875,"y":-256.2770080566406,"id":"281","color":"rgb(0,204,204)","size":18.676555633544922},{"label":"Yves Delorme","x":-3590.7666015625,"y":-1715.421875,"id":"1682","color":"rgb(51,153,255)","size":4.0},{"label":"Russie Unie","x":-901.9271850585938,"y":-1313.946533203125,"id":"825","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Gaz Naturel","x":29.68891716003418,"y":-1422.890625,"id":"567","color":"rgb(0,153,0)","size":13.54262924194336},{"label":"Intérêts Économiques","x":136.60568237304688,"y":-1761.73779296875,"id":"1214","color":"rgb(153,0,0)","size":4.133297443389893},{"label":"Île Aux Ours","x":-216.5255584716797,"y":-281.82208251953125,"id":"1173","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Russian Mig","x":-3845.65625,"y":-1035.047607421875,"id":"1602","color":"rgb(255,51,51)","size":4.0},{"label":"Physique Des Particules","x":1444.818359375,"y":-100.17031860351562,"id":"1003","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Loup Arctique","x":-200.24407958984375,"y":-220.78904724121094,"id":"483","color":"rgb(153,255,0)","size":4.781970500946045},{"label":"1831","x":-1042.585693359375,"y":278.2547302246094,"id":"0","color":"rgb(255,51,51)","size":4.0},{"label":"Carbon Dioxide","x":-509.6867370605469,"y":1153.4713134765625,"id":"177","color":"rgb(102,255,102)","size":14.764718055725098},{"label":"Sheila Watt","x":-922.7695922851562,"y":1962.31884765625,"id":"619","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Agriculture Durable","x":891.6155395507812,"y":-1680.5008544921875,"id":"156","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Agence Spatiale","x":938.8359985351562,"y":420.05511474609375,"id":"133","color":"rgb(255,153,153)","size":5.472443103790283},{"label":"Wildlife Fund","x":-428.5501403808594,"y":976.4503173828125,"id":"1711","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Bilan Carbone","x":755.95556640625,"y":-1098.6580810546875,"id":"451","color":"rgb(102,255,102)","size":5.472443103790283},{"label":"Planetary Orbit","x":-131.3832550048828,"y":2532.2919921875,"id":"1476","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Reserve Petroliere","x":-578.7444458007812,"y":-1032.4029541015625,"id":"1008","color":"rgb(102,0,102)","size":4.293514728546143},{"label":"Commission Européenne","x":401.4253845214844,"y":-1512.4029541015625,"id":"84","color":"rgb(255,51,51)","size":5.472443103790283},{"label":"Institut Camille Jordan","x":1339.658447265625,"y":381.1823425292969,"id":"1566","color":"rgb(255,255,51)","size":4.0},{"label":"Passage International","x":-1377.7752685546875,"y":155.49526977539062,"id":"1460","color":"rgb(255,51,51)","size":4.0},{"label":"Institutes Of Technology","x":1001.623779296875,"y":1100.98046875,"id":"777","color":"rgb(255,153,153)","size":4.075808525085449},{"label":"Générations Futures","x":451.8046875,"y":-1203.6495361328125,"id":"781","color":"rgb(102,255,102)","size":5.103478908538818},{"label":"Nunavik","x":-1306.2196044921875,"y":2811.482666015625,"id":"1423","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Coopération Internationale","x":115.85001373291016,"y":-1025.172119140625,"id":"722","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Bulles De Gaz Emprisonnées","x":1125.7774658203125,"y":-525.71630859375,"id":"509","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Universite De Montreal","x":1673.3009033203125,"y":47.932456970214844,"id":"1698","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Cambridge Bay","x":-1225.4501953125,"y":1317.5401611328125,"id":"516","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Circumpolar Conference","x":-1056.1627197265625,"y":2054.598388671875,"id":"617","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Lacs Sous-Glaciaires","x":758.4376220703125,"y":347.21270751953125,"id":"1269","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Bilan Environnemental","x":824.1160888671875,"y":-1392.2030029296875,"id":"252","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Durablement Pollué","x":748.7852783203125,"y":-2095.647216796875,"id":"845","color":"rgb(102,102,0)","size":4.075808525085449},{"label":"Écosystèmes","x":600.8551635742188,"y":-1271.76513671875,"id":"881","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Metre Cube","x":177.89779663085938,"y":-1657.566162109375,"id":"428","color":"rgb(102,0,102)","size":4.781970500946045},{"label":"Global Surveyor","x":1119.8714599609375,"y":647.7386474609375,"id":"863","color":"rgb(255,153,153)","size":4.075808525085449},{"label":"Archives Du Climat","x":939.9533081054688,"y":-416.38031005859375,"id":"288","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Protection De La Nature","x":646.8939819335938,"y":-1496.78466796875,"id":"458","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Europe Du Nord","x":-820.3291015625,"y":-818.375732421875,"id":"388","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Plan De Prévention Des Risques","x":1789.16943359375,"y":-1745.5433349609375,"id":"30","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Détroit De Nares","x":69.19367980957031,"y":211.30694580078125,"id":"809","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Bateau De Pêche","x":410.1282653808594,"y":-1891.766845703125,"id":"439","color":"rgb(153,0,0)","size":4.39528751373291},{"label":"Developpement Humain","x":235.37948608398438,"y":-1622.2196044921875,"id":"813","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Perte De Glace","x":430.07354736328125,"y":-328.2873229980469,"id":"1471","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Magnetic Field","x":-23.518125534057617,"y":1376.1861572265625,"id":"372","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Coûts Supplémentaires","x":713.3629150390625,"y":-1702.53173828125,"id":"734","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Régions Polaires","x":291.6045227050781,"y":183.0286865234375,"id":"1575","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Condensat De Bose-Einstein","x":1717.8370361328125,"y":83.28048706054688,"id":"673","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Commission Océanographique Intergouvernementale","x":443.1557922363281,"y":-590.3914184570312,"id":"651","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"American Geophysical","x":13.97448444366455,"y":896.5333862304688,"id":"223","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Richard Weber","x":-271.6991882324219,"y":1477.3450927734375,"id":"500","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Degree Fahrenheit","x":792.5369262695312,"y":2364.6083984375,"id":"74","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Earth System","x":-33.12626266479492,"y":1281.72265625,"id":"361","color":"rgb(255,255,51)","size":5.282204627990723},{"label":"Arctique Canadien","x":-34.037384033203125,"y":-42.725345611572266,"id":"279","color":"rgb(0,204,204)","size":10.882965087890625},{"label":"Déchets","x":591.4802856445312,"y":-2255.109375,"id":"773","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Yukon Quest","x":-1212.327392578125,"y":21.756004333496094,"id":"1142","color":"rgb(153,0,0)","size":4.133297443389893},{"label":"Constante Des Gaz Parfaits","x":2765.376220703125,"y":-746.6752319335938,"id":"701","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Absolute Zero","x":1101.5811767578125,"y":2339.88916015625,"id":"69","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Grand Port","x":-558.8419799804688,"y":-1775.0401611328125,"id":"1123","color":"rgb(153,0,0)","size":4.293514728546143},{"label":"Voyages Et Aventures Du Capitaine Hatteras","x":223.48948669433594,"y":467.0993347167969,"id":"1708","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Midnight Sun","x":-1395.9552001953125,"y":2051.304931640625,"id":"297","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Mer D\u0027Okhotsk,1","x":-401.33245849609375,"y":-1031.172607421875,"id":"1343","attributes":{"nodedef":"n1343"},"color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Lost Planet","x":1539.6019287109375,"y":-854.0687866210938,"id":"678","color":"rgb(255,204,102)","size":4.0},{"label":"Dérèglements Climatiques","x":1019.9054565429688,"y":-1099.6612548828125,"id":"794","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Reseau Trophique","x":1108.49365234375,"y":-1649.361083984375,"id":"578","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Communaute Scientifique","x":1391.388427734375,"y":-517.110595703125,"id":"258","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Longue Distance","x":-1891.9310302734375,"y":-955.7990112304688,"id":"981","color":"rgb(204,204,255)","size":4.0340681076049805},{"label":"Igloos","x":-1043.2408447265625,"y":2237.484130859375,"id":"1170","color":"rgb(204,204,255)","size":4.0340681076049805},{"label":"Navigation Company","x":245.43983459472656,"y":3486.531005859375,"id":"1392","color":"rgb(255,255,51)","size":4.0},{"label":"Helge Sander","x":-371.4839172363281,"y":2118.072265625,"id":"343","color":"rgb(0,204,204)","size":4.0},{"label":"Station Météorologique","x":1818.5457763671875,"y":-736.021240234375,"id":"682","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Croisiere Arctique","x":-612.6448364257812,"y":42.875667572021484,"id":"741","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Territoire Arctique Canadien","x":-549.2730712890625,"y":-191.093994140625,"id":"1676","color":"rgb(0,204,204)","size":4.0},{"label":"Geophysique Appliquee","x":1942.337890625,"y":539.9500732421875,"id":"1073","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Richesses Maritimes","x":291.574951171875,"y":-1910.2333984375,"id":"1601","color":"rgb(153,0,0)","size":4.206028938293457},{"label":"Plante Aquatique","x":1285.7686767578125,"y":-1453.8092041015625,"id":"858","color":"rgb(153,255,0)","size":4.781970500946045},{"label":"Network Of Centres Of Excellence","x":-875.6000366210938,"y":1464.3062744140625,"id":"332","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"International Arctic","x":-707.1710205078125,"y":1718.787353515625,"id":"315","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Bay Alaska","x":-2304.918701171875,"y":1538.0584716796875,"id":"448","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Combustible Fossile","x":815.3712768554688,"y":-1225.1680908203125,"id":"118","color":"rgb(0,153,0)","size":8.852968215942383},{"label":"Ferdinand De Lesseps","x":-239.18646240234375,"y":-2538.10498046875,"id":"530","color":"rgb(204,0,0)","size":4.0086140632629395},{"label":"Pingos","x":-436.329345703125,"y":1763.2047119140625,"id":"1487","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"South Iceland","x":-1511.5205078125,"y":1666.0196533203125,"id":"1646","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Fisheries Research","x":-505.2409362792969,"y":896.1464233398438,"id":"488","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Gaz De France","x":-273.7169189453125,"y":-1318.034423828125,"id":"1042","color":"rgb(102,0,102)","size":4.6399359703063965},{"label":"European Energy","x":-1345.869384765625,"y":931.9912719726562,"id":"950","color":"rgb(0,153,0)","size":4.0340681076049805},{"label":"Energie Nucléaire","x":263.9258117675781,"y":-1404.858154296875,"id":"569","color":"rgb(0,153,0)","size":5.282204627990723},{"label":"Navire De Pêche","x":111.64442443847656,"y":-1903.831787109375,"id":"441","color":"rgb(153,0,0)","size":4.6399359703063965},{"label":"Union Internationale","x":569.4212036132812,"y":-953.427490234375,"id":"698","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Air Humide","x":1812.0146484375,"y":-450.9634094238281,"id":"160","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Space Agency","x":827.9591064453125,"y":867.1500854492188,"id":"140","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Recherche","x":1645.1668701171875,"y":-853.490478515625,"id":"1562","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Circum-Arctic Resource Appraisal","x":-1417.8199462890625,"y":1346.6717529296875,"id":"612","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Voyage Au Cap","x":-850.92626953125,"y":-287.2585144042969,"id":"534","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"National Weather","x":49.27556228637695,"y":2100.6494140625,"id":"367","color":"rgb(255,255,51)","size":4.781970500946045},{"label":"National Oceanic","x":155.75376892089844,"y":1900.197998046875,"id":"309","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Fonte Annuelle","x":364.8657531738281,"y":-123.84783935546875,"id":"1011","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Indigènes Inuit","x":225.49862670898438,"y":-419.7015686035156,"id":"1194","color":"rgb(204,204,255)","size":4.510906219482422},{"label":"Fusee Ariane","x":944.4932861328125,"y":925.226318359375,"id":"572","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Commission For Refugees","x":-626.1370239257812,"y":2209.29736328125,"id":"1028","color":"rgb(0,204,204)","size":4.0},{"label":"Mayen Islands","x":-1624.634521484375,"y":2166.725830078125,"id":"1239","color":"rgb(0,204,204)","size":4.0},{"label":"Maree Noire","x":-99.39531707763672,"y":-1763.42578125,"id":"1164","color":"rgb(102,0,102)","size":4.133297443389893},{"label":"Condensats","x":1507.54150390625,"y":-204.82220458984375,"id":"676","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Physical Oceanography","x":402.76641845703125,"y":1244.8629150390625,"id":"1482","color":"rgb(255,204,102)","size":4.0},{"label":"Nunavut","x":-1353.854248046875,"y":1785.6558837890625,"id":"1426","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Intérêt Stratégique","x":364.9102783203125,"y":-1361.624755859375,"id":"1211","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Solstices","x":-400.19305419921875,"y":2067.84814453125,"id":"1642","color":"rgb(0,204,204)","size":4.0},{"label":"Environnement Canada","x":1323.092041015625,"y":-917.3856201171875,"id":"106","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Convention Des Nations","x":-272.1719970703125,"y":-1238.3597412109375,"id":"715","color":"rgb(255,51,51)","size":4.781970500946045},{"label":"Securite Alimentaire","x":379.0228576660156,"y":-1565.291259765625,"id":"579","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Filet De Pêche","x":292.838623046875,"y":-1705.7376708984375,"id":"982","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Sami Language","x":-1942.499267578125,"y":2512.8349609375,"id":"1248","color":"rgb(204,204,255)","size":5.282204627990723},{"label":"Une Vérité Qui Dérange","x":269.528076171875,"y":-395.56805419921875,"id":"1696","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Niveau Trophique","x":1112.0208740234375,"y":-1626.6505126953125,"id":"577","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"August Peterman","x":47.598548889160156,"y":969.8030395507812,"id":"369","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Recherche Fondamentale","x":1382.326416015625,"y":-1028.606689453125,"id":"1567","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Samoyèdes","x":-1532.1046142578125,"y":-832.3033447265625,"id":"1611","color":"rgb(204,204,255)","size":4.075808525085449},{"label":"Cryosphère","x":-141.69094848632812,"y":1432.79052734375,"id":"755","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Arctic Explorer","x":-793.9893188476562,"y":1843.285400390625,"id":"303","color":"rgb(0,204,204)","size":4.936610698699951},{"label":"Satellite Navigation","x":234.13194274902344,"y":3367.627197265625,"id":"1116","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Instrument Scientifique","x":1140.2447509765625,"y":245.36618041992188,"id":"666","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Océan Glacial Arctique","x":75.3579330444336,"y":-222.08584594726562,"id":"538","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Recherche Française","x":1463.2591552734375,"y":-942.5368041992188,"id":"1568","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Plan De Prevention","x":1853.248291015625,"y":-1832.4892578125,"id":"28","color":"rgb(102,102,0)","size":4.206028938293457},{"label":"Institut Des Sciences","x":1449.68994140625,"y":-269.876708984375,"id":"1204","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Submersible Mir","x":51.21259307861328,"y":1336.3157958984375,"id":"1653","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Lemming","x":-974.2824096679688,"y":1868.3739013671875,"id":"1288","color":"rgb(0,204,204)","size":4.0},{"label":"Lumière Solaire","x":1415.5977783203125,"y":-1074.5252685546875,"id":"1309","color":"rgb(255,255,51)","size":4.0},{"label":"Baleine Bleue","x":30.028717041015625,"y":-1047.228759765625,"id":"390","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Aire Marine Protégée","x":291.7319641113281,"y":-1383.3349609375,"id":"169","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Sommet De La Terre","x":279.6936950683594,"y":-981.5819702148438,"id":"689","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Archipel Arctique","x":-255.59234619140625,"y":73.05978393554688,"id":"42","color":"rgb(0,204,204)","size":5.886096477508545},{"label":"Global Average Temperature","x":49.35322189331055,"y":1719.8236083984375,"id":"1108","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"High Altitude","x":-772.4302978515625,"y":2072.1865234375,"id":"56","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Érosion Des Sols","x":1110.46728515625,"y":-1435.0150146484375,"id":"929","color":"rgb(153,255,0)","size":4.6399359703063965},{"label":"Lappland","x":-1614.2547607421875,"y":1686.1014404296875,"id":"1278","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Capelan","x":-967.8992309570312,"y":324.8018798828125,"id":"542","color":"rgb(255,51,51)","size":4.0},{"label":"National Institute","x":885.5368041992188,"y":763.1171264648438,"id":"16","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Fibre Optique","x":-2214.43505859375,"y":-1087.89404296875,"id":"18","color":"rgb(204,204,255)","size":4.133297443389893},{"label":"Institut De Recherche Agronomique","x":1479.1070556640625,"y":-675.8849487304688,"id":"1203","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Polar Bear","x":-248.04136657714844,"y":1112.631103515625,"id":"1451","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Esperance De Vie","x":-203.37042236328125,"y":-1382.83740234375,"id":"127","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Glace Pérenne","x":331.8544921875,"y":6.469234466552734,"id":"1092","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Préoccupations Environnementales","x":913.7150268554688,"y":-1516.5771484375,"id":"1536","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Théorie Erronée De La Mer Polaire Libre De Glace","x":265.0186767578125,"y":744.8469848632812,"id":"1677","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"1927","x":-1194.3721923828125,"y":423.0043029785156,"id":"6","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Organisation Nations Unies","x":-482.8285217285156,"y":-142.87576293945312,"id":"1441","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Geostationary Operational","x":284.5367126464844,"y":2251.43701171875,"id":"912","color":"rgb(255,153,153)","size":4.39528751373291},{"label":"Très Basses Températures","x":1497.54736328125,"y":285.4104309082031,"id":"1689","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Arctic Region","x":-918.8540649414062,"y":1732.8306884765625,"id":"219","color":"rgb(0,204,204)","size":7.9385457038879395},{"label":"Gas Condensate","x":-1892.72509765625,"y":856.7564086914062,"id":"1033","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Courant Marin","x":597.963623046875,"y":-437.8042297363281,"id":"607","color":"rgb(255,204,102)","size":8.852968215942383},{"label":"North Cape","x":-1306.5689697265625,"y":2003.2337646484375,"id":"1314","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Sciences Santé","x":1610.7698974609375,"y":-138.92054748535156,"id":"1623","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Tonje Folkestad","x":-297.1965026855469,"y":995.9053344726562,"id":"1678","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Coastal Zone","x":-57.49678421020508,"y":1147.275634765625,"id":"443","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Interactions Air-Neige","x":1003.8515014648438,"y":267.47943115234375,"id":"1209","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Eaux Intérieures","x":254.67762756347656,"y":-1601.257568359375,"id":"868","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Earth Observation","x":476.53277587890625,"y":1206.121337890625,"id":"752","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Activité Solaire","x":1019.194091796875,"y":-65.51429748535156,"id":"112","color":"rgb(255,255,51)","size":4.781970500946045},{"label":"Arctic Ocean","x":-858.7642211914062,"y":1760.1708984375,"id":"296","color":"rgb(0,204,204)","size":18.676555633544922},{"label":"1958","x":-923.1117553710938,"y":300.51910400390625,"id":"9","color":"rgb(255,51,51)","size":4.0},{"label":"Energy Technology","x":-1174.175537109375,"y":1211.6539306640625,"id":"907","color":"rgb(0,153,0)","size":4.206028938293457},{"label":"Mare Island","x":-1608.9420166015625,"y":172.58163452148438,"id":"1229","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Pergélisol","x":611.0936279296875,"y":-347.7278747558594,"id":"1468","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Prévision Météorologique","x":1674.5135498046875,"y":-759.5797119140625,"id":"640","color":"rgb(255,204,102)","size":4.781970500946045},{"label":"Volume Molaire","x":2573.265625,"y":-778.6514282226562,"id":"704","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Canadian Hydrographic","x":185.7216339111328,"y":1505.6448974609375,"id":"446","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Dépôts Rocheux","x":1134.8359375,"y":-416.6546325683594,"id":"792","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Nature Bassin","x":1054.341552734375,"y":-1553.7513427734375,"id":"1023","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Ressource Naturelle","x":372.7302551269531,"y":-1337.694580078125,"id":"109","color":"rgb(0,153,0)","size":23.853513717651367},{"label":"Affaires Étrangères","x":-416.64178466796875,"y":-1388.5225830078125,"id":"128","color":"rgb(255,51,51)","size":11.244990348815918},{"label":"Test Ban","x":-1156.66259765625,"y":-132.11866760253906,"id":"962","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Pêche Lac","x":1041.0244140625,"y":-1170.6361083984375,"id":"1465","color":"rgb(153,255,0)","size":4.0},{"label":"Genie Mecanique","x":2703.232666015625,"y":428.4504699707031,"id":"663","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Observatoire De Greenwich","x":1127.2589111328125,"y":-137.82998657226562,"id":"1287","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Boreogadus Saida","x":-415.00299072265625,"y":0.7784530520439148,"id":"487","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Perte De Sol","x":990.3416748046875,"y":-1785.65185546875,"id":"1472","color":"rgb(102,102,0)","size":4.510906219482422},{"label":"Engrais Chimique","x":1442.54638671875,"y":-1840.012939453125,"id":"153","color":"rgb(102,102,0)","size":4.510906219482422},{"label":"Creation De Valeur","x":-144.18275451660156,"y":-1219.799072265625,"id":"1668","color":"rgb(153,255,0)","size":4.0},{"label":"Prise De Conscience","x":391.77239990234375,"y":-1272.17529296875,"id":"924","color":"rgb(0,153,0)","size":4.39528751373291},{"label":"Urss","x":-1082.490478515625,"y":-1814.544189453125,"id":"31","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Eaux De Fonte","x":775.5789794921875,"y":-394.23291015625,"id":"864","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Reaction Chimique","x":1998.379638671875,"y":-1139.310546875,"id":"897","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Brent Boddy","x":-57.53631591796875,"y":991.5533447265625,"id":"499","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Bruno Peyron","x":-96.83160400390625,"y":-66.97936248779297,"id":"356","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Bris De Glace","x":-51.48553466796875,"y":-200.6317138671875,"id":"280","color":"rgb(0,204,204)","size":9.501245498657227},{"label":"Gestion Des Risques","x":1580.8740234375,"y":-1767.4342041015625,"id":"26","color":"rgb(102,102,0)","size":4.510906219482422},{"label":"Frappes Nucléaires","x":-1311.4027099609375,"y":-464.2800598144531,"id":"1024","color":"rgb(255,51,51)","size":4.0},{"label":"Northern Norway","x":-1513.88427734375,"y":1940.5718994140625,"id":"1152","color":"rgb(0,204,204)","size":5.282204627990723},{"label":"Ocean Engineering","x":863.1543579101562,"y":1605.9718017578125,"id":"565","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Bas Niveau","x":-377.101806640625,"y":94.28236389160156,"id":"432","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Fjord Du Saguenay","x":-808.0360717773438,"y":63.18717575073242,"id":"994","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Natural Sciences","x":785.9993286132812,"y":268.3930358886719,"id":"1386","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Laboratoire De Géologie","x":1599.014892578125,"y":-225.34234619140625,"id":"954","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Souveraineté Limitée","x":-436.36474609375,"y":-1584.6697998046875,"id":"1649","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Eau Salée","x":1287.019775390625,"y":-803.0387573242188,"id":"817","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"1978","x":-1086.7376708984375,"y":282.59967041015625,"id":"11","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Cercle Polaire Arctique","x":-257.4226989746094,"y":114.5979995727539,"id":"574","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Hazardous Waste","x":-1165.3197021484375,"y":117.11734771728516,"id":"959","color":"rgb(102,102,0)","size":4.206028938293457},{"label":"Dechet Dangereux","x":573.1505126953125,"y":-2150.138916015625,"id":"707","color":"rgb(102,102,0)","size":4.936610698699951},{"label":"Nature Photography","x":-1234.7947998046875,"y":1187.2357177734375,"id":"1389","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Effect Of Global Warming","x":-253.63299560546875,"y":1540.568359375,"id":"894","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"United Nations","x":-440.61810302734375,"y":156.68453979492188,"id":"1442","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Ecole Polytechnique","x":2021.11474609375,"y":174.77450561523438,"id":"646","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Regime Alimentaire","x":198.74391174316406,"y":-1272.209228515625,"id":"585","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Biosphere Programme","x":-750.0748291015625,"y":1525.2879638671875,"id":"476","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Prévisions Météo","x":1819.6859130859375,"y":-586.1161499023438,"id":"641","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Aléoutiennes","x":-82.33863067626953,"y":-485.130859375,"id":"197","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Chien De Traineau","x":-721.9819946289062,"y":-527.147216796875,"id":"600","color":"rgb(204,204,255)","size":5.6738481521606445},{"label":"Norvège Du Nord","x":-686.24169921875,"y":-355.7278747558594,"id":"1125","color":"rgb(153,0,0)","size":4.6399359703063965},{"label":"Intérêts Stratégiques","x":-436.1466369628906,"y":-1513.074462890625,"id":"1216","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Wood Mackenzie","x":-1887.30224609375,"y":604.39013671875,"id":"1713","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Alexei Miller","x":-1747.8853759765625,"y":243.88377380371094,"id":"204","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Environmental Protection","x":-1113.230712890625,"y":872.4547119140625,"id":"163","color":"rgb(102,255,102)","size":5.282204627990723},{"label":"National Maladies Rares","x":1955.45361328125,"y":-838.8698120117188,"id":"1546","color":"rgb(255,204,102)","size":4.0},{"label":"Solar Energy","x":-1137.634521484375,"y":1279.6405029296875,"id":"909","color":"rgb(0,153,0)","size":4.0086140632629395},{"label":"Pollution","x":-1426.6656494140625,"y":951.9179077148438,"id":"1514","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Plate-Formes Offshore","x":-85.44915008544922,"y":-1274.136962890625,"id":"1499","color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Atmosphere Composition","x":-530.412841796875,"y":1407.7283935546875,"id":"359","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Missile Balistique","x":71.72400665283203,"y":-676.071533203125,"id":"494","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Union Européenne","x":77.16728973388672,"y":-1303.923583984375,"id":"82","color":"rgb(255,51,51)","size":44.51482391357422},{"label":"Glacial Outwash","x":-459.3403015136719,"y":1557.467529296875,"id":"1096","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Flux Zonal","x":1283.772705078125,"y":-80.11326599121094,"id":"1001","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Boreal Forest","x":-945.212158203125,"y":2200.774169921875,"id":"471","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Nouvelle-Zemble","x":-201.8921661376953,"y":-571.7731323242188,"id":"1420","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Plantes Vertes","x":1396.9930419921875,"y":-1724.7591552734375,"id":"584","color":"rgb(102,102,0)","size":4.0340681076049805},{"label":"Pays Balte","x":-659.1566772460938,"y":-1289.7989501953125,"id":"1126","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Soil Salinity","x":-605.7926025390625,"y":1008.748291015625,"id":"1609","color":"rgb(255,204,102)","size":4.0},{"label":"Mammifere Marin","x":-95.50175476074219,"y":-1201.1683349609375,"id":"391","color":"rgb(153,255,0)","size":6.837328910827637},{"label":"Masse Glaciaire","x":649.7149658203125,"y":-186.74403381347656,"id":"1325","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Global Concern Expedition","x":519.5447998046875,"y":990.1395263671875,"id":"1110","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Global Exploration","x":797.335205078125,"y":1284.910400390625,"id":"1112","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Geographic Traveler","x":-1745.7501220703125,"y":1280.5291748046875,"id":"1067","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Living Organism","x":-918.6689453125,"y":959.650390625,"id":"464","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Anomalie Magnétique","x":1387.6629638671875,"y":-146.3898162841797,"id":"263","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"-4200 M","x":-1213.0836181640625,"y":2295.2705078125,"id":"54","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Anwr Oil","x":-2581.248291015625,"y":955.8977661132812,"id":"269","color":"rgb(102,0,102)","size":4.781970500946045},{"label":"Ours Polaire","x":-157.55242919921875,"y":-308.56231689453125,"id":"334","color":"rgb(153,255,0)","size":10.178449630737305},{"label":"Pole Magnetique","x":679.227294921875,"y":556.8468627929688,"id":"374","color":"rgb(153,255,255)","size":6.341859817504883},{"label":"Gabriel Wackermann","x":-87.75955963134766,"y":-1859.6141357421875,"id":"1496","color":"rgb(153,0,0)","size":4.0},{"label":"Aptenodytes Forsteri","x":289.0431823730469,"y":919.851318359375,"id":"277","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Periode Interglaciaire","x":1033.8819580078125,"y":-503.2251281738281,"id":"552","color":"rgb(255,255,51)","size":5.472443103790283},{"label":"Nature Chimique","x":2002.038818359375,"y":-1090.4591064453125,"id":"1390","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Températures Globales","x":1006.1412963867188,"y":-671.974365234375,"id":"1675","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Diversite Culturelle","x":605.7864379882812,"y":-1663.8399658203125,"id":"823","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Giec","x":722.7131958007812,"y":-586.2316284179688,"id":"1086","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Vatnajokull Glacier","x":-1299.3758544921875,"y":1628.77099609375,"id":"1703","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Transformations","x":-1208.724853515625,"y":282.80255126953125,"id":"1685","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Recit De Voyage","x":-683.7840576171875,"y":-572.9569091796875,"id":"1231","color":"rgb(204,204,255)","size":4.075808525085449},{"label":"Carte Marine","x":812.1536865234375,"y":13.741379737854004,"id":"233","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Composition Chimique","x":1572.0687255859375,"y":-1048.61572265625,"id":"365","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Degre Celsius","x":1432.5145263671875,"y":-311.01776123046875,"id":"512","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Grand Dauphin","x":-79.85520935058594,"y":-1255.1279296875,"id":"1133","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Degree Celsius","x":960.0056762695312,"y":2435.82666015625,"id":"73","color":"rgb(255,255,51)","size":4.781970500946045},{"label":"Courants Marins Froids","x":-207.296875,"y":-879.0455932617188,"id":"729","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Convention De Varsovie","x":180.90830993652344,"y":-913.2974853515625,"id":"683","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Fjord Horse","x":-1878.0020751953125,"y":1849.91552734375,"id":"995","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Glaciation","x":-235.29949951171875,"y":1871.2613525390625,"id":"1101","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"National Wildlife Refuge","x":-2618.724853515625,"y":814.0955200195312,"id":"271","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Chiens","x":-889.0441284179688,"y":-568.3861694335938,"id":"601","color":"rgb(204,204,255)","size":4.0},{"label":"Liquide De Refroidissement","x":2370.32861328125,"y":-649.3900756835938,"id":"1295","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Bœuf Musqué","x":-256.10687255859375,"y":-330.9064636230469,"id":"481","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Television Show","x":-941.4266967773438,"y":282.9108581542969,"id":"1669","color":"rgb(255,51,51)","size":4.0},{"label":"Adverse Event","x":-2619.889404296875,"y":-152.8070068359375,"id":"124","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Objectifs Du Millénaire","x":117.25886535644531,"y":-1529.2181396484375,"id":"247","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Alliage Métallique","x":2378.687744140625,"y":-330.806884765625,"id":"213","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Active Volcano","x":-1640.16650390625,"y":2000.4835205078125,"id":"1238","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Grandes Rousses","x":885.4703369140625,"y":-186.6187744140625,"id":"932","color":"rgb(255,204,102)","size":4.0},{"label":"Golfe De Finlande","x":-689.8905029296875,"y":-991.0733642578125,"id":"987","color":"rgb(255,51,51)","size":4.6399359703063965},{"label":"Geographic Video","x":-1619.5887451171875,"y":1215.6246337890625,"id":"1068","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Secteur Pétrolier","x":-364.1715393066406,"y":-1760.04833984375,"id":"657","color":"rgb(102,0,102)","size":4.781970500946045},{"label":"Ratification","x":-507.1439514160156,"y":-315.71282958984375,"id":"1558","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Péninsule Scandinave","x":-769.4072875976562,"y":-756.4035034179688,"id":"1124","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Gazprom","x":-1937.9300537109375,"y":468.28424072265625,"id":"1052","color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Écologisme","x":721.4150390625,"y":-1248.9193115234375,"id":"878","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Periode Geologique","x":1184.9498291015625,"y":-223.36912536621094,"id":"594","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Ocean Pacifique","x":-188.73233032226562,"y":-531.0193481445312,"id":"200","color":"rgb(255,51,51)","size":5.6738481521606445},{"label":"Weather Services","x":-132.76998901367188,"y":2149.054443359375,"id":"899","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Plateau Continental En Arctique","x":-45.741153717041016,"y":-1658.357666015625,"id":"1495","color":"rgb(102,0,102)","size":4.0340681076049805},{"label":"Symboliquement Planté","x":-807.3521728515625,"y":-263.1263732910156,"id":"1660","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Insel Seeland","x":-1842.103271484375,"y":-1701.308349609375,"id":"764","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Souveraineté","x":-172.32069396972656,"y":-1680.070556640625,"id":"1647","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Base De Donnée","x":1301.830322265625,"y":-1226.973876953125,"id":"76","color":"rgb(255,255,51)","size":14.764718055725098},{"label":"Kalaallit Nunaat","x":-749.01806640625,"y":1343.0867919921875,"id":"1146","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Subarctique","x":184.04832458496094,"y":-753.6328125,"id":"1652","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Hydrocarbure Aromatique","x":1017.660400390625,"y":-1741.5787353515625,"id":"378","color":"rgb(102,102,0)","size":4.6399359703063965},{"label":"Planification Strategique","x":613.8388061523438,"y":-1836.17822265625,"id":"1190","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Mbep/J","x":-463.3499450683594,"y":-1650.888427734375,"id":"1326","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Pack","x":-1091.357666015625,"y":216.81724548339844,"id":"1453","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Classification Périodique","x":1661.9716796875,"y":-1525.0955810546875,"id":"623","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Mission Arctique","x":307.9113464355469,"y":-306.6958923339844,"id":"339","color":"rgb(153,255,255)","size":5.6738481521606445},{"label":"Temperature Record","x":-120.6404037475586,"y":1793.9925537109375,"id":"1572","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Courant Océanique","x":835.2644653320312,"y":-451.4788513183594,"id":"608","color":"rgb(255,204,102)","size":5.6738481521606445},{"label":"Yamal","x":-776.9039916992188,"y":2286.57568359375,"id":"1715","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Russian Jet","x":-3853.128662109375,"y":-1009.4136352539062,"id":"1603","color":"rgb(255,51,51)","size":4.0},{"label":"Conflits","x":-460.0719299316406,"y":-1356.5899658203125,"id":"691","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Bilan De Masse Glaciaire","x":794.037841796875,"y":-204.70335388183594,"id":"454","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Aire De Répartition","x":88.43418884277344,"y":-981.20361328125,"id":"165","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Engrais Azoté","x":1342.5379638671875,"y":-1752.6905517578125,"id":"242","color":"rgb(102,102,0)","size":4.206028938293457},{"label":"Natural Resources Commission","x":-1613.603515625,"y":98.33975982666016,"id":"1370","color":"rgb(0,153,0)","size":4.0},{"label":"Déformations","x":194.17935180664062,"y":1320.2796630859375,"id":"775","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Climat Polaire","x":235.52413940429688,"y":-184.31378173828125,"id":"634","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Dechet Radioactif","x":325.6799011230469,"y":-1643.284912109375,"id":"568","color":"rgb(102,102,0)","size":5.6738481521606445},{"label":"Programme Des Nations Unies","x":85.97142028808594,"y":-1140.53759765625,"id":"248","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Érosion Glaciaire","x":742.3344116210938,"y":-350.19073486328125,"id":"931","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Évolution Des Galaxies","x":1633.125244140625,"y":-54.933509826660156,"id":"952","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Drapeau De La Russie","x":-15.412890434265137,"y":-559.6062622070312,"id":"837","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Analyse De Sol","x":1482.62353515625,"y":-1745.756591796875,"id":"240","color":"rgb(102,102,0)","size":4.133297443389893},{"label":"Rayon Solaire","x":1197.6590576171875,"y":-457.2544860839844,"id":"728","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Law Of The Sea","x":-1015.6412353515625,"y":-235.204833984375,"id":"960","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Indices","x":-935.016845703125,"y":261.6860046386719,"id":"1193","color":"rgb(255,51,51)","size":4.0},{"label":"Climate Change","x":574.4462280273438,"y":-244.7993621826172,"id":"591","color":"rgb(102,255,102)","size":5.472443103790283},{"label":"Dioxyde De Carbone","x":1076.9239501953125,"y":-838.5778198242188,"id":"64","color":"rgb(102,255,102)","size":12.75397777557373},{"label":"Carottes De Glace","x":1182.79248046875,"y":-605.17724609375,"id":"553","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Wentworth Higginson","x":-1183.2293701171875,"y":240.41905212402344,"id":"941","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Produit Chimique","x":1520.8070068359375,"y":-1546.7008056640625,"id":"155","color":"rgb(102,102,0)","size":4.781970500946045},{"label":"Iles Pribilof","x":-198.6033172607422,"y":-740.008056640625,"id":"1182","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Photographies","x":1839.8797607421875,"y":-1381.5904541015625,"id":"1481","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Planète","x":1200.0296630859375,"y":-768.0518798828125,"id":"1492","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Cooperative Institute For Research","x":97.84896850585938,"y":1591.988037109375,"id":"723","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Natural Histories","x":-456.4294738769531,"y":770.5518798828125,"id":"974","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Compréhension Du Système Climatique","x":801.6995849609375,"y":-861.987060546875,"id":"670","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Alaska Halibut","x":-3062.091064453125,"y":2551.033447265625,"id":"187","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Température Ambiante","x":2132.640380859375,"y":-386.3600158691406,"id":"87","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"International Airports","x":-1742.007568359375,"y":1980.4854736328125,"id":"221","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Polar Foundation","x":-108.2223892211914,"y":1356.49560546875,"id":"184","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"New York","x":-752.0060424804688,"y":236.44363403320312,"id":"1","color":"rgb(255,51,51)","size":64.35166931152344},{"label":"Empreinte Génétique","x":476.001220703125,"y":-2566.525634765625,"id":"1533","color":"rgb(102,102,0)","size":4.0},{"label":"Norwegian Ministry","x":-2301.88037109375,"y":2535.718017578125,"id":"1200","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Tara Arctic","x":236.50755310058594,"y":-119.65736389160156,"id":"1119","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Action Climat","x":754.18310546875,"y":-991.233154296875,"id":"102","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Basse Pression","x":1899.7237548828125,"y":-507.6459655761719,"id":"433","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Changement Climatique Global","x":604.3817138671875,"y":-524.1521606445312,"id":"593","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Recherche Sciences","x":1627.426025390625,"y":-399.2071838378906,"id":"1547","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Gps Navigation","x":194.82525634765625,"y":3389.077392578125,"id":"1114","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Port Maritime","x":-610.5924072265625,"y":-1976.65283203125,"id":"1137","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"1002 Area","x":-2678.666748046875,"y":995.836181640625,"id":"34","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Exploration Well","x":-2312.6064453125,"y":836.2626953125,"id":"968","color":"rgb(102,0,102)","size":4.0086140632629395},{"label":"Pression Atmosphérique","x":1988.022705078125,"y":-564.9814453125,"id":"161","color":"rgb(255,204,102)","size":6.108868598937988},{"label":"Mendeleïev","x":1611.185546875,"y":-1567.342529296875,"id":"1333","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Safe Passage","x":-1208.8505859375,"y":156.23768615722656,"id":"1461","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Fjords Of Norway","x":-1889.8212890625,"y":1917.4227294921875,"id":"996","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Leonid Brejnev","x":-732.2546997070312,"y":-1650.6351318359375,"id":"1225","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"James Forbes","x":636.195068359375,"y":258.57037353515625,"id":"667","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Recherche Aux Pôles","x":1176.76513671875,"y":222.73812866210938,"id":"1563","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Iles Lofoten","x":-813.2720947265625,"y":-402.7174377441406,"id":"537","color":"rgb(0,204,204)","size":5.472443103790283},{"label":"Glouton","x":-295.9211730957031,"y":-747.9576416015625,"id":"1118","color":"rgb(153,255,0)","size":4.0},{"label":"Geographic World","x":-1738.5836181640625,"y":1237.1822509765625,"id":"1069","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Magnetic Pole","x":-61.151405334472656,"y":1537.1751708984375,"id":"621","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"1937","x":-922.0673828125,"y":217.56393432617188,"id":"8","color":"rgb(255,51,51)","size":4.0},{"label":"Polar Research","x":-226.88523864746094,"y":1496.3126220703125,"id":"325","color":"rgb(153,255,255)","size":5.282204627990723},{"label":"Record Minimum","x":-48.43122100830078,"y":1773.6942138671875,"id":"1571","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Information Géographique","x":1652.8824462890625,"y":-1207.1824951171875,"id":"556","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"East Siberian","x":-1020.4994506835938,"y":2079.242431640625,"id":"855","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Carotte De Glace","x":1005.4568481445312,"y":-244.7089080810547,"id":"62","color":"rgb(153,255,255)","size":9.173389434814453},{"label":"Migrations","x":-1498.015380859375,"y":1193.9449462890625,"id":"1354","color":"rgb(153,255,0)","size":4.0},{"label":"Upper Atmosphere","x":-290.42523193359375,"y":1562.1124267578125,"id":"362","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Agence Internationale","x":101.9319076538086,"y":-1183.8203125,"id":"130","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Transport Logistique","x":1128.3056640625,"y":-2616.636474609375,"id":"1302","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Océanographie","x":928.886474609375,"y":-164.4426727294922,"id":"1431","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Will Steger","x":-630.0276489257812,"y":1798.4930419921875,"id":"1712","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Bleriot Xi","x":-598.3441772460938,"y":282.5133361816406,"id":"43","color":"rgb(0,204,204)","size":4.0},{"label":"Geodetic Surveying","x":212.71829223632812,"y":2365.78125,"id":"776","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Décennie","x":-988.4039916992188,"y":118.36727142333984,"id":"767","color":"rgb(255,51,51)","size":4.0},{"label":"American Scientist","x":-1284.3760986328125,"y":988.1171264648438,"id":"227","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Champ Magnetique Terrestre","x":617.023681640625,"y":604.7554321289062,"id":"587","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Cambrien Moyen","x":503.5157775878906,"y":-911.0304565429688,"id":"518","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Systèmes Glaciaires","x":985.3449096679688,"y":154.50323486328125,"id":"1663","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Iceberg","x":-545.5053100585938,"y":1385.1671142578125,"id":"1167","color":"rgb(153,255,255)","size":4.0086140632629395},{"label":"Intérêts Défensifs","x":-12.911566734313965,"y":-1922.81103515625,"id":"1212","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Mode De Vie","x":-115.59657287597656,"y":-940.325927734375,"id":"111","color":"rgb(153,255,0)","size":6.584775924682617},{"label":"Zone Économique Exclusive","x":-199.3349609375,"y":-1561.9595947265625,"id":"714","color":"rgb(153,0,0)","size":5.103478908538818},{"label":"Dmitri Medvedev","x":-749.7711791992188,"y":-1404.799560546875,"id":"493","color":"rgb(255,51,51)","size":4.510906219482422},{"label":"Océans","x":-448.6255798339844,"y":1364.870849609375,"id":"1433","color":"rgb(102,255,102)","size":4.0},{"label":"Périodes Interglaciaires","x":978.1617431640625,"y":-603.2879638671875,"id":"1470","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Observation Satellite","x":633.9613647460938,"y":1304.4700927734375,"id":"1428","color":"rgb(255,153,153)","size":4.293514728546143},{"label":"Cellule Photovoltaïque","x":1573.73876953125,"y":-920.066650390625,"id":"560","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Glacial Moraine","x":-745.0570068359375,"y":1737.6048583984375,"id":"1095","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Natural World","x":-595.7034912109375,"y":788.1918334960938,"id":"1385","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Hemisphere Nord","x":822.0599975585938,"y":-116.0876235961914,"id":"119","color":"rgb(255,204,102)","size":11.244990348815918},{"label":"Droit Humain","x":59.45440673828125,"y":-1219.3333740234375,"id":"234","color":"rgb(255,51,51)","size":4.510906219482422},{"label":"American University","x":-607.4078979492188,"y":865.6720581054688,"id":"228","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Exploitation Des Richesses","x":311.64801025390625,"y":-1837.4033203125,"id":"965","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Gisement De Chtokman","x":-769.5961303710938,"y":-1157.606689453125,"id":"605","color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Innovation Norway","x":-2335.32470703125,"y":2176.70068359375,"id":"1199","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Deh Cho","x":-1856.7294921875,"y":1537.44580078125,"id":"785","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Environnement","x":453.2809753417969,"y":-992.4443969726562,"id":"914","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Mecanique Des Roches","x":2446.5673828125,"y":373.1225280761719,"id":"1330","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Arctic Refuge","x":-2631.31884765625,"y":850.3453979492188,"id":"36","color":"rgb(153,255,0)","size":5.6738481521606445},{"label":"Grande Odyssée","x":-984.5294189453125,"y":-365.6311340332031,"id":"1141","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Polar Ice","x":-110.7434310913086,"y":1699.8232421875,"id":"753","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Bathymétrie","x":324.61383056640625,"y":767.0276489257812,"id":"442","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Fondation Polaire Internationale","x":551.2457275390625,"y":51.95774841308594,"id":"893","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Recherche Scientifique","x":1442.5101318359375,"y":-540.7030029296875,"id":"571","color":"rgb(255,204,102)","size":5.472443103790283},{"label":"Géophysique","x":1632.0228271484375,"y":628.3880615234375,"id":"1071","color":"rgb(255,204,51)","size":4.206028938293457},{"label":"Gravures","x":-1026.744873046875,"y":137.02943420410156,"id":"1143","color":"rgb(255,51,51)","size":4.0},{"label":"Déchet Industriel","x":657.5604248046875,"y":-2385.392578125,"id":"769","color":"rgb(102,102,0)","size":4.781970500946045},{"label":"Ice Hotel","x":-593.0064697265625,"y":1885.76708984375,"id":"1090","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Île De Gotland","x":-846.1076049804688,"y":-999.18359375,"id":"1174","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Geologic Province","x":-994.019775390625,"y":1189.9840087890625,"id":"614","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Séracs","x":-1662.7349853515625,"y":1545.182373046875,"id":"1630","color":"rgb(0,204,204)","size":4.0},{"label":"1969","x":-1062.8043212890625,"y":419.4639892578125,"id":"10","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Propulsion Nucléaire","x":-385.1502380371094,"y":-1260.037353515625,"id":"1177","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Norwegian Navy","x":-569.5661010742188,"y":2063.767822265625,"id":"1415","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Sammy Davis","x":-1078.1158447265625,"y":156.47669982910156,"id":"1454","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Institut Océanographique","x":463.5839538574219,"y":81.99915313720703,"id":"1206","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Hausse Des Prix","x":-333.2700500488281,"y":-1539.107666015625,"id":"423","color":"rgb(153,0,0)","size":4.39528751373291},{"label":"Technologies Modernes","x":-32.22397232055664,"y":-1066.8753662109375,"id":"1667","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Haute Pression","x":1766.5191650390625,"y":-1061.0745849609375,"id":"435","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Film Documentaire","x":-155.1978302001953,"y":52.95424270629883,"id":"1057","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Onu","x":-1233.36279296875,"y":135.1965789794922,"id":"1436","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Polar Star","x":-1302.835205078125,"y":952.3133544921875,"id":"742","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Superficie","x":49.51503372192383,"y":-587.6513061523438,"id":"1655","color":"rgb(255,51,51)","size":4.0},{"label":"Reserve Naturelle","x":434.63714599609375,"y":-1621.7032470703125,"id":"697","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Eau Froide","x":1541.7825927734375,"y":-1092.912109375,"id":"816","color":"rgb(255,204,102)","size":4.936610698699951},{"label":"Delta De La Léna","x":289.7749938964844,"y":-542.6483154296875,"id":"788","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Netherlands Institute","x":278.0394592285156,"y":488.0981140136719,"id":"1396","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Pcgr Du Canada","x":-597.6290893554688,"y":-1740.4219970703125,"id":"1367","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Lomonosov Ridge","x":-466.1482849121094,"y":1429.583984375,"id":"319","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Expédition Arctique","x":-198.63258361816406,"y":-88.86698913574219,"id":"955","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Renne Caribou","x":458.2775573730469,"y":-1139.828125,"id":"1583","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Polar Bridge","x":-403.4349670410156,"y":1495.7833251953125,"id":"1505","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Arcticnet","x":-643.3875122070312,"y":1682.5628662109375,"id":"330","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Alaska","x":-3098.02685546875,"y":2507.338134765625,"id":"186","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Climate Variation","x":-198.80438232421875,"y":1270.0087890625,"id":"637","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Aurora Borealis","x":-896.8470458984375,"y":1434.7862548828125,"id":"371","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Puits De Carbone","x":949.2518310546875,"y":-967.28125,"id":"672","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Gas Pipeline","x":-2079.5126953125,"y":693.8248291015625,"id":"206","color":"rgb(102,0,102)","size":7.370260715484619},{"label":"Gel","x":-3475.97705078125,"y":-1943.2325439453125,"id":"1058","color":"rgb(51,153,255)","size":4.0},{"label":"Sciences Naturelles","x":1289.0399169921875,"y":-203.2497100830078,"id":"1621","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Aurore Boréale","x":-38.54255294799805,"y":154.39012145996094,"id":"364","color":"rgb(0,204,204)","size":6.584775924682617},{"label":"Marine Canadienne","x":-901.2643432617188,"y":-2052.479248046875,"id":"1320","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Inconvenient Truth","x":-316.84161376953125,"y":893.7084350585938,"id":"179","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Croissance Démographique","x":656.6221313476562,"y":-1804.153076171875,"id":"644","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Écosystème","x":971.4881591796875,"y":-1275.459716796875,"id":"880","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Geographic Adventure","x":-1713.5594482421875,"y":1303.010986328125,"id":"1061","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Achim Steiner","x":75.6333999633789,"y":264.43115234375,"id":"88","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Erosion Marine","x":-82.82237243652344,"y":629.181884765625,"id":"933","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"1893","x":-1061.2469482421875,"y":260.2148132324219,"id":"2","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Élément Nutritif","x":1147.1973876953125,"y":-1708.31396484375,"id":"241","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Ice Sheet","x":-148.8400115966797,"y":1680.135009765625,"id":"312","color":"rgb(153,255,255)","size":9.836332321166992},{"label":"Cryosat 2","x":55.193878173828125,"y":1549.1031494140625,"id":"750","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Natural Gas Liquids","x":-2024.284423828125,"y":879.7984008789062,"id":"615","color":"rgb(102,0,102)","size":4.075808525085449},{"label":"Iouri Andropov","x":-750.6943359375,"y":-1591.2652587890625,"id":"1224","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Risques Naturels","x":1759.55419921875,"y":-1789.48095703125,"id":"22","color":"rgb(102,102,0)","size":4.39528751373291},{"label":"Séquestration Co2","x":-801.0259399414062,"y":1199.588134765625,"id":"1629","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"North Slope","x":-2024.936767578125,"y":924.9051513671875,"id":"194","color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Polar Science","x":-132.6469268798828,"y":1475.8482666015625,"id":"892","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Fonte Des Glaces","x":459.58941650390625,"y":-200.27076721191406,"id":"66","color":"rgb(102,255,102)","size":13.145594596862793},{"label":"Global Warning","x":-243.81764221191406,"y":967.8666381835938,"id":"1117","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Ile Victoria","x":-490.3682861328125,"y":177.11434936523438,"id":"1179","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Centre Spatial","x":876.1445922851562,"y":616.9332275390625,"id":"135","color":"rgb(255,153,153)","size":4.39528751373291},{"label":"Physique Theorique","x":1881.3311767578125,"y":108.39909362792969,"id":"1202","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Politique","x":-5.994494438171387,"y":-1563.6400146484375,"id":"1511","color":"rgb(255,51,51)","size":4.0},{"label":"Essai Historique","x":-1157.0037841796875,"y":177.75860595703125,"id":"940","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Groenland","x":-331.8370056152344,"y":792.9080200195312,"id":"1145","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Droit International","x":-258.4610595703125,"y":-1630.45166015625,"id":"85","color":"rgb(255,51,51)","size":7.9385457038879395},{"label":"Science Physique","x":2234.972412109375,"y":52.56838607788086,"id":"1622","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Institute Of Meteorology","x":954.8125610351562,"y":784.3052368164062,"id":"1208","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Faible Superficie","x":261.7717590332031,"y":-143.9561309814453,"id":"977","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Glacial Erosion","x":-193.4502410888672,"y":1852.1458740234375,"id":"1093","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Milieu Aquatique","x":1167.759765625,"y":-1534.117919921875,"id":"581","color":"rgb(153,255,0)","size":4.781970500946045},{"label":"Degre Centigrade","x":849.8101806640625,"y":-506.2597961425781,"id":"784","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"International Energy","x":-1331.1221923828125,"y":1015.0953979492188,"id":"908","color":"rgb(0,153,0)","size":4.293514728546143},{"label":"East Oil","x":-1742.295654296875,"y":576.974609375,"id":"854","color":"rgb(102,0,102)","size":4.0340681076049805},{"label":"Chaîne Logistique","x":1199.179931640625,"y":-2594.193359375,"id":"1300","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Conseil De L\u0027Arctique,1","x":-84.26390075683594,"y":-507.35498046875,"id":"694","attributes":{"nodedef":"n694"},"color":"rgb(255,51,51)","size":4.6399359703063965},{"label":"Scandinavian Peninsula","x":-1889.73388671875,"y":2102.25634765625,"id":"1283","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Alaska Salmon","x":-3059.961669921875,"y":2481.27099609375,"id":"188","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Universités Canadiennes","x":526.4083251953125,"y":102.38640594482422,"id":"386","color":"rgb(153,255,255)","size":4.0086140632629395},{"label":"National Geographic Society","x":-1637.8243408203125,"y":1171.7003173828125,"id":"1063","color":"rgb(153,255,0)","size":4.6399359703063965},{"label":"Center For Coastal And Ocean Mapping","x":852.3263549804688,"y":1872.09228515625,"id":"563","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Transport De Marchandises","x":900.6026000976562,"y":-2553.81201171875,"id":"1301","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Terminal Méthanier","x":-392.3746643066406,"y":-1739.4954833984375,"id":"1046","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Glace Continentale","x":770.9066162109375,"y":-432.2124328613281,"id":"1091","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Gas Giants","x":-1531.8878173828125,"y":905.6224365234375,"id":"205","color":"rgb(102,0,102)","size":4.075808525085449},{"label":"Dégradation De L\u0027Environnement,1","x":722.3955078125,"y":-1539.0269775390625,"id":"778","attributes":{"nodedef":"n778"},"color":"rgb(102,102,0)","size":4.39528751373291},{"label":"Convention De Genève","x":-24.439672470092773,"y":-1609.70947265625,"id":"709","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Revendications","x":85.95450592041016,"y":-849.3680419921875,"id":"1596","color":"rgb(255,51,51)","size":4.0},{"label":"Chaînes Alimentaires","x":1151.4473876953125,"y":-1582.9261474609375,"id":"583","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Health Science","x":1327.412109375,"y":241.00694274902344,"id":"1619","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Mer Des Tchouktches","x":-448.9115295410156,"y":-286.3415832519531,"id":"1342","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Cartes Shom","x":774.489501953125,"y":44.53413391113281,"id":"447","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Technology Conference","x":-1174.6954345703125,"y":758.0120849609375,"id":"686","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Pmrc","x":-971.127197265625,"y":301.84942626953125,"id":"1503","color":"rgb(255,51,51)","size":4.0},{"label":"North Atlantic","x":-592.1644897460938,"y":960.2535400390625,"id":"351","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Conservation De La Nature","x":341.7538757324219,"y":-1182.1884765625,"id":"696","color":"rgb(153,255,0)","size":4.781970500946045},{"label":"Institut De Physique","x":1748.0091552734375,"y":133.39999389648438,"id":"1077","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"International Polar Expedition","x":-403.2984619140625,"y":1634.9942626953125,"id":"1221","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"High Arctic","x":-997.6122436523438,"y":1941.9306640625,"id":"295","color":"rgb(0,204,204)","size":5.103478908538818},{"label":"Valley Winter","x":-1254.2745361328125,"y":201.01535034179688,"id":"1688","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Mer De Béring","x":-416.0766906738281,"y":-581.99462890625,"id":"1337","color":"rgb(255,51,51)","size":4.6399359703063965},{"label":"Advanced Science","x":862.8711547851562,"y":533.5106201171875,"id":"1270","color":"rgb(255,153,153)","size":4.0},{"label":"Developpement Local","x":327.0224914550781,"y":-1726.369384765625,"id":"814","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Yukon","x":-1277.1168212890625,"y":912.0397338867188,"id":"1716","color":"rgb(153,0,0)","size":4.133297443389893},{"label":"Jacques Nougier","x":369.62542724609375,"y":1031.9442138671875,"id":"1234","color":"rgb(255,255,51)","size":4.0},{"label":"Adrian Flanagan","x":-598.8163452148438,"y":2167.505859375,"id":"1251","color":"rgb(0,204,204)","size":4.0},{"label":"Zones Géographiques","x":-218.76654052734375,"y":-1089.88232421875,"id":"1722","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Etude D\u0027Impact,2","x":989.4458618164062,"y":-1832.7940673828125,"id":"946","attributes":{"nodedef":"n946"},"color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Nomadic Tribe","x":-1678.7099609375,"y":-860.518310546875,"id":"1613","color":"rgb(204,204,255)","size":4.0},{"label":"25% Inférieure","x":378.7664489746094,"y":256.8262939453125,"id":"44","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Experience Scientifique","x":780.1193237304688,"y":-305.1599426269531,"id":"963","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Lgge","x":-72.10955810546875,"y":1455.18896484375,"id":"1290","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Hemisphere Sud","x":1008.4192504882812,"y":-105.01465606689453,"id":"636","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Analyse Qualitative Globale Simplifiée Des Impacts","x":344.9957275390625,"y":-1426.785400390625,"id":"243","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Adverse Effect","x":-2590.093017578125,"y":-133.97509765625,"id":"123","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Rayonnement Ultraviolet","x":1545.1719970703125,"y":-874.0010375976562,"id":"680","color":"rgb(255,204,102)","size":4.0},{"label":"Biologie Marine","x":1135.73681640625,"y":-625.051513671875,"id":"468","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Eau Douce","x":905.9652709960938,"y":-1031.2620849609375,"id":"498","color":"rgb(102,255,102)","size":13.944929122924805},{"label":"Reserve Naturelle Regionale","x":694.9480590820312,"y":-1956.704833984375,"id":"846","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Otan","x":-403.6894836425781,"y":-605.4341430664062,"id":"1444","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Norwegian Polar","x":-518.056396484375,"y":1673.6336669921875,"id":"317","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Canis Lupus","x":-332.4640197753906,"y":-551.8473510742188,"id":"1308","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Water Pollution","x":-1417.96337890625,"y":887.7281494140625,"id":"1515","color":"rgb(102,102,0)","size":4.075808525085449},{"label":"Cycle De Doha","x":84.66776275634766,"y":-1861.4490966796875,"id":"761","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Explorateur Polaire","x":49.932064056396484,"y":445.4388122558594,"id":"841","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Ressources Naturelles","x":231.35784912109375,"y":-1204.1434326171875,"id":"1592","color":"rgb(0,153,0)","size":4.133297443389893},{"label":"Kara","x":-1029.7344970703125,"y":437.6309814453125,"id":"1257","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Template Matching","x":-1361.560302734375,"y":302.0841369628906,"id":"1686","color":"rgb(255,51,51)","size":4.0},{"label":"Ifremer Brest","x":511.7898864746094,"y":-372.69976806640625,"id":"1005","color":"rgb(153,255,255)","size":4.0086140632629395},{"label":"Risque Majeur","x":1767.0731201171875,"y":-1811.623779296875,"id":"23","color":"rgb(102,102,0)","size":4.6399359703063965},{"label":"Canadian Inuit","x":-1131.8297119140625,"y":2217.159423828125,"id":"523","color":"rgb(204,204,255)","size":4.781970500946045},{"label":"Board Of Trustees","x":-919.033935546875,"y":897.6107177734375,"id":"1693","color":"rgb(102,255,102)","size":4.0},{"label":"Agenda 21","x":79.4177017211914,"y":-499.4136047363281,"id":"99","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Nature","x":-706.6260375976562,"y":836.9927978515625,"id":"1387","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Cape Cross","x":212.16981506347656,"y":-2052.8818359375,"id":"1447","color":"rgb(153,0,0)","size":4.0},{"label":"Science Des Materiaux","x":2504.886474609375,"y":-260.5295104980469,"id":"1521","color":"rgb(255,255,51)","size":4.0},{"label":"Canada","x":-1005.2640380859375,"y":680.813232421875,"id":"520","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Convention On Climate","x":-614.9793701171875,"y":647.582275390625,"id":"718","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Astronomie De Lyon","x":1325.966552734375,"y":337.0829772949219,"id":"1564","color":"rgb(255,153,153)","size":4.0},{"label":"Accessibles","x":150.030517578125,"y":-543.5947875976562,"id":"75","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Carbon Cycle","x":-557.7491455078125,"y":1300.622802734375,"id":"465","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Accumulateur De Froid","x":2515.8671875,"y":-386.56671142578125,"id":"86","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Universite De Reading","x":733.7023315429688,"y":-634.2902221679688,"id":"1699","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Otto Neumann Sverdrup","x":-899.0653686523438,"y":2098.9833984375,"id":"1448","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Azote Liquide","x":2053.978515625,"y":-126.75948333740234,"id":"380","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Variation Climatique","x":1092.8575439453125,"y":-579.475341796875,"id":"511","color":"rgb(255,204,102)","size":5.282204627990723},{"label":"Ligne De Base","x":-266.4502258300781,"y":-1518.729248046875,"id":"870","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Snohvit","x":-2041.626220703125,"y":1151.53125,"id":"1636","color":"rgb(102,0,102)","size":4.293514728546143},{"label":"Earth Summit","x":-434.10894775390625,"y":501.4352722167969,"id":"850","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Nord Stream","x":-1559.5074462890625,"y":35.28211212158203,"id":"1050","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Plusieurs Expéditions","x":224.90196228027344,"y":299.7099304199219,"id":"1501","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Sami Parliament","x":-1931.7279052734375,"y":2559.63525390625,"id":"1607","color":"rgb(204,204,255)","size":4.781970500946045},{"label":"Régions Subpolaires","x":113.39276885986328,"y":-350.522705078125,"id":"1576","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Makivik Corporation","x":-1267.5469970703125,"y":2790.955810546875,"id":"1259","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Toundra","x":-3601.925048828125,"y":-1691.172119140625,"id":"1681","color":"rgb(51,153,255)","size":4.0},{"label":"Express Côtier","x":-753.6414794921875,"y":-218.7122802734375,"id":"535","color":"rgb(0,204,204)","size":5.282204627990723},{"label":"Danemark","x":-1614.99658203125,"y":-1534.9354248046875,"id":"762","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Zero Absolu","x":1220.9068603515625,"y":520.4005737304688,"id":"675","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Geographie De La Russie","x":-1012.9732666015625,"y":-152.01487731933594,"id":"958","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Habitat Sain","x":816.5289916992188,"y":-1637.7469482421875,"id":"1150","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Nobel De La Paix","x":657.8598022460938,"y":-373.2637939453125,"id":"635","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Pressure Ridge","x":-300.82281494140625,"y":2095.478759765625,"id":"1357","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Période Du Quaternaire","x":1016.2114868164062,"y":-305.43133544921875,"id":"1469","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Science Naturelle","x":1218.244140625,"y":-309.01025390625,"id":"732","color":"rgb(255,204,102)","size":5.282204627990723},{"label":"Carbon Capture","x":-691.7048950195312,"y":1221.33251953125,"id":"547","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Asie Centrale","x":-319.7685546875,"y":-1110.31103515625,"id":"344","color":"rgb(255,51,51)","size":5.282204627990723},{"label":"Glacial Valley","x":-181.54881286621094,"y":2009.858154296875,"id":"1100","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Lomrog","x":-209.9856719970703,"y":1389.962646484375,"id":"1304","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Fonte Des Neiges","x":762.1256103515625,"y":-414.39501953125,"id":"866","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"1er Juillet 1909","x":-499.7980651855469,"y":233.0601806640625,"id":"41","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Geophysical Research","x":233.82315063476562,"y":1178.865966796875,"id":"224","color":"rgb(255,204,102)","size":5.282204627990723},{"label":"East Antarctica","x":-88.15560150146484,"y":1613.804931640625,"id":"851","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Espèce Humaine","x":758.9379272460938,"y":-1053.2381591796875,"id":"107","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Laboratoire De Physique","x":1664.2449951171875,"y":111.04265594482422,"id":"647","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Sápmi","x":-1812.7078857421875,"y":2444.205078125,"id":"1615","color":"rgb(204,204,255)","size":4.293514728546143},{"label":"Banquise Continentale","x":494.56414794921875,"y":-35.85556411743164,"id":"407","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Ressources Pétrolières","x":5.557656764984131,"y":-1679.0411376953125,"id":"1593","color":"rgb(102,0,102)","size":4.6399359703063965},{"label":"Calotte Polaire","x":716.3751831054688,"y":-65.0952377319336,"id":"408","color":"rgb(153,255,255)","size":10.178449630737305},{"label":"Club De Rome","x":633.6453857421875,"y":-1392.46533203125,"id":"643","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Action 21","x":300.5744934082031,"y":-1140.8724365234375,"id":"98","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Pacifique Nord","x":-69.47128295898438,"y":-741.9420166015625,"id":"201","color":"rgb(255,51,51)","size":5.103478908538818},{"label":"Lac Inari","x":-517.269287109375,"y":-265.3852233886719,"id":"1267","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Gazoduc Nord Stream","x":-615.8136596679688,"y":-1195.086669921875,"id":"1049","color":"rgb(102,0,102)","size":4.293514728546143},{"label":"Compose Organique Volatil","x":1425.1248779296875,"y":-1582.4134521484375,"id":"669","color":"rgb(102,102,0)","size":4.133297443389893},{"label":"Tromsø","x":-1374.7109375,"y":1913.8165283203125,"id":"1690","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Peninsule De Kola","x":-309.8347473144531,"y":-942.0747680664062,"id":"1466","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Équilibre Physique","x":124.99056243896484,"y":-1557.06103515625,"id":"923","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Conférence De Rio","x":390.2206115722656,"y":-1159.0963134765625,"id":"687","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Cristal De Glace","x":1232.4102783203125,"y":-102.79730987548828,"id":"146","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Colin Ware","x":926.259033203125,"y":1965.2078857421875,"id":"566","color":"rgb(255,255,51)","size":4.0},{"label":"Technologie","x":1581.9178466796875,"y":-336.73651123046875,"id":"1665","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Affaiblissement","x":-122.19145202636719,"y":-1517.307861328125,"id":"126","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Echelle De Temps","x":1488.7841796875,"y":-631.0740356445312,"id":"554","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Nuit Polaire","x":-99.41971588134766,"y":227.19300842285156,"id":"370","color":"rgb(0,204,204)","size":6.341859817504883},{"label":"Système Opérant","x":1278.6395263671875,"y":-1429.378662109375,"id":"1661","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Bilan Radiatif","x":1147.6866455078125,"y":-749.841552734375,"id":"459","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Accord International","x":200.89614868164062,"y":-1449.5303955078125,"id":"83","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Global Carbon","x":-402.25408935546875,"y":928.3751831054688,"id":"1109","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Pays Scandinave","x":-880.7955932617188,"y":-1050.10595703125,"id":"765","color":"rgb(255,51,51)","size":4.6399359703063965},{"label":"Same","x":-1110.919921875,"y":401.4477233886719,"id":"1610","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Gas Field","x":-2166.35986328125,"y":897.1481323242188,"id":"1034","color":"rgb(102,0,102)","size":4.781970500946045},{"label":"Reindeer Herding","x":-1707.0650634765625,"y":2392.613037109375,"id":"1279","color":"rgb(204,204,255)","size":5.472443103790283},{"label":"Agricultural Science","x":-384.6358947753906,"y":662.8099365234375,"id":"151","color":"rgb(102,255,102)","size":4.0},{"label":"Glissement De Terrain","x":1159.54150390625,"y":-1336.1181640625,"id":"27","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Dérive Arctique","x":141.0907745361328,"y":-99.68477630615234,"id":"797","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Law Of Sea","x":-454.2995910644531,"y":200.2239227294922,"id":"338","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Vitesse De Derive","x":543.1426391601562,"y":392.12109375,"id":"1364","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Far North","x":-1296.9681396484375,"y":2076.255126953125,"id":"486","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Importance Stratégique","x":666.7877197265625,"y":-1432.8302001953125,"id":"1189","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Global Climate","x":-197.5624237060547,"y":1134.3074951171875,"id":"300","color":"rgb(102,255,102)","size":5.886096477508545},{"label":"Rayon De Soleil","x":1629.82470703125,"y":-1112.863037109375,"id":"1289","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Pétrole","x":-376.43804931640625,"y":-1084.022705078125,"id":"1477","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Observation Satellitaire","x":506.5022277832031,"y":-307.2046813964844,"id":"1427","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Diversité Biologique","x":386.11077880859375,"y":-1118.481689453125,"id":"100","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Genie Civil","x":2628.016357421875,"y":490.0144348144531,"id":"662","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Territoires Du Nord","x":-403.6544494628906,"y":-31.657672882080078,"id":"284","color":"rgb(0,204,204)","size":5.103478908538818},{"label":"Dorsale Océanique","x":1771.7816162109375,"y":-541.5540161132812,"id":"265","color":"rgb(255,204,102)","size":4.781970500946045},{"label":"Cercle Arctique","x":-114.37723541259766,"y":-244.14686584472656,"id":"573","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Mackenzie Valley","x":-1897.8876953125,"y":1437.210693359375,"id":"786","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Barrel Of Oil","x":-2069.470703125,"y":796.83154296875,"id":"37","color":"rgb(102,0,102)","size":6.584775924682617},{"label":"Température","x":1094.9617919921875,"y":2582.613525390625,"id":"1670","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Alfred Wegener","x":140.85134887695312,"y":1208.193115234375,"id":"210","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Danger","x":-1045.3048095703125,"y":560.9677734375,"id":"766","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Gaz Naturel Pour Véhicules","x":34.037445068359375,"y":-960.7977905273438,"id":"1045","color":"rgb(0,153,0)","size":4.206028938293457},{"label":"International Commission","x":-170.1094207763672,"y":173.10662841796875,"id":"1218","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Archéologie","x":1697.4716796875,"y":-422.6084289550781,"id":"278","color":"rgb(255,255,51)","size":4.0},{"label":"Pygargue","x":-530.29248046875,"y":-718.80859375,"id":"1553","color":"rgb(204,204,255)","size":4.133297443389893},{"label":"Glaciologues","x":603.4629516601562,"y":-287.44390869140625,"id":"1107","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Nombre De Reynolds","x":2456.903076171875,"y":178.03688049316406,"id":"889","color":"rgb(255,255,0)","size":4.075808525085449},{"label":"Petit Rorqual","x":-97.76100158691406,"y":-1044.327392578125,"id":"394","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Parc National Wapusk","x":110.16836547851562,"y":-938.0703735351562,"id":"1458","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Impact Environnemental","x":900.10498046875,"y":-1452.6837158203125,"id":"250","color":"rgb(153,255,0)","size":6.584775924682617},{"label":"University Of Northern British","x":-1309.81298828125,"y":-512.9873046875,"id":"1400","color":"rgb(153,255,255)","size":4.0},{"label":"Etude Du Quaternaire","x":1390.19189453125,"y":-603.2861938476562,"id":"926","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Forêt Boréale","x":-7.181797981262207,"y":-917.6866455078125,"id":"497","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Skaller","x":-1005.0679931640625,"y":254.76441955566406,"id":"1635","color":"rgb(255,51,51)","size":4.0},{"label":"Brise-Glace Russe","x":314.2594909667969,"y":-57.35684585571289,"id":"506","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Unesco Biosphere","x":-1305.965576171875,"y":1596.37890625,"id":"473","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Approche Systémique","x":1452.9090576171875,"y":-1503.2738037109375,"id":"1662","color":"rgb(255,255,51)","size":4.0},{"label":"62.809 Km²","x":-3687.156982421875,"y":-1498.2891845703125,"id":"58","color":"rgb(255,255,51)","size":4.0},{"label":"Pole Nord","x":142.79425048828125,"y":98.24790954589844,"id":"49","color":"rgb(0,204,204)","size":31.900625228881836},{"label":"Surfaces Englacées","x":1017.113037109375,"y":48.020137786865234,"id":"1657","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Observatoire Des Sciences","x":1681.810302734375,"y":327.4986267089844,"id":"1262","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Satellite Service","x":357.4742126464844,"y":2558.146728515625,"id":"1617","color":"rgb(255,153,153)","size":4.0},{"label":"Ours Brun","x":-546.7056274414062,"y":-570.5150756835938,"id":"749","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Baker Lake","x":-1292.3116455078125,"y":1876.362548828125,"id":"1377","color":"rgb(0,204,204)","size":4.0},{"label":"Cargo Ship","x":-1623.7650146484375,"y":56.645198822021484,"id":"1274","color":"rgb(255,51,51)","size":4.0},{"label":"Northern Hemisphere","x":-425.2862548828125,"y":1888.925537109375,"id":"1407","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Circulation Thermohaline","x":585.6029052734375,"y":-267.0980529785156,"id":"610","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Satellite Photo","x":591.8084106445312,"y":1738.074462890625,"id":"1185","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Institut Royal","x":1343.8946533203125,"y":-224.90185546875,"id":"1207","color":"rgb(255,255,51)","size":4.0},{"label":"Glacial Retreat","x":-633.63037109375,"y":1639.9283447265625,"id":"1099","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Institute Of Geophysics","x":746.8310546875,"y":968.5191040039062,"id":"1075","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Réserves D\u0027Énergies Fossiles,1","x":568.9767456054688,"y":-1300.394287109375,"id":"1589","attributes":{"nodedef":"n1589"},"color":"rgb(0,153,0)","size":4.510906219482422},{"label":"Petroleum Congress","x":-1832.741943359375,"y":921.537109375,"id":"991","color":"rgb(102,0,102)","size":4.075808525085449},{"label":"International Polar","x":-80.96073913574219,"y":1307.7596435546875,"id":"181","color":"rgb(153,255,255)","size":6.837328910827637},{"label":"Amplitude Thermique","x":1254.463134765625,"y":-699.683837890625,"id":"235","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Lapons","x":-759.9954223632812,"y":-489.00518798828125,"id":"1277","color":"rgb(204,204,255)","size":4.075808525085449},{"label":"Inuit People","x":-1119.61962890625,"y":2266.22998046875,"id":"528","color":"rgb(204,204,255)","size":4.6399359703063965},{"label":"Spitzberg","x":-408.04937744140625,"y":-213.5766143798828,"id":"1650","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Carottes Glaciaires","x":969.6451416015625,"y":-432.83563232421875,"id":"63","color":"rgb(255,255,51)","size":5.472443103790283},{"label":"Robert Peary","x":-922.84228515625,"y":1658.168212890625,"id":"1557","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Hectares Globaux","x":562.0274658203125,"y":-1184.515869140625,"id":"902","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Element Chimique","x":1355.92431640625,"y":-1334.5970458984375,"id":"624","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Norwegian National","x":-2346.080322265625,"y":2597.039794921875,"id":"1414","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Geographic Explorer","x":-1533.6759033203125,"y":1280.688232421875,"id":"1065","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Jean Lemire","x":411.0581359863281,"y":203.411865234375,"id":"1243","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Protection Animale","x":194.66322326660156,"y":-1489.9267578125,"id":"919","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Gazoducs","x":-246.90235900878906,"y":-1405.90234375,"id":"1051","color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Loi De Newton","x":2768.0830078125,"y":739.8944702148438,"id":"1526","color":"rgb(255,255,0)","size":4.0086140632629395},{"label":"Terre Agricole","x":1055.7603759765625,"y":-1679.8907470703125,"id":"736","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Arctic Research","x":-595.9910888671875,"y":1777.158447265625,"id":"306","color":"rgb(153,255,255)","size":4.936610698699951},{"label":"Papanine","x":67.4764404296875,"y":321.97711181640625,"id":"1457","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Planck Institute","x":1722.83447265625,"y":184.09603881835938,"id":"1265","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Sedna Iv","x":240.6781768798828,"y":225.52828979492188,"id":"1626","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"1986","x":-967.396728515625,"y":216.6686248779297,"id":"13","color":"rgb(255,51,51)","size":4.0},{"label":"Resolution De Conflit","x":-802.1610107421875,"y":-614.1929321289062,"id":"692","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Nappe Phréatique","x":686.59765625,"y":-1779.1011962890625,"id":"1379","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Gérard Jugie","x":649.3414306640625,"y":24.25006103515625,"id":"1084","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Rayonnement Solaire","x":1429.1036376953125,"y":-987.4943237304688,"id":"366","color":"rgb(255,204,102)","size":4.781970500946045},{"label":"Chtokman","x":-587.8933715820312,"y":-1263.6697998046875,"id":"604","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Banque Mondiale","x":207.86805725097656,"y":-1685.1241455078125,"id":"175","color":"rgb(153,0,0)","size":5.886096477508545},{"label":"Habitat Écologique","x":879.9754638671875,"y":-1601.36962890625,"id":"876","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Aker Yards","x":-590.3784790039062,"y":-1667.7393798828125,"id":"1217","color":"rgb(255,51,51)","size":4.0},{"label":"Norwegian Fjords","x":-1819.7435302734375,"y":1941.7181396484375,"id":"993","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Courants Marins","x":740.0386352539062,"y":-772.4693603515625,"id":"725","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"World Biosphere","x":-1380.392822265625,"y":1572.7969970703125,"id":"474","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Glacial Arctique","x":-98.87494659423828,"y":-112.53652954101562,"id":"405","color":"rgb(0,204,204)","size":9.173389434814453},{"label":"Le Fram","x":1.6208196878433228,"y":820.0587768554688,"id":"1285","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Balises","x":1477.4683837890625,"y":-1345.0499267578125,"id":"395","color":"rgb(255,255,51)","size":4.0},{"label":"Méthane","x":-722.9597778320312,"y":1301.656005859375,"id":"1349","color":"rgb(0,153,0)","size":4.206028938293457},{"label":"Bénéfice Net","x":-632.4590454101562,"y":-1823.570068359375,"id":"1328","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"National Geographic","x":-1397.74169921875,"y":1131.574951171875,"id":"479","color":"rgb(153,255,0)","size":5.103478908538818},{"label":"Régions Arctiques","x":57.04184341430664,"y":-398.7633972167969,"id":"484","color":"rgb(0,204,204)","size":6.837328910827637},{"label":"Light Pollution","x":-1550.57373046875,"y":963.8270263671875,"id":"1516","color":"rgb(102,102,0)","size":4.0},{"label":"Recyclage Des Déchets","x":654.7275390625,"y":-2429.897705078125,"id":"770","color":"rgb(102,102,0)","size":4.39528751373291},{"label":"Igloo Building","x":-1083.1083984375,"y":2375.260009765625,"id":"1171","color":"rgb(204,204,255)","size":4.0},{"label":"Ile Wrangel","x":-254.5749969482422,"y":-439.13525390625,"id":"1180","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Pôle Nord Magnétique","x":492.461669921875,"y":627.1895141601562,"id":"1510","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Agence Nationale","x":1428.78466796875,"y":-1177.7340087890625,"id":"772","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Précipitations Faibles","x":1415.2930908203125,"y":-583.3818969726562,"id":"1530","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Dégradations Écologiques","x":431.67926025390625,"y":-1474.4056396484375,"id":"780","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Finnish Economy","x":-941.7028198242188,"y":-1652.6466064453125,"id":"986","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Norwegian Government","x":-2365.86767578125,"y":2572.55810546875,"id":"1413","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Analyses De Cycle De Vie","x":1009.1702880859375,"y":-1412.4342041015625,"id":"249","color":"rgb(153,255,0)","size":4.6399359703063965},{"label":"International Polar Year","x":-58.65946960449219,"y":1398.2398681640625,"id":"1222","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Nombreux Polluants","x":1069.2344970703125,"y":-1600.981201171875,"id":"1397","color":"rgb(102,102,0)","size":4.39528751373291},{"label":"Évolution De La Glace","x":855.4246826171875,"y":-23.298423767089844,"id":"951","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Ice Patrol","x":-550.0018310546875,"y":1364.3714599609375,"id":"1166","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Radio Association","x":-1379.472900390625,"y":268.6378479003906,"id":"546","color":"rgb(255,51,51)","size":4.0},{"label":"Fridtjof Nansen","x":-640.83935546875,"y":2040.8262939453125,"id":"979","color":"rgb(0,204,204)","size":4.936610698699951},{"label":"Risque Naturel","x":1649.328125,"y":-1627.618896484375,"id":"456","color":"rgb(102,102,0)","size":5.282204627990723},{"label":"Déclinaison Magnétique","x":626.72119140625,"y":533.5086669921875,"id":"589","color":"rgb(153,255,255)","size":5.282204627990723},{"label":"Eaux Territoriales","x":-189.23031616210938,"y":-1744.7435302734375,"id":"712","color":"rgb(153,0,0)","size":5.886096477508545},{"label":"Règlementer La Protection De L\u0027Environnement,1","x":319.12982177734375,"y":-1075.597900390625,"id":"1578","attributes":{"nodedef":"n1578"},"color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Variations Glaciaires","x":1004.5759887695312,"y":-546.2811279296875,"id":"1701","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Wildlife Refuge","x":-2488.70947265625,"y":935.2979125976562,"id":"276","color":"rgb(153,255,0)","size":4.781970500946045},{"label":"Gold Rush","x":-1305.9024658203125,"y":640.7337036132812,"id":"1120","color":"rgb(153,0,0)","size":4.293514728546143},{"label":"Telescope Spatial","x":1484.6490478515625,"y":-77.53192901611328,"id":"349","color":"rgb(255,153,153)","size":4.075808525085449},{"label":"Human Impact","x":-242.1216278076172,"y":320.5730285644531,"id":"1160","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Amis De La Terre","x":401.504150390625,"y":-1223.7393798828125,"id":"103","color":"rgb(0,153,0)","size":4.510906219482422},{"label":"Sonde Voyager","x":1429.6922607421875,"y":181.77130126953125,"id":"860","color":"rgb(255,153,153)","size":4.133297443389893},{"label":"Polar Orbit","x":390.5345153808594,"y":2202.097412109375,"id":"913","color":"rgb(255,153,153)","size":4.510906219482422},{"label":"Carnivorous Animals","x":-1647.055419921875,"y":-880.9697265625,"id":"1612","color":"rgb(204,204,255)","size":4.0},{"label":"Fjell","x":-1517.3455810546875,"y":1056.70654296875,"id":"990","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Mikhail Malakhov","x":-609.2708129882812,"y":1933.433349609375,"id":"1355","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Données Environnementales","x":1346.6571044921875,"y":-1474.193359375,"id":"829","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Baffin Bay","x":-730.2673950195312,"y":1399.5347900390625,"id":"381","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Point De Non-Retour","x":602.4612426757812,"y":-325.70556640625,"id":"1504","color":"rgb(255,204,102)","size":4.0},{"label":"Hydrostatic Pressure","x":-407.7259216308594,"y":1971.3367919921875,"id":"1488","color":"rgb(153,255,255)","size":4.0},{"label":"Vladimir Vladimirovitch","x":-858.2808227539062,"y":-1503.6971435546875,"id":"1706","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Transhumance","x":-1474.1590576171875,"y":181.26686096191406,"id":"1687","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Laponie Finlandaise","x":-628.8026733398438,"y":-549.0878295898438,"id":"747","color":"rgb(204,204,255)","size":5.472443103790283},{"label":"Salmon Fishing","x":-2913.92822265625,"y":2500.835205078125,"id":"191","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Ice Shelf","x":-190.6495361328125,"y":1773.7933349609375,"id":"852","color":"rgb(153,255,255)","size":5.886096477508545},{"label":"Physique Nucléaire","x":1447.166748046875,"y":-458.37335205078125,"id":"1201","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Eaux Libres","x":625.849853515625,"y":-937.6300048828125,"id":"800","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Tourisme De Masse","x":35.64778518676758,"y":-1237.3614501953125,"id":"1683","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Comportement Mécanique Du Matériau Glace","x":890.2638549804688,"y":178.80201721191406,"id":"665","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"1993","x":36.647705078125,"y":579.983154296875,"id":"15","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Température Moyenne Du Globe","x":850.3651123046875,"y":-792.5848999023438,"id":"1674","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Différence De Densité","x":1439.3902587890625,"y":-803.2998046875,"id":"815","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Cara","x":-1237.788330078125,"y":260.89483642578125,"id":"545","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Mackenzie River","x":-1691.715087890625,"y":1612.4267578125,"id":"322","color":"rgb(0,204,204)","size":5.282204627990723},{"label":"Claude Bourguignon","x":1691.6942138671875,"y":-1333.328369140625,"id":"630","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Nageoire Caudale","x":215.7217254638672,"y":-1250.8089599609375,"id":"392","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Droit De La Mer","x":-210.29884338378906,"y":-1344.11865234375,"id":"843","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Réserves Hydrocarbures","x":-132.05116271972656,"y":-1118.11962890625,"id":"1590","color":"rgb(102,0,102)","size":4.293514728546143},{"label":"Geophysical Union","x":77.1497802734375,"y":873.7490844726562,"id":"724","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Astrophysique","x":1783.648681640625,"y":-140.97059631347656,"id":"345","color":"rgb(255,153,153)","size":4.133297443389893},{"label":"Détroit De Behring","x":-438.4812927246094,"y":-528.7012329101562,"id":"805","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Norway","x":-2236.260009765625,"y":1732.703369140625,"id":"1412","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Geophysical Data","x":353.0085754394531,"y":1442.74609375,"id":"445","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Cyberdocumentaire","x":194.38003540039062,"y":-440.8644104003906,"id":"756","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Glaciologie Océanographie","x":1223.7781982421875,"y":-480.4251403808594,"id":"1105","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Geostationary Satellite","x":282.42694091796875,"y":2399.638916015625,"id":"653","color":"rgb(255,153,153)","size":4.6399359703063965},{"label":"Co2 Sequestration","x":-693.1399536132812,"y":1256.73974609375,"id":"649","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"6-Avr-09","x":-851.099365234375,"y":-454.1927795410156,"id":"19","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Zones De Fractures","x":1544.406494140625,"y":-418.4399719238281,"id":"1720","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Dégradations Sanitaires","x":-281.1681213378906,"y":-53.5842170715332,"id":"783","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Bonne Pratique","x":949.76171875,"y":-1626.8707275390625,"id":"253","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"National Wildlife","x":-2570.702392578125,"y":1014.2642211914062,"id":"275","color":"rgb(153,255,0)","size":4.781970500946045},{"label":"Pole Sud","x":526.24462890625,"y":302.62603759765625,"id":"513","color":"rgb(153,255,255)","size":10.527388572692871},{"label":"Croûte Océanique","x":1651.7996826171875,"y":-607.842041015625,"id":"264","color":"rgb(255,204,102)","size":5.282204627990723},{"label":"Arctic Climate","x":-653.6159057617188,"y":1591.3482666015625,"id":"298","color":"rgb(153,255,255)","size":4.936610698699951},{"label":"Milieu Naturel","x":685.8338012695312,"y":-1621.4942626953125,"id":"883","color":"rgb(153,255,0)","size":6.837328910827637},{"label":"Institut National De Recherche","x":1252.3394775390625,"y":204.79171752929688,"id":"1205","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Goddard Institute","x":-430.7890930175781,"y":684.432373046875,"id":"1013","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Liquefied Natural Gas","x":-1997.0789794921875,"y":776.1526489257812,"id":"1036","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Comportement Mécanique","x":2692.309814453125,"y":363.16912841796875,"id":"658","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"War Of Terror","x":-1307.4576416015625,"y":220.9207763671875,"id":"1710","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Pipkrakes","x":434.6990661621094,"y":-822.610107421875,"id":"1490","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Sustainable Development","x":-362.5677795410156,"y":419.285888671875,"id":"141","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Cycle De Vie","x":1149.1319580078125,"y":-1494.5059814453125,"id":"453","color":"rgb(153,255,0)","size":5.103478908538818},{"label":"Ouverture Du Passage Du Nord-Ouest","x":31.295948028564453,"y":-284.809814453125,"id":"1452","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Joseph-Elzéar Bernier (1852-1934)","x":-176.7270965576172,"y":32.511817932128906,"id":"1254","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Courbe Isotherme","x":586.0437622070312,"y":-222.40838623046875,"id":"730","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Extinction Des Espèces","x":399.3851623535156,"y":-1030.6234130859375,"id":"938","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Ice Cores","x":-151.26065063476562,"y":1561.3101806640625,"id":"626","color":"rgb(153,255,255)","size":6.108868598937988},{"label":"Université De Québec","x":1112.0452880859375,"y":-184.35299682617188,"id":"239","color":"rgb(255,255,51)","size":4.936610698699951},{"label":"Marine Sediment","x":-667.27099609375,"y":1089.9775390625,"id":"934","color":"rgb(0,153,0)","size":4.075808525085449},{"label":"Analyse De Données","x":1425.0694580078125,"y":-895.9777221679688,"id":"237","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Geophysique Interne","x":1671.1990966796875,"y":568.9614868164062,"id":"1074","color":"rgb(255,204,51)","size":4.6399359703063965},{"label":"Atlantic Drift","x":-915.51123046875,"y":1545.07080078125,"id":"350","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Navire Océanographique","x":822.8958740234375,"y":-327.39044189453125,"id":"1395","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Carte Géographie","x":603.58984375,"y":-973.70751953125,"id":"145","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Zone Économique","x":-231.34207153320312,"y":-1606.3955078125,"id":"713","color":"rgb(153,0,0)","size":5.282204627990723},{"label":"Amérique Du Sud","x":-356.3387451171875,"y":-652.8462524414062,"id":"229","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Océan Glacial","x":-159.73886108398438,"y":-180.17025756835938,"id":"409","color":"rgb(0,204,204)","size":8.235326766967773},{"label":"Eruption Volcanique","x":1564.9263916015625,"y":-654.048583984375,"id":"559","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"650 000 Ans","x":932.0712890625,"y":-565.0851440429688,"id":"60","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Plateforme Pétrolière","x":-260.26751708984375,"y":-1877.6268310546875,"id":"655","color":"rgb(102,0,102)","size":4.0086140632629395},{"label":"Histoire Géologique","x":1214.1163330078125,"y":-670.208251953125,"id":"555","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Northern Quebec","x":-1248.2911376953125,"y":2663.8232421875,"id":"524","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Region Polaire","x":472.4181823730469,"y":-83.093505859375,"id":"51","color":"rgb(0,204,204)","size":18.676555633544922},{"label":"Canal De Suez","x":-197.74679565429688,"y":-2417.987060546875,"id":"529","color":"rgb(204,0,0)","size":4.075808525085449},{"label":"Iles Feroe","x":-635.4229736328125,"y":-723.7227172851562,"id":"1181","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Najwa Nimri","x":-548.2072143554688,"y":-378.23529052734375,"id":"575","color":"rgb(0,204,204)","size":4.0},{"label":"Chef De Gouvernement","x":-647.8400268554688,"y":-1379.173095703125,"id":"599","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Réfugié Climatique","x":316.4598693847656,"y":-868.939697265625,"id":"1012","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Gilles Labarthe","x":317.49761962890625,"y":-1768.2515869140625,"id":"782","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Earth Science","x":306.0815734863281,"y":1127.4530029296875,"id":"211","color":"rgb(255,204,102)","size":5.886096477508545},{"label":"Circulation Océanique Mondiale","x":548.7537841796875,"y":-394.6384582519531,"id":"611","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Volcanic Islands","x":-1667.2989501953125,"y":2117.06884765625,"id":"1241","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Goélette Tara","x":248.9503936767578,"y":-164.35665893554688,"id":"789","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Gas Storage","x":-2368.42236328125,"y":790.8409423828125,"id":"1040","color":"rgb(102,0,102)","size":4.0340681076049805},{"label":"Annuaire Sciences","x":1520.93896484375,"y":-166.29861450195312,"id":"260","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Global Change","x":-328.3797912597656,"y":1407.6304931640625,"id":"368","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"East Iceland","x":-1432.9488525390625,"y":1744.767822265625,"id":"853","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Quantité De Ressources Nécessaires","x":655.5470581054688,"y":-1010.1531982421875,"id":"1554","color":"rgb(0,153,0)","size":4.293514728546143},{"label":"Boris Gryzlov","x":-968.377197265625,"y":-695.67138671875,"id":"490","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Adverse Reaction","x":-2583.47412109375,"y":-171.4156494140625,"id":"125","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Radio Commission","x":-1329.051513671875,"y":440.54400634765625,"id":"7","color":"rgb(255,51,51)","size":4.0},{"label":"Changements Climatiques","x":562.6347045898438,"y":-799.8172607421875,"id":"595","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Marine Research","x":112.32674407958984,"y":687.9962158203125,"id":"212","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Fonds Marins Du Pôle","x":-206.661865234375,"y":-829.8015747070312,"id":"1007","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Météorologie","x":1402.136474609375,"y":119.9842300415039,"id":"1347","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Observatoire De Paris","x":1645.601806640625,"y":-187.08619689941406,"id":"348","color":"rgb(255,255,51)","size":4.781970500946045},{"label":"Lac Vostok","x":835.7393188476562,"y":-45.74352264404297,"id":"1268","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Sonde Viking","x":1175.79736328125,"y":944.133056640625,"id":"1643","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Nappes","x":681.9324951171875,"y":-2016.6527099609375,"id":"1380","color":"rgb(102,102,0)","size":4.0086140632629395},{"label":"Bouclier Antimissile","x":-738.5277099609375,"y":-1235.395263671875,"id":"492","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Ocean Floor","x":-825.3276977539062,"y":1300.9876708984375,"id":"1324","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Détroit De Fram","x":-55.04530334472656,"y":-329.93707275390625,"id":"808","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Frontier In American History","x":-1133.305419921875,"y":303.24676513671875,"id":"3","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Epfl Lausanne","x":1752.3311767578125,"y":349.822998046875,"id":"920","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Science De La Terre","x":1194.40625,"y":-6.191011428833008,"id":"1620","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Crevasses","x":-1673.8072509765625,"y":1519.3421630859375,"id":"739","color":"rgb(0,204,204)","size":4.0},{"label":"Plan De Prévention De Risque Naturel","x":1859.6912841796875,"y":-1892.7198486328125,"id":"29","color":"rgb(102,102,0)","size":4.0},{"label":"Galveston Bay","x":-994.8403930664062,"y":810.9219360351562,"id":"1055","color":"rgb(102,255,102)","size":4.0},{"label":"Logistique","x":1180.882568359375,"y":-2362.267578125,"id":"1299","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Septentrional De L\u0027Europe,1","x":-599.4520263671875,"y":-240.5999298095703,"id":"1628","attributes":{"nodedef":"n1628"},"color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Classe Dominante","x":330.9660949707031,"y":-1010.1752319335938,"id":"796","color":"rgb(153,255,0)","size":4.0},{"label":"Centrale Nucléaire","x":211.94808959960938,"y":-1468.9288330078125,"id":"427","color":"rgb(0,153,0)","size":5.282204627990723},{"label":"Elliptic Orbit","x":-174.8773956298828,"y":2327.053955078125,"id":"900","color":"rgb(255,153,153)","size":4.206028938293457},{"label":"Brume Légère","x":2014.856689453125,"y":-408.7442626953125,"id":"507","color":"rgb(255,204,102)","size":4.0},{"label":"Pollution Atmosphérique","x":1176.463134765625,"y":-1357.466064453125,"id":"1165","color":"rgb(102,102,0)","size":4.510906219482422},{"label":"Mackenzie Delta","x":-1785.2647705078125,"y":1501.4832763671875,"id":"1312","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Univers De Grenoble","x":1553.7344970703125,"y":344.835205078125,"id":"1210","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Inland Ice","x":-318.5847473144531,"y":1719.4364013671875,"id":"1197","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Baie Disko","x":-297.0066833496094,"y":-359.0252990722656,"id":"387","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Bald Eagle","x":-1986.3089599609375,"y":336.0643005371094,"id":"1384","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Prélèvement","x":482.5769348144531,"y":-2409.00390625,"id":"1532","color":"rgb(102,102,0)","size":4.0086140632629395},{"label":"Environnement De Basse","x":926.786865234375,"y":-1721.84619140625,"id":"916","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Renard Polaire","x":-566.1803588867188,"y":-770.5494384765625,"id":"1292","color":"rgb(153,255,0)","size":5.103478908538818},{"label":"Vallee Glaciaire","x":820.0235595703125,"y":-582.6707763671875,"id":"147","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Physique Appliquée","x":2376.69384765625,"y":202.5380096435547,"id":"1484","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Team North","x":-535.7245483398438,"y":2188.06884765625,"id":"1252","color":"rgb(0,204,204)","size":4.0},{"label":"Rhéologie","x":2337.57958984375,"y":488.13970947265625,"id":"1599","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"European Space","x":679.074951171875,"y":1231.0482177734375,"id":"136","color":"rgb(255,153,153)","size":5.103478908538818},{"label":"Convention De Bâle","x":374.0647888183594,"y":-1949.95703125,"id":"706","color":"rgb(153,0,0)","size":4.293514728546143},{"label":"L\u0027Océan Glacial Arctique,1","x":48.046844482421875,"y":-310.00390625,"id":"1298","attributes":{"nodedef":"n1298"},"color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Icebergs","x":-401.4381103515625,"y":1591.3231201171875,"id":"1168","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Yukon Territories","x":-1300.5863037109375,"y":805.2991333007812,"id":"1718","color":"rgb(153,0,0)","size":4.293514728546143},{"label":"Conference On Environment","x":-733.2816772460938,"y":725.8975830078125,"id":"690","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Magerøya","x":-1317.69775390625,"y":2029.0751953125,"id":"1313","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Planète Terre","x":981.09326171875,"y":-350.93524169921875,"id":"1493","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Loi De Comportement","x":2595.855224609375,"y":256.8731384277344,"id":"659","color":"rgb(255,255,0)","size":4.133297443389893},{"label":"Geographical Society","x":-1606.1199951171875,"y":1324.9771728515625,"id":"1062","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Marine Russe","x":-537.8284912109375,"y":-1164.311767578125,"id":"505","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Bande Côtière","x":251.931396484375,"y":-960.4885864257812,"id":"402","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Exploitation Agricole","x":1264.929443359375,"y":-1911.810546875,"id":"154","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Peuple Autochtone","x":-238.15725708007812,"y":-465.5401611328125,"id":"695","color":"rgb(204,204,255)","size":4.6399359703063965},{"label":"Gas Price","x":-1848.1641845703125,"y":553.953125,"id":"207","color":"rgb(102,0,102)","size":4.6399359703063965},{"label":"Effet Dynamo","x":961.6566772460938,"y":513.2507934570312,"id":"588","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Ignace Venetz","x":918.0681762695312,"y":469.9112854003906,"id":"1172","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"200 Metres","x":-146.15635681152344,"y":-719.9545288085938,"id":"503","color":"rgb(255,51,51)","size":4.0},{"label":"Loi De Mariotte","x":2331.056396484375,"y":-626.9660034179688,"id":"702","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Réchauffement Global","x":992.4798583984375,"y":-651.2942504882812,"id":"108","color":"rgb(255,204,102)","size":5.103478908538818},{"label":"Island Navy","x":-1509.423828125,"y":287.9374084472656,"id":"1228","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Solid Earth","x":255.05235290527344,"y":1264.2841796875,"id":"225","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Terre De Baffin","x":-421.7633361816406,"y":441.2944030761719,"id":"283","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Station Météo","x":1904.0716552734375,"y":-653.455322265625,"id":"642","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Données Géographiques","x":1658.4525146484375,"y":-1306.4632568359375,"id":"830","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Global Ocean","x":139.24534606933594,"y":600.2429809570312,"id":"1113","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Gestion Des Données","x":1647.5302734375,"y":-1473.1031494140625,"id":"831","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Arctic Haze","x":-328.0976867675781,"y":1800.9615478515625,"id":"305","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Coastal Erosion","x":-212.16925048828125,"y":1024.1375732421875,"id":"650","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Government Of Nunavut","x":-1442.6414794921875,"y":1648.6278076171875,"id":"517","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Al Gore","x":-573.0253295898438,"y":913.5389404296875,"id":"176","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Histoire Culturelle","x":1271.152099609375,"y":-1099.011962890625,"id":"1159","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Libre De Droit","x":1470.94482421875,"y":-1249.3375244140625,"id":"440","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Space Agencies","x":719.65869140625,"y":1200.9990234375,"id":"137","color":"rgb(255,153,153)","size":5.103478908538818},{"label":"Navigation Maritime","x":946.244873046875,"y":130.5264129638672,"id":"1393","color":"rgb(255,255,51)","size":4.0},{"label":"Topographie","x":2066.535888671875,"y":-1426.6158447265625,"id":"1679","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Norsk Hydro","x":-2283.26513671875,"y":937.6468505859375,"id":"1403","color":"rgb(102,0,102)","size":4.0340681076049805},{"label":"Progres Technique","x":11.202921867370605,"y":-1463.979248046875,"id":"1419","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Légendaire Passage","x":358.2781982421875,"y":-282.7051696777344,"id":"1286","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Habitat Naturel","x":716.3448486328125,"y":-1602.0145263671875,"id":"976","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Lapon","x":-1466.6243896484375,"y":78.49531555175781,"id":"1273","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Grand Lac Des Esclaves","x":-347.9867858886719,"y":-486.2426452636719,"id":"1134","color":"rgb(204,204,255)","size":4.133297443389893},{"label":"Biological Invasions","x":-293.0665283203125,"y":-505.9958801269531,"id":"466","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Jan Mayen","x":-1543.442138671875,"y":2096.722412109375,"id":"1237","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Espece Disparue","x":567.878662109375,"y":-1223.2427978515625,"id":"936","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Palses","x":283.32855224609375,"y":-564.1228637695312,"id":"1456","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Menacer","x":56.30271530151367,"y":-1117.4920654296875,"id":"1332","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Energie Solaire","x":1242.6446533203125,"y":-964.1528930664062,"id":"114","color":"rgb(0,153,0)","size":8.540210723876953},{"label":"Mission Banquise","x":94.93065643310547,"y":-12.493345260620117,"id":"801","color":"rgb(153,255,255)","size":5.103478908538818},{"label":"Mer Baltique","x":-582.2013549804688,"y":-959.6834716796875,"id":"1334","color":"rgb(255,51,51)","size":4.510906219482422},{"label":"Brown Bear","x":-761.362548828125,"y":-631.6953125,"id":"1449","color":"rgb(153,255,0)","size":4.0},{"label":"Hydrocarbures Aromatiques Polycycliques","x":1065.962646484375,"y":-1764.6729736328125,"id":"1162","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Baffin Island","x":-1026.7235107421875,"y":1774.6162109375,"id":"293","color":"rgb(0,204,204)","size":5.6738481521606445},{"label":"Calottes Glaciaires","x":811.1303100585938,"y":-547.6314697265625,"id":"514","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Parc Naturel","x":648.4389038085938,"y":-1895.759521484375,"id":"935","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"1926","x":-1055.7027587890625,"y":454.9776916503906,"id":"4","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Morses","x":-1462.1083984375,"y":135.85678100585938,"id":"1369","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Plongée Inédite","x":-1133.52197265625,"y":-255.4286651611328,"id":"1500","color":"rgb(204,204,255)","size":4.206028938293457},{"label":"Water Level","x":-546.029296875,"y":2229.371337890625,"id":"1638","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Vatnajökull","x":-1385.9775390625,"y":1713.69580078125,"id":"1702","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Taïga","x":-1005.849853515625,"y":2259.279052734375,"id":"1664","color":"rgb(204,204,255)","size":4.206028938293457},{"label":"Nuclear Test","x":-1154.5859375,"y":51.68592834472656,"id":"961","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Morue Polaire","x":94.72049713134766,"y":-789.96630859375,"id":"1374","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Atlantique Au Pacifique","x":-439.2219543457031,"y":-982.3482666015625,"id":"352","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Circulation Atmosphérique","x":1365.9012451171875,"y":-398.28692626953125,"id":"460","color":"rgb(255,255,51)","size":5.472443103790283},{"label":"Conditions Extrêmes","x":1417.91015625,"y":-823.0306396484375,"id":"677","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"University Institute Of Technology","x":-3697.0966796875,"y":-1473.5218505859375,"id":"59","color":"rgb(255,255,51)","size":4.0},{"label":"Canada Lynx","x":-1001.9783325195312,"y":2532.795166015625,"id":"522","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"James Hansen","x":-478.28204345703125,"y":734.7833251953125,"id":"1014","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Peak Oil","x":-1167.2392578125,"y":524.763427734375,"id":"430","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Croissance Economique","x":481.40350341796875,"y":-1703.0057373046875,"id":"645","color":"rgb(153,0,0)","size":4.781970500946045},{"label":"Nature Center","x":-635.1229248046875,"y":819.4346313476562,"id":"1388","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Frederick Albert","x":-824.1995849609375,"y":1089.054931640625,"id":"1026","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Amirauté Britannique","x":122.9698715209961,"y":-869.6787109375,"id":"231","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Remote Operated Vehicle","x":531.0745239257812,"y":1574.986572265625,"id":"1430","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Banquise","x":234.07656860351562,"y":-241.07652282714844,"id":"404","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Islande","x":-635.1261596679688,"y":-631.5878295898438,"id":"1230","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Phytoplancton","x":565.5634765625,"y":-889.5340576171875,"id":"1485","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Revendications Territoriales En Arctique","x":236.14395141601562,"y":-373.0220642089844,"id":"1597","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Uiuc","x":-757.5460815429688,"y":900.6135864257812,"id":"1692","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Perturbation","x":-162.2955322265625,"y":2552.986572265625,"id":"1475","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Baie De Baffin","x":-173.62672424316406,"y":93.36151123046875,"id":"382","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Arktika 2007","x":-125.97048950195312,"y":542.8394165039062,"id":"337","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Passage Du Nord-Ouest","x":-103.84112548828125,"y":-353.5108947753906,"id":"1459","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Co2 Emission","x":-571.61376953125,"y":1040.9888916015625,"id":"549","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Cout De Production","x":729.2435913085938,"y":-1758.0506591796875,"id":"733","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Energy Source","x":-949.5540771484375,"y":1256.624755859375,"id":"906","color":"rgb(0,153,0)","size":4.510906219482422},{"label":"Barents Region","x":-1531.8826904296875,"y":1764.85791015625,"id":"414","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Pays Industrialise","x":573.6298217773438,"y":-1248.1722412109375,"id":"592","color":"rgb(0,153,0)","size":4.936610698699951},{"label":"Nanisivik","x":-1202.904296875,"y":1798.4354248046875,"id":"1376","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Froid","x":1200.5894775390625,"y":-1286.499755859375,"id":"1031","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Ère Glaciaire","x":836.2801513671875,"y":-528.111083984375,"id":"925","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Carrefour Internet","x":-1480.3045654296875,"y":-671.3770141601562,"id":"1439","color":"rgb(153,0,0)","size":4.0},{"label":"Earth Observing","x":331.4771728515625,"y":1300.4405517578125,"id":"848","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Statoilhydro","x":-2194.32373046875,"y":788.8901977539062,"id":"1651","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Style De Vie","x":-894.8253784179688,"y":-493.0680847167969,"id":"1440","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Union Soviétique","x":-763.6751708984375,"y":-1542.8663330078125,"id":"33","color":"rgb(255,51,51)","size":4.510906219482422},{"label":"Carburant Fossile","x":831.7618408203125,"y":-1143.6112060546875,"id":"550","color":"rgb(0,153,0)","size":4.206028938293457},{"label":"Archives Climatiques","x":951.119384765625,"y":-398.11865234375,"id":"285","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Emile Victor","x":491.4800720214844,"y":178.28729248046875,"id":"259","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Exploitation Des Ressources Naturelles","x":442.4892272949219,"y":-1748.2611083984375,"id":"964","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Forage Research","x":2844.0498046875,"y":3273.77978515625,"id":"1020","color":"rgb(102,102,0)","size":4.0},{"label":"Gradient De Pression","x":1744.927734375,"y":-345.5768127441406,"id":"609","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Réserves D\u0027Eau Potable,1","x":748.7661743164062,"y":-1352.6942138671875,"id":"1588","attributes":{"nodedef":"n1588"},"color":"rgb(0,153,0)","size":4.293514728546143},{"label":"Compagnie Aérienne","x":-736.46435546875,"y":-424.6734619140625,"id":"21","color":"rgb(153,0,0)","size":4.206028938293457},{"label":"Developpement Economique","x":354.28936767578125,"y":-1812.65283203125,"id":"96","color":"rgb(153,0,0)","size":8.852968215942383},{"label":"Disko Bay","x":-706.180908203125,"y":1659.318359375,"id":"819","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Soleil De Minuit","x":-747.2490234375,"y":-382.99755859375,"id":"533","color":"rgb(0,204,204)","size":6.341859817504883},{"label":"Satellites","x":310.328125,"y":2452.65283203125,"id":"1616","color":"rgb(255,153,153)","size":4.39528751373291},{"label":"German Research","x":132.76564025878906,"y":1355.157470703125,"id":"1508","color":"rgb(255,255,51)","size":4.0},{"label":"Cone De Dejection","x":1378.17236328125,"y":-1311.23779296875,"id":"1640","color":"rgb(102,102,0)","size":4.0},{"label":"Île Hans","x":-107.25237274169922,"y":-442.64801025390625,"id":"1176","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Drapeau Russe En Titane","x":-242.6774444580078,"y":-629.63525390625,"id":"840","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Calcul Des Variations","x":1703.5733642578125,"y":-715.7037353515625,"id":"1132","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Agriculture Biologique","x":1389.9615478515625,"y":-1890.01220703125,"id":"152","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Station Spatiale","x":1019.3164672851562,"y":553.3150634765625,"id":"138","color":"rgb(255,153,153)","size":4.075808525085449},{"label":"Invasive Species","x":-38.249080657958984,"y":-809.7889404296875,"id":"467","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Agroalimentaire Canada","x":1231.261962890625,"y":-1122.6280517578125,"id":"158","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Brise Thermique","x":1796.84521484375,"y":-1453.11962890625,"id":"1634","color":"rgb(255,255,51)","size":4.0},{"label":"Natural Resource","x":-338.9927062988281,"y":600.8294677734375,"id":"150","color":"rgb(0,153,0)","size":6.584775924682617},{"label":"Mackenzie Basin","x":-1819.001708984375,"y":1630.96533203125,"id":"1311","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Atmospheric Administration","x":212.73204040527344,"y":1831.9705810546875,"id":"307","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Brise-Glace Nucléaire","x":-14.00204849243164,"y":-612.0587158203125,"id":"501","color":"rgb(255,51,51)","size":4.510906219482422},{"label":"Liquid Water","x":775.841552734375,"y":1468.2659912109375,"id":"627","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Arctic Circle","x":-1167.511474609375,"y":1866.387451171875,"id":"292","color":"rgb(0,204,204)","size":8.852968215942383},{"label":"British Columbia","x":-680.8260498046875,"y":1174.98583984375,"id":"149","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Prudhoe Bay","x":-2199.666748046875,"y":1069.3577880859375,"id":"195","color":"rgb(102,0,102)","size":4.781970500946045},{"label":"Axel Heiberg","x":-875.6810302734375,"y":2022.853271484375,"id":"376","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Êtres Vivants","x":1280.424560546875,"y":-1506.078369140625,"id":"576","color":"rgb(153,255,0)","size":5.103478908538818},{"label":"Nord","x":-1128.7164306640625,"y":-480.7825622558594,"id":"1398","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Grand Migrateur","x":413.6694641113281,"y":-1600.87353515625,"id":"1135","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Voie Navigable","x":303.36151123046875,"y":-2323.163818359375,"id":"531","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Petrole Brut","x":-304.07794189453125,"y":-1465.567626953125,"id":"424","color":"rgb(102,0,102)","size":6.584775924682617},{"label":"Steve Morse","x":-1578.6285400390625,"y":125.89031982421875,"id":"1371","color":"rgb(153,255,0)","size":4.0},{"label":"Opportunité","x":-1325.32763671875,"y":-624.910888671875,"id":"1438","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Morue De L\u0027Atlantique,1","x":1.2945709228515625,"y":-1095.300048828125,"id":"1372","attributes":{"nodedef":"n1372"},"color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Modèles Climatiques Informatiques","x":322.5306091308594,"y":324.6382751464844,"id":"1363","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Guerre Froide","x":-629.8975219726562,"y":-1472.99658203125,"id":"217","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Polarstern","x":34.676597595214844,"y":1259.896484375,"id":"1507","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Northwest Passage","x":-690.6357421875,"y":1953.7867431640625,"id":"304","color":"rgb(153,0,0)","size":4.293514728546143},{"label":"Oil Drill","x":-2590.5537109375,"y":882.829345703125,"id":"40","color":"rgb(102,0,102)","size":4.6399359703063965},{"label":"Arctic National","x":-2465.8466796875,"y":850.1004028320312,"id":"270","color":"rgb(153,255,0)","size":5.6738481521606445},{"label":"High Place","x":-1380.56591796875,"y":200.6070556640625,"id":"1158","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Nord Magnétique","x":557.978515625,"y":581.586669921875,"id":"267","color":"rgb(153,255,255)","size":6.584775924682617},{"label":"Espace Naturel","x":568.6636352539062,"y":-1583.75244140625,"id":"915","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Lisière De La Glace","x":184.7472686767578,"y":-611.1664428710938,"id":"1296","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Coast Guards","x":-534.0105590820312,"y":-614.1861572265625,"id":"1338","color":"rgb(255,51,51)","size":4.0},{"label":"Migration Des Rennes","x":-593.470458984375,"y":-594.5366821289062,"id":"1353","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Ecologie Profonde","x":595.971435546875,"y":-1096.5831298828125,"id":"877","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Capacité Calorifique","x":2820.78125,"y":-687.0199584960938,"id":"539","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Laboratoire De Mécanique","x":2629.334228515625,"y":406.2079772949219,"id":"664","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Lávvu","x":-2022.188720703125,"y":2395.55615234375,"id":"1281","color":"rgb(204,204,255)","size":4.075808525085449},{"label":"Dorsale De Lomonossov","x":29.32948875427246,"y":-721.5557861328125,"id":"833","color":"rgb(255,51,51)","size":5.472443103790283},{"label":"Climat Continental","x":1238.1683349609375,"y":-723.8411865234375,"id":"236","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Peuple Indigène","x":-120.85368347167969,"y":-765.8795776367188,"id":"731","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Champ Magnétique","x":837.4072265625,"y":444.8371276855469,"id":"113","color":"rgb(255,255,51)","size":9.501245498657227},{"label":"Fonte Banquise","x":404.0470275878906,"y":138.27108764648438,"id":"1016","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Gas Transmission","x":-2304.46142578125,"y":765.5785522460938,"id":"1039","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Valley Pipeline","x":-1920.1005859375,"y":1382.6810302734375,"id":"787","color":"rgb(102,0,102)","size":4.6399359703063965},{"label":"Intérêts Scientifiques","x":1755.324951171875,"y":-487.8387451171875,"id":"1215","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"University Of Tromsø","x":-1464.7073974609375,"y":2000.673583984375,"id":"1691","color":"rgb(0,204,204)","size":4.0},{"label":"Moraines","x":-426.2164001464844,"y":1818.9564208984375,"id":"1368","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Lever De Soleil","x":1821.1827392578125,"y":-1282.8504638671875,"id":"738","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Compagnie Pétrolière","x":-312.8392028808594,"y":-1654.1334228515625,"id":"437","color":"rgb(102,0,102)","size":7.099246978759766},{"label":"Images Satellites","x":741.8519897460938,"y":1143.925048828125,"id":"1184","color":"rgb(255,153,153)","size":4.293514728546143},{"label":"Qualite De Vie","x":53.828861236572266,"y":-1637.9798583984375,"id":"812","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Plaque Continentale","x":1758.8013916015625,"y":-631.8386840820312,"id":"835","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Energy Technology Laboratory","x":-533.006591796875,"y":1278.4935302734375,"id":"910","color":"rgb(102,255,102)","size":4.0},{"label":"Équilibre Chimique","x":2451.575439453125,"y":-1055.55615234375,"id":"922","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Kelvin Scale","x":1147.1556396484375,"y":2560.599853515625,"id":"71","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Arctic Expedition","x":-698.1810302734375,"y":1821.115478515625,"id":"301","color":"rgb(0,204,204)","size":5.103478908538818},{"label":"Cendre Volcanique","x":1609.515625,"y":-563.578125,"id":"562","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Ann Bancroft","x":-205.17994689941406,"y":1289.1558837890625,"id":"254","color":"rgb(255,255,51)","size":5.103478908538818},{"label":"National Energy Technology","x":-885.4706420898438,"y":1109.333251953125,"id":"1382","color":"rgb(102,255,102)","size":4.0},{"label":"Convention Des Nations Unies Sur Le Droit De La Mer","x":-161.36451721191406,"y":-1443.8486328125,"id":"716","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Natural Gas","x":-1409.1258544921875,"y":423.159423828125,"id":"1047","color":"rgb(0,153,0)","size":4.133297443389893},{"label":"Journée Mondiale De La Biodiversité","x":311.27545166015625,"y":-1096.246337890625,"id":"1256","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Contamination Radioactive","x":-548.1245727539062,"y":-1011.6006469726562,"id":"705","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Méthode Merise","x":1445.80322265625,"y":-1454.8597412109375,"id":"1352","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"San Francisco","x":-1114.530029296875,"y":581.2503051757812,"id":"5","color":"rgb(255,51,51)","size":5.103478908538818},{"label":"Frédéric Lasserre","x":-379.4819030761719,"y":-104.75343322753906,"id":"412","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Environmental Studies","x":311.84100341796875,"y":-220.78436279296875,"id":"632","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Temperature Sensor","x":1153.5224609375,"y":2657.78515625,"id":"1671","color":"rgb(255,255,51)","size":4.0},{"label":"Sverdrup","x":-815.9874267578125,"y":2120.587158203125,"id":"1658","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Inuit Circumpolar","x":-1038.5679931640625,"y":2173.03125,"id":"526","color":"rgb(204,204,255)","size":4.781970500946045},{"label":"Jaures Medvedev","x":-109.4727554321289,"y":-1361.7779541015625,"id":"1242","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Naomi Uemura","x":-1082.544677734375,"y":2133.81494140625,"id":"1356","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Roger Brunet","x":360.7059020996094,"y":-632.6066284179688,"id":"757","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Crise Ecologique","x":565.8154296875,"y":-1118.103271484375,"id":"740","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Europe Via","x":-1288.2213134765625,"y":-133.4451446533203,"id":"949","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Proue Surélevée","x":401.95635986328125,"y":-2106.44091796875,"id":"1551","color":"rgb(153,0,0)","size":4.0},{"label":"Biosphère","x":-1003.8191528320312,"y":1405.8773193359375,"id":"472","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Nicolas Vanier","x":-923.4484252929688,"y":-344.1199951171875,"id":"1136","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Energie Renouvelable","x":817.0204467773438,"y":-1168.9273681640625,"id":"104","color":"rgb(0,153,0)","size":19.1311092376709},{"label":"North Norway","x":-1367.631591796875,"y":1979.0384521484375,"id":"417","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"National Snow","x":71.34999084472656,"y":1415.9742431640625,"id":"46","color":"rgb(153,255,255)","size":5.282204627990723},{"label":"Quebec Government","x":-1329.685546875,"y":2897.574462890625,"id":"1424","color":"rgb(0,204,204)","size":4.0},{"label":"Pressure Treat","x":-335.1393737792969,"y":840.61328125,"id":"1147","color":"rgb(102,255,102)","size":4.0},{"label":"Jacobs Engineering","x":-847.073486328125,"y":2264.95849609375,"id":"1659","color":"rgb(0,204,204)","size":4.0},{"label":"Oil Price","x":-1909.205322265625,"y":688.3704833984375,"id":"429","color":"rgb(102,0,102)","size":5.472443103790283},{"label":"Baltic Sea","x":-1349.2330322265625,"y":782.0280151367188,"id":"401","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Finnish Lapland","x":-1341.6407470703125,"y":2100.314697265625,"id":"988","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"North Greenland","x":-376.8964538574219,"y":1782.964599609375,"id":"1405","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Azote Kjeldahl","x":1249.180908203125,"y":-1604.6259765625,"id":"143","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Dérive Transpolaire","x":90.34806060791016,"y":-77.55829620361328,"id":"799","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Etats Arctiques","x":220.3595428466797,"y":-632.3721923828125,"id":"944","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Gaz","x":511.72564697265625,"y":-1272.9373779296875,"id":"1041","color":"rgb(0,153,0)","size":4.293514728546143},{"label":"Île De Sakhaline","x":-421.34039306640625,"y":-1212.58935546875,"id":"1000","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Eruption Solaire","x":813.0960083007812,"y":220.2419891357422,"id":"115","color":"rgb(255,255,51)","size":4.781970500946045},{"label":"Arctic Science","x":-678.52099609375,"y":1757.73486328125,"id":"326","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Flam Railway","x":-1862.12841796875,"y":2014.658935546875,"id":"998","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Scandinavie","x":-844.7327270507812,"y":-715.8115234375,"id":"1618","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Oléoducs","x":-301.7325134277344,"y":-1280.14111328125,"id":"1435","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Formation Géologique","x":1130.813720703125,"y":-1306.9691162109375,"id":"862","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Balbuzard Pêcheur","x":-261.09759521484375,"y":-860.1210327148438,"id":"389","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Langue Scandinave","x":-879.9846801757812,"y":-795.6299438476562,"id":"1272","color":"rgb(204,204,255)","size":4.0086140632629395},{"label":"University Of Natural","x":-261.92498779296875,"y":1613.1439208984375,"id":"1600","color":"rgb(153,255,255)","size":4.0},{"label":"Pole Expedition","x":-536.613037109375,"y":1839.82470703125,"id":"256","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Beaufort Sea","x":-1314.319091796875,"y":1486.2528076171875,"id":"321","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Earth Sciences","x":140.06918334960938,"y":949.2770385742188,"id":"849","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Laponie Suédoise","x":-676.6172485351562,"y":-447.30023193359375,"id":"748","color":"rgb(204,204,255)","size":5.282204627990723},{"label":"Écosystèmes Marins","x":541.1787109375,"y":-776.7356567382812,"id":"884","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Global positioning","x":169.76914978027344,"y":3209.15771484375,"id":"1060","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Energie Fossile","x":567.6663208007812,"y":-1162.6912841796875,"id":"131","color":"rgb(0,153,0)","size":8.540210723876953},{"label":"Répercussions","x":-1328.6962890625,"y":178.18540954589844,"id":"1585","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Climatic Change","x":-308.025146484375,"y":1221.129638671875,"id":"79","color":"rgb(102,255,102)","size":79.5716781616211},{"label":"Council Of Canada","x":-1029.6468505859375,"y":1089.7691650390625,"id":"521","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Sayan Mountains","x":-1673.0694580078125,"y":-901.0927124023438,"id":"1614","color":"rgb(204,204,255)","size":4.0},{"label":"Chaine Alimentaire","x":1030.9202880859375,"y":-1390.243896484375,"id":"519","color":"rgb(153,255,0)","size":6.341859817504883},{"label":"Sognefjorden","x":-1595.1903076171875,"y":2023.157470703125,"id":"1637","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Circulation Océanique","x":881.097900390625,"y":-373.423095703125,"id":"515","color":"rgb(255,255,51)","size":6.584775924682617},{"label":"Pouvoir Public","x":746.6023559570312,"y":-1559.674072265625,"id":"97","color":"rgb(153,255,0)","size":5.103478908538818},{"label":"Communique De Presse","x":187.27760314941406,"y":-1929.7447509765625,"id":"1394","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Celsius Temperature","x":1085.2469482421875,"y":2629.656494140625,"id":"561","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Suède","x":-1009.474365234375,"y":84.77333068847656,"id":"1654","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Economie Gestion","x":1995.5655517578125,"y":-56.462928771972656,"id":"879","color":"rgb(255,255,51)","size":4.0},{"label":"Île Melville","x":-466.9360656738281,"y":57.297176361083984,"id":"1178","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Programme Pluriannuel De Recherche","x":1765.3302001953125,"y":-807.9656982421875,"id":"1545","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Profil Environnemental","x":663.1678466796875,"y":-1452.0347900390625,"id":"1543","color":"rgb(0,153,0)","size":4.39528751373291},{"label":"Technique De Randonnée","x":2199.39501953125,"y":-1483.310302734375,"id":"1680","color":"rgb(255,255,51)","size":4.0},{"label":"Empreinte Écologique","x":758.0026245117188,"y":-1200.9490966796875,"id":"901","color":"rgb(102,255,102)","size":5.103478908538818},{"label":"Northwest Territories","x":-1446.688232421875,"y":1508.540283203125,"id":"323","color":"rgb(0,204,204)","size":4.936610698699951},{"label":"Données Climatiques","x":1194.1854248046875,"y":-894.2398681640625,"id":"828","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Lagopède","x":-378.12152099609375,"y":-444.1365051269531,"id":"1271","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Umberto Nobile","x":-583.5703735351562,"y":1976.1595458984375,"id":"1694","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Claude Gascard","x":395.4162902832031,"y":-179.3833770751953,"id":"631","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Mer Polaire Ouverte","x":92.1793441772461,"y":1011.4505004882812,"id":"1345","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Droit De Passage","x":1362.7652587890625,"y":-2079.392578125,"id":"844","color":"rgb(153,0,0)","size":4.0},{"label":"Nord Du Canada","x":-149.541259765625,"y":-413.6909484863281,"id":"1401","color":"rgb(255,51,51)","size":4.781970500946045},{"label":"Activité Humaine","x":1020.486083984375,"y":-997.356689453125,"id":"68","color":"rgb(102,255,102)","size":39.22166061401367},{"label":"Emissions De Co2","x":700.1669311523438,"y":-1030.9810791015625,"id":"93","color":"rgb(102,255,102)","size":9.173389434814453},{"label":"Interglacial Period","x":-285.3956604003906,"y":1658.77197265625,"id":"1102","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Declaration De Doha","x":22.64794158935547,"y":-1824.061279296875,"id":"774","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Grands Lacs","x":360.0180358886719,"y":-912.3419189453125,"id":"80","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Laboratoire Kastler","x":1787.1490478515625,"y":65.69087982177734,"id":"674","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Baie De Disko","x":-122.5660171508789,"y":135.06480407714844,"id":"383","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Ajustement Structurel","x":577.732421875,"y":-1725.208740234375,"id":"173","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Indigenous Population","x":-1743.23681640625,"y":2319.311767578125,"id":"1195","color":"rgb(204,204,255)","size":4.0},{"label":"Konungariket Sverige","x":-1090.12109375,"y":833.55322265625,"id":"1261","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Finnish Companies","x":-957.6561889648438,"y":-1628.5633544921875,"id":"985","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Sols","x":1887.2938232421875,"y":-459.31365966796875,"id":"1641","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Longues Distances","x":-2320.859375,"y":-1128.3441162109375,"id":"1306","color":"rgb(204,204,255)","size":4.0},{"label":"Armée Américaine","x":-1105.5269775390625,"y":-114.18011474609375,"id":"341","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Iles Kouriles","x":-282.15093994140625,"y":-1069.7958984375,"id":"1175","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Photographie Aerienne","x":1980.08544921875,"y":-1403.850341796875,"id":"1196","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Natural Repair","x":1594.8365478515625,"y":-897.4264526367188,"id":"679","color":"rgb(255,204,102)","size":4.0},{"label":"Phoque Gris","x":-215.6255645751953,"y":-1140.5015869140625,"id":"1316","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Alaska State","x":-3147.713623046875,"y":2533.282470703125,"id":"189","color":"rgb(0,204,204)","size":4.0},{"label":"Tigre De Siberie","x":-72.00604248046875,"y":-1002.9564208984375,"id":"168","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Capteur De Pression","x":2150.798583984375,"y":-587.2140502929688,"id":"434","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Écologie Pratique","x":1065.259033203125,"y":-1147.25,"id":"874","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"New values","x":-154.02786254882812,"y":1974.202392578125,"id":"972","color":"rgb(0,204,204)","size":4.0},{"label":"Indicateur Climatique","x":1028.111328125,"y":-458.3717956542969,"id":"1191","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Aeronautical Engineering","x":-566.309814453125,"y":2136.8984375,"id":"1695","color":"rgb(153,255,255)","size":4.0},{"label":"Écologie Des Populations","x":1250.4727783203125,"y":-1381.619384765625,"id":"875","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Plateformes","x":1534.6314697265625,"y":-1326.825927734375,"id":"1497","color":"rgb(255,255,51)","size":4.0},{"label":"Réchauffement Différentiel","x":1635.4635009765625,"y":-296.90118408203125,"id":"1560","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Marine Royale","x":-1010.1068725585938,"y":-2144.4228515625,"id":"1322","color":"rgb(255,51,51)","size":4.0},{"label":"Phénomène Naturel","x":1266.3018798828125,"y":-1267.392333984375,"id":"1478","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Renard Gris","x":-711.9309692382812,"y":-865.7280883789062,"id":"1580","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Fonte","x":-954.379638671875,"y":155.9615020751953,"id":"1010","color":"rgb(0,204,204)","size":4.0},{"label":"Conditions Météorologiques","x":1496.9547119140625,"y":-782.289794921875,"id":"681","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Biogeochemical Cycle","x":-720.203369140625,"y":1154.4080810546875,"id":"462","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Glace","x":467.92193603515625,"y":1068.4384765625,"id":"1088","color":"rgb(153,255,255)","size":4.0086140632629395},{"label":"Plateformes De Forage","x":-32.178138732910156,"y":-1701.26904296875,"id":"1498","color":"rgb(102,0,102)","size":4.075808525085449},{"label":"Convention Internationale","x":27.588159561157227,"y":-1738.7987060546875,"id":"710","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Carte Géologique","x":1361.2398681640625,"y":-744.355224609375,"id":"436","color":"rgb(255,204,102)","size":5.103478908538818},{"label":"Dérèglement Climatique","x":818.4898071289062,"y":-1077.4920654296875,"id":"245","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Menace","x":-1735.708984375,"y":23.019989013671875,"id":"1331","color":"rgb(255,51,51)","size":4.0},{"label":"Polar Explorer","x":-540.6795043945312,"y":1721.8673095703125,"id":"183","color":"rgb(153,255,255)","size":5.472443103790283},{"label":"Energie Interne","x":2853.764892578125,"y":-711.9080810546875,"id":"540","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Fishing Ship","x":-2195.95947265625,"y":1698.998291015625,"id":"989","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Farthest North","x":-489.3768005371094,"y":1994.6044921875,"id":"978","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Agriculture Intensive","x":1194.085693359375,"y":-1809.0849609375,"id":"157","color":"rgb(102,102,0)","size":4.0340681076049805},{"label":"Ellesmere Island","x":-791.665771484375,"y":1980.0880126953125,"id":"377","color":"rgb(0,204,204)","size":4.781970500946045},{"label":"Connaissance Scientifique","x":1104.625732421875,"y":-1029.750732421875,"id":"693","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Produit Derive","x":1291.8006591796875,"y":-784.8773193359375,"id":"1494","color":"rgb(255,204,102)","size":4.0},{"label":"Perdrix Des Neiges","x":-556.744873046875,"y":-505.8311767578125,"id":"746","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Alain Hubert","x":-147.12803649902344,"y":1327.6324462890625,"id":"180","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Bay Oil","x":-1974.5218505859375,"y":957.7298583984375,"id":"449","color":"rgb(102,0,102)","size":4.075808525085449},{"label":"Mecanique Des Fluides","x":2573.458984375,"y":312.06390380859375,"id":"888","color":"rgb(255,255,0)","size":4.510906219482422},{"label":"Energy Conference","x":-1079.1385498046875,"y":1234.311279296875,"id":"905","color":"rgb(0,153,0)","size":4.075808525085449},{"label":"Revendication","x":265.2763366699219,"y":-1583.3365478515625,"id":"1595","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Management Environnemental","x":843.4338989257812,"y":-1657.6605224609375,"id":"251","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Bering Sea","x":-856.4624633789062,"y":1048.4078369140625,"id":"203","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Protocole De Kyoto","x":804.7012939453125,"y":-946.403076171875,"id":"105","color":"rgb(102,255,102)","size":7.099246978759766},{"label":"Northern University","x":-1368.3258056640625,"y":116.15547180175781,"id":"1437","color":"rgb(255,255,51)","size":4.0},{"label":"Impacts Environnementaux","x":916.9364624023438,"y":-1329.6590576171875,"id":"1187","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Eaux Internationales","x":-45.005516052246094,"y":-1584.10498046875,"id":"869","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Department Of Physics","x":114.74959564208984,"y":793.4013671875,"id":"790","color":"rgb(153,255,255)","size":4.0086140632629395},{"label":"Phoque Moine","x":174.09072875976562,"y":-1117.7325439453125,"id":"1479","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Jules Verne","x":292.7366027832031,"y":628.7774047851562,"id":"508","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Marcel Leroux","x":493.2509765625,"y":-352.26470947265625,"id":"1319","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Écotourisme Québec","x":-421.915771484375,"y":-885.8495483398438,"id":"886","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Afge Local","x":-3463.37109375,"y":-1966.770751953125,"id":"1059","color":"rgb(51,153,255)","size":4.0},{"label":"Grande Puissance","x":-423.2604064941406,"y":-1298.2620849609375,"id":"970","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Américains Du Nord","x":45.0167121887207,"y":-631.6409301757812,"id":"222","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Port De Montreal","x":245.47291564941406,"y":385.5518798828125,"id":"1627","color":"rgb(0,204,204)","size":4.0},{"label":"Croyances Animistes Traditionnelles","x":-616.6427612304688,"y":-652.6201171875,"id":"745","color":"rgb(204,204,255)","size":4.206028938293457},{"label":"Programme De Doha","x":-21.686321258544922,"y":-1883.6951904296875,"id":"1213","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Centre De Gravité","x":3091.731689453125,"y":953.8211059570312,"id":"1528","color":"rgb(255,255,0)","size":4.0},{"label":"Croissance De La Population","x":635.1356201171875,"y":-1875.99609375,"id":"743","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Impact Activités Humaines","x":736.72216796875,"y":-612.231201171875,"id":"1186","color":"rgb(255,255,51)","size":4.0},{"label":"Mer Gelée","x":1194.6021728515625,"y":-504.497802734375,"id":"1344","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Changement Climatique","x":639.014892578125,"y":-703.6633911132812,"id":"53","color":"rgb(102,255,102)","size":99.99999237060547},{"label":"Extinction","x":-623.718505859375,"y":764.0315551757812,"id":"973","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Atacama Large","x":-1263.72509765625,"y":2407.256103515625,"id":"55","color":"rgb(0,204,204)","size":4.0},{"label":"International Conference","x":-1029.4451904296875,"y":853.9440307617188,"id":"685","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Joik","x":-1815.1776123046875,"y":2372.54052734375,"id":"1247","color":"rgb(204,204,255)","size":4.075808525085449},{"label":"Celsius Scale","x":1050.712646484375,"y":2602.3388671875,"id":"72","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Mer De Laptev","x":148.3580322265625,"y":-263.6416320800781,"id":"1339","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Isfjord","x":-731.637451171875,"y":1618.5643310546875,"id":"1226","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Iles Aleoutiennes","x":-252.2587432861328,"y":-786.9063720703125,"id":"199","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Université Joseph","x":1623.983154296875,"y":505.6729431152344,"id":"1079","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Gestion Des Ressources","x":540.045654296875,"y":-1682.798095703125,"id":"101","color":"rgb(0,153,0)","size":5.103478908538818},{"label":"Arctique","x":108.06491088867188,"y":-182.56524658203125,"id":"333","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Glacial Lake","x":-325.3822326660156,"y":1850.6939697265625,"id":"1094","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Mecanique Des Milieux Continus","x":2787.80224609375,"y":384.6292724609375,"id":"1303","color":"rgb(255,255,0)","size":4.133297443389893},{"label":"Sédiments","x":-930.0875854492188,"y":1070.3548583984375,"id":"1625","color":"rgb(0,153,0)","size":4.133297443389893},{"label":"Réversiblité","x":1091.1778564453125,"y":-961.290771484375,"id":"1598","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Documentaires Reportages","x":-139.54441833496094,"y":-13.036221504211426,"id":"956","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Mourmansk","x":-950.3997192382812,"y":-471.90557861328125,"id":"1375","color":"rgb(0,204,204)","size":4.0},{"label":"Johannesburg 2002.","x":-308.7962341308594,"y":137.21817016601562,"id":"1245","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Extinction Massive","x":585.7884521484375,"y":-821.8596801757812,"id":"975","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Joseph Fourier","x":1753.0748291015625,"y":527.2044677734375,"id":"1078","color":"rgb(255,255,51)","size":4.206028938293457},{"label":"Puissances Militaires","x":-586.8568725585938,"y":-1493.1463623046875,"id":"1552","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Population","x":-936.8165283203125,"y":347.7954406738281,"id":"1522","color":"rgb(255,51,51)","size":4.0},{"label":"Canadian Navy","x":-987.0184936523438,"y":-2168.454345703125,"id":"1321","color":"rgb(255,51,51)","size":4.0},{"label":"Sami Culture","x":-1937.94482421875,"y":2468.69091796875,"id":"1282","color":"rgb(204,204,255)","size":5.282204627990723},{"label":"Repérage Satellite","x":-307.4222106933594,"y":2304.399658203125,"id":"1584","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Réchauffement Climatique","x":480.5789489746094,"y":-476.38458251953125,"id":"50","color":"rgb(102,255,102)","size":56.631980895996094},{"label":"Earth Explorer","x":-1058.8309326171875,"y":1358.3682861328125,"id":"751","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Simulation Numérique","x":2325.76318359375,"y":225.4872283935547,"id":"661","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Meteorological Station","x":-1598.993896484375,"y":2188.527587890625,"id":"1240","color":"rgb(0,204,204)","size":4.0},{"label":"Lng Carrier","x":-2107.6708984375,"y":1014.72021484375,"id":"1297","color":"rgb(102,0,102)","size":4.0086140632629395},{"label":"Barrage Hydroélectrique","x":548.54150390625,"y":-1642.50537109375,"id":"425","color":"rgb(0,153,0)","size":4.206028938293457},{"label":"Discipline Scientifique","x":1859.9405517578125,"y":-169.36407470703125,"id":"1106","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Yvon Le Maho","x":648.9661254882812,"y":-544.9031372070312,"id":"1719","color":"rgb(255,204,102)","size":4.0086140632629395},{"label":"Norwegian Polar Institute","x":-563.6276245117188,"y":1612.9364013671875,"id":"1416","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Polar Expedition","x":-636.3841552734375,"y":1911.3157958984375,"id":"302","color":"rgb(153,255,255)","size":5.103478908538818},{"label":"Laboratoire De Météorologie","x":1433.879150390625,"y":-248.84622192382812,"id":"1263","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Ecological Footprint","x":174.93313598632812,"y":-522.507080078125,"id":"872","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Prospection Electromagnetique","x":2055.60400390625,"y":625.3250122070312,"id":"1549","color":"rgb(255,255,51)","size":4.0},{"label":"Agricultural Land","x":-503.6853332519531,"y":1084.8663330078125,"id":"148","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Forcage Radiatif","x":854.035400390625,"y":-816.6619873046875,"id":"461","color":"rgb(255,204,102)","size":4.781970500946045},{"label":"Russian Gas","x":-1841.2296142578125,"y":488.3793640136719,"id":"208","color":"rgb(102,0,102)","size":5.103478908538818},{"label":"Canadian Arctic","x":-870.5809936523438,"y":1920.4820556640625,"id":"294","color":"rgb(255,51,51)","size":7.9385457038879395},{"label":"Latitude 66° 33\u0027N,1","x":362.4998779296875,"y":-522.8916015625,"id":"1280","attributes":{"nodedef":"n1280"},"color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Josef Land","x":-881.2371826171875,"y":2143.9130859375,"id":"415","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Climatologie","x":1387.076904296875,"y":-654.1448974609375,"id":"639","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Arctic Sea","x":-90.56189727783203,"y":1657.809814453125,"id":"311","color":"rgb(153,255,255)","size":5.6738481521606445},{"label":"Science Nord","x":-1296.1273193359375,"y":-539.59521484375,"id":"1399","color":"rgb(153,255,255)","size":4.0},{"label":"Bloc Erratique","x":448.885009765625,"y":-417.5223693847656,"id":"480","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Energie Primaire","x":536.199462890625,"y":-1360.2603759765625,"id":"904","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Soil Science","x":662.3010864257812,"y":-840.2737426757812,"id":"930","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Environment Programme","x":-306.8843994140625,"y":557.0643920898438,"id":"89","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Extent Minimum","x":-193.59140014648438,"y":1815.1783447265625,"id":"971","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Glaciologie","x":436.9810791015625,"y":789.4720458984375,"id":"1104","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Pôle Nord Géomagnétique","x":310.8309020996094,"y":815.92431640625,"id":"1509","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Frontière Terrestre","x":-394.6021728515625,"y":-1488.3306884765625,"id":"1032","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Arctic Ice","x":-255.33016967773438,"y":1737.73486328125,"id":"310","color":"rgb(0,204,204)","size":6.108868598937988},{"label":"Thon Rouge","x":206.93438720703125,"y":-1359.9771728515625,"id":"1373","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Petroleum Product","x":-2264.662841796875,"y":747.086669921875,"id":"1434","color":"rgb(102,0,102)","size":4.133297443389893},{"label":"Végétation Locale","x":1114.59375,"y":-1471.4329833984375,"id":"1705","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Navire De Recherche","x":70.53507232666016,"y":-244.04432678222656,"id":"839","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Atmosphère Terrestre","x":1137.197509765625,"y":-371.8663635253906,"id":"363","color":"rgb(255,255,0)","size":5.282204627990723},{"label":"Coopération","x":-558.1478271484375,"y":376.72161865234375,"id":"719","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Hydrographic Survey","x":586.7369384765625,"y":1790.6697998046875,"id":"564","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Biomes Of The World","x":-1001.8667602539062,"y":2355.270263671875,"id":"470","color":"rgb(204,204,255)","size":4.0086140632629395},{"label":"Méthanier","x":104.27997589111328,"y":-1588.522216796875,"id":"1351","color":"rgb(102,0,102)","size":4.293514728546143},{"label":"Carbon Sequestration","x":-788.3623046875,"y":1279.9970703125,"id":"548","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Observatoire De Recherche","x":1151.910888671875,"y":-865.9721069335938,"id":"1025","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Observation System","x":631.1531982421875,"y":1363.797607421875,"id":"847","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Empreinte Energetique","x":566.9852294921875,"y":-1052.157470703125,"id":"903","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Cap Lizard","x":-314.93060302734375,"y":-164.61312866210938,"id":"357","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Sciences Sociales","x":1755.0657958984375,"y":-379.21099853515625,"id":"1624","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Matiere Organique","x":1244.5677490234375,"y":-1558.487548828125,"id":"120","color":"rgb(153,255,0)","size":10.527388572692871},{"label":"Coastal Plain","x":-2725.831298828125,"y":941.7975463867188,"id":"38","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Déclaration De Rio","x":612.9371948242188,"y":-1074.5045166015625,"id":"688","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Gas Company","x":-2017.2681884765625,"y":624.8248291015625,"id":"209","color":"rgb(102,0,102)","size":6.341859817504883},{"label":"North Magnetic","x":-10.140995025634766,"y":1495.694580078125,"id":"622","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Island Expedition","x":-829.6738891601562,"y":1681.056640625,"id":"1227","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Sonde De Temperature","x":2307.5634765625,"y":-551.9292602539062,"id":"544","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Clark Ross","x":568.3779296875,"y":671.209228515625,"id":"455","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Volcanic Plateau","x":-1624.3095703125,"y":1801.562744140625,"id":"1704","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Space Science","x":1044.7261962890625,"y":1038.4227294921875,"id":"861","color":"rgb(255,153,153)","size":4.133297443389893},{"label":"Oceanographie Physique","x":966.4908447265625,"y":-283.2160339355469,"id":"1432","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Sommet De Johannesburg","x":258.27178955078125,"y":-813.4686889648438,"id":"1246","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Ice Data","x":-11.349913597106934,"y":1434.9552001953125,"id":"45","color":"rgb(153,255,255)","size":6.837328910827637},{"label":"Couverture Végétale","x":1250.3302001953125,"y":-1848.6412353515625,"id":"735","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Missiles Balistiques","x":-828.7572631835938,"y":-1458.7127685546875,"id":"1361","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Nouvel Environnement","x":1604.5255126953125,"y":-1706.1563720703125,"id":"1417","color":"rgb(102,255,102)","size":4.0},{"label":"Soil Erosion","x":-455.86676025390625,"y":946.5283813476562,"id":"928","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Dorsales Lomonossov","x":39.05314254760742,"y":-421.98748779296875,"id":"836","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Cnrs Umr","x":1952.6683349609375,"y":55.34114456176758,"id":"346","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"James Bay","x":-1204.0933837890625,"y":2584.969482421875,"id":"1235","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Economic Zone","x":-629.4299926757812,"y":-285.3661804199219,"id":"1284","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Nuclear Icebreaker","x":-642.9785766601562,"y":1862.987548828125,"id":"1305","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Température Constante","x":2101.514892578125,"y":-803.8215942382812,"id":"1672","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Educapoles","x":105.24282836914062,"y":835.7413330078125,"id":"891","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Barents","x":-1320.2484130859375,"y":1932.0987548828125,"id":"413","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Sea Of Ice","x":-402.9502258300781,"y":1698.795654296875,"id":"185","color":"rgb(153,255,255)","size":14.352338790893555},{"label":"Pole Geographique","x":653.4030151367188,"y":484.79840087890625,"id":"590","color":"rgb(153,255,255)","size":5.103478908538818},{"label":"Etudes Spatiales","x":1028.2242431640625,"y":491.39324951171875,"id":"400","color":"rgb(255,153,153)","size":4.206028938293457},{"label":"Rajendra Pachauri","x":491.4423522949219,"y":14.165596961975098,"id":"1087","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Solifluxion","x":1204.88037109375,"y":-1249.0697021484375,"id":"1639","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Greenland Ice","x":-126.77063751220703,"y":1516.032958984375,"id":"638","color":"rgb(153,255,255)","size":4.936610698699951},{"label":"Eastern Arctic","x":-843.3505249023438,"y":1801.095458984375,"id":"856","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Caribou Des Bois","x":133.42225646972656,"y":-1002.9473876953125,"id":"551","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Échantillons De Glace","x":1049.4072265625,"y":-330.250732421875,"id":"871","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Port Autonome","x":-482.2939453125,"y":-1922.71484375,"id":"1138","color":"rgb(153,0,0)","size":4.39528751373291},{"label":"Sibérie Orientale","x":-269.6578063964844,"y":-701.846435546875,"id":"806","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Rythme D\u0027Exploitation,1","x":-91.83535766601562,"y":-1162.8453369140625,"id":"1605","attributes":{"nodedef":"n1605"},"color":"rgb(102,0,102)","size":4.075808525085449},{"label":"Canadian Boreal","x":-796.159423828125,"y":2042.5194091796875,"id":"485","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Convention De Montego","x":-184.02239990234375,"y":-1494.572265625,"id":"711","color":"rgb(153,0,0)","size":4.781970500946045},{"label":"Kara Sea","x":-1109.3558349609375,"y":1923.9544677734375,"id":"416","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Castors Lapons","x":-1256.1171875,"y":-228.22557067871094,"id":"1275","color":"rgb(204,204,255)","size":4.0086140632629395},{"label":"American Physical Society","x":-382.6901550292969,"y":1385.4027099609375,"id":"226","color":"rgb(102,255,102)","size":4.0},{"label":"Haut Arctique","x":-196.34776306152344,"y":-157.2665252685547,"id":"336","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Profondeur","x":829.1661376953125,"y":-1430.9351806640625,"id":"1544","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Communication Satellite","x":43.59181213378906,"y":2506.35546875,"id":"652","color":"rgb(255,153,153)","size":4.206028938293457},{"label":"Russie","x":-522.8524780273438,"y":-1415.021484375,"id":"1604","color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Impact Écologique","x":822.514892578125,"y":-1276.9775390625,"id":"1022","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Climate Crisis","x":-559.0671997070312,"y":979.5825805664062,"id":"178","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Élévation Température","x":-248.6700897216797,"y":1585.9635009765625,"id":"898","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Régions Pétrolières","x":-464.6183166503906,"y":-1464.7113037109375,"id":"1329","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Aurore Polaire","x":714.0791625976562,"y":311.250732421875,"id":"373","color":"rgb(153,255,255)","size":4.936610698699951},{"label":"Marine Science","x":434.7555847167969,"y":370.1911315917969,"id":"885","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Route Commerciale","x":281.8993225097656,"y":-792.7899169921875,"id":"758","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Passage Kennedy","x":-1272.6044921875,"y":1398.203125,"id":"1462","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Evaluation Des Risques","x":1577.1671142578125,"y":-1862.7254638671875,"id":"947","color":"rgb(102,102,0)","size":4.133297443389893},{"label":"Renard Arctique","x":-482.01922607421875,"y":-749.9813842773438,"id":"1291","color":"rgb(153,255,0)","size":4.936610698699951},{"label":"Erosion","x":-355.6134338378906,"y":958.4852294921875,"id":"927","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Forage Seed","x":2815.6865234375,"y":3295.669189453125,"id":"1021","color":"rgb(102,102,0)","size":4.0},{"label":"Température De L\u0027Eau,1","x":1581.2574462890625,"y":-736.5062255859375,"id":"1673","attributes":{"nodedef":"n1673"},"color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Ungava Bay","x":-1236.7750244140625,"y":2544.859130859375,"id":"1425","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Environnement Protection","x":742.9298706054688,"y":-1374.4422607421875,"id":"918","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Protection De L\u0027Environnement,1","x":924.9998779296875,"y":-1493.4639892578125,"id":"1550","attributes":{"nodedef":"n1550"},"color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Phoques","x":-176.49501037597656,"y":-1298.3714599609375,"id":"1480","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Health Wealth","x":-769.10888671875,"y":813.8422241210938,"id":"1157","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Modèles Climatiques","x":960.2445068359375,"y":-632.1519775390625,"id":"1362","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Concentration Atmosphérique En Gaz À Effet De Serre","x":1109.8857421875,"y":-1201.5419921875,"id":"671","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Cycle Biogéochimique","x":1231.748779296875,"y":-1076.531982421875,"id":"760","color":"rgb(255,255,51)","size":4.781970500946045},{"label":"Écoulement","x":1946.003662109375,"y":-204.98585510253906,"id":"887","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Liv Arnesen","x":-211.08746337890625,"y":1457.8192138671875,"id":"255","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Activités Humaines","x":939.146484375,"y":-1054.251220703125,"id":"117","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Effet De Serre Anthropique","x":869.8401489257812,"y":-1122.5921630859375,"id":"895","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Salinisation","x":-492.9778747558594,"y":998.083251953125,"id":"1608","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Reseau De Distribution","x":164.8856964111328,"y":-1508.1824951171875,"id":"1043","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Canal De Panama","x":-467.1565856933594,"y":-1797.8077392578125,"id":"353","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Kennedy Channel","x":-990.4541015625,"y":1290.1942138671875,"id":"1260","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Fond Marin","x":161.1836395263672,"y":-697.8049926757812,"id":"444","color":"rgb(255,51,51)","size":8.235326766967773},{"label":"Saami","x":-1866.03271484375,"y":2491.896484375,"id":"1606","color":"rgb(204,204,255)","size":4.39528751373291},{"label":"Administration Bush","x":-1136.2672119140625,"y":-428.8100891113281,"id":"121","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Nunavut Land","x":-1509.091796875,"y":1711.5626220703125,"id":"1129","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Ecologie","x":695.2794799804688,"y":-1120.096435546875,"id":"873","color":"rgb(0,204,51)","size":4.510906219482422},{"label":"Mer De Sibérie Orientale","x":210.74697875976562,"y":-328.9768981933594,"id":"1341","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Court Terme","x":501.63348388671875,"y":-1379.796875,"id":"174","color":"rgb(0,153,0)","size":5.103478908538818},{"label":"Laboratoire Des Sciences Du Climat","x":895.5632934570312,"y":-84.9769515991211,"id":"289","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Etats-Unis","x":-664.49609375,"y":-157.40467834472656,"id":"945","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"International Journal Of Theoretical","x":-969.3994750976562,"y":198.23516845703125,"id":"1220","color":"rgb(255,51,51)","size":4.0},{"label":"Réseau De Communications","x":-2286.451416015625,"y":-1148.6153564453125,"id":"1587","color":"rgb(204,204,255)","size":4.0},{"label":"Reindeer Husbandry","x":-1639.425537109375,"y":2342.082763671875,"id":"1579","color":"rgb(204,204,255)","size":4.293514728546143},{"label":"Northern Light","x":-1084.892578125,"y":1428.5267333984375,"id":"316","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Geographic Magazine","x":-1408.0269775390625,"y":1253.908203125,"id":"1066","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Pollutions Localisées","x":409.26171875,"y":-437.8915100097656,"id":"1519","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Marine Soviétique","x":-557.7352294921875,"y":-1440.10791015625,"id":"355","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Données Scientifiques","x":1144.4649658203125,"y":-1053.2713623046875,"id":"832","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Arctic Bay","x":-1102.2261962890625,"y":1965.6678466796875,"id":"291","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Gas Hydrates","x":-526.14404296875,"y":1344.7689208984375,"id":"629","color":"rgb(0,153,0)","size":4.206028938293457},{"label":"Affaires Maritimes","x":-70.12700653076172,"y":-1806.66552734375,"id":"129","color":"rgb(153,0,0)","size":4.075808525085449},{"label":"Lac Glaciaire","x":1025.576171875,"y":-203.9110870361328,"id":"867","color":"rgb(153,255,255)","size":4.0},{"label":"Gulf-Stream","x":-762.6338500976562,"y":1361.40185546875,"id":"1148","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Norvège","x":-934.0388793945312,"y":-634.4059448242188,"id":"1411","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"National Parks","x":-1568.43505859375,"y":1488.180908203125,"id":"313","color":"rgb(153,255,0)","size":9.501245498657227},{"label":"Géologie","x":1237.4952392578125,"y":-582.6567993164062,"id":"1070","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Président Carter","x":-894.6444091796875,"y":174.04171752929688,"id":"1539","color":"rgb(255,51,51)","size":4.0},{"label":"Prélever","x":-138.2056427001953,"y":-1914.477294921875,"id":"1534","color":"rgb(153,0,0)","size":4.0},{"label":"Arctic Red","x":-1440.24658203125,"y":1692.1748046875,"id":"320","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"National Interest Lands","x":-2533.43408203125,"y":1090.193603515625,"id":"39","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Edp Sciences","x":620.9034423828125,"y":649.64892578125,"id":"890","color":"rgb(153,255,255)","size":4.0340681076049805},{"label":"Réactions","x":-2242.13916015625,"y":-81.64968872070312,"id":"1559","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"National Snow And Ice Data Center","x":-82.20970153808594,"y":1755.7330322265625,"id":"1383","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Zone De Subduction","x":1619.37841796875,"y":-586.6400146484375,"id":"202","color":"rgb(255,204,102)","size":4.936610698699951},{"label":"International Organization","x":-435.0935974121094,"y":328.05108642578125,"id":"721","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"West Passage","x":-738.1751098632812,"y":1883.2489013671875,"id":"1410","color":"rgb(153,0,0)","size":4.133297443389893},{"label":"Politique International","x":-499.8843688964844,"y":-908.3687133789062,"id":"1512","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Nouvelles Routes Commerciales","x":-253.4183349609375,"y":-961.7564086914062,"id":"1418","color":"rgb(153,0,0)","size":4.133297443389893},{"label":"Hydrocarbures","x":150.72735595703125,"y":-1719.0933837890625,"id":"1163","color":"rgb(102,0,102)","size":4.6399359703063965},{"label":"Knud Rasmussen","x":-722.918212890625,"y":1028.62451171875,"id":"385","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Otaries","x":245.4610137939453,"y":-1857.8228759765625,"id":"1446","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Laponie","x":-600.4788818359375,"y":-305.26251220703125,"id":"1276","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Novaya Zemlya","x":-1189.239990234375,"y":1574.789306640625,"id":"418","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Pont Alexandre","x":151.32626342773438,"y":-57.80909729003906,"id":"798","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Conférence","x":-1122.256103515625,"y":633.0912475585938,"id":"684","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Veau Marin","x":-208.42149353027344,"y":-1258.4281005859375,"id":"1317","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Atlantique Nord","x":-13.135313987731934,"y":-534.4340209960938,"id":"216","color":"rgb(255,51,51)","size":10.178449630737305},{"label":"Bruno Jacomy","x":1302.4163818359375,"y":361.8206787109375,"id":"1565","color":"rgb(255,255,51)","size":4.0},{"label":"Inlandsis","x":435.01898193359375,"y":159.8060302734375,"id":"1198","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Déchet Nucléaire","x":380.8000793457031,"y":-1663.5177001953125,"id":"504","color":"rgb(102,102,0)","size":5.472443103790283},{"label":"Philosophie De La Science","x":780.9424438476562,"y":-242.83270263671875,"id":"1429","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Convention Des Nations Unies Sur Le Droit De La Mer De 1982","x":-282.8759460449219,"y":-1720.91064453125,"id":"717","color":"rgb(153,0,0)","size":4.39528751373291},{"label":"North Pole","x":-513.2245483398438,"y":1585.4044189453125,"id":"182","color":"rgb(0,204,204)","size":14.764718055725098},{"label":"Cartes","x":1560.257080078125,"y":-1286.2509765625,"id":"557","color":"rgb(255,255,51)","size":4.0},{"label":"Temps Géologique","x":1447.703857421875,"y":-494.1518859863281,"id":"510","color":"rgb(255,204,102)","size":4.781970500946045},{"label":"Milieu Polaire","x":300.757568359375,"y":-101.02339172363281,"id":"1359","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Quantite De Matiere","x":2636.1533203125,"y":-881.0833740234375,"id":"91","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Physique","x":1883.59228515625,"y":24.318912506103516,"id":"1483","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Pays Nordique","x":-659.119140625,"y":-1094.1265869140625,"id":"896","color":"rgb(255,51,51)","size":4.6399359703063965},{"label":"Pigb","x":324.859130859375,"y":-200.34991455078125,"id":"1486","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Poussée D\u0027Archimède,1","x":3051.099853515625,"y":905.1744384765625,"id":"1525","attributes":{"nodedef":"n1525"},"color":"rgb(255,255,0)","size":4.0340681076049805},{"label":"Pollution Control","x":-1381.4327392578125,"y":969.9300537109375,"id":"1517","color":"rgb(102,102,0)","size":4.075808525085449},{"label":"Vladimir Putin","x":-1570.246826171875,"y":-132.1924285888672,"id":"491","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Préfabriqués","x":2714.468017578125,"y":551.2706909179688,"id":"1531","color":"rgb(255,255,51)","size":4.0},{"label":"Zone Polaire","x":354.72003173828125,"y":33.996063232421875,"id":"1360","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Clathrates","x":-273.6105651855469,"y":1365.593994140625,"id":"625","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Graduate Student","x":-371.85546875,"y":872.8204345703125,"id":"791","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Alliance Atlantique","x":-366.25677490234375,"y":-1161.8916015625,"id":"214","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Programme Des Nations","x":183.9048309326172,"y":-892.7618408203125,"id":"132","color":"rgb(102,255,102)","size":4.781970500946045},{"label":"Northern Sami","x":-1973.365478515625,"y":2609.33251953125,"id":"1409","color":"rgb(204,204,255)","size":4.206028938293457},{"label":"Recherches Prospectives","x":884.8547973632812,"y":-1303.6541748046875,"id":"1570","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Gbep","x":-897.9884643554688,"y":807.901123046875,"id":"1054","color":"rgb(0,153,0)","size":4.133297443389893},{"label":"War Of Iraq","x":-1343.6434326171875,"y":248.77804565429688,"id":"1586","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Atlantic Ocean","x":-893.0388793945312,"y":1363.2615966796875,"id":"318","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Præsidium Du Soviet Suprême De L\u0027Urss,1","x":-649.39306640625,"y":-1628.699462890625,"id":"1529","attributes":{"nodedef":"n1529"},"color":"rgb(255,51,51)","size":4.133297443389893},{"label":"Geological Survey","x":-382.74688720703125,"y":1018.3242797851562,"id":"324","color":"rgb(102,255,102)","size":5.103478908538818},{"label":"Espèce Rare","x":392.0811462402344,"y":-962.0516967773438,"id":"937","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Loup","x":-143.7703399658203,"y":-850.323486328125,"id":"1307","color":"rgb(153,255,0)","size":4.0340681076049805},{"label":"Natural Resources Ministry","x":-589.6399536132812,"y":704.2279052734375,"id":"340","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Isotherme","x":2666.44091796875,"y":-415.98529052734375,"id":"1232","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Amérique Du Nord","x":-141.58084106445312,"y":-656.83056640625,"id":"166","color":"rgb(255,51,51)","size":17.335289001464844},{"label":"Roald Amundsen","x":-523.8612060546875,"y":1742.4547119140625,"id":"966","color":"rgb(153,255,255)","size":5.103478908538818},{"label":"Radar Altimeter","x":199.72256469726562,"y":1572.3167724609375,"id":"754","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"East Greenland","x":-944.6824340820312,"y":1563.160400390625,"id":"613","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Ours Blanc","x":-94.96329498291016,"y":-394.123779296875,"id":"406","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Ressources Fossiles","x":636.2318725585938,"y":-1141.4078369140625,"id":"1591","color":"rgb(0,153,0)","size":4.6399359703063965},{"label":"Agence Spatiale Européenne","x":811.7756958007812,"y":289.67626953125,"id":"134","color":"rgb(255,153,153)","size":4.39528751373291},{"label":"Secretaire General","x":-380.1330871582031,"y":-1336.759033203125,"id":"215","color":"rgb(255,51,51)","size":5.282204627990723},{"label":"Activité Économique","x":495.2303161621094,"y":-1774.67724609375,"id":"95","color":"rgb(153,0,0)","size":5.6738481521606445},{"label":"Capitale De La Norvège","x":-714.158935546875,"y":-332.8415222167969,"id":"543","color":"rgb(153,0,0)","size":4.6399359703063965},{"label":"Forage","x":2852.77197265625,"y":3320.1611328125,"id":"1019","color":"rgb(102,102,0)","size":4.0086140632629395},{"label":"Glacial Till","x":-310.6843566894531,"y":1678.2410888671875,"id":"1097","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Arthur Chilingarov","x":-390.9749755859375,"y":1931.4237060546875,"id":"342","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Sami People","x":-1888.802734375,"y":2538.2783203125,"id":"1249","color":"rgb(204,204,255)","size":5.6738481521606445},{"label":"Progression","x":-1064.17529296875,"y":380.4419250488281,"id":"1548","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Universite De Paris","x":1826.4591064453125,"y":-120.52847290039062,"id":"648","color":"rgb(255,255,51)","size":4.510906219482422},{"label":"Atmospheric Research","x":-383.1943664550781,"y":1518.517333984375,"id":"360","color":"rgb(153,255,255)","size":4.075808525085449},{"label":"Wwf","x":-426.822265625,"y":1108.128662109375,"id":"1714","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Renard Roux","x":-501.80584716796875,"y":-930.3526611328125,"id":"1581","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Source Lumineuse","x":1338.2926025390625,"y":-355.2475280761719,"id":"1192","color":"rgb(255,255,51)","size":4.0},{"label":"Fermentation Bactérienne","x":1216.25146484375,"y":-1170.071533203125,"id":"980","color":"rgb(153,255,0)","size":4.075808525085449},{"label":"Neige Au Sol","x":1302.529052734375,"y":-289.34307861328125,"id":"1018","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"International Cooperation","x":-362.96234130859375,"y":298.28668212890625,"id":"720","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"International Geosphere","x":-609.56396484375,"y":1503.0321044921875,"id":"477","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Louis Etienne","x":262.0841064453125,"y":-13.704791069030762,"id":"397","color":"rgb(0,204,204)","size":8.235326766967773},{"label":"Mécanique Des Solides","x":2748.43115234375,"y":453.333984375,"id":"660","color":"rgb(255,255,0)","size":4.39528751373291},{"label":"Laboratoire De Géophysique","x":1749.293701171875,"y":467.0248107910156,"id":"1076","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Klavdij Sluban","x":-773.81005859375,"y":-1072.273681640625,"id":"1335","color":"rgb(255,51,51)","size":4.0},{"label":"Période Glaciaire","x":1182.68359375,"y":-265.6172180175781,"id":"287","color":"rgb(153,255,255)","size":8.235326766967773},{"label":"Croûte Continentale","x":1700.3018798828125,"y":-695.7825317382812,"id":"438","color":"rgb(255,204,102)","size":5.282204627990723},{"label":"Laboratoire De Physique Statistique","x":453.7958984375,"y":278.333740234375,"id":"1264","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Aurores Boréales","x":925.7900390625,"y":199.57559204101562,"id":"375","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Fahrenheit Scale","x":1027.1209716796875,"y":2542.7236328125,"id":"70","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Anwr","x":-2690.359619140625,"y":895.0036010742188,"id":"268","color":"rgb(153,255,0)","size":4.6399359703063965},{"label":"Traineau","x":-965.9135131835938,"y":-565.5975341796875,"id":"1684","color":"rgb(204,204,255)","size":4.39528751373291},{"label":"Biosphere Reserve","x":-1270.091552734375,"y":1550.5616455078125,"id":"475","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Bassin Sédimentaire","x":1087.60693359375,"y":-942.1962890625,"id":"144","color":"rgb(255,204,102)","size":4.293514728546143},{"label":"Institute Affiliate","x":-670.5057983398438,"y":2188.31787109375,"id":"1029","color":"rgb(0,204,204)","size":4.0},{"label":"Navigation","x":226.42288208007812,"y":3431.34326171875,"id":"1391","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"New England","x":-1147.896484375,"y":263.2210998535156,"id":"12","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Frederick Cook","x":-847.7138061523438,"y":1235.386962890625,"id":"967","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Plante Fourragère","x":1074.7864990234375,"y":-1960.4940185546875,"id":"1473","color":"rgb(153,255,0)","size":4.0},{"label":"Géosphère","x":-534.4583129882812,"y":1452.3653564453125,"id":"1081","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Surface Bioproductive","x":332.2822570800781,"y":-773.5977172851562,"id":"1656","color":"rgb(102,255,102)","size":4.133297443389893},{"label":"James Clark Ross","x":135.2253875732422,"y":1444.279541015625,"id":"1236","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Exploration Polaire","x":86.10325622558594,"y":51.03369903564453,"id":"838","color":"rgb(153,255,255)","size":4.39528751373291},{"label":"Gadus Morhua","x":-265.5268249511719,"y":-683.766357421875,"id":"489","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Compose Organique","x":1279.6739501953125,"y":-1786.3187255859375,"id":"668","color":"rgb(102,102,0)","size":4.6399359703063965},{"label":"Ile De Baffin","x":-542.6830444335938,"y":483.6591491699219,"id":"282","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Northern Canada","x":-766.9470825195312,"y":1782.7698974609375,"id":"1315","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Consommation","x":-3767.505126953125,"y":-1286.1236572265625,"id":"699","color":"rgb(204,0,0)","size":4.0},{"label":"Centre De Recherche","x":1475.1954345703125,"y":-714.0918579101562,"id":"159","color":"rgb(255,204,102)","size":7.9385457038879395},{"label":"Équilibre Biologique","x":1321.3497314453125,"y":-1695.903076171875,"id":"921","color":"rgb(102,102,0)","size":4.293514728546143},{"label":"Centre National","x":1352.81494140625,"y":-562.0387573242188,"id":"570","color":"rgb(255,204,102)","size":4.936610698699951},{"label":"Dominique Raynaud","x":897.6173706054688,"y":-141.02593994140625,"id":"290","color":"rgb(255,204,102)","size":4.39528751373291},{"label":"Journal De Bord","x":-291.7248229980469,"y":-123.4757080078125,"id":"1255","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Baril De Pétrole","x":-373.9239807128906,"y":-1424.874755859375,"id":"422","color":"rgb(102,0,102)","size":5.6738481521606445},{"label":"Fossil Fuel","x":-684.3709716796875,"y":1111.435546875,"id":"463","color":"rgb(0,153,0)","size":8.235326766967773},{"label":"Stephen Harper","x":-132.4368896484375,"y":-591.208251953125,"id":"1009","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Presqu\u0027Île De Kola,1","x":-388.2249450683594,"y":-725.830078125,"id":"1540","attributes":{"nodedef":"n1540"},"color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Alta","x":-1820.52587890625,"y":2058.934326171875,"id":"220","color":"rgb(0,204,204)","size":4.0},{"label":"Russia To Germany","x":-1770.2144775390625,"y":400.1640625,"id":"1402","color":"rgb(102,0,102)","size":4.133297443389893},{"label":"Environmental Satellite","x":318.142333984375,"y":2182.989501953125,"id":"911","color":"rgb(255,153,153)","size":4.39528751373291},{"label":"Ile Wake","x":249.35452270507812,"y":435.57574462890625,"id":"1502","color":"rgb(0,204,204)","size":4.0},{"label":"George Hubert Wilkins","x":-890.5496215820312,"y":1383.94775390625,"id":"1080","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Recul De La Banquise","x":387.477294921875,"y":-241.42066955566406,"id":"1573","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Eau Chaude","x":1326.6470947265625,"y":-1008.3419189453125,"id":"598","color":"rgb(255,204,102)","size":6.341859817504883},{"label":"Plateau Continental","x":-42.98124694824219,"y":-898.1126708984375,"id":"502","color":"rgb(102,255,102)","size":8.235326766967773},{"label":"Vitesse Limite","x":3108.7373046875,"y":928.3176879882812,"id":"1527","color":"rgb(255,255,0)","size":4.0},{"label":"Gps Satellite","x":220.57168579101562,"y":3309.154296875,"id":"1115","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Imagerie Satellite","x":755.4320068359375,"y":-166.0117645263672,"id":"1183","color":"rgb(255,153,153)","size":4.293514728546143},{"label":"Race To The Pole","x":-762.5220947265625,"y":1482.967529296875,"id":"1027","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Bush Administration","x":-1530.074462890625,"y":215.48060607910156,"id":"122","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Marge Continentale","x":1305.8900146484375,"y":-625.6681518554688,"id":"266","color":"rgb(255,204,102)","size":4.781970500946045},{"label":"Narvik","x":-1618.4957275390625,"y":2043.26513671875,"id":"1381","color":"rgb(0,204,204)","size":4.0},{"label":"Baleine Grise","x":-176.243896484375,"y":-979.921875,"id":"393","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Arctic Summer","x":-252.80731201171875,"y":1699.3084716796875,"id":"328","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Métaux Lourds","x":1217.7490234375,"y":-1729.1802978515625,"id":"379","color":"rgb(102,102,0)","size":4.6399359703063965},{"label":"Port En Eau Profonde","x":66.55622863769531,"y":-1956.13330078125,"id":"1523","color":"rgb(153,0,0)","size":4.0340681076049805},{"label":"Decroissance Soutenable","x":425.0431823730469,"y":-1451.91259765625,"id":"244","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Glacier Rocheux","x":714.1744384765625,"y":-146.1813201904297,"id":"793","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Fleuve Amour","x":-529.2616577148438,"y":-1068.8953857421875,"id":"999","color":"rgb(102,0,102)","size":4.0086140632629395},{"label":"Weather Satellite","x":353.239501953125,"y":2159.915283203125,"id":"1082","color":"rgb(255,153,153)","size":4.936610698699951},{"label":"Pipe Line","x":-2321.0849609375,"y":713.1168212890625,"id":"1489","color":"rgb(102,0,102)","size":4.133297443389893},{"label":"Agence Spatiale Russe","x":996.43310546875,"y":594.5779418945312,"id":"139","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Chaîne De Montagnes","x":1214.927001953125,"y":-648.8825073242188,"id":"403","color":"rgb(255,204,102)","size":5.6738481521606445},{"label":"Accord Canada","x":14.053364753723145,"y":283.5315856933594,"id":"78","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Alaska Pipeline","x":-2189.193359375,"y":992.2608642578125,"id":"193","color":"rgb(102,0,102)","size":4.133297443389893},{"label":"Klondike Gold","x":-1461.8563232421875,"y":988.4777221679688,"id":"1121","color":"rgb(153,0,0)","size":4.133297443389893},{"label":"Acier Inoxydable","x":2597.7001953125,"y":-472.5513610839844,"id":"1233","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Kativik School","x":-1295.8642578125,"y":2771.06103515625,"id":"1258","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Arctic Norway","x":-1015.7074584960938,"y":1845.171142578125,"id":"314","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Péninsule Tchouktche","x":22.759498596191406,"y":-830.916748046875,"id":"1467","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Port Méthanier","x":-87.27054595947266,"y":-1629.2996826171875,"id":"171","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Produits Pétroliers","x":-328.5513916015625,"y":-1678.751220703125,"id":"656","color":"rgb(102,0,102)","size":4.936610698699951},{"label":"Expédition Polaire Russe","x":-910.3502197265625,"y":-196.7174072265625,"id":"957","color":"rgb(255,51,51)","size":4.293514728546143},{"label":"Nsidc","x":-39.78633499145508,"y":1692.2911376953125,"id":"1421","color":"rgb(153,255,255)","size":4.510906219482422},{"label":"Risque Technologique","x":1651.34423828125,"y":-1836.7208251953125,"id":"24","color":"rgb(102,102,0)","size":4.781970500946045},{"label":"Michael Llodra","x":296.3454895019531,"y":-1547.416259765625,"id":"1542","color":"rgb(255,51,51)","size":4.0},{"label":"Traitement Des Déchets","x":701.334716796875,"y":-2317.052734375,"id":"768","color":"rgb(102,102,0)","size":4.781970500946045},{"label":"Agent D\u0027Érosion,1","x":1293.1495361328125,"y":-845.2651977539062,"id":"142","attributes":{"nodedef":"n142"},"color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Insel Fünen","x":-1856.4827880859375,"y":-1676.109375,"id":"763","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Règlementer La Pêche","x":-24.56975555419922,"y":-1786.160400390625,"id":"1577","color":"rgb(153,0,0)","size":4.510906219482422},{"label":"Centre Technique Régional","x":-3758.538818359375,"y":-1311.2628173828125,"id":"700","color":"rgb(204,0,0)","size":4.0},{"label":"Gaz Naturel Liquéfié","x":-91.20169830322266,"y":-1537.076416015625,"id":"1044","color":"rgb(0,153,0)","size":4.510906219482422},{"label":"Inuit Eskimo","x":-1141.657470703125,"y":2152.69580078125,"id":"527","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Détroit De Béring","x":-323.8287353515625,"y":-395.40972900390625,"id":"411","color":"rgb(0,204,204)","size":7.650110721588135},{"label":"Protection Agency","x":-1255.6109619140625,"y":1038.06103515625,"id":"164","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Modifications Futures","x":-315.1140441894531,"y":-1362.1593017578125,"id":"1366","color":"rgb(255,51,51)","size":4.0340681076049805},{"label":"Geophysical Services","x":1747.908447265625,"y":736.555908203125,"id":"1072","color":"rgb(255,204,51)","size":4.0},{"label":"21-Avr-08","x":-2301.590576171875,"y":-1107.337646484375,"id":"17","color":"rgb(204,204,255)","size":4.0},{"label":"Accord De Marrakech","x":-23.58915138244629,"y":-1841.5423583984375,"id":"81","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Birds Of North","x":-1526.2667236328125,"y":1152.0509033203125,"id":"478","color":"rgb(153,255,0)","size":4.0},{"label":"Fjord","x":-1721.904541015625,"y":1539.12451171875,"id":"992","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Habitants Locaux","x":-450.0788269042969,"y":-632.4037475585938,"id":"1149","color":"rgb(204,204,255)","size":4.0},{"label":"Sous-Marin Mir","x":0.7903322577476501,"y":-263.9958190917969,"id":"1644","color":"rgb(255,51,51)","size":4.6399359703063965},{"label":"Impacts Sociaux","x":857.00830078125,"y":-1250.28759765625,"id":"1188","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Recherche Publique","x":1598.115234375,"y":-1009.1126708984375,"id":"1569","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Atmosphère","x":-327.4678955078125,"y":1451.6829833984375,"id":"358","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Paysages Naturels","x":759.217529296875,"y":-1915.464599609375,"id":"1464","color":"rgb(153,255,0)","size":4.0086140632629395},{"label":"Quest For The North","x":-836.8455810546875,"y":1504.2691650390625,"id":"1556","color":"rgb(153,0,0)","size":4.293514728546143},{"label":"Estimation Précise","x":1511.7779541015625,"y":-1364.507568359375,"id":"942","color":"rgb(255,255,51)","size":4.0},{"label":"Russia To Canada","x":-675.6696166992188,"y":1444.2498779296875,"id":"1506","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Année Polaire Internationale","x":953.1709594726562,"y":-222.62002563476562,"id":"257","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Dégradation Des Sols","x":940.4586181640625,"y":-1574.67333984375,"id":"779","color":"rgb(102,102,0)","size":4.781970500946045},{"label":"Croissance Végétale","x":1036.1978759765625,"y":-1246.32275390625,"id":"744","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Égalité De Droit","x":55.669151306152344,"y":-467.2328186035156,"id":"77","color":"rgb(102,255,102)","size":4.0},{"label":"Chemin De Fer","x":-327.4593811035156,"y":-804.969482421875,"id":"354","color":"rgb(153,0,0)","size":4.206028938293457},{"label":"1988","x":-1095.9884033203125,"y":437.6317443847656,"id":"14","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Gestion Des Déchets","x":641.9574584960938,"y":-2060.39013671875,"id":"708","color":"rgb(102,102,0)","size":6.584775924682617},{"label":"Barriere De Glace","x":751.5405883789062,"y":84.75260162353516,"id":"431","color":"rgb(153,255,255)","size":4.6399359703063965},{"label":"Disparition De La Banquise D\u0027Été,1","x":481.5081787109375,"y":-566.0498046875,"id":"821","attributes":{"nodedef":"n821"},"color":"rgb(102,255,102)","size":4.133297443389893},{"label":"Préservation Biodiversité","x":730.5175170898438,"y":-1473.8968505859375,"id":"1537","color":"rgb(102,102,0)","size":4.510906219482422},{"label":"Alopex Lagopus","x":-719.4835815429688,"y":84.6142578125,"id":"218","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Fjord Norvégien","x":-884.736328125,"y":-309.86322021484375,"id":"536","color":"rgb(0,204,204)","size":4.133297443389893},{"label":"Pipeline Company","x":-2126.298828125,"y":726.8614501953125,"id":"1037","color":"rgb(102,0,102)","size":4.510906219482422},{"label":"Golfe De Botnie","x":-574.8486328125,"y":-847.8629150390625,"id":"1122","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Plaque Tectonique","x":1617.9876708984375,"y":-518.2423706054688,"id":"834","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Ère Quaternaire","x":1294.13525390625,"y":-334.4315490722656,"id":"865","color":"rgb(255,255,51)","size":4.293514728546143},{"label":"Vent Solaire","x":904.5231323242188,"y":317.2509765625,"id":"116","color":"rgb(255,153,153)","size":5.6738481521606445},{"label":"Lac Baikal","x":-68.26935577392578,"y":-861.2033081054688,"id":"1266","color":"rgb(153,255,0)","size":4.510906219482422},{"label":"Atlantic Treaty Organization","x":-615.8858642578125,"y":-697.463134765625,"id":"1445","color":"rgb(255,51,51)","size":4.0},{"label":"Navire De Guerre","x":-466.7169494628906,"y":-1556.725341796875,"id":"232","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"International Journal Of Technology","x":-822.3903198242188,"y":1132.199462890625,"id":"1219","color":"rgb(102,255,102)","size":4.0340681076049805},{"label":"Agence De Voyages","x":-566.8865966796875,"y":-400.0716857910156,"id":"20","color":"rgb(0,204,204)","size":4.936610698699951},{"label":"Shtokman","x":-2037.73486328125,"y":832.659423828125,"id":"1631","color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Disparition","x":246.64466857910156,"y":-1162.3238525390625,"id":"820","color":"rgb(153,255,0)","size":4.0},{"label":"Mer De Beaufort","x":-225.43960571289062,"y":-33.4792594909668,"id":"1336","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Environnement De Développement","x":1485.168212890625,"y":-1605.7059326171875,"id":"917","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Christophe Colomb","x":-492.0862731933594,"y":-791.3049926757812,"id":"602","color":"rgb(255,51,51)","size":4.0086140632629395},{"label":"Kola Peninsula","x":-1877.4124755859375,"y":2299.73876953125,"id":"421","color":"rgb(204,204,255)","size":4.6399359703063965},{"label":"Centre Of Excellence","x":-827.9765625,"y":1638.33740234375,"id":"331","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Usgs","x":-401.1330871582031,"y":821.0635375976562,"id":"1700","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Land Degradation","x":-478.3914794921875,"y":1062.0526123046875,"id":"803","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Geographic Channel","x":-1642.635498046875,"y":1258.9573974609375,"id":"1064","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Climate System","x":-284.0472717285156,"y":1345.24169921875,"id":"299","color":"rgb(102,255,102)","size":4.6399359703063965},{"label":"Extension De Sa Zee","x":-258.7265319824219,"y":-1052.287841796875,"id":"969","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Renard Des Sables","x":-736.22412109375,"y":-892.9422607421875,"id":"1582","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Terre Adelie","x":740.2885131835938,"y":240.6663818359375,"id":"457","color":"rgb(255,204,102)","size":5.103478908538818},{"label":"Alaska Fishing","x":-2920.301025390625,"y":2365.240966796875,"id":"192","color":"rgb(0,204,204)","size":4.6399359703063965},{"label":"Vladimir Poutine","x":-711.3236694335938,"y":-1351.60986328125,"id":"495","color":"rgb(255,51,51)","size":5.886096477508545},{"label":"Gradient Thermique Adiabatique","x":1962.834228515625,"y":-431.2511901855469,"id":"1131","color":"rgb(255,204,102)","size":4.133297443389893},{"label":"Jean-Louis Etienne","x":246.227783203125,"y":71.02962493896484,"id":"1244","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Revendication Territoriale","x":84.11878967285156,"y":-772.0419311523438,"id":"759","color":"rgb(255,51,51)","size":4.936610698699951},{"label":"Haute Résolution","x":972.8068237304688,"y":-44.521812438964844,"id":"1155","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Zones Froides","x":1170.614990234375,"y":-814.6840209960938,"id":"1721","color":"rgb(255,204,102)","size":4.206028938293457},{"label":"Mecanique Celeste","x":1754.9249267578125,"y":-24.008731842041016,"id":"347","color":"rgb(255,153,153)","size":4.075808525085449},{"label":"Centrale Electrique","x":460.12310791015625,"y":-1536.29052734375,"id":"426","color":"rgb(0,153,0)","size":4.510906219482422},{"label":"Tara Expéditions","x":162.76512145996094,"y":-37.0638427734375,"id":"822","color":"rgb(153,255,255)","size":4.781970500946045},{"label":"Grand Public","x":1464.771484375,"y":-1291.46240234375,"id":"1139","color":"rgb(255,255,51)","size":4.0},{"label":"Identité Culturelle","x":744.2086791992188,"y":-1578.896240234375,"id":"824","color":"rgb(153,255,0)","size":4.206028938293457},{"label":"Ward Hunt Island","x":-468.4326477050781,"y":1868.2164306640625,"id":"1253","color":"rgb(0,204,204)","size":4.293514728546143},{"label":"Ballon Stratosphérique","x":1370.3006591796875,"y":497.37359619140625,"id":"399","color":"rgb(255,153,153)","size":4.0086140632629395},{"label":"Carnet De Voyage","x":-815.7117309570312,"y":-674.12451171875,"id":"230","color":"rgb(204,204,255)","size":4.206028938293457},{"label":"Volumes D\u0027Hydrocarbures,1","x":-284.30419921875,"y":-1003.9923706054688,"id":"1707","attributes":{"nodedef":"n1707"},"color":"rgb(102,0,102)","size":4.39528751373291},{"label":"Réfléchissement","x":1013.8643798828125,"y":-1074.454833984375,"id":"1574","color":"rgb(102,255,102)","size":4.206028938293457},{"label":"Loi Des Gaz Parfaits","x":2679.76318359375,"y":-726.4705810546875,"id":"703","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Histoire Naturelle","x":732.302001953125,"y":-565.925048828125,"id":"469","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"Dette Écologique.","x":479.8210754394531,"y":-1402.3721923828125,"id":"811","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Effet De Serre","x":865.8285522460938,"y":-903.2288208007812,"id":"65","color":"rgb(102,255,102)","size":69.37736511230469},{"label":"Eau Liquide","x":1440.804443359375,"y":-54.767822265625,"id":"859","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Eaux Douces","x":935.943603515625,"y":-1351.420654296875,"id":"857","color":"rgb(255,255,51)","size":4.39528751373291},{"label":"Hammerfest","x":-1517.981201171875,"y":2044.6671142578125,"id":"1151","color":"rgb(0,204,204)","size":4.0086140632629395},{"label":"Arctic Resources","x":-753.0548095703125,"y":1701.157958984375,"id":"327","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Souveraineté Canadienne","x":-83.83868408203125,"y":-374.80377197265625,"id":"1648","color":"rgb(255,51,51)","size":4.39528751373291},{"label":"Barent Sea","x":-1725.133544921875,"y":1701.3858642578125,"id":"420","color":"rgb(0,204,204)","size":4.206028938293457},{"label":"Gas Liquefaction","x":-2165.393310546875,"y":858.1279296875,"id":"1035","color":"rgb(102,0,102)","size":4.206028938293457},{"label":"Methane Hydrate","x":-674.2474365234375,"y":1322.800537109375,"id":"628","color":"rgb(102,255,102)","size":4.936610698699951},{"label":"Union Pour La Republique","x":-1195.4715576171875,"y":-1906.215576171875,"id":"32","color":"rgb(255,51,51)","size":4.0},{"label":"Meteorologie Aeronautique","x":1906.800048828125,"y":-298.53631591796875,"id":"1348","color":"rgb(255,204,102)","size":4.0340681076049805},{"label":"Origine Humaine","x":530.5454711914062,"y":-867.5733032226562,"id":"1443","color":"rgb(102,255,102)","size":4.39528751373291},{"label":"Activité Physique","x":19.17449951171875,"y":-1487.5723876953125,"id":"110","color":"rgb(255,51,51)","size":4.075808525085449},{"label":"Climat","x":634.1971435546875,"y":-416.56427001953125,"id":"633","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Cirque Glaciaire","x":-414.3337707519531,"y":-675.9893798828125,"id":"620","color":"rgb(204,204,255)","size":4.0},{"label":"Destruction","x":-1023.5889282226562,"y":235.55380249023438,"id":"804","color":"rgb(255,51,51)","size":4.0},{"label":"Bass Temperature","x":1143.0743408203125,"y":-394.33685302734375,"id":"1002","color":"rgb(255,255,51)","size":4.0340681076049805},{"label":"Laboratoire Des Sciences","x":1369.251708984375,"y":-120.38371276855469,"id":"286","color":"rgb(255,255,51)","size":4.6399359703063965},{"label":"Ressources Halieutiques","x":208.87730407714844,"y":-1788.5084228515625,"id":"172","color":"rgb(0,153,0)","size":5.282204627990723},{"label":"Finlande","x":-699.87255859375,"y":-1438.7354736328125,"id":"984","color":"rgb(255,51,51)","size":4.206028938293457},{"label":"Modelés Glaciaires","x":518.2478637695312,"y":-613.6041259765625,"id":"1365","color":"rgb(102,255,102)","size":4.510906219482422},{"label":"Methane Gas","x":-695.7578735351562,"y":1379.359375,"id":"1350","color":"rgb(0,153,0)","size":4.133297443389893},{"label":"North Pole Dash","x":-518.3096313476562,"y":1951.0364990234375,"id":"1406","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Science Humaine","x":1481.983154296875,"y":-437.10595703125,"id":"238","color":"rgb(255,255,51)","size":6.341859817504883},{"label":"Surface Temperature","x":-158.56500244140625,"y":1636.7862548828125,"id":"1408","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Josée Auclair","x":-585.8860473632812,"y":2012.5086669921875,"id":"1250","color":"rgb(0,204,204)","size":4.39528751373291},{"label":"Atmospheric Chemistry","x":-458.1257629394531,"y":1473.9342041015625,"id":"308","color":"rgb(153,255,255)","size":4.293514728546143},{"label":"Vitus Bering","x":-514.814208984375,"y":-218.38807678222656,"id":"807","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Inuits","x":-1086.007568359375,"y":2101.54638671875,"id":"1223","color":"rgb(204,204,255)","size":4.510906219482422},{"label":"Désertification","x":-346.1569519042969,"y":1042.04052734375,"id":"802","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Gestion Durable","x":535.494140625,"y":-1856.2032470703125,"id":"882","color":"rgb(153,0,0)","size":4.39528751373291},{"label":"Évolution Dynamique","x":1323.7410888671875,"y":-173.46302795410156,"id":"953","color":"rgb(255,255,51)","size":4.133297443389893},{"label":"Manchot Empereur","x":589.0419921875,"y":461.8739929199219,"id":"1017","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Terre Arable","x":529.2310791015625,"y":-1912.7171630859375,"id":"1474","color":"rgb(153,0,0)","size":4.0086140632629395},{"label":"Espece Menacee","x":189.9256591796875,"y":-1050.06298828125,"id":"167","color":"rgb(153,255,0)","size":8.852968215942383},{"label":"Greenland Sea","x":-837.241943359375,"y":1581.582763671875,"id":"1144","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Project For Ice","x":7.382100582122803,"y":1167.9910888671875,"id":"826","color":"rgb(153,255,255)","size":4.206028938293457},{"label":"Acteur Économique","x":488.945556640625,"y":-1980.610595703125,"id":"94","color":"rgb(153,0,0)","size":4.206028938293457},{"label":"Cartographier","x":1643.154052734375,"y":-1261.8980712890625,"id":"558","color":"rgb(255,255,51)","size":4.0086140632629395},{"label":"Nappe Souterraine","x":579.6406860351562,"y":-1934.3416748046875,"id":"1358","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Domm","x":-1004.6201171875,"y":179.20132446289062,"id":"827","color":"rgb(255,51,51)","size":4.0},{"label":"Lièvre Arctique","x":-455.9764099121094,"y":-421.9842224121094,"id":"482","color":"rgb(153,255,0)","size":4.39528751373291},{"label":"Gédéon Programmes","x":-504.4151611328125,"y":353.18511962890625,"id":"1056","color":"rgb(0,204,204)","size":4.0340681076049805},{"label":"Indigenous Peoples","x":-1673.6878662109375,"y":2261.001220703125,"id":"618","color":"rgb(204,204,255)","size":5.282204627990723},{"label":"Grande Echelle","x":1003.61083984375,"y":-1225.32958984375,"id":"1140","color":"rgb(153,255,0)","size":4.133297443389893},{"label":"Tri Selectif","x":644.0982666015625,"y":-2335.362548828125,"id":"771","color":"rgb(102,102,0)","size":4.510906219482422},{"label":"Accès De Base","x":1810.5634765625,"y":-1565.491455078125,"id":"1085","color":"rgb(255,255,51)","size":4.0},{"label":"Fragmentation Écologique","x":657.0732421875,"y":-1327.8116455078125,"id":"246","color":"rgb(102,255,102)","size":4.293514728546143},{"label":"Gaz Sur Surface","x":219.41163635253906,"y":-202.6012725830078,"id":"1340","color":"rgb(102,255,102)","size":4.0086140632629395},{"label":"Pipeline Safety","x":-2272.401611328125,"y":690.718994140625,"id":"1038","color":"rgb(102,0,102)","size":4.133297443389893},{"label":"Hautes Latitudes","x":790.7667236328125,"y":-263.09051513671875,"id":"1156","color":"rgb(255,204,102)","size":4.6399359703063965},{"label":"West Siberian","x":-857.8103637695312,"y":1416.4312744140625,"id":"616","color":"rgb(0,204,204)","size":4.075808525085449},{"label":"Continent Américain","x":-518.6719360351562,"y":-467.7585754394531,"id":"603","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Charge De Recherche","x":1697.37646484375,"y":-832.8470458984375,"id":"596","color":"rgb(255,204,102)","size":4.075808525085449},{"label":"Paleoclimatologie","x":1190.7630615234375,"y":-548.8214111328125,"id":"1455","color":"rgb(255,204,102)","size":4.510906219482422},{"label":"Cercle Polaire","x":-441.5832824707031,"y":-338.2845458984375,"id":"335","color":"rgb(0,204,204)","size":14.764718055725098},{"label":"Alenia Space","x":836.8038940429688,"y":1245.3642578125,"id":"196","color":"rgb(255,153,153)","size":4.0340681076049805},{"label":"Fonds Marins","x":1276.6959228515625,"y":-437.3470458984375,"id":"1006","color":"rgb(255,255,51)","size":4.075808525085449},{"label":"Dérèglements Écologiques","x":344.27490234375,"y":-935.0296630859375,"id":"795","color":"rgb(102,255,102)","size":4.075808525085449},{"label":"Espèces","x":378.1238708496094,"y":-891.1968383789062,"id":"939","color":"rgb(153,255,0)","size":4.293514728546143},{"label":"Industrie Pétrolière","x":-323.57122802734375,"y":-1779.236083984375,"id":"654","color":"rgb(102,0,102)","size":4.936610698699951},{"label":"Ballon Dirigeable","x":245.244384765625,"y":127.29121398925781,"id":"396","color":"rgb(153,255,255)","size":4.133297443389893},{"label":"Fishing Alaska","x":-3016.6982421875,"y":2527.25244140625,"id":"190","color":"rgb(0,204,204)","size":4.510906219482422},{"label":"Cap Nord","x":-693.8167724609375,"y":-305.88018798828125,"id":"532","color":"rgb(0,204,204)","size":6.837328910827637}]} diff --git a/sigma.js-1.2.0/examples/data/convertcsvcluster.json b/sigma.js-1.2.0/examples/data/convertcsvcluster.json new file mode 100644 index 0000000..4deb7fb --- /dev/null +++ b/sigma.js-1.2.0/examples/data/convertcsvcluster.json @@ -0,0 +1,4165 @@ +{"edges":[ + { + "source":"Nullpunkt", + "target":"FavoriteCount:2900000", + "id":"FavoriteCount:100000_FavoriteCount:2900000" + }, + { + "source":"Nullpunkt", + "target":"RetweetCount:5000000", + "id":"RetweetCount:100000_RetweetCount:5000000" + } +],"nodes":[ + { + "label":"Nullpunkt" + ,"x":"0" + ,"y":"0" + ,"id":"Nullpunkt" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + + { + "label":"FavoriteCount:100000" + ,"x":"0" + ,"y":"100000" + ,"id":"FavoriteCount:100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:200000" + ,"x":"0" + ,"y":"200000" + ,"id":"FavoriteCount:200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:300000" + ,"x":"0" + ,"y":"300000" + ,"id":"FavoriteCount:300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:400000" + ,"x":"0" + ,"y":"400000" + ,"id":"FavoriteCount:400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:500000" + ,"x":"0" + ,"y":"500000" + ,"id":"FavoriteCount:500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:600000" + ,"x":"0" + ,"y":"600000" + ,"id":"FavoriteCount:600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:700000" + ,"x":"0" + ,"y":"700000" + ,"id":"FavoriteCount:700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:800000" + ,"x":"0" + ,"y":"800000" + ,"id":"FavoriteCount:800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:900000" + ,"x":"0" + ,"y":"900000" + ,"id":"FavoriteCount:900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1000000" + ,"x":"0" + ,"y":"1000000" + ,"id":"FavoriteCount:1000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1100000" + ,"x":"0" + ,"y":"1100000" + ,"id":"FavoriteCount:1100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1200000" + ,"x":"0" + ,"y":"1200000" + ,"id":"FavoriteCount:1200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1300000" + ,"x":"0" + ,"y":"1300000" + ,"id":"FavoriteCount:1300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1400000" + ,"x":"0" + ,"y":"1400000" + ,"id":"FavoriteCount:1400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1500000" + ,"x":"0" + ,"y":"1500000" + ,"id":"FavoriteCount:1500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1600000" + ,"x":"0" + ,"y":"1600000" + ,"id":"FavoriteCount:1600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1700000" + ,"x":"0" + ,"y":"1700000" + ,"id":"FavoriteCount:1700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1800000" + ,"x":"0" + ,"y":"1800000" + ,"id":"FavoriteCount:1800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1900000" + ,"x":"0" + ,"y":"1900000" + ,"id":"FavoriteCount:1900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2000000" + ,"x":"0" + ,"y":"2000000" + ,"id":"FavoriteCount:2000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2100000" + ,"x":"0" + ,"y":"2100000" + ,"id":"FavoriteCount:2100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2200000" + ,"x":"0" + ,"y":"2200000" + ,"id":"FavoriteCount:2200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2300000" + ,"x":"0" + ,"y":"2300000" + ,"id":"FavoriteCount:2300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2400000" + ,"x":"0" + ,"y":"2400000" + ,"id":"FavoriteCount:2400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2500000" + ,"x":"0" + ,"y":"2500000" + ,"id":"FavoriteCount:2500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2600000" + ,"x":"0" + ,"y":"2600000" + ,"id":"FavoriteCount:2600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2700000" + ,"x":"0" + ,"y":"2700000" + ,"id":"FavoriteCount:2700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2800000" + ,"x":"0" + ,"y":"2800000" + ,"id":"FavoriteCount:2800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2900000" + ,"x":"0" + ,"y":"2900000" + ,"id":"FavoriteCount:2900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:100000" + ,"x":"100000" + ,"y":"0" + ,"id":"RetweetCount:100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:200000" + ,"x":"200000" + ,"y":"0" + ,"id":"RetweetCount:200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:300000" + ,"x":"300000" + ,"y":"0" + ,"id":"RetweetCount:300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:400000" + ,"x":"400000" + ,"y":"0" + ,"id":"RetweetCount:400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:500000" + ,"x":"500000" + ,"y":"0" + ,"id":"RetweetCount:500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:600000" + ,"x":"600000" + ,"y":"0" + ,"id":"RetweetCount:600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:700000" + ,"x":"700000" + ,"y":"0" + ,"id":"RetweetCount:700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:800000" + ,"x":"800000" + ,"y":"0" + ,"id":"RetweetCount:800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:900000" + ,"x":"900000" + ,"y":"0" + ,"id":"RetweetCount:900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1000000" + ,"x":"1000000" + ,"y":"0" + ,"id":"RetweetCount:1000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1100000" + ,"x":"1100000" + ,"y":"0" + ,"id":"RetweetCount:1100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1200000" + ,"x":"1200000" + ,"y":"0" + ,"id":"RetweetCount:1200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1300000" + ,"x":"1300000" + ,"y":"0" + ,"id":"RetweetCount:1300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1400000" + ,"x":"1400000" + ,"y":"0" + ,"id":"RetweetCount:1400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1500000" + ,"x":"1500000" + ,"y":"0" + ,"id":"RetweetCount:1500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1600000" + ,"x":"1600000" + ,"y":"0" + ,"id":"RetweetCount:1600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1700000" + ,"x":"1700000" + ,"y":"0" + ,"id":"RetweetCount:1700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1800000" + ,"x":"1800000" + ,"y":"0" + ,"id":"RetweetCount:1800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1900000" + ,"x":"1900000" + ,"y":"0" + ,"id":"RetweetCount:1900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2000000" + ,"x":"2000000" + ,"y":"0" + ,"id":"RetweetCount:2000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2100000" + ,"x":"2100000" + ,"y":"0" + ,"id":"RetweetCount:2100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2200000" + ,"x":"2200000" + ,"y":"0" + ,"id":"RetweetCount:2200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2300000" + ,"x":"2300000" + ,"y":"0" + ,"id":"RetweetCount:2300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2400000" + ,"x":"2400000" + ,"y":"0" + ,"id":"RetweetCount:2400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2500000" + ,"x":"2500000" + ,"y":"0" + ,"id":"RetweetCount:2500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2600000" + ,"x":"2600000" + ,"y":"0" + ,"id":"RetweetCount:2600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2700000" + ,"x":"2700000" + ,"y":"0" + ,"id":"RetweetCount:2700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2800000" + ,"x":"2800000" + ,"y":"0" + ,"id":"RetweetCount:2800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2900000" + ,"x":"2900000" + ,"y":"0" + ,"id":"RetweetCount:2900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3000000" + ,"x":"3000000" + ,"y":"0" + ,"id":"RetweetCount:3000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3100000" + ,"x":"3100000" + ,"y":"0" + ,"id":"RetweetCount:3100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3200000" + ,"x":"3200000" + ,"y":"0" + ,"id":"RetweetCount:3200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3300000" + ,"x":"3300000" + ,"y":"0" + ,"id":"RetweetCount:3300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3400000" + ,"x":"3400000" + ,"y":"0" + ,"id":"RetweetCount:3400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3500000" + ,"x":"3500000" + ,"y":"0" + ,"id":"RetweetCount:3500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3600000" + ,"x":"3600000" + ,"y":"0" + ,"id":"RetweetCount:3600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3700000" + ,"x":"3700000" + ,"y":"0" + ,"id":"RetweetCount:3700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3800000" + ,"x":"3800000" + ,"y":"0" + ,"id":"RetweetCount:3800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3900000" + ,"x":"3900000" + ,"y":"0" + ,"id":"RetweetCount:3900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4000000" + ,"x":"4000000" + ,"y":"0" + ,"id":"RetweetCount:4000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4100000" + ,"x":"4100000" + ,"y":"0" + ,"id":"RetweetCount:4100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4200000" + ,"x":"4200000" + ,"y":"0" + ,"id":"RetweetCount:4200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4300000" + ,"x":"4300000" + ,"y":"0" + ,"id":"RetweetCount:4300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4400000" + ,"x":"4400000" + ,"y":"0" + ,"id":"RetweetCount:4400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4500000" + ,"x":"4500000" + ,"y":"0" + ,"id":"RetweetCount:4500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4600000" + ,"x":"4600000" + ,"y":"0" + ,"id":"RetweetCount:4600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4700000" + ,"x":"4700000" + ,"y":"0" + ,"id":"RetweetCount:4700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4800000" + ,"x":"4800000" + ,"y":"0" + ,"id":"RetweetCount:4800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4900000" + ,"x":"4900000" + ,"y":"0" + ,"id":"RetweetCount:4900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:5000000" + ,"x":"5000000" + ,"y":"0" + ,"id":"RetweetCount:5000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"#ActOnClimate" + ,"x":"3739" + ,"y":"2753" + ,"id":"#ActOnClimate" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#ADA" + ,"x":"1293" + ,"y":"452" + ,"id":"#ADA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AIDSFreeGeneration" + ,"x":"2528" + ,"y":"955" + ,"id":"#AIDSFreeGeneration" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AIPAC2016" + ,"x":"9704" + ,"y":"3488" + ,"id":"#AIPAC2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ALConvention2016" + ,"x":"20610" + ,"y":"6355" + ,"id":"#ALConvention2016" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#AlwaysTrump" + ,"x":"32742" + ,"y":"10146" + ,"id":"#AlwaysTrump" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#AmericaFirst" + ,"x":"1148627" + ,"y":"405552" + ,"id":"#AmericaFirst" + ,"color":"rgb(0,0,255)" + ,"size":"58" + }, + { + "label":"#AmericaFIRST" + ,"x":"11674" + ,"y":"3876" + ,"id":"#AmericaFIRST" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AmericaGreatAgain" + ,"x":"3459" + ,"y":"941" + ,"id":"#AmericaGreatAgain" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AmericanSamoa" + ,"x":"8750" + ,"y":"2973" + ,"id":"#AmericanSamoa" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#APAHM" + ,"x":"3681" + ,"y":"1294" + ,"id":"#APAHM" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Arizona" + ,"x":"7981" + ,"y":"2933" + ,"id":"#Arizona" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ArizonaPrimary" + ,"x":"16783" + ,"y":"5398" + ,"id":"#ArizonaPrimary" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#ArmedForcesDay" + ,"x":"28920" + ,"y":"10199" + ,"id":"#ArmedForcesDay" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#ArmyBDay" + ,"x":"2744" + ,"y":"882" + ,"id":"#ArmyBDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AsLongAsItTakes" + ,"x":"7947" + ,"y":"3589" + ,"id":"#AsLongAsItTakes" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AZ" + ,"x":"15391" + ,"y":"4530" + ,"id":"#AZ" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#AZPrimary" + ,"x":"32721" + ,"y":"10742" + ,"id":"#AZPrimary" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#Benghazi" + ,"x":"56562" + ,"y":"30921" + ,"id":"#Benghazi" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#BikersForTrump" + ,"x":"6718" + ,"y":"2496" + ,"id":"#BikersForTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BlackMenForBernie" + ,"x":"10727" + ,"y":"4626" + ,"id":"#BlackMenForBernie" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BlacksForTrump" + ,"x":"10727" + ,"y":"4626" + ,"id":"#BlacksForTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BlackWomensEqualPay" + ,"x":"5523" + ,"y":"2513" + ,"id":"#BlackWomensEqualPay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#brexit" + ,"x":"13633" + ,"y":"5213" + ,"id":"#brexit" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Brexit" + ,"x":"1451" + ,"y":"1283" + ,"id":"#Brexit" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BrexitVote" + ,"x":"35255" + ,"y":"17038" + ,"id":"#BrexitVote" + ,"color":"rgb(255,0,0)" + ,"size":"4" + }, + { + "label":"#Brussels" + ,"x":"45696" + ,"y":"17560" + ,"id":"#Brussels" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#BuildTheWall" + ,"x":"15416" + ,"y":"4254" + ,"id":"#BuildTheWall" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Bush" + ,"x":"4010" + ,"y":"1680" + ,"id":"#Bush" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CA4Trump" + ,"x":"9309" + ,"y":"2561" + ,"id":"#CA4Trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#campaignfinance" + ,"x":"4153" + ,"y":"2443" + ,"id":"#campaignfinance" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CAPrimary" + ,"x":"19771" + ,"y":"6448" + ,"id":"#CAPrimary" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#Caribbean" + ,"x":"674" + ,"y":"312" + ,"id":"#Caribbean" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Carrier" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Carrier" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CaucusForTrump" + ,"x":"54347" + ,"y":"18928" + ,"id":"#CaucusForTrump" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#CaucusForTrumphttps" + ,"x":"6913" + ,"y":"2951" + ,"id":"#CaucusForTrumphttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CBNNews" + ,"x":"2955" + ,"y":"1027" + ,"id":"#CBNNews" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ChangeAgents" + ,"x":"1096" + ,"y":"594" + ,"id":"#ChangeAgents" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Charleston9" + ,"x":"3522" + ,"y":"1450" + ,"id":"#Charleston9" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CincoDeMayo" + ,"x":"115107" + ,"y":"82653" + ,"id":"#CincoDeMayo" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#CitizensUnited" + ,"x":"6146" + ,"y":"3262" + ,"id":"#CitizensUnited" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#Clinton" + ,"x":"11435" + ,"y":"5530" + ,"id":"#Clinton" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ClintonKaine" + ,"x":"6579" + ,"y":"2664" + ,"id":"#ClintonKaine" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#CNN" + ,"x":"10608" + ,"y":"3066" + ,"id":"#CNN" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CoastGuardDay" + ,"x":"35595" + ,"y":"10741" + ,"id":"#CoastGuardDay" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#Colbert" + ,"x":"4719" + ,"y":"1635" + ,"id":"#Colbert" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CommanderInChiefForum" + ,"x":"23543" + ,"y":"9687" + ,"id":"#CommanderInChiefForum" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#CommonCore" + ,"x":"6729" + ,"y":"2271" + ,"id":"#CommonCore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CommonLaw" + ,"x":"2351" + ,"y":"801" + ,"id":"#CommonLaw" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CreatorsAskHRC" + ,"x":"5516" + ,"y":"1921" + ,"id":"#CreatorsAskHRC" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#CripTheVote" + ,"x":"1293" + ,"y":"452" + ,"id":"#CripTheVote" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CrookedHillary" + ,"x":"328929" + ,"y":"141810" + ,"id":"#CrookedHillary" + ,"color":"rgb(0,0,255)" + ,"size":"14" + }, + { + "label":"#Cruz" + ,"x":"2361" + ,"y":"876" + ,"id":"#Cruz" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CruzFraud" + ,"x":"10184" + ,"y":"6228" + ,"id":"#CruzFraud" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CTPrimary" + ,"x":"11128" + ,"y":"4806" + ,"id":"#CTPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DACA" + ,"x":"1163" + ,"y":"482" + ,"id":"#DACA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DavidCameron" + ,"x":"1826" + ,"y":"683" + ,"id":"#DavidCameron" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DDay" + ,"x":"41913" + ,"y":"16809" + ,"id":"#DDay" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#debate" + ,"x":"21098" + ,"y":"12899" + ,"id":"#debate" + ,"color":"rgb(0,255,255)" + ,"size":"4" + }, + { + "label":"#Debate" + ,"x":"1946" + ,"y":"1523" + ,"id":"#Debate" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#debatenight" + ,"x":"612778" + ,"y":"363020" + ,"id":"#debatenight" + ,"color":"rgb(0,0,255)" + ,"size":"19" + }, + { + "label":"#DebateNight" + ,"x":"755436" + ,"y":"367087" + ,"id":"#DebateNight" + ,"color":"rgb(0,0,255)" + ,"size":"33" + }, + { + "label":"#Debates2016" + ,"x":"310728" + ,"y":"154973" + ,"id":"#Debates2016" + ,"color":"rgb(0,0,255)" + ,"size":"14" + }, + { + "label":"#Decision2016" + ,"x":"4893" + ,"y":"1913" + ,"id":"#Decision2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DeclareYourAmbition" + ,"x":"2652" + ,"y":"1464" + ,"id":"#DeclareYourAmbition" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DefendtheSecond" + ,"x":"15524" + ,"y":"7523" + ,"id":"#DefendtheSecond" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#DemConvention" + ,"x":"35768" + ,"y":"10859" + ,"id":"#DemConvention" + ,"color":"rgb(255,0,0)" + ,"size":"14" + }, + { + "label":"#DemocraticSitIn" + ,"x":"9485" + ,"y":"3016" + ,"id":"#DemocraticSitIn" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DemPlatform" + ,"x":"8147" + ,"y":"3785" + ,"id":"#DemPlatform" + ,"color":"rgb(0,255,0)" + ,"size":"4" + }, + { + "label":"#DemsinPhilly" + ,"x":"23356" + ,"y":"10626" + ,"id":"#DemsinPhilly" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#DemsInPhilly" + ,"x":"369246" + ,"y":"136660" + ,"id":"#DemsInPhilly" + ,"color":"rgb(0,0,255)" + ,"size":"51" + }, + { + "label":"#DemsinPHL" + ,"x":"14709" + ,"y":"10489" + ,"id":"#DemsinPHL" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#DemsInPHL" + ,"x":"11997" + ,"y":"3801" + ,"id":"#DemsInPHL" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#DEPrimary" + ,"x":"11128" + ,"y":"4806" + ,"id":"#DEPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DisarmHate" + ,"x":"31231" + ,"y":"25916" + ,"id":"#DisarmHate" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#DivoDeJuarez" + ,"x":"991" + ,"y":"381" + ,"id":"#DivoDeJuarez" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Diwali" + ,"x":"1710" + ,"y":"833" + ,"id":"#Diwali" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DNC" + ,"x":"49552" + ,"y":"16484" + ,"id":"#DNC" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#DNCinPHL" + ,"x":"684" + ,"y":"274" + ,"id":"#DNCinPHL" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Donald" + ,"x":"8926" + ,"y":"2387" + ,"id":"#Donald" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DonaldTrump" + ,"x":"18157" + ,"y":"6925" + ,"id":"#DonaldTrump" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#dtmag" + ,"x":"20114" + ,"y":"6045" + ,"id":"#dtmag" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#EarthDay" + ,"x":"2834" + ,"y":"1439" + ,"id":"#EarthDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EastVillage" + ,"x":"1226" + ,"y":"552" + ,"id":"#EastVillage" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EauClaire" + ,"x":"14266" + ,"y":"4767" + ,"id":"#EauClaire" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ECONOMY" + ,"x":"4256" + ,"y":"1651" + ,"id":"#ECONOMY" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#election2016" + ,"x":"3708" + ,"y":"2119" + ,"id":"#election2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ElectionDay" + ,"x":"15524" + ,"y":"7523" + ,"id":"#ElectionDay" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Elkhart" + ,"x":"10283" + ,"y":"3124" + ,"id":"#Elkhart" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EndCommonCore" + ,"x":"11832" + ,"y":"4411" + ,"id":"#EndCommonCore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EndGunViolence" + ,"x":"2913" + ,"y":"844" + ,"id":"#EndGunViolence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Enjoy" + ,"x":"10737" + ,"y":"2482" + ,"id":"#Enjoy" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#enough" + ,"x":"4151" + ,"y":"1904" + ,"id":"#enough" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Enough" + ,"x":"4965" + ,"y":"2117" + ,"id":"#Enough" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EstoyConElla" + ,"x":"2072" + ,"y":"1006" + ,"id":"#EstoyConElla" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#Excellent" + ,"x":"3157" + ,"y":"940" + ,"id":"#Excellent" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#extremevetting" + ,"x":"7551" + ,"y":"4484" + ,"id":"#extremevetting" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FAIL" + ,"x":"7230" + ,"y":"4894" + ,"id":"#FAIL" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#fairandbalancedmyass" + ,"x":"4672" + ,"y":"1687" + ,"id":"#fairandbalancedmyass" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FallonTonight" + ,"x":"10484" + ,"y":"2515" + ,"id":"#FallonTonight" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FeelTheBern" + ,"x":"1217" + ,"y":"476" + ,"id":"#FeelTheBern" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FightForFamilies" + ,"x":"6119" + ,"y":"3013" + ,"id":"#FightForFamilies" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#Filibuster" + ,"x":"4965" + ,"y":"2117" + ,"id":"#Filibuster" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FirstInPOTUS" + ,"x":"1540" + ,"y":"513" + ,"id":"#FirstInPOTUS" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FITN" + ,"x":"145416" + ,"y":"48915" + ,"id":"#FITN" + ,"color":"rgb(0,0,255)" + ,"size":"23" + }, + { + "label":"#fixdemocracyfirst)" + ,"x":"583" + ,"y":"317" + ,"id":"#fixdemocracyfirst)" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FlashbackFriday" + ,"x":"32212" + ,"y":"16769" + ,"id":"#FlashbackFriday" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#FNS" + ,"x":"11825" + ,"y":"3034" + ,"id":"#FNS" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Ford" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Ford" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Fox" + ,"x":"6168" + ,"y":"1841" + ,"id":"#Fox" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FoxNews" + ,"x":"16130" + ,"y":"5602" + ,"id":"#FoxNews" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#Frozen" + ,"x":"62473" + ,"y":"26094" + ,"id":"#Frozen" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#GIBill" + ,"x":"1215" + ,"y":"471" + ,"id":"#GIBill" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GO" + ,"x":"6801" + ,"y":"2047" + ,"id":"#GO" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GoldenGlobe" + ,"x":"6188" + ,"y":"1714" + ,"id":"#GoldenGlobe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#goodtrouble" + ,"x":"12285" + ,"y":"5417" + ,"id":"#goodtrouble" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GoodTrouble" + ,"x":"12170" + ,"y":"5689" + ,"id":"#GoodTrouble" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GOP" + ,"x":"16541" + ,"y":"5995" + ,"id":"#GOP" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#GOPConvention" + ,"x":"84256" + ,"y":"18578" + ,"id":"#GOPConvention" + ,"color":"rgb(0,0,255)" + ,"size":"3" + }, + { + "label":"#GOPdebate" + ,"x":"5582" + ,"y":"3397" + ,"id":"#GOPdebate" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GOPDebate" + ,"x":"214831" + ,"y":"77543" + ,"id":"#GOPDebate" + ,"color":"rgb(0,0,255)" + ,"size":"20" + }, + { + "label":"#GOPinCLE" + ,"x":"26046" + ,"y":"7182" + ,"id":"#GOPinCLE" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#GPLFers" + ,"x":"5989" + ,"y":"2414" + ,"id":"#GPLFers" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Greta" + ,"x":"7863" + ,"y":"2754" + ,"id":"#Greta" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#gunviolence" + ,"x":"7947" + ,"y":"3589" + ,"id":"#gunviolence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GunViolence" + ,"x":"6220" + ,"y":"2532" + ,"id":"#GunViolence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HaileyPuckett" + ,"x":"6445" + ,"y":"1962" + ,"id":"#HaileyPuckett" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Hannity" + ,"x":"26030" + ,"y":"7618" + ,"id":"#Hannity" + ,"color":"rgb(255,255,0)" + ,"size":"3" + }, + { + "label":"#HarveyPitt" + ,"x":"2799" + ,"y":"695" + ,"id":"#HarveyPitt" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Hillary2016" + ,"x":"10727" + ,"y":"4626" + ,"id":"#Hillary2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryClinton" + ,"x":"1238" + ,"y":"568" + ,"id":"#HillaryClinton" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryKaine2016" + ,"x":"12850" + ,"y":"5971" + ,"id":"#HillaryKaine2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryOnCNN" + ,"x":"1426" + ,"y":"837" + ,"id":"#HillaryOnCNN" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryOnGMA" + ,"x":"977" + ,"y":"499" + ,"id":"#HillaryOnGMA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HispanicHeritageMonth" + ,"x":"2384" + ,"y":"1407" + ,"id":"#HispanicHeritageMonth" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HistoryMade" + ,"x":"5685" + ,"y":"1347" + ,"id":"#HistoryMade" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#holdthefloor" + ,"x":"3153" + ,"y":"1152" + ,"id":"#holdthefloor" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HoustonFlood" + ,"x":"2993" + ,"y":"1231" + ,"id":"#HoustonFlood" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HRC4PA" + ,"x":"1110" + ,"y":"599" + ,"id":"#HRC4PA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#IACaucus" + ,"x":"71648" + ,"y":"28963" + ,"id":"#IACaucus" + ,"color":"rgb(0,0,255)" + ,"size":"14" + }, + { + "label":"#IAPolitics" + ,"x":"5773" + ,"y":"1901" + ,"id":"#IAPolitics" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ICYMI" + ,"x":"54728" + ,"y":"23370" + ,"id":"#ICYMI" + ,"color":"rgb(0,0,255)" + ,"size":"5" + }, + { + "label":"#imwithher" + ,"x":"1293" + ,"y":"452" + ,"id":"#imwithher" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ImWithHer" + ,"x":"158924" + ,"y":"52168" + ,"id":"#ImWithHer" + ,"color":"rgb(0,0,255)" + ,"size":"18" + }, + { + "label":"#ImWithHernandez" + ,"x":"20705" + ,"y":"6131" + ,"id":"#ImWithHernandez" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#imwithyou" + ,"x":"10923" + ,"y":"4685" + ,"id":"#imwithyou" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Imwithyou" + ,"x":"53939" + ,"y":"20561" + ,"id":"#Imwithyou" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#ImWithYou" + ,"x":"1015305" + ,"y":"371621" + ,"id":"#ImWithYou" + ,"color":"rgb(0,0,255)" + ,"size":"44" + }, + { + "label":"#ImWithYouhttps" + ,"x":"83152" + ,"y":"32428" + ,"id":"#ImWithYouhttps" + ,"color":"rgb(0,0,255)" + ,"size":"4" + }, + { + "label":"#Indiana" + ,"x":"14767" + ,"y":"4837" + ,"id":"#Indiana" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#INDPrimary" + ,"x":"13689" + ,"y":"3934" + ,"id":"#INDPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#INPrimary" + ,"x":"133066" + ,"y":"48025" + ,"id":"#INPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"10" + }, + { + "label":"#InternationalNursesDay" + ,"x":"4674" + ,"y":"1995" + ,"id":"#InternationalNursesDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Iowa" + ,"x":"3788" + ,"y":"1236" + ,"id":"#Iowa" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#IowaCaucus" + ,"x":"7961" + ,"y":"3311" + ,"id":"#IowaCaucus" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#IranDeal" + ,"x":"3458" + ,"y":"1089" + ,"id":"#IranDeal" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#iRegistered" + ,"x":"3206" + ,"y":"1235" + ,"id":"#iRegistered" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ISIS" + ,"x":"15499" + ,"y":"6680" + ,"id":"#ISIS" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#iVoted" + ,"x":"4350" + ,"y":"1581" + ,"id":"#iVoted" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#jenniferrubin" + ,"x":"5205" + ,"y":"1416" + ,"id":"#jenniferrubin" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JimmyFallon" + ,"x":"15449" + ,"y":"4411" + ,"id":"#JimmyFallon" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Jobs" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Jobs" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JohnRyder" + ,"x":"13719" + ,"y":"4877" + ,"id":"#JohnRyder" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Jonas" + ,"x":"2299" + ,"y":"741" + ,"id":"#Jonas" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JuanGabriel" + ,"x":"991" + ,"y":"381" + ,"id":"#JuanGabriel" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JuntosSePuede" + ,"x":"2557" + ,"y":"1014" + ,"id":"#JuntosSePuede" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KansasCaucus" + ,"x":"7255" + ,"y":"1763" + ,"id":"#KansasCaucus" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KenLangone" + ,"x":"6168" + ,"y":"1841" + ,"id":"#KenLangone" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KentuckyDerby" + ,"x":"4576" + ,"y":"1772" + ,"id":"#KentuckyDerby" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KhizrKhan" + ,"x":"11269" + ,"y":"6827" + ,"id":"#KhizrKhan" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LaborDay" + ,"x":"27247" + ,"y":"10177" + ,"id":"#LaborDay" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#LAflood" + ,"x":"1475" + ,"y":"670" + ,"id":"#LAflood" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LaudatoSi" + ,"x":"975" + ,"y":"381" + ,"id":"#LaudatoSi" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Laurence" + ,"x":"3291" + ,"y":"1229" + ,"id":"#Laurence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#laurencetribe" + ,"x":"1943" + ,"y":"639" + ,"id":"#laurencetribe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LaurenceTribe" + ,"x":"2130" + ,"y":"754" + ,"id":"#LaurenceTribe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LawandOrder" + ,"x":"28433" + ,"y":"10015" + ,"id":"#LawandOrder" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#LeadRight2016" + ,"x":"9207" + ,"y":"2966" + ,"id":"#LeadRight2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LESM" + ,"x":"132517" + ,"y":"43642" + ,"id":"#LESM" + ,"color":"rgb(0,0,255)" + ,"size":"5" + }, + { + "label":"#LGBT" + ,"x":"4547" + ,"y":"1759" + ,"id":"#LGBT" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#LibrarianOfCongress" + ,"x":"1652" + ,"y":"634" + ,"id":"#LibrarianOfCongress" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LightweightSenatorMarcoRubio" + ,"x":"11708" + ,"y":"4922" + ,"id":"#LightweightSenatorMarcoRubio" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LittleMarco" + ,"x":"13353" + ,"y":"4545" + ,"id":"#LittleMarco" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LoneStarState" + ,"x":"4696" + ,"y":"1463" + ,"id":"#LoneStarState" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LoveTrumpsHate" + ,"x":"37806" + ,"y":"17409" + ,"id":"#LoveTrumpsHate" + ,"color":"rgb(255,0,0)" + ,"size":"6" + }, + { + "label":"#LSSC" + ,"x":"7543" + ,"y":"2758" + ,"id":"#LSSC" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#LyingTed" + ,"x":"42159" + ,"y":"16101" + ,"id":"#LyingTed" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#MadeForHistory" + ,"x":"1322" + ,"y":"521" + ,"id":"#MadeForHistory" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MadeInAmerica" + ,"x":"1982" + ,"y":"818" + ,"id":"#MadeInAmerica" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MAGA" + ,"x":"1220960" + ,"y":"426343" + ,"id":"#MAGA" + ,"color":"rgb(0,0,255)" + ,"size":"57" + }, + { + "label":"#MAGAhttps" + ,"x":"11943" + ,"y":"4044" + ,"id":"#MAGAhttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Mahalo" + ,"x":"8753" + ,"y":"2639" + ,"id":"#Mahalo" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MaitnerStrong" + ,"x":"6412" + ,"y":"2044" + ,"id":"#MaitnerStrong" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#makeamericagreatagain" + ,"x":"3369" + ,"y":"950" + ,"id":"#makeamericagreatagain" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaGreatAgain" + ,"x":"2624619" + ,"y":"917605" + ,"id":"#MakeAmericaGreatAgain" + ,"color":"rgb(0,0,255)" + ,"size":"204" + }, + { + "label":"#MAKEAMERICAGREATAGAIN" + ,"x":"21961" + ,"y":"7130" + ,"id":"#MAKEAMERICAGREATAGAIN" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#MakeAmericaGreatAgainhttps" + ,"x":"29922" + ,"y":"9302" + ,"id":"#MakeAmericaGreatAgainhttps" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#MakeAmericaGreatAgain@Snapchat" + ,"x":"10388" + ,"y":"3312" + ,"id":"#MakeAmericaGreatAgain@Snapchat" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaGreatAgainTickets" + ,"x":"7116" + ,"y":"2893" + ,"id":"#MakeAmericaGreatAgainTickets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaGreatAgainWatch" + ,"x":"12596" + ,"y":"5777" + ,"id":"#MakeAmericaGreatAgainWatch" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaSafeAgain" + ,"x":"30751" + ,"y":"9303" + ,"id":"#MakeAmericaSafeAgain" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#MakeAmericaSafeAgainhttps" + ,"x":"16937" + ,"y":"7060" + ,"id":"#MakeAmericaSafeAgainhttps" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#makersandtakers" + ,"x":"1111" + ,"y":"516" + ,"id":"#makersandtakers" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeYoutubeGreatAgain" + ,"x":"8650" + ,"y":"3249" + ,"id":"#MakeYoutubeGreatAgain" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MaryBrigidMcManamon" + ,"x":"4712" + ,"y":"1677" + ,"id":"#MaryBrigidMcManamon" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#MattSchlapp" + ,"x":"5205" + ,"y":"1416" + ,"id":"#MattSchlapp" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MayDay" + ,"x":"5371" + ,"y":"2214" + ,"id":"#MayDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MDPrimary" + ,"x":"11128" + ,"y":"4806" + ,"id":"#MDPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MDW" + ,"x":"27640" + ,"y":"10998" + ,"id":"#MDW" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#media" + ,"x":"17312" + ,"y":"5298" + ,"id":"#media" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Mediafraud" + ,"x":"14973" + ,"y":"5676" + ,"id":"#Mediafraud" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#MeetTheTrumps" + ,"x":"13313" + ,"y":"3058" + ,"id":"#MeetTheTrumps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MegynKellyPresents" + ,"x":"6371" + ,"y":"1423" + ,"id":"#MegynKellyPresents" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MemorialDay" + ,"x":"7532" + ,"y":"3046" + ,"id":"#MemorialDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Mexico" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Mexico" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MichaelBrown" + ,"x":"1096" + ,"y":"594" + ,"id":"#MichaelBrown" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MichaelMoore" + ,"x":"4601" + ,"y":"1690" + ,"id":"#MichaelMoore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MikePence" + ,"x":"2975" + ,"y":"3037" + ,"id":"#MikePence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MoreInCommon" + ,"x":"1180" + ,"y":"386" + ,"id":"#MoreInCommon" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Mormon" + ,"x":"9960" + ,"y":"3390" + ,"id":"#Mormon" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MorningJoe" + ,"x":"5995" + ,"y":"1634" + ,"id":"#MorningJoe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MothersDay" + ,"x":"1936" + ,"y":"767" + ,"id":"#MothersDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MothersoftheMovement" + ,"x":"1096" + ,"y":"594" + ,"id":"#MothersoftheMovement" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MSM" + ,"x":"36501" + ,"y":"14214" + ,"id":"#MSM" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#MSNBCTownhall" + ,"x":"8943" + ,"y":"3677" + ,"id":"#MSNBCTownhall" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#MSPrimary" + ,"x":"9389" + ,"y":"3087" + ,"id":"#MSPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MyTeacherIsWeird" + ,"x":"10484" + ,"y":"2515" + ,"id":"#MyTeacherIsWeird" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NAACP107" + ,"x":"3691" + ,"y":"3034" + ,"id":"#NAACP107" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NABJNAHJ16" + ,"x":"5765" + ,"y":"1713" + ,"id":"#NABJNAHJ16" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NASCAR" + ,"x":"9205" + ,"y":"3361" + ,"id":"#NASCAR" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NationalVoterRegistrationDay" + ,"x":"41258" + ,"y":"27555" + ,"id":"#NationalVoterRegistrationDay" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#NATO" + ,"x":"28727" + ,"y":"9887" + ,"id":"#NATO" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#NaturalBorn" + ,"x":"2351" + ,"y":"801" + ,"id":"#NaturalBorn" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NBCNewsForum" + ,"x":"48238" + ,"y":"24699" + ,"id":"#NBCNewsForum" + ,"color":"rgb(0,0,255)" + ,"size":"11" + }, + { + "label":"#NeilCavuto" + ,"x":"6168" + ,"y":"1841" + ,"id":"#NeilCavuto" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NetNeutrality" + ,"x":"2235" + ,"y":"954" + ,"id":"#NetNeutrality" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NevadaCaucus" + ,"x":"24738" + ,"y":"7918" + ,"id":"#NevadaCaucus" + ,"color":"rgb(255,255,0)" + ,"size":"4" + }, + { + "label":"#NeverCruz" + ,"x":"25288" + ,"y":"10252" + ,"id":"#NeverCruz" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#NeverDems" + ,"x":"9309" + ,"y":"2561" + ,"id":"#NeverDems" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NeverForget" + ,"x":"753" + ,"y":"447" + ,"id":"#NeverForget" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NeverHillary" + ,"x":"110009" + ,"y":"38421" + ,"id":"#NeverHillary" + ,"color":"rgb(0,0,255)" + ,"size":"6" + }, + { + "label":"#NeverTrump" + ,"x":"47837" + ,"y":"16113" + ,"id":"#NeverTrump" + ,"color":"rgb(0,0,255)" + ,"size":"3" + }, + { + "label":"#NewDay" + ,"x":"7340" + ,"y":"2242" + ,"id":"#NewDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NewHampshire" + ,"x":"6116" + ,"y":"2602" + ,"id":"#NewHampshire" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NewYork" + ,"x":"2299" + ,"y":"741" + ,"id":"#NewYork" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NewYorkValues" + ,"x":"75997" + ,"y":"25947" + ,"id":"#NewYorkValues" + ,"color":"rgb(0,0,255)" + ,"size":"6" + }, + { + "label":"#NHPolitics" + ,"x":"9941" + ,"y":"4002" + ,"id":"#NHPolitics" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#NHPrimary" + ,"x":"41886" + ,"y":"13648" + ,"id":"#NHPrimary" + ,"color":"rgb(255,0,0)" + ,"size":"6" + }, + { + "label":"#NoBillNoBreak" + ,"x":"55560" + ,"y":"25884" + ,"id":"#NoBillNoBreak" + ,"color":"rgb(0,0,255)" + ,"size":"8" + }, + { + "label":"#NoLoyalty" + ,"x":"7223" + ,"y":"2341" + ,"id":"#NoLoyalty" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NoMoreSilence" + ,"x":"11100" + ,"y":"4741" + ,"id":"#NoMoreSilence" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#NotOneMore" + ,"x":"2964" + ,"y":"1062" + ,"id":"#NotOneMore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NPS100" + ,"x":"9026" + ,"y":"3339" + ,"id":"#NPS100" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#NVcaucus" + ,"x":"9193" + ,"y":"2106" + ,"id":"#NVcaucus" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NYCPride" + ,"x":"15834" + ,"y":"4812" + ,"id":"#NYCPride" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#NYPrimary" + ,"x":"75453" + ,"y":"25566" + ,"id":"#NYPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"8" + }, + { + "label":"#NYPrimaryTickets" + ,"x":"7872" + ,"y":"2743" + ,"id":"#NYPrimaryTickets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Obamacare" + ,"x":"79907" + ,"y":"33017" + ,"id":"#Obamacare" + ,"color":"rgb(0,0,255)" + ,"size":"4" + }, + { + "label":"#ObamaCare" + ,"x":"22498" + ,"y":"8431" + ,"id":"#ObamaCare" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#OHHillYes" + ,"x":"2017" + ,"y":"564" + ,"id":"#OHHillYes" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Olmstead" + ,"x":"2425" + ,"y":"715" + ,"id":"#Olmstead" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#OnTheRecord" + ,"x":"9675" + ,"y":"2857" + ,"id":"#OnTheRecord" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#OpeningCeremony" + ,"x":"35693" + ,"y":"10719" + ,"id":"#OpeningCeremony" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#OpioidAwarenessWeek" + ,"x":"5353" + ,"y":"2116" + ,"id":"#OpioidAwarenessWeek" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Orlando" + ,"x":"2311" + ,"y":"1542" + ,"id":"#Orlando" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#OrlandoUnited" + ,"x":"5782" + ,"y":"2452" + ,"id":"#OrlandoUnited" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#ORPrimary" + ,"x":"7292" + ,"y":"2886" + ,"id":"#ORPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#PAPrimary" + ,"x":"20535" + ,"y":"8009" + ,"id":"#PAPrimary" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#PhilandoCastile" + ,"x":"25057" + ,"y":"10433" + ,"id":"#PhilandoCastile" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#Politician" + ,"x":"7230" + ,"y":"4894" + ,"id":"#Politician" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#polls" + ,"x":"13376" + ,"y":"5587" + ,"id":"#polls" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Polls" + ,"x":"18329" + ,"y":"7925" + ,"id":"#Polls" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#POTUS" + ,"x":"109849" + ,"y":"38806" + ,"id":"#POTUS" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#presidenttrump" + ,"x":"14309" + ,"y":"5356" + ,"id":"#presidenttrump" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#primary" + ,"x":"14309" + ,"y":"5356" + ,"id":"#primary" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#PrimaryDay" + ,"x":"27979" + ,"y":"11934" + ,"id":"#PrimaryDay" + ,"color":"rgb(255,255,0)" + ,"size":"6" + }, + { + "label":"#Prince" + ,"x":"1238" + ,"y":"568" + ,"id":"#Prince" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Pulse" + ,"x":"1452" + ,"y":"444" + ,"id":"#Pulse" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#PurpleHeartDay" + ,"x":"20909" + ,"y":"7416" + ,"id":"#PurpleHeartDay" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Racine" + ,"x":"14266" + ,"y":"4767" + ,"id":"#Racine" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RepMikeKelly" + ,"x":"8630" + ,"y":"2286" + ,"id":"#RepMikeKelly" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RestoreTheVRA" + ,"x":"15986" + ,"y":"6363" + ,"id":"#RestoreTheVRA" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#RiggedSystem" + ,"x":"78550" + ,"y":"40507" + ,"id":"#RiggedSystem" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#Rio2016" + ,"x":"35693" + ,"y":"10719" + ,"id":"#Rio2016" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#RIP" + ,"x":"991" + ,"y":"381" + ,"id":"#RIP" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RIPrimary" + ,"x":"8469" + ,"y":"2769" + ,"id":"#RIPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RIPrimaryhttps" + ,"x":"11128" + ,"y":"4806" + ,"id":"#RIPrimaryhttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RNC" + ,"x":"3340" + ,"y":"1075" + ,"id":"#RNC" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RNCinCLE" + ,"x":"511766" + ,"y":"238639" + ,"id":"#RNCinCLE" + ,"color":"rgb(0,0,255)" + ,"size":"54" + }, + { + "label":"#RNCInCLE" + ,"x":"5747" + ,"y":"4334" + ,"id":"#RNCInCLE" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#RNCINCLE" + ,"x":"1749" + ,"y":"1295" + ,"id":"#RNCINCLE" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RNCinCLEhttps" + ,"x":"47497" + ,"y":"16629" + ,"id":"#RNCinCLEhttps" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#RNCwithBernie" + ,"x":"15660" + ,"y":"7034" + ,"id":"#RNCwithBernie" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#RobotRubio" + ,"x":"10759" + ,"y":"4585" + ,"id":"#RobotRubio" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ROGERAILES" + ,"x":"4601" + ,"y":"1690" + ,"id":"#ROGERAILES" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RogerStone" + ,"x":"7299" + ,"y":"2728" + ,"id":"#RogerStone" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RollCallVote" + ,"x":"9545" + ,"y":"2520" + ,"id":"#RollCallVote" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#RosanellEaton" + ,"x":"1648" + ,"y":"903" + ,"id":"#RosanellEaton" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RTM2016" + ,"x":"14847" + ,"y":"4296" + ,"id":"#RTM2016" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Rubio" + ,"x":"4010" + ,"y":"1680" + ,"id":"#Rubio" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SallyRideDay" + ,"x":"6575" + ,"y":"2977" + ,"id":"#SallyRideDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SaveElephants" + ,"x":"1359" + ,"y":"541" + ,"id":"#SaveElephants" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SayHerName" + ,"x":"896" + ,"y":"478" + ,"id":"#SayHerName" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SB50" + ,"x":"9113" + ,"y":"2328" + ,"id":"#SB50" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SCOTUS" + ,"x":"34419" + ,"y":"15999" + ,"id":"#SCOTUS" + ,"color":"rgb(255,0,0)" + ,"size":"4" + }, + { + "label":"#SCPrimary" + ,"x":"40572" + ,"y":"17556" + ,"id":"#SCPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#SecondAmendment" + ,"x":"12162" + ,"y":"6718" + ,"id":"#SecondAmendment" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ShesWithUs" + ,"x":"1752" + ,"y":"869" + ,"id":"#ShesWithUs" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SheWon" + ,"x":"72288" + ,"y":"21180" + ,"id":"#SheWon" + ,"color":"rgb(0,0,255)" + ,"size":"5" + }, + { + "label":"#sitin" + ,"x":"10860" + ,"y":"4433" + ,"id":"#sitin" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#slipping" + ,"x":"18329" + ,"y":"7925" + ,"id":"#slipping" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#smallbiz" + ,"x":"9567" + ,"y":"3915" + ,"id":"#smallbiz" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#SmallBizWeek" + ,"x":"905" + ,"y":"495" + ,"id":"#SmallBizWeek" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SOTU" + ,"x":"24315" + ,"y":"9395" + ,"id":"#SOTU" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#SouthCarolina" + ,"x":"4780" + ,"y":"1631" + ,"id":"#SouthCarolina" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SouthCarolinaPrimary" + ,"x":"3990" + ,"y":"1256" + ,"id":"#SouthCarolinaPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Srebrenica" + ,"x":"753" + ,"y":"447" + ,"id":"#Srebrenica" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StandTogether" + ,"x":"3179" + ,"y":"1689" + ,"id":"#StandTogether" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StandWithLouisiana" + ,"x":"45253" + ,"y":"17551" + ,"id":"#StandWithLouisiana" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#StanleyCup" + ,"x":"22250" + ,"y":"7340" + ,"id":"#StanleyCup" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Statehood" + ,"x":"728" + ,"y":"378" + ,"id":"#Statehood" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StopCommonCore" + ,"x":"12250" + ,"y":"4320" + ,"id":"#StopCommonCore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StopGunViolence" + ,"x":"11916" + ,"y":"5709" + ,"id":"#StopGunViolence" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#StoptheHate" + ,"x":"9087" + ,"y":"5555" + ,"id":"#StoptheHate" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#StrongerTogether" + ,"x":"43362" + ,"y":"18491" + ,"id":"#StrongerTogether" + ,"color":"rgb(0,0,255)" + ,"size":"6" + }, + { + "label":"#SuperBowlSunday" + ,"x":"9113" + ,"y":"2328" + ,"id":"#SuperBowlSunday" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SuperSaturday" + ,"x":"33932" + ,"y":"10508" + ,"id":"#SuperSaturday" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#SuperTuesday" + ,"x":"283887" + ,"y":"98610" + ,"id":"#SuperTuesday" + ,"color":"rgb(0,0,255)" + ,"size":"18" + }, + { + "label":"#taxplan" + ,"x":"8126" + ,"y":"3355" + ,"id":"#taxplan" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TBT" + ,"x":"49987" + ,"y":"16606" + ,"id":"#TBT" + ,"color":"rgb(0,0,255)" + ,"size":"10" + }, + { + "label":"#TBThttps" + ,"x":"4443" + ,"y":"2015" + ,"id":"#TBThttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TeacherAppreciationDay" + ,"x":"7744" + ,"y":"3340" + ,"id":"#TeacherAppreciationDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Teachers4Trump" + ,"x":"9309" + ,"y":"2561" + ,"id":"#Teachers4Trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TeamTrump" + ,"x":"25923" + ,"y":"8263" + ,"id":"#TeamTrump" + ,"color":"rgb(255,255,0)" + ,"size":"4" + }, + { + "label":"#TeamUSA" + ,"x":"35693" + ,"y":"10719" + ,"id":"#TeamUSA" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#Ted" + ,"x":"5782" + ,"y":"2221" + ,"id":"#Ted" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TedCruz" + ,"x":"4481" + ,"y":"1555" + ,"id":"#TedCruz" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#TerenceCrutcher" + ,"x":"24955" + ,"y":"12204" + ,"id":"#TerenceCrutcher" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#ThankAVet" + ,"x":"11030" + ,"y":"3879" + ,"id":"#ThankAVet" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ThanksObama" + ,"x":"2446" + ,"y":"1202" + ,"id":"#ThanksObama" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TheDonald" + ,"x":"15449" + ,"y":"4411" + ,"id":"#TheDonald" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#TheTonightShow" + ,"x":"15449" + ,"y":"4411" + ,"id":"#TheTonightShow" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#TitleIX" + ,"x":"8580" + ,"y":"2467" + ,"id":"#TitleIX" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TPP" + ,"x":"13196" + ,"y":"5045" + ,"id":"#TPP" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#trump" + ,"x":"3369" + ,"y":"950" + ,"id":"#trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump" + ,"x":"60453" + ,"y":"20738" + ,"id":"#Trump" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#TRUMP" + ,"x":"15287" + ,"y":"4187" + ,"id":"#TRUMP" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#trump2016" + ,"x":"14405" + ,"y":"3858" + ,"id":"#trump2016" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#Trump2016" + ,"x":"3410805" + ,"y":"1200797" + ,"id":"#Trump2016" + ,"color":"rgb(0,0,255)" + ,"size":"276" + }, + { + "label":"#TRUMP2016" + ,"x":"13763" + ,"y":"6895" + ,"id":"#TRUMP2016" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Trump2016https" + ,"x":"277707" + ,"y":"101118" + ,"id":"#Trump2016https" + ,"color":"rgb(0,0,255)" + ,"size":"27" + }, + { + "label":"#Trump2016Tickets" + ,"x":"7225" + ,"y":"2380" + ,"id":"#Trump2016Tickets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump360" + ,"x":"7706" + ,"y":"2773" + ,"id":"#Trump360" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump4President" + ,"x":"2625" + ,"y":"686" + ,"id":"#Trump4President" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump4Vets" + ,"x":"13269" + ,"y":"5249" + ,"id":"#Trump4Vets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpCountry" + ,"x":"9960" + ,"y":"3390" + ,"id":"#TrumpCountry" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpDallas" + ,"x":"13227" + ,"y":"4469" + ,"id":"#TrumpDallas" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpinEverett" + ,"x":"7882" + ,"y":"2273" + ,"id":"#TrumpinEverett" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpIsWithYou" + ,"x":"13024" + ,"y":"3779" + ,"id":"#TrumpIsWithYou" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpLV" + ,"x":"6110" + ,"y":"2532" + ,"id":"#TrumpLV" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpMovement" + ,"x":"17418" + ,"y":"7632" + ,"id":"#TrumpMovement" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#TrumpNV" + ,"x":"4457" + ,"y":"1622" + ,"id":"#TrumpNV" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpPence16" + ,"x":"525664" + ,"y":"171366" + ,"id":"#TrumpPence16" + ,"color":"rgb(0,0,255)" + ,"size":"22" + }, + { + "label":"#TrumpPence16https" + ,"x":"33408" + ,"y":"18434" + ,"id":"#TrumpPence16https" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#TrumpPence2016" + ,"x":"38871" + ,"y":"11177" + ,"id":"#TrumpPence2016" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#TrumpSupporters" + ,"x":"7806" + ,"y":"2812" + ,"id":"#TrumpSupporters" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpTrain" + ,"x":"368147" + ,"y":"120335" + ,"id":"#TrumpTrain" + ,"color":"rgb(0,0,255)" + ,"size":"29" + }, + { + "label":"#TrumpTrainhttps" + ,"x":"31772" + ,"y":"10646" + ,"id":"#TrumpTrainhttps" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#TrumpWaikiki" + ,"x":"8753" + ,"y":"2639" + ,"id":"#TrumpWaikiki" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpWon" + ,"x":"69829" + ,"y":"26816" + ,"id":"#TrumpWon" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#TrumpYourself" + ,"x":"11447" + ,"y":"6085" + ,"id":"#TrumpYourself" + ,"color":"rgb(0,255,0)" + ,"size":"4" + }, + { + "label":"#Turkey" + ,"x":"5451" + ,"y":"2603" + ,"id":"#Turkey" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TurnUpToVote" + ,"x":"11025" + ,"y":"7110" + ,"id":"#TurnUpToVote" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UAW" + ,"x":"1412" + ,"y":"837" + ,"id":"#UAW" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ugpride2016" + ,"x":"1572" + ,"y":"638" + ,"id":"#ugpride2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UnderstandSlavery" + ,"x":"1916" + ,"y":"866" + ,"id":"#UnderstandSlavery" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UNGA" + ,"x":"4935" + ,"y":"2448" + ,"id":"#UNGA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UPUPUP" + ,"x":"8936" + ,"y":"2831" + ,"id":"#UPUPUP" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#USA" + ,"x":"18600" + ,"y":"5085" + ,"id":"#USA" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#USMC2016" + ,"x":"3687" + ,"y":"1103" + ,"id":"#USMC2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UT" + ,"x":"15391" + ,"y":"4530" + ,"id":"#UT" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Utah" + ,"x":"21800" + ,"y":"6903" + ,"id":"#Utah" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#Utah4Trump" + ,"x":"9960" + ,"y":"3390" + ,"id":"#Utah4Trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UtahCaucus" + ,"x":"17404" + ,"y":"5770" + ,"id":"#UtahCaucus" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#UtahPrimary" + ,"x":"9960" + ,"y":"3390" + ,"id":"#UtahPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UTCaucus" + ,"x":"17404" + ,"y":"5770" + ,"id":"#UTCaucus" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#vaticanwalls" + ,"x":"9912" + ,"y":"5392" + ,"id":"#vaticanwalls" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#veterans" + ,"x":"1215" + ,"y":"471" + ,"id":"#veterans" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VirWINia" + ,"x":"5617" + ,"y":"1887" + ,"id":"#VirWINia" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#VoterFraud" + ,"x":"36501" + ,"y":"14214" + ,"id":"#VoterFraud" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#VoterRegistrationDay" + ,"x":"6963" + ,"y":"2953" + ,"id":"#VoterRegistrationDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VotersSpeak" + ,"x":"8877" + ,"y":"3585" + ,"id":"#VotersSpeak" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#voteTrump" + ,"x":"8649" + ,"y":"2201" + ,"id":"#voteTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrump" + ,"x":"623108" + ,"y":"216620" + ,"id":"#VoteTrump" + ,"color":"rgb(0,0,255)" + ,"size":"55" + }, + { + "label":"#VoteTrump2016" + ,"x":"31377" + ,"y":"9889" + ,"id":"#VoteTrump2016" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#VoteTrumphttps" + ,"x":"32158" + ,"y":"11235" + ,"id":"#VoteTrumphttps" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#VoteTrumpIL" + ,"x":"8357" + ,"y":"2634" + ,"id":"#VoteTrumpIL" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpMA" + ,"x":"6273" + ,"y":"2128" + ,"id":"#VoteTrumpMA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpMI" + ,"x":"19970" + ,"y":"6807" + ,"id":"#VoteTrumpMI" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#VoteTrumpNC" + ,"x":"7946" + ,"y":"2728" + ,"id":"#VoteTrumpNC" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpNH" + ,"x":"41123" + ,"y":"14943" + ,"id":"#VoteTrumpNH" + ,"color":"rgb(255,0,0)" + ,"size":"7" + }, + { + "label":"#VoteTrumpNV" + ,"x":"39146" + ,"y":"12363" + ,"id":"#VoteTrumpNV" + ,"color":"rgb(255,0,0)" + ,"size":"6" + }, + { + "label":"#VoteTrumpNVhttps" + ,"x":"8828" + ,"y":"3020" + ,"id":"#VoteTrumpNVhttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpNY" + ,"x":"21659" + ,"y":"8652" + ,"id":"#VoteTrumpNY" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#VoteTrumpSC" + ,"x":"68924" + ,"y":"27673" + ,"id":"#VoteTrumpSC" + ,"color":"rgb(0,0,255)" + ,"size":"9" + }, + { + "label":"#VoteTrumpVT" + ,"x":"4965" + ,"y":"1559" + ,"id":"#VoteTrumpVT" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpWI" + ,"x":"13887" + ,"y":"4862" + ,"id":"#VoteTrumpWI" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WakeUpAmerica" + ,"x":"21868" + ,"y":"8009" + ,"id":"#WakeUpAmerica" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#WashingtonDC" + ,"x":"728" + ,"y":"378" + ,"id":"#WashingtonDC" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WATCH" + ,"x":"4769" + ,"y":"1826" + ,"id":"#WATCH" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WattersWorld" + ,"x":"13081" + ,"y":"4044" + ,"id":"#WattersWorld" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Wausau" + ,"x":"14266" + ,"y":"4767" + ,"id":"#Wausau" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WCS16" + ,"x":"13527" + ,"y":"4087" + ,"id":"#WCS16" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeAreBernie" + ,"x":"3369" + ,"y":"950" + ,"id":"#WeAreBernie" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeMadeHistory" + ,"x":"27915" + ,"y":"12708" + ,"id":"#WeMadeHistory" + ,"color":"rgb(255,255,0)" + ,"size":"3" + }, + { + "label":"#WesternTuesday" + ,"x":"21909" + ,"y":"7099" + ,"id":"#WesternTuesday" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#WestVirginia" + ,"x":"928" + ,"y":"358" + ,"id":"#WestVirginia" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeTrumpHate" + ,"x":"2716" + ,"y":"1092" + ,"id":"#WeTrumpHate" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeWantTrump" + ,"x":"3369" + ,"y":"950" + ,"id":"#WeWantTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WH" + ,"x":"1826" + ,"y":"683" + ,"id":"#WH" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WHCD" + ,"x":"7550" + ,"y":"3054" + ,"id":"#WHCD" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WHD" + ,"x":"1702" + ,"y":"691" + ,"id":"#WHD" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WheresHillary" + ,"x":"62133" + ,"y":"27723" + ,"id":"#WheresHillary" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#WIBackHer" + ,"x":"6959" + ,"y":"1945" + ,"id":"#WIBackHer" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Wimbledon" + ,"x":"11611" + ,"y":"3707" + ,"id":"#Wimbledon" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WIPrimary" + ,"x":"130969" + ,"y":"46174" + ,"id":"#WIPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"11" + }, + { + "label":"#WIPrimaryhttps" + ,"x":"13843" + ,"y":"5500" + ,"id":"#WIPrimaryhttps" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Wisconsin" + ,"x":"19235" + ,"y":"6610" + ,"id":"#Wisconsin" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#WISCONSIN" + ,"x":"12965" + ,"y":"6653" + ,"id":"#WISCONSIN" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#With_Cruz_you_lose" + ,"x":"2571" + ,"y":"703" + ,"id":"#With_Cruz_you_lose" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#womancard" + ,"x":"3476" + ,"y":"1870" + ,"id":"#womancard" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WomanCard" + ,"x":"28180" + ,"y":"12529" + ,"id":"#WomanCard" + ,"color":"rgb(255,255,0)" + ,"size":"7" + }, + { + "label":"#WOMEN4TRUMP" + ,"x":"14329" + ,"y":"5128" + ,"id":"#WOMEN4TRUMP" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Women4Ttump" + ,"x":"8317" + ,"y":"3173" + ,"id":"#Women4Ttump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WomensEqualityDay" + ,"x":"15633" + ,"y":"8122" + ,"id":"#WomensEqualityDay" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#WORK" + ,"x":"26644" + ,"y":"5713" + ,"id":"#WORK" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#WorldRefugeeDay" + ,"x":"5728" + ,"y":"2049" + ,"id":"#WorldRefugeeDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#YouthDay" + ,"x":"4279" + ,"y":"2058" + ,"id":"#YouthDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#YUGE" + ,"x":"2572" + ,"y":"828" + ,"id":"#YUGE" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }]} diff --git a/sigma.js-1.2.0/examples/data/convertcsvclusterTweetedWith.json b/sigma.js-1.2.0/examples/data/convertcsvclusterTweetedWith.json new file mode 100644 index 0000000..4a30366 --- /dev/null +++ b/sigma.js-1.2.0/examples/data/convertcsvclusterTweetedWith.json @@ -0,0 +1,7654 @@ +{"edges":[ + { + "source":"#ADA" + ,"target":"#CripTheVote" + ,"id":"#ADA#CripTheVote" + }, + { + "source":"#ADA" + ,"target":"#imwithher" + ,"id":"#ADA#imwithher" + }, + { + "source":"#AlwaysTrump" + ,"target":"#MAGA" + ,"id":"#AlwaysTrump#MAGA" + }, + { + "source":"#AlwaysTrump" + ,"target":"#Trump2016" + ,"id":"#AlwaysTrump#Trump2016" + }, + { + "source":"#AlwaysTrump" + ,"target":"#TrumpTrain" + ,"id":"#AlwaysTrump#TrumpTrain" + }, + { + "source":"#AmericaFirst" + ,"target":"#DebateNight" + ,"id":"#AmericaFirst#DebateNight" + }, + { + "source":"#AmericaFirst" + ,"target":"#Debates2016" + ,"id":"#AmericaFirst#Debates2016" + }, + { + "source":"#AmericaFirst" + ,"target":"#GOPConvention" + ,"id":"#AmericaFirst#GOPConvention" + }, + { + "source":"#AmericaFirst" + ,"target":"#ImWithYou" + ,"id":"#AmericaFirst#ImWithYou" + }, + { + "source":"#AmericaFirst" + ,"target":"#LaborDay" + ,"id":"#AmericaFirst#LaborDay" + }, + { + "source":"#AmericaFirst" + ,"target":"#LeadRight2016" + ,"id":"#AmericaFirst#LeadRight2016" + }, + { + "source":"#AmericaFirst" + ,"target":"#MAGA" + ,"id":"#AmericaFirst#MAGA" + }, + { + "source":"#AmericaFirst" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#AmericaFirst#MakeAmericaGreatAgain" + }, + { + "source":"#AmericaFirst" + ,"target":"#RNCinCLE" + ,"id":"#AmericaFirst#RNCinCLE" + }, + { + "source":"#AmericaFirst" + ,"target":"#RNCinCLEhttps" + ,"id":"#AmericaFirst#RNCinCLEhttps" + }, + { + "source":"#AmericaFirst" + ,"target":"#Trump2016" + ,"id":"#AmericaFirst#Trump2016" + }, + { + "source":"#AmericaFirst" + ,"target":"#TrumpPence16" + ,"id":"#AmericaFirst#TrumpPence16" + }, + { + "source":"#AmericaFirst" + ,"target":"#TrumpTrain" + ,"id":"#AmericaFirst#TrumpTrain" + }, + { + "source":"#AmericanSamoa" + ,"target":"#ArizonaPrimary" + ,"id":"#AmericanSamoa#ArizonaPrimary" + }, + { + "source":"#AmericanSamoa" + ,"target":"#AZPrimary" + ,"id":"#AmericanSamoa#AZPrimary" + }, + { + "source":"#AmericanSamoa" + ,"target":"#UtahCaucus" + ,"id":"#AmericanSamoa#UtahCaucus" + }, + { + "source":"#AmericanSamoa" + ,"target":"#UTCaucus" + ,"id":"#AmericanSamoa#UTCaucus" + }, + { + "source":"#AmericanSamoa" + ,"target":"#VoteTrump" + ,"id":"#AmericanSamoa#VoteTrump" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#AmericanSamoa" + ,"id":"#ArizonaPrimary#AmericanSamoa" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#AZPrimary" + ,"id":"#ArizonaPrimary#AZPrimary" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#ArizonaPrimary#MakeAmericaGreatAgain" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#Trump2016" + ,"id":"#ArizonaPrimary#Trump2016" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#UtahCaucus" + ,"id":"#ArizonaPrimary#UtahCaucus" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#UTCaucus" + ,"id":"#ArizonaPrimary#UTCaucus" + }, + { + "source":"#ArizonaPrimary" + ,"target":"#VoteTrump" + ,"id":"#ArizonaPrimary#VoteTrump" + }, + { + "source":"#AsLongAsItTakes" + ,"target":"#gunviolence" + ,"id":"#AsLongAsItTakes#gunviolence" + }, + { + "source":"#AsLongAsItTakes" + ,"target":"#NoBillNoBreak" + ,"id":"#AsLongAsItTakes#NoBillNoBreak" + }, + { + "source":"#AsLongAsItTakes" + ,"target":"#NoMoreSilence" + ,"id":"#AsLongAsItTakes#NoMoreSilence" + }, + { + "source":"#AsLongAsItTakes" + ,"target":"#sitin" + ,"id":"#AsLongAsItTakes#sitin" + }, + { + "source":"#AZ" + ,"target":"#UT" + ,"id":"#AZ#UT" + }, + { + "source":"#AZPrimary" + ,"target":"#AmericanSamoa" + ,"id":"#AZPrimary#AmericanSamoa" + }, + { + "source":"#AZPrimary" + ,"target":"#ArizonaPrimary" + ,"id":"#AZPrimary#ArizonaPrimary" + }, + { + "source":"#AZPrimary" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#AZPrimary#MakeAmericaGreatAgain" + }, + { + "source":"#AZPrimary" + ,"target":"#Trump2016" + ,"id":"#AZPrimary#Trump2016" + }, + { + "source":"#AZPrimary" + ,"target":"#UtahCaucus" + ,"id":"#AZPrimary#UtahCaucus" + }, + { + "source":"#AZPrimary" + ,"target":"#UTCaucus" + ,"id":"#AZPrimary#UTCaucus" + }, + { + "source":"#AZPrimary" + ,"target":"#VoteTrump" + ,"id":"#AZPrimary#VoteTrump" + }, + { + "source":"#Benghazi" + ,"target":"#debatenight" + ,"id":"#Benghazi#debatenight" + }, + { + "source":"#Benghazi" + ,"target":"#Debates2016" + ,"id":"#Benghazi#Debates2016" + }, + { + "source":"#BikersForTrump" + ,"target":"#VoteTrumpNV" + ,"id":"#BikersForTrump#VoteTrumpNV" + }, + { + "source":"#BlackMenForBernie" + ,"target":"#BlacksForTrump" + ,"id":"#BlackMenForBernie#BlacksForTrump" + }, + { + "source":"#BlackMenForBernie" + ,"target":"#Hillary2016" + ,"id":"#BlackMenForBernie#Hillary2016" + }, + { + "source":"#BlacksForTrump" + ,"target":"#BlackMenForBernie" + ,"id":"#BlacksForTrump#BlackMenForBernie" + }, + { + "source":"#BlacksForTrump" + ,"target":"#Hillary2016" + ,"id":"#BlacksForTrump#Hillary2016" + }, + { + "source":"#brexit" + ,"target":"#MAGA" + ,"id":"#brexit#MAGA" + }, + { + "source":"#BuildTheWall" + ,"target":"#Hannity" + ,"id":"#BuildTheWall#Hannity" + }, + { + "source":"#Bush" + ,"target":"#Rubio" + ,"id":"#Bush#Rubio" + }, + { + "source":"#CA4Trump" + ,"target":"#NeverDems" + ,"id":"#CA4Trump#NeverDems" + }, + { + "source":"#CA4Trump" + ,"target":"#Teachers4Trump" + ,"id":"#CA4Trump#Teachers4Trump" + }, + { + "source":"#campaignfinance" + ,"target":"#CitizensUnited" + ,"id":"#campaignfinance#CitizensUnited" + }, + { + "source":"#CAPrimary" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#CAPrimary#MakeAmericaGreatAgain" + }, + { + "source":"#Carrier" + ,"target":"#Ford" + ,"id":"#Carrier#Ford" + }, + { + "source":"#Carrier" + ,"target":"#Jobs" + ,"id":"#Carrier#Jobs" + }, + { + "source":"#Carrier" + ,"target":"#Mexico" + ,"id":"#Carrier#Mexico" + }, + { + "source":"#Carrier" + ,"target":"#Trump" + ,"id":"#Carrier#Trump" + }, + { + "source":"#CaucusForTrump" + ,"target":"#IACaucus" + ,"id":"#CaucusForTrump#IACaucus" + }, + { + "source":"#CaucusForTrumphttps" + ,"target":"#IACaucus" + ,"id":"#CaucusForTrumphttps#IACaucus" + }, + { + "source":"#ChangeAgents" + ,"target":"#MichaelBrown" + ,"id":"#ChangeAgents#MichaelBrown" + }, + { + "source":"#ChangeAgents" + ,"target":"#MothersoftheMovement" + ,"id":"#ChangeAgents#MothersoftheMovement" + }, + { + "source":"#CitizensUnited" + ,"target":"#campaignfinance" + ,"id":"#CitizensUnited#campaignfinance" + }, + { + "source":"#Clinton" + ,"target":"#Trump" + ,"id":"#Clinton#Trump" + }, + { + "source":"#ClintonKaine" + ,"target":"#ImWithHer" + ,"id":"#ClintonKaine#ImWithHer" + }, + { + "source":"#Colbert" + ,"target":"#LSSC" + ,"id":"#Colbert#LSSC" + }, + { + "source":"#CommonLaw" + ,"target":"#MaryBrigidMcManamon" + ,"id":"#CommonLaw#MaryBrigidMcManamon" + }, + { + "source":"#CommonLaw" + ,"target":"#NaturalBorn" + ,"id":"#CommonLaw#NaturalBorn" + }, + { + "source":"#CommonLaw" + ,"target":"#TedCruz" + ,"id":"#CommonLaw#TedCruz" + }, + { + "source":"#CripTheVote" + ,"target":"#ADA" + ,"id":"#CripTheVote#ADA" + }, + { + "source":"#CripTheVote" + ,"target":"#imwithher" + ,"id":"#CripTheVote#imwithher" + }, + { + "source":"#CrookedHillary" + ,"target":"#ImWithYou" + ,"id":"#CrookedHillary#ImWithYou" + }, + { + "source":"#CrookedHillary" + ,"target":"#Trump2016" + ,"id":"#CrookedHillary#Trump2016" + }, + { + "source":"#CrookedHillary" + ,"target":"#TrumpPence16" + ,"id":"#CrookedHillary#TrumpPence16" + }, + { + "source":"#Cruz" + ,"target":"#MaryBrigidMcManamon" + ,"id":"#Cruz#MaryBrigidMcManamon" + }, + { + "source":"#CTPrimary" + ,"target":"#DEPrimary" + ,"id":"#CTPrimary#DEPrimary" + }, + { + "source":"#CTPrimary" + ,"target":"#MDPrimary" + ,"id":"#CTPrimary#MDPrimary" + }, + { + "source":"#CTPrimary" + ,"target":"#PAPrimary" + ,"id":"#CTPrimary#PAPrimary" + }, + { + "source":"#CTPrimary" + ,"target":"#RIPrimaryhttps" + ,"id":"#CTPrimary#RIPrimaryhttps" + }, + { + "source":"#DavidCameron" + ,"target":"#WH" + ,"id":"#DavidCameron#WH" + }, + { + "source":"#debatenight" + ,"target":"#Benghazi" + ,"id":"#debatenight#Benghazi" + }, + { + "source":"#debatenight" + ,"target":"#Debates2016" + ,"id":"#debatenight#Debates2016" + }, + { + "source":"#DebateNight" + ,"target":"#AmericaFirst" + ,"id":"#DebateNight#AmericaFirst" + }, + { + "source":"#DebateNight" + ,"target":"#ImWithYou" + ,"id":"#DebateNight#ImWithYou" + }, + { + "source":"#DebateNight" + ,"target":"#ISIS" + ,"id":"#DebateNight#ISIS" + }, + { + "source":"#DebateNight" + ,"target":"#MAGA" + ,"id":"#DebateNight#MAGA" + }, + { + "source":"#DebateNight" + ,"target":"#TrumpPence16" + ,"id":"#DebateNight#TrumpPence16" + }, + { + "source":"#Debates2016" + ,"target":"#AmericaFirst" + ,"id":"#Debates2016#AmericaFirst" + }, + { + "source":"#Debates2016" + ,"target":"#Benghazi" + ,"id":"#Debates2016#Benghazi" + }, + { + "source":"#Debates2016" + ,"target":"#debatenight" + ,"id":"#Debates2016#debatenight" + }, + { + "source":"#Debates2016" + ,"target":"#MAGA" + ,"id":"#Debates2016#MAGA" + }, + { + "source":"#Debates2016" + ,"target":"#NationalVoterRegistrationDay" + ,"id":"#Debates2016#NationalVoterRegistrationDay" + }, + { + "source":"#Debates2016" + ,"target":"#Polls" + ,"id":"#Debates2016#Polls" + }, + { + "source":"#Debates2016" + ,"target":"#slipping" + ,"id":"#Debates2016#slipping" + }, + { + "source":"#Debates2016" + ,"target":"#TPP" + ,"id":"#Debates2016#TPP" + }, + { + "source":"#DefendtheSecond" + ,"target":"#ElectionDay" + ,"id":"#DefendtheSecond#ElectionDay" + }, + { + "source":"#DefendtheSecond" + ,"target":"#NeverHillary" + ,"id":"#DefendtheSecond#NeverHillary" + }, + { + "source":"#DemConvention" + ,"target":"#DemsInPhilly" + ,"id":"#DemConvention#DemsInPhilly" + }, + { + "source":"#DemConvention" + ,"target":"#ImWithHer" + ,"id":"#DemConvention#ImWithHer" + }, + { + "source":"#DemsinPhilly" + ,"target":"#DNCinPHL" + ,"id":"#DemsinPhilly#DNCinPHL" + }, + { + "source":"#DemsinPhilly" + ,"target":"#StrongerTogether" + ,"id":"#DemsinPhilly#StrongerTogether" + }, + { + "source":"#DemsInPhilly" + ,"target":"#DemConvention" + ,"id":"#DemsInPhilly#DemConvention" + }, + { + "source":"#DemsInPhilly" + ,"target":"#ImWithHer" + ,"id":"#DemsInPhilly#ImWithHer" + }, + { + "source":"#DemsInPhilly" + ,"target":"#LoveTrumpsHate" + ,"id":"#DemsInPhilly#LoveTrumpsHate" + }, + { + "source":"#DemsInPhilly" + ,"target":"#NATO" + ,"id":"#DemsInPhilly#NATO" + }, + { + "source":"#DEPrimary" + ,"target":"#CTPrimary" + ,"id":"#DEPrimary#CTPrimary" + }, + { + "source":"#DEPrimary" + ,"target":"#MDPrimary" + ,"id":"#DEPrimary#MDPrimary" + }, + { + "source":"#DEPrimary" + ,"target":"#PAPrimary" + ,"id":"#DEPrimary#PAPrimary" + }, + { + "source":"#DEPrimary" + ,"target":"#RIPrimaryhttps" + ,"id":"#DEPrimary#RIPrimaryhttps" + }, + { + "source":"#DisarmHate" + ,"target":"#EndGunViolence" + ,"id":"#DisarmHate#EndGunViolence" + }, + { + "source":"#DisarmHate" + ,"target":"#sitin" + ,"id":"#DisarmHate#sitin" + }, + { + "source":"#DivoDeJuarez" + ,"target":"#JuanGabriel" + ,"id":"#DivoDeJuarez#JuanGabriel" + }, + { + "source":"#DivoDeJuarez" + ,"target":"#RIP" + ,"id":"#DivoDeJuarez#RIP" + }, + { + "source":"#DNCinPHL" + ,"target":"#DemsinPhilly" + ,"id":"#DNCinPHL#DemsinPhilly" + }, + { + "source":"#EauClaire" + ,"target":"#Racine" + ,"id":"#EauClaire#Racine" + }, + { + "source":"#EauClaire" + ,"target":"#TrumpTrain" + ,"id":"#EauClaire#TrumpTrain" + }, + { + "source":"#EauClaire" + ,"target":"#Wausau" + ,"id":"#EauClaire#Wausau" + }, + { + "source":"#ECONOMY" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#ECONOMY#MakeAmericaGreatAgain" + }, + { + "source":"#ECONOMY" + ,"target":"#Trump2016" + ,"id":"#ECONOMY#Trump2016" + }, + { + "source":"#ElectionDay" + ,"target":"#DefendtheSecond" + ,"id":"#ElectionDay#DefendtheSecond" + }, + { + "source":"#ElectionDay" + ,"target":"#NeverHillary" + ,"id":"#ElectionDay#NeverHillary" + }, + { + "source":"#Elkhart" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#Elkhart#MakeAmericaGreatAgain" + }, + { + "source":"#Elkhart" + ,"target":"#POTUS" + ,"id":"#Elkhart#POTUS" + }, + { + "source":"#EndCommonCore" + ,"target":"#Trump2016" + ,"id":"#EndCommonCore#Trump2016" + }, + { + "source":"#EndGunViolence" + ,"target":"#DisarmHate" + ,"id":"#EndGunViolence#DisarmHate" + }, + { + "source":"#EndGunViolence" + ,"target":"#sitin" + ,"id":"#EndGunViolence#sitin" + }, + { + "source":"#enough" + ,"target":"#ImWithHer" + ,"id":"#enough#ImWithHer" + }, + { + "source":"#Enough" + ,"target":"#Filibuster" + ,"id":"#Enough#Filibuster" + }, + { + "source":"#Enough" + ,"target":"#OrlandoUnited" + ,"id":"#Enough#OrlandoUnited" + }, + { + "source":"#FAIL" + ,"target":"#Politician" + ,"id":"#FAIL#Politician" + }, + { + "source":"#FallonTonight" + ,"target":"#MyTeacherIsWeird" + ,"id":"#FallonTonight#MyTeacherIsWeird" + }, + { + "source":"#FeelTheBern" + ,"target":"#ImWithHer" + ,"id":"#FeelTheBern#ImWithHer" + }, + { + "source":"#Filibuster" + ,"target":"#Enough" + ,"id":"#Filibuster#Enough" + }, + { + "source":"#Filibuster" + ,"target":"#OrlandoUnited" + ,"id":"#Filibuster#OrlandoUnited" + }, + { + "source":"#FITN" + ,"target":"#IACaucus" + ,"id":"#FITN#IACaucus" + }, + { + "source":"#FITN" + ,"target":"#IAPolitics" + ,"id":"#FITN#IAPolitics" + }, + { + "source":"#FITN" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#FITN#MakeAmericaGreatAgain" + }, + { + "source":"#FITN" + ,"target":"#NewHampshire" + ,"id":"#FITN#NewHampshire" + }, + { + "source":"#FITN" + ,"target":"#NHPolitics" + ,"id":"#FITN#NHPolitics" + }, + { + "source":"#FITN" + ,"target":"#NHPrimary" + ,"id":"#FITN#NHPrimary" + }, + { + "source":"#FITN" + ,"target":"#Trump2016" + ,"id":"#FITN#Trump2016" + }, + { + "source":"#FITN" + ,"target":"#VoteTrump" + ,"id":"#FITN#VoteTrump" + }, + { + "source":"#FITN" + ,"target":"#VoteTrumpNH" + ,"id":"#FITN#VoteTrumpNH" + }, + { + "source":"#Ford" + ,"target":"#Carrier" + ,"id":"#Ford#Carrier" + }, + { + "source":"#Ford" + ,"target":"#Jobs" + ,"id":"#Ford#Jobs" + }, + { + "source":"#Ford" + ,"target":"#Mexico" + ,"id":"#Ford#Mexico" + }, + { + "source":"#Ford" + ,"target":"#Trump" + ,"id":"#Ford#Trump" + }, + { + "source":"#Fox" + ,"target":"#KenLangone" + ,"id":"#Fox#KenLangone" + }, + { + "source":"#Fox" + ,"target":"#NeilCavuto" + ,"id":"#Fox#NeilCavuto" + }, + { + "source":"#FoxNews" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#FoxNews#MakeAmericaGreatAgain" + }, + { + "source":"#FoxNews" + ,"target":"#MichaelMoore" + ,"id":"#FoxNews#MichaelMoore" + }, + { + "source":"#FoxNews" + ,"target":"#ROGERAILES" + ,"id":"#FoxNews#ROGERAILES" + }, + { + "source":"#FoxNews" + ,"target":"#Trump2016" + ,"id":"#FoxNews#Trump2016" + }, + { + "source":"#GIBill" + ,"target":"#veterans" + ,"id":"#GIBill#veterans" + }, + { + "source":"#goodtrouble" + ,"target":"#NoBillNoBreak" + ,"id":"#goodtrouble#NoBillNoBreak" + }, + { + "source":"#GOP" + ,"target":"#jenniferrubin" + ,"id":"#GOP#jenniferrubin" + }, + { + "source":"#GOP" + ,"target":"#MattSchlapp" + ,"id":"#GOP#MattSchlapp" + }, + { + "source":"#GOP" + ,"target":"#NYPrimary" + ,"id":"#GOP#NYPrimary" + }, + { + "source":"#GOPConvention" + ,"target":"#AmericaFirst" + ,"id":"#GOPConvention#AmericaFirst" + }, + { + "source":"#GOPConvention" + ,"target":"#RNCinCLE" + ,"id":"#GOPConvention#RNCinCLE" + }, + { + "source":"#GOPDebate" + ,"target":"#IACaucus" + ,"id":"#GOPDebate#IACaucus" + }, + { + "source":"#GOPDebate" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#GOPDebate#MakeAmericaGreatAgain" + }, + { + "source":"#GOPDebate" + ,"target":"#SB50" + ,"id":"#GOPDebate#SB50" + }, + { + "source":"#GOPDebate" + ,"target":"#SuperBowlSunday" + ,"id":"#GOPDebate#SuperBowlSunday" + }, + { + "source":"#GOPDebate" + ,"target":"#TrumpTrain" + ,"id":"#GOPDebate#TrumpTrain" + }, + { + "source":"#gunviolence" + ,"target":"#AsLongAsItTakes" + ,"id":"#gunviolence#AsLongAsItTakes" + }, + { + "source":"#gunviolence" + ,"target":"#NoBillNoBreak" + ,"id":"#gunviolence#NoBillNoBreak" + }, + { + "source":"#gunviolence" + ,"target":"#NoMoreSilence" + ,"id":"#gunviolence#NoMoreSilence" + }, + { + "source":"#gunviolence" + ,"target":"#sitin" + ,"id":"#gunviolence#sitin" + }, + { + "source":"#Hannity" + ,"target":"#BuildTheWall" + ,"id":"#Hannity#BuildTheWall" + }, + { + "source":"#Hannity" + ,"target":"#MAKEAMERICAGREATAGAIN" + ,"id":"#Hannity#MAKEAMERICAGREATAGAIN" + }, + { + "source":"#Hannity" + ,"target":"#Trump2016" + ,"id":"#Hannity#Trump2016" + }, + { + "source":"#Hillary2016" + ,"target":"#BlackMenForBernie" + ,"id":"#Hillary2016#BlackMenForBernie" + }, + { + "source":"#Hillary2016" + ,"target":"#BlacksForTrump" + ,"id":"#Hillary2016#BlacksForTrump" + }, + { + "source":"#HillaryClinton" + ,"target":"#Prince" + ,"id":"#HillaryClinton#Prince" + }, + { + "source":"#HillaryOnGMA" + ,"target":"#TBT" + ,"id":"#HillaryOnGMA#TBT" + }, + { + "source":"#holdthefloor" + ,"target":"#NoBillNoBreak" + ,"id":"#holdthefloor#NoBillNoBreak" + }, + { + "source":"#holdthefloor" + ,"target":"#NoMoreSilence" + ,"id":"#holdthefloor#NoMoreSilence" + }, + { + "source":"#IACaucus" + ,"target":"#CaucusForTrump" + ,"id":"#IACaucus#CaucusForTrump" + }, + { + "source":"#IACaucus" + ,"target":"#CaucusForTrumphttps" + ,"id":"#IACaucus#CaucusForTrumphttps" + }, + { + "source":"#IACaucus" + ,"target":"#FITN" + ,"id":"#IACaucus#FITN" + }, + { + "source":"#IACaucus" + ,"target":"#GOPDebate" + ,"id":"#IACaucus#GOPDebate" + }, + { + "source":"#IACaucus" + ,"target":"#IAPolitics" + ,"id":"#IACaucus#IAPolitics" + }, + { + "source":"#IACaucus" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#IACaucus#MakeAmericaGreatAgain" + }, + { + "source":"#IACaucus" + ,"target":"#Trump2016" + ,"id":"#IACaucus#Trump2016" + }, + { + "source":"#IACaucus" + ,"target":"#VoteTrump" + ,"id":"#IACaucus#VoteTrump" + }, + { + "source":"#IAPolitics" + ,"target":"#FITN" + ,"id":"#IAPolitics#FITN" + }, + { + "source":"#IAPolitics" + ,"target":"#IACaucus" + ,"id":"#IAPolitics#IACaucus" + }, + { + "source":"#IAPolitics" + ,"target":"#Trump2016" + ,"id":"#IAPolitics#Trump2016" + }, + { + "source":"#IAPolitics" + ,"target":"#VoteTrump" + ,"id":"#IAPolitics#VoteTrump" + }, + { + "source":"#ICYMI" + ,"target":"#trump2016" + ,"id":"#ICYMI#trump2016" + }, + { + "source":"#ICYMI" + ,"target":"#Trump2016" + ,"id":"#ICYMI#Trump2016" + }, + { + "source":"#imwithher" + ,"target":"#ADA" + ,"id":"#imwithher#ADA" + }, + { + "source":"#imwithher" + ,"target":"#CripTheVote" + ,"id":"#imwithher#CripTheVote" + }, + { + "source":"#ImWithHer" + ,"target":"#ClintonKaine" + ,"id":"#ImWithHer#ClintonKaine" + }, + { + "source":"#ImWithHer" + ,"target":"#DemConvention" + ,"id":"#ImWithHer#DemConvention" + }, + { + "source":"#ImWithHer" + ,"target":"#DemsInPhilly" + ,"id":"#ImWithHer#DemsInPhilly" + }, + { + "source":"#ImWithHer" + ,"target":"#enough" + ,"id":"#ImWithHer#enough" + }, + { + "source":"#ImWithHer" + ,"target":"#FeelTheBern" + ,"id":"#ImWithHer#FeelTheBern" + }, + { + "source":"#ImWithYou" + ,"target":"#AmericaFirst" + ,"id":"#ImWithYou#AmericaFirst" + }, + { + "source":"#ImWithYou" + ,"target":"#CrookedHillary" + ,"id":"#ImWithYou#CrookedHillary" + }, + { + "source":"#ImWithYou" + ,"target":"#DebateNight" + ,"id":"#ImWithYou#DebateNight" + }, + { + "source":"#ImWithYou" + ,"target":"#LawandOrder" + ,"id":"#ImWithYou#LawandOrder" + }, + { + "source":"#ImWithYou" + ,"target":"#MAGA" + ,"id":"#ImWithYou#MAGA" + }, + { + "source":"#ImWithYou" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#ImWithYou#MakeAmericaGreatAgain" + }, + { + "source":"#ImWithYou" + ,"target":"#Trump2016" + ,"id":"#ImWithYou#Trump2016" + }, + { + "source":"#ImWithYou" + ,"target":"#TrumpTrain" + ,"id":"#ImWithYou#TrumpTrain" + }, + { + "source":"#ImWithYou" + ,"target":"#VoteTrump" + ,"id":"#ImWithYou#VoteTrump" + }, + { + "source":"#ImWithYou" + ,"target":"#WCS16" + ,"id":"#ImWithYou#WCS16" + }, + { + "source":"#ImWithYouhttps" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#ImWithYouhttps#MakeAmericaGreatAgain" + }, + { + "source":"#INPrimary" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#INPrimary#MakeAmericaGreatAgain" + }, + { + "source":"#INPrimary" + ,"target":"#Trump2016" + ,"id":"#INPrimary#Trump2016" + }, + { + "source":"#INPrimary" + ,"target":"#VoteTrump" + ,"id":"#INPrimary#VoteTrump" + }, + { + "source":"#INPrimary" + ,"target":"#VoteTrumphttps" + ,"id":"#INPrimary#VoteTrumphttps" + }, + { + "source":"#IowaCaucus" + ,"target":"#VoteTrump" + ,"id":"#IowaCaucus#VoteTrump" + }, + { + "source":"#ISIS" + ,"target":"#DebateNight" + ,"id":"#ISIS#DebateNight" + }, + { + "source":"#iVoted" + ,"target":"#PrimaryDay" + ,"id":"#iVoted#PrimaryDay" + }, + { + "source":"#jenniferrubin" + ,"target":"#GOP" + ,"id":"#jenniferrubin#GOP" + }, + { + "source":"#jenniferrubin" + ,"target":"#MattSchlapp" + ,"id":"#jenniferrubin#MattSchlapp" + }, + { + "source":"#JimmyFallon" + ,"target":"#TheDonald" + ,"id":"#JimmyFallon#TheDonald" + }, + { + "source":"#JimmyFallon" + ,"target":"#TheTonightShow" + ,"id":"#JimmyFallon#TheTonightShow" + }, + { + "source":"#JimmyFallon" + ,"target":"#TrumpPence16" + ,"id":"#JimmyFallon#TrumpPence16" + }, + { + "source":"#Jobs" + ,"target":"#Carrier" + ,"id":"#Jobs#Carrier" + }, + { + "source":"#Jobs" + ,"target":"#Ford" + ,"id":"#Jobs#Ford" + }, + { + "source":"#Jobs" + ,"target":"#Mexico" + ,"id":"#Jobs#Mexico" + }, + { + "source":"#Jobs" + ,"target":"#Trump" + ,"id":"#Jobs#Trump" + }, + { + "source":"#Jonas" + ,"target":"#NewYork" + ,"id":"#Jonas#NewYork" + }, + { + "source":"#Jonas" + ,"target":"#NewYorkValues" + ,"id":"#Jonas#NewYorkValues" + }, + { + "source":"#JuanGabriel" + ,"target":"#DivoDeJuarez" + ,"id":"#JuanGabriel#DivoDeJuarez" + }, + { + "source":"#JuanGabriel" + ,"target":"#RIP" + ,"id":"#JuanGabriel#RIP" + }, + { + "source":"#KansasCaucus" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#KansasCaucus#MakeAmericaGreatAgain" + }, + { + "source":"#KansasCaucus" + ,"target":"#Trump2016" + ,"id":"#KansasCaucus#Trump2016" + }, + { + "source":"#KenLangone" + ,"target":"#Fox" + ,"id":"#KenLangone#Fox" + }, + { + "source":"#KenLangone" + ,"target":"#NeilCavuto" + ,"id":"#KenLangone#NeilCavuto" + }, + { + "source":"#LaborDay" + ,"target":"#AmericaFirst" + ,"id":"#LaborDay#AmericaFirst" + }, + { + "source":"#LaurenceTribe" + ,"target":"#TedCruz" + ,"id":"#LaurenceTribe#TedCruz" + }, + { + "source":"#LawandOrder" + ,"target":"#ImWithYou" + ,"id":"#LawandOrder#ImWithYou" + }, + { + "source":"#LeadRight2016" + ,"target":"#AmericaFirst" + ,"id":"#LeadRight2016#AmericaFirst" + }, + { + "source":"#LESM" + ,"target":"#MAGA" + ,"id":"#LESM#MAGA" + }, + { + "source":"#LESM" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#LESM#MakeAmericaGreatAgain" + }, + { + "source":"#LESM" + ,"target":"#Trump2016" + ,"id":"#LESM#Trump2016" + }, + { + "source":"#LGBT" + ,"target":"#Pulse" + ,"id":"#LGBT#Pulse" + }, + { + "source":"#LoneStarState" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#LoneStarState#MakeAmericaGreatAgain" + }, + { + "source":"#LoneStarState" + ,"target":"#SuperTuesday" + ,"id":"#LoneStarState#SuperTuesday" + }, + { + "source":"#LoveTrumpsHate" + ,"target":"#DemsInPhilly" + ,"id":"#LoveTrumpsHate#DemsInPhilly" + }, + { + "source":"#LSSC" + ,"target":"#Colbert" + ,"id":"#LSSC#Colbert" + }, + { + "source":"#LyingTed" + ,"target":"#NeverCruz" + ,"id":"#LyingTed#NeverCruz" + }, + { + "source":"#MAGA" + ,"target":"#AlwaysTrump" + ,"id":"#MAGA#AlwaysTrump" + }, + { + "source":"#MAGA" + ,"target":"#AmericaFirst" + ,"id":"#MAGA#AmericaFirst" + }, + { + "source":"#MAGA" + ,"target":"#brexit" + ,"id":"#MAGA#brexit" + }, + { + "source":"#MAGA" + ,"target":"#DebateNight" + ,"id":"#MAGA#DebateNight" + }, + { + "source":"#MAGA" + ,"target":"#Debates2016" + ,"id":"#MAGA#Debates2016" + }, + { + "source":"#MAGA" + ,"target":"#ImWithYou" + ,"id":"#MAGA#ImWithYou" + }, + { + "source":"#MAGA" + ,"target":"#LESM" + ,"id":"#MAGA#LESM" + }, + { + "source":"#MAGA" + ,"target":"#NeverHillary" + ,"id":"#MAGA#NeverHillary" + }, + { + "source":"#MAGA" + ,"target":"#TBT" + ,"id":"#MAGA#TBT" + }, + { + "source":"#MAGA" + ,"target":"#Trump2016" + ,"id":"#MAGA#Trump2016" + }, + { + "source":"#MAGA" + ,"target":"#TRUMP2016" + ,"id":"#MAGA#TRUMP2016" + }, + { + "source":"#MAGA" + ,"target":"#TrumpMovement" + ,"id":"#MAGA#TrumpMovement" + }, + { + "source":"#MAGA" + ,"target":"#TrumpPence16" + ,"id":"#MAGA#TrumpPence16" + }, + { + "source":"#MAGA" + ,"target":"#TrumpTrain" + ,"id":"#MAGA#TrumpTrain" + }, + { + "source":"#MAGA" + ,"target":"#TrumpWon" + ,"id":"#MAGA#TrumpWon" + }, + { + "source":"#MAGAhttps" + ,"target":"#Trump2016" + ,"id":"#MAGAhttps#Trump2016" + }, + { + "source":"#MAGAhttps" + ,"target":"#WIPrimary" + ,"id":"#MAGAhttps#WIPrimary" + }, + { + "source":"#Mahalo" + ,"target":"#TrumpWaikiki" + ,"id":"#Mahalo#TrumpWaikiki" + }, + { + "source":"#MaitnerStrong" + ,"target":"#TeamTrump" + ,"id":"#MaitnerStrong#TeamTrump" + }, + { + "source":"#makeamericagreatagain" + ,"target":"#trump" + ,"id":"#makeamericagreatagain#trump" + }, + { + "source":"#makeamericagreatagain" + ,"target":"#WeAreBernie" + ,"id":"#makeamericagreatagain#WeAreBernie" + }, + { + "source":"#makeamericagreatagain" + ,"target":"#WeWantTrump" + ,"id":"#makeamericagreatagain#WeWantTrump" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#AmericaFirst" + ,"id":"#MakeAmericaGreatAgain#AmericaFirst" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#ArizonaPrimary" + ,"id":"#MakeAmericaGreatAgain#ArizonaPrimary" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#AZPrimary" + ,"id":"#MakeAmericaGreatAgain#AZPrimary" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#CAPrimary" + ,"id":"#MakeAmericaGreatAgain#CAPrimary" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#ECONOMY" + ,"id":"#MakeAmericaGreatAgain#ECONOMY" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#Elkhart" + ,"id":"#MakeAmericaGreatAgain#Elkhart" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#FITN" + ,"id":"#MakeAmericaGreatAgain#FITN" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#FoxNews" + ,"id":"#MakeAmericaGreatAgain#FoxNews" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#GOPDebate" + ,"id":"#MakeAmericaGreatAgain#GOPDebate" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#IACaucus" + ,"id":"#MakeAmericaGreatAgain#IACaucus" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#ImWithYou" + ,"id":"#MakeAmericaGreatAgain#ImWithYou" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#ImWithYouhttps" + ,"id":"#MakeAmericaGreatAgain#ImWithYouhttps" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#INPrimary" + ,"id":"#MakeAmericaGreatAgain#INPrimary" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#KansasCaucus" + ,"id":"#MakeAmericaGreatAgain#KansasCaucus" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#LESM" + ,"id":"#MakeAmericaGreatAgain#LESM" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#LoneStarState" + ,"id":"#MakeAmericaGreatAgain#LoneStarState" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#NewDay" + ,"id":"#MakeAmericaGreatAgain#NewDay" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#POTUS" + ,"id":"#MakeAmericaGreatAgain#POTUS" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#RNCinCLE" + ,"id":"#MakeAmericaGreatAgain#RNCinCLE" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#SCPrimary" + ,"id":"#MakeAmericaGreatAgain#SCPrimary" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#StopCommonCore" + ,"id":"#MakeAmericaGreatAgain#StopCommonCore" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#SuperTuesday" + ,"id":"#MakeAmericaGreatAgain#SuperTuesday" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#trump2016" + ,"id":"#MakeAmericaGreatAgain#trump2016" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#Trump2016" + ,"id":"#MakeAmericaGreatAgain#Trump2016" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#Trump2016https" + ,"id":"#MakeAmericaGreatAgain#Trump2016https" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#Trump2016Tickets" + ,"id":"#MakeAmericaGreatAgain#Trump2016Tickets" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#TrumpIsWithYou" + ,"id":"#MakeAmericaGreatAgain#TrumpIsWithYou" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#TrumpTrain" + ,"id":"#MakeAmericaGreatAgain#TrumpTrain" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#TrumpTrainhttps" + ,"id":"#MakeAmericaGreatAgain#TrumpTrainhttps" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#USA" + ,"id":"#MakeAmericaGreatAgain#USA" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#UtahCaucus" + ,"id":"#MakeAmericaGreatAgain#UtahCaucus" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#UTCaucus" + ,"id":"#MakeAmericaGreatAgain#UTCaucus" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VoterRegistrationDay" + ,"id":"#MakeAmericaGreatAgain#VoterRegistrationDay" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VotersSpeak" + ,"id":"#MakeAmericaGreatAgain#VotersSpeak" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VoteTrump" + ,"id":"#MakeAmericaGreatAgain#VoteTrump" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VoteTrumphttps" + ,"id":"#MakeAmericaGreatAgain#VoteTrumphttps" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VoteTrumpNH" + ,"id":"#MakeAmericaGreatAgain#VoteTrumpNH" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VoteTrumpNY" + ,"id":"#MakeAmericaGreatAgain#VoteTrumpNY" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#VoteTrumpSC" + ,"id":"#MakeAmericaGreatAgain#VoteTrumpSC" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#WIPrimary" + ,"id":"#MakeAmericaGreatAgain#WIPrimary" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#Wisconsin" + ,"id":"#MakeAmericaGreatAgain#Wisconsin" + }, + { + "source":"#MakeAmericaGreatAgain" + ,"target":"#With_Cruz_you_lose" + ,"id":"#MakeAmericaGreatAgain#With_Cruz_you_lose" + }, + { + "source":"#MAKEAMERICAGREATAGAIN" + ,"target":"#Hannity" + ,"id":"#MAKEAMERICAGREATAGAIN#Hannity" + }, + { + "source":"#MAKEAMERICAGREATAGAIN" + ,"target":"#ObamaCare" + ,"id":"#MAKEAMERICAGREATAGAIN#ObamaCare" + }, + { + "source":"#MakeAmericaGreatAgainhttps" + ,"target":"#Trump2016" + ,"id":"#MakeAmericaGreatAgainhttps#Trump2016" + }, + { + "source":"#MakeAmericaGreatAgain@Snapchat" + ,"target":"#Trump2016" + ,"id":"#MakeAmericaGreatAgain@Snapchat#Trump2016" + }, + { + "source":"#MakeAmericaGreatAgainTickets" + ,"target":"#Trump2016" + ,"id":"#MakeAmericaGreatAgainTickets#Trump2016" + }, + { + "source":"#MakeYoutubeGreatAgain" + ,"target":"#Trump2016https" + ,"id":"#MakeYoutubeGreatAgain#Trump2016https" + }, + { + "source":"#MaryBrigidMcManamon" + ,"target":"#CommonLaw" + ,"id":"#MaryBrigidMcManamon#CommonLaw" + }, + { + "source":"#MaryBrigidMcManamon" + ,"target":"#Cruz" + ,"id":"#MaryBrigidMcManamon#Cruz" + }, + { + "source":"#MaryBrigidMcManamon" + ,"target":"#NaturalBorn" + ,"id":"#MaryBrigidMcManamon#NaturalBorn" + }, + { + "source":"#MaryBrigidMcManamon" + ,"target":"#TedCruz" + ,"id":"#MaryBrigidMcManamon#TedCruz" + }, + { + "source":"#MattSchlapp" + ,"target":"#GOP" + ,"id":"#MattSchlapp#GOP" + }, + { + "source":"#MattSchlapp" + ,"target":"#jenniferrubin" + ,"id":"#MattSchlapp#jenniferrubin" + }, + { + "source":"#MDPrimary" + ,"target":"#CTPrimary" + ,"id":"#MDPrimary#CTPrimary" + }, + { + "source":"#MDPrimary" + ,"target":"#DEPrimary" + ,"id":"#MDPrimary#DEPrimary" + }, + { + "source":"#MDPrimary" + ,"target":"#PAPrimary" + ,"id":"#MDPrimary#PAPrimary" + }, + { + "source":"#MDPrimary" + ,"target":"#RIPrimaryhttps" + ,"id":"#MDPrimary#RIPrimaryhttps" + }, + { + "source":"#MeetTheTrumps" + ,"target":"#Trump2016" + ,"id":"#MeetTheTrumps#Trump2016" + }, + { + "source":"#Mexico" + ,"target":"#Carrier" + ,"id":"#Mexico#Carrier" + }, + { + "source":"#Mexico" + ,"target":"#Ford" + ,"id":"#Mexico#Ford" + }, + { + "source":"#Mexico" + ,"target":"#Jobs" + ,"id":"#Mexico#Jobs" + }, + { + "source":"#Mexico" + ,"target":"#Trump" + ,"id":"#Mexico#Trump" + }, + { + "source":"#MichaelBrown" + ,"target":"#ChangeAgents" + ,"id":"#MichaelBrown#ChangeAgents" + }, + { + "source":"#MichaelBrown" + ,"target":"#MothersoftheMovement" + ,"id":"#MichaelBrown#MothersoftheMovement" + }, + { + "source":"#MichaelMoore" + ,"target":"#FoxNews" + ,"id":"#MichaelMoore#FoxNews" + }, + { + "source":"#MichaelMoore" + ,"target":"#ROGERAILES" + ,"id":"#MichaelMoore#ROGERAILES" + }, + { + "source":"#Mormon" + ,"target":"#TrumpCountry" + ,"id":"#Mormon#TrumpCountry" + }, + { + "source":"#Mormon" + ,"target":"#Utah" + ,"id":"#Mormon#Utah" + }, + { + "source":"#Mormon" + ,"target":"#Utah4Trump" + ,"id":"#Mormon#Utah4Trump" + }, + { + "source":"#Mormon" + ,"target":"#UtahPrimary" + ,"id":"#Mormon#UtahPrimary" + }, + { + "source":"#MothersoftheMovement" + ,"target":"#ChangeAgents" + ,"id":"#MothersoftheMovement#ChangeAgents" + }, + { + "source":"#MothersoftheMovement" + ,"target":"#MichaelBrown" + ,"id":"#MothersoftheMovement#MichaelBrown" + }, + { + "source":"#MSM" + ,"target":"#VoterFraud" + ,"id":"#MSM#VoterFraud" + }, + { + "source":"#MyTeacherIsWeird" + ,"target":"#FallonTonight" + ,"id":"#MyTeacherIsWeird#FallonTonight" + }, + { + "source":"#NASCAR" + ,"target":"#Trump2016" + ,"id":"#NASCAR#Trump2016" + }, + { + "source":"#NASCAR" + ,"target":"#VoteTrump" + ,"id":"#NASCAR#VoteTrump" + }, + { + "source":"#NationalVoterRegistrationDay" + ,"target":"#Debates2016" + ,"id":"#NationalVoterRegistrationDay#Debates2016" + }, + { + "source":"#NATO" + ,"target":"#DemsInPhilly" + ,"id":"#NATO#DemsInPhilly" + }, + { + "source":"#NATO" + ,"target":"#StandTogether" + ,"id":"#NATO#StandTogether" + }, + { + "source":"#NaturalBorn" + ,"target":"#CommonLaw" + ,"id":"#NaturalBorn#CommonLaw" + }, + { + "source":"#NaturalBorn" + ,"target":"#MaryBrigidMcManamon" + ,"id":"#NaturalBorn#MaryBrigidMcManamon" + }, + { + "source":"#NaturalBorn" + ,"target":"#TedCruz" + ,"id":"#NaturalBorn#TedCruz" + }, + { + "source":"#NeilCavuto" + ,"target":"#Fox" + ,"id":"#NeilCavuto#Fox" + }, + { + "source":"#NeilCavuto" + ,"target":"#KenLangone" + ,"id":"#NeilCavuto#KenLangone" + }, + { + "source":"#NevadaCaucus" + ,"target":"#VoteTrumpNV" + ,"id":"#NevadaCaucus#VoteTrumpNV" + }, + { + "source":"#NevadaCaucus" + ,"target":"#VoteTrumpNVhttps" + ,"id":"#NevadaCaucus#VoteTrumpNVhttps" + }, + { + "source":"#NeverCruz" + ,"target":"#LyingTed" + ,"id":"#NeverCruz#LyingTed" + }, + { + "source":"#NeverDems" + ,"target":"#CA4Trump" + ,"id":"#NeverDems#CA4Trump" + }, + { + "source":"#NeverDems" + ,"target":"#Teachers4Trump" + ,"id":"#NeverDems#Teachers4Trump" + }, + { + "source":"#NeverForget" + ,"target":"#Srebrenica" + ,"id":"#NeverForget#Srebrenica" + }, + { + "source":"#NeverHillary" + ,"target":"#DefendtheSecond" + ,"id":"#NeverHillary#DefendtheSecond" + }, + { + "source":"#NeverHillary" + ,"target":"#ElectionDay" + ,"id":"#NeverHillary#ElectionDay" + }, + { + "source":"#NeverHillary" + ,"target":"#MAGA" + ,"id":"#NeverHillary#MAGA" + }, + { + "source":"#NeverHillary" + ,"target":"#SCOTUS" + ,"id":"#NeverHillary#SCOTUS" + }, + { + "source":"#NeverHillary" + ,"target":"#TrumpPence2016" + ,"id":"#NeverHillary#TrumpPence2016" + }, + { + "source":"#NewDay" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#NewDay#MakeAmericaGreatAgain" + }, + { + "source":"#NewHampshire" + ,"target":"#FITN" + ,"id":"#NewHampshire#FITN" + }, + { + "source":"#NewHampshire" + ,"target":"#VoteTrumpNH" + ,"id":"#NewHampshire#VoteTrumpNH" + }, + { + "source":"#NewYork" + ,"target":"#Jonas" + ,"id":"#NewYork#Jonas" + }, + { + "source":"#NewYork" + ,"target":"#NewYorkValues" + ,"id":"#NewYork#NewYorkValues" + }, + { + "source":"#NewYorkValues" + ,"target":"#Jonas" + ,"id":"#NewYorkValues#Jonas" + }, + { + "source":"#NewYorkValues" + ,"target":"#NewYork" + ,"id":"#NewYorkValues#NewYork" + }, + { + "source":"#NewYorkValues" + ,"target":"#NYPrimary" + ,"id":"#NewYorkValues#NYPrimary" + }, + { + "source":"#NewYorkValues" + ,"target":"#Trump2016" + ,"id":"#NewYorkValues#Trump2016" + }, + { + "source":"#NewYorkValues" + ,"target":"#VoteTrump" + ,"id":"#NewYorkValues#VoteTrump" + }, + { + "source":"#NHPolitics" + ,"target":"#FITN" + ,"id":"#NHPolitics#FITN" + }, + { + "source":"#NHPolitics" + ,"target":"#Trump2016" + ,"id":"#NHPolitics#Trump2016" + }, + { + "source":"#NHPrimary" + ,"target":"#FITN" + ,"id":"#NHPrimary#FITN" + }, + { + "source":"#NHPrimary" + ,"target":"#VoteTrumpNH" + ,"id":"#NHPrimary#VoteTrumpNH" + }, + { + "source":"#NoBillNoBreak" + ,"target":"#AsLongAsItTakes" + ,"id":"#NoBillNoBreak#AsLongAsItTakes" + }, + { + "source":"#NoBillNoBreak" + ,"target":"#goodtrouble" + ,"id":"#NoBillNoBreak#goodtrouble" + }, + { + "source":"#NoBillNoBreak" + ,"target":"#gunviolence" + ,"id":"#NoBillNoBreak#gunviolence" + }, + { + "source":"#NoBillNoBreak" + ,"target":"#holdthefloor" + ,"id":"#NoBillNoBreak#holdthefloor" + }, + { + "source":"#NoBillNoBreak" + ,"target":"#NoMoreSilence" + ,"id":"#NoBillNoBreak#NoMoreSilence" + }, + { + "source":"#NoBillNoBreak" + ,"target":"#sitin" + ,"id":"#NoBillNoBreak#sitin" + }, + { + "source":"#NoMoreSilence" + ,"target":"#AsLongAsItTakes" + ,"id":"#NoMoreSilence#AsLongAsItTakes" + }, + { + "source":"#NoMoreSilence" + ,"target":"#gunviolence" + ,"id":"#NoMoreSilence#gunviolence" + }, + { + "source":"#NoMoreSilence" + ,"target":"#holdthefloor" + ,"id":"#NoMoreSilence#holdthefloor" + }, + { + "source":"#NoMoreSilence" + ,"target":"#NoBillNoBreak" + ,"id":"#NoMoreSilence#NoBillNoBreak" + }, + { + "source":"#NoMoreSilence" + ,"target":"#sitin" + ,"id":"#NoMoreSilence#sitin" + }, + { + "source":"#NYPrimary" + ,"target":"#GOP" + ,"id":"#NYPrimary#GOP" + }, + { + "source":"#NYPrimary" + ,"target":"#NewYorkValues" + ,"id":"#NYPrimary#NewYorkValues" + }, + { + "source":"#NYPrimary" + ,"target":"#Trump2016" + ,"id":"#NYPrimary#Trump2016" + }, + { + "source":"#NYPrimary" + ,"target":"#TrumpTrainhttps" + ,"id":"#NYPrimary#TrumpTrainhttps" + }, + { + "source":"#NYPrimary" + ,"target":"#VoteTrump" + ,"id":"#NYPrimary#VoteTrump" + }, + { + "source":"#NYPrimaryTickets" + ,"target":"#Trump2016" + ,"id":"#NYPrimaryTickets#Trump2016" + }, + { + "source":"#ObamaCare" + ,"target":"#MAKEAMERICAGREATAGAIN" + ,"id":"#ObamaCare#MAKEAMERICAGREATAGAIN" + }, + { + "source":"#OpeningCeremony" + ,"target":"#Rio2016" + ,"id":"#OpeningCeremony#Rio2016" + }, + { + "source":"#OpeningCeremony" + ,"target":"#TeamUSA" + ,"id":"#OpeningCeremony#TeamUSA" + }, + { + "source":"#Orlando" + ,"target":"#StoptheHate" + ,"id":"#Orlando#StoptheHate" + }, + { + "source":"#OrlandoUnited" + ,"target":"#Enough" + ,"id":"#OrlandoUnited#Enough" + }, + { + "source":"#OrlandoUnited" + ,"target":"#Filibuster" + ,"id":"#OrlandoUnited#Filibuster" + }, + { + "source":"#ORPrimary" + ,"target":"#VoteTrump" + ,"id":"#ORPrimary#VoteTrump" + }, + { + "source":"#PAPrimary" + ,"target":"#CTPrimary" + ,"id":"#PAPrimary#CTPrimary" + }, + { + "source":"#PAPrimary" + ,"target":"#DEPrimary" + ,"id":"#PAPrimary#DEPrimary" + }, + { + "source":"#PAPrimary" + ,"target":"#MDPrimary" + ,"id":"#PAPrimary#MDPrimary" + }, + { + "source":"#PAPrimary" + ,"target":"#RIPrimaryhttps" + ,"id":"#PAPrimary#RIPrimaryhttps" + }, + { + "source":"#PAPrimary" + ,"target":"#VoteTrumphttps" + ,"id":"#PAPrimary#VoteTrumphttps" + }, + { + "source":"#Politician" + ,"target":"#FAIL" + ,"id":"#Politician#FAIL" + }, + { + "source":"#Polls" + ,"target":"#Debates2016" + ,"id":"#Polls#Debates2016" + }, + { + "source":"#Polls" + ,"target":"#slipping" + ,"id":"#Polls#slipping" + }, + { + "source":"#POTUS" + ,"target":"#Elkhart" + ,"id":"#POTUS#Elkhart" + }, + { + "source":"#POTUS" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#POTUS#MakeAmericaGreatAgain" + }, + { + "source":"#POTUS" + ,"target":"#PrimaryDay" + ,"id":"#POTUS#PrimaryDay" + }, + { + "source":"#POTUS" + ,"target":"#Trump2016" + ,"id":"#POTUS#Trump2016" + }, + { + "source":"#POTUS" + ,"target":"#VoteTrumpNY" + ,"id":"#POTUS#VoteTrumpNY" + }, + { + "source":"#presidenttrump" + ,"target":"#primary" + ,"id":"#presidenttrump#primary" + }, + { + "source":"#presidenttrump" + ,"target":"#Trump2016" + ,"id":"#presidenttrump#Trump2016" + }, + { + "source":"#primary" + ,"target":"#presidenttrump" + ,"id":"#primary#presidenttrump" + }, + { + "source":"#primary" + ,"target":"#Trump2016" + ,"id":"#primary#Trump2016" + }, + { + "source":"#PrimaryDay" + ,"target":"#iVoted" + ,"id":"#PrimaryDay#iVoted" + }, + { + "source":"#PrimaryDay" + ,"target":"#POTUS" + ,"id":"#PrimaryDay#POTUS" + }, + { + "source":"#PrimaryDay" + ,"target":"#Trump2016" + ,"id":"#PrimaryDay#Trump2016" + }, + { + "source":"#PrimaryDay" + ,"target":"#VoteTrumpNY" + ,"id":"#PrimaryDay#VoteTrumpNY" + }, + { + "source":"#Prince" + ,"target":"#HillaryClinton" + ,"id":"#Prince#HillaryClinton" + }, + { + "source":"#Pulse" + ,"target":"#LGBT" + ,"id":"#Pulse#LGBT" + }, + { + "source":"#Racine" + ,"target":"#EauClaire" + ,"id":"#Racine#EauClaire" + }, + { + "source":"#Racine" + ,"target":"#TrumpTrain" + ,"id":"#Racine#TrumpTrain" + }, + { + "source":"#Racine" + ,"target":"#Wausau" + ,"id":"#Racine#Wausau" + }, + { + "source":"#Rio2016" + ,"target":"#OpeningCeremony" + ,"id":"#Rio2016#OpeningCeremony" + }, + { + "source":"#Rio2016" + ,"target":"#TeamUSA" + ,"id":"#Rio2016#TeamUSA" + }, + { + "source":"#RIP" + ,"target":"#DivoDeJuarez" + ,"id":"#RIP#DivoDeJuarez" + }, + { + "source":"#RIP" + ,"target":"#JuanGabriel" + ,"id":"#RIP#JuanGabriel" + }, + { + "source":"#RIPrimary" + ,"target":"#VoteTrump" + ,"id":"#RIPrimary#VoteTrump" + }, + { + "source":"#RIPrimaryhttps" + ,"target":"#CTPrimary" + ,"id":"#RIPrimaryhttps#CTPrimary" + }, + { + "source":"#RIPrimaryhttps" + ,"target":"#DEPrimary" + ,"id":"#RIPrimaryhttps#DEPrimary" + }, + { + "source":"#RIPrimaryhttps" + ,"target":"#MDPrimary" + ,"id":"#RIPrimaryhttps#MDPrimary" + }, + { + "source":"#RIPrimaryhttps" + ,"target":"#PAPrimary" + ,"id":"#RIPrimaryhttps#PAPrimary" + }, + { + "source":"#RNC" + ,"target":"#Trump2016" + ,"id":"#RNC#Trump2016" + }, + { + "source":"#RNCinCLE" + ,"target":"#AmericaFirst" + ,"id":"#RNCinCLE#AmericaFirst" + }, + { + "source":"#RNCinCLE" + ,"target":"#GOPConvention" + ,"id":"#RNCinCLE#GOPConvention" + }, + { + "source":"#RNCinCLE" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#RNCinCLE#MakeAmericaGreatAgain" + }, + { + "source":"#RNCinCLE" + ,"target":"#TrumpIsWithYou" + ,"id":"#RNCinCLE#TrumpIsWithYou" + }, + { + "source":"#RNCinCLE" + ,"target":"#TrumpPence2016" + ,"id":"#RNCinCLE#TrumpPence2016" + }, + { + "source":"#RNCinCLEhttps" + ,"target":"#AmericaFirst" + ,"id":"#RNCinCLEhttps#AmericaFirst" + }, + { + "source":"#ROGERAILES" + ,"target":"#FoxNews" + ,"id":"#ROGERAILES#FoxNews" + }, + { + "source":"#ROGERAILES" + ,"target":"#MichaelMoore" + ,"id":"#ROGERAILES#MichaelMoore" + }, + { + "source":"#RTM2016" + ,"target":"#Trump2016" + ,"id":"#RTM2016#Trump2016" + }, + { + "source":"#Rubio" + ,"target":"#Bush" + ,"id":"#Rubio#Bush" + }, + { + "source":"#SB50" + ,"target":"#GOPDebate" + ,"id":"#SB50#GOPDebate" + }, + { + "source":"#SB50" + ,"target":"#SuperBowlSunday" + ,"id":"#SB50#SuperBowlSunday" + }, + { + "source":"#SCOTUS" + ,"target":"#NeverHillary" + ,"id":"#SCOTUS#NeverHillary" + }, + { + "source":"#SCPrimary" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#SCPrimary#MakeAmericaGreatAgain" + }, + { + "source":"#SCPrimary" + ,"target":"#Trump2016" + ,"id":"#SCPrimary#Trump2016" + }, + { + "source":"#SCPrimary" + ,"target":"#VoteTrumpSC" + ,"id":"#SCPrimary#VoteTrumpSC" + }, + { + "source":"#sitin" + ,"target":"#AsLongAsItTakes" + ,"id":"#sitin#AsLongAsItTakes" + }, + { + "source":"#sitin" + ,"target":"#DisarmHate" + ,"id":"#sitin#DisarmHate" + }, + { + "source":"#sitin" + ,"target":"#EndGunViolence" + ,"id":"#sitin#EndGunViolence" + }, + { + "source":"#sitin" + ,"target":"#gunviolence" + ,"id":"#sitin#gunviolence" + }, + { + "source":"#sitin" + ,"target":"#NoBillNoBreak" + ,"id":"#sitin#NoBillNoBreak" + }, + { + "source":"#sitin" + ,"target":"#NoMoreSilence" + ,"id":"#sitin#NoMoreSilence" + }, + { + "source":"#slipping" + ,"target":"#Debates2016" + ,"id":"#slipping#Debates2016" + }, + { + "source":"#slipping" + ,"target":"#Polls" + ,"id":"#slipping#Polls" + }, + { + "source":"#smallbiz" + ,"target":"#taxplan" + ,"id":"#smallbiz#taxplan" + }, + { + "source":"#Srebrenica" + ,"target":"#NeverForget" + ,"id":"#Srebrenica#NeverForget" + }, + { + "source":"#StandTogether" + ,"target":"#NATO" + ,"id":"#StandTogether#NATO" + }, + { + "source":"#Statehood" + ,"target":"#WashingtonDC" + ,"id":"#Statehood#WashingtonDC" + }, + { + "source":"#StopCommonCore" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#StopCommonCore#MakeAmericaGreatAgain" + }, + { + "source":"#StoptheHate" + ,"target":"#Orlando" + ,"id":"#StoptheHate#Orlando" + }, + { + "source":"#StrongerTogether" + ,"target":"#DemsinPhilly" + ,"id":"#StrongerTogether#DemsinPhilly" + }, + { + "source":"#SuperBowlSunday" + ,"target":"#GOPDebate" + ,"id":"#SuperBowlSunday#GOPDebate" + }, + { + "source":"#SuperBowlSunday" + ,"target":"#SB50" + ,"id":"#SuperBowlSunday#SB50" + }, + { + "source":"#SuperSaturday" + ,"target":"#Trump2016" + ,"id":"#SuperSaturday#Trump2016" + }, + { + "source":"#SuperTuesday" + ,"target":"#LoneStarState" + ,"id":"#SuperTuesday#LoneStarState" + }, + { + "source":"#SuperTuesday" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#SuperTuesday#MakeAmericaGreatAgain" + }, + { + "source":"#SuperTuesday" + ,"target":"#Trump2016" + ,"id":"#SuperTuesday#Trump2016" + }, + { + "source":"#SuperTuesday" + ,"target":"#VoteTrump" + ,"id":"#SuperTuesday#VoteTrump" + }, + { + "source":"#taxplan" + ,"target":"#smallbiz" + ,"id":"#taxplan#smallbiz" + }, + { + "source":"#TBT" + ,"target":"#HillaryOnGMA" + ,"id":"#TBT#HillaryOnGMA" + }, + { + "source":"#TBT" + ,"target":"#MAGA" + ,"id":"#TBT#MAGA" + }, + { + "source":"#Teachers4Trump" + ,"target":"#CA4Trump" + ,"id":"#Teachers4Trump#CA4Trump" + }, + { + "source":"#Teachers4Trump" + ,"target":"#NeverDems" + ,"id":"#Teachers4Trump#NeverDems" + }, + { + "source":"#TeamTrump" + ,"target":"#MaitnerStrong" + ,"id":"#TeamTrump#MaitnerStrong" + }, + { + "source":"#TeamUSA" + ,"target":"#OpeningCeremony" + ,"id":"#TeamUSA#OpeningCeremony" + }, + { + "source":"#TeamUSA" + ,"target":"#Rio2016" + ,"id":"#TeamUSA#Rio2016" + }, + { + "source":"#TedCruz" + ,"target":"#CommonLaw" + ,"id":"#TedCruz#CommonLaw" + }, + { + "source":"#TedCruz" + ,"target":"#LaurenceTribe" + ,"id":"#TedCruz#LaurenceTribe" + }, + { + "source":"#TedCruz" + ,"target":"#MaryBrigidMcManamon" + ,"id":"#TedCruz#MaryBrigidMcManamon" + }, + { + "source":"#TedCruz" + ,"target":"#NaturalBorn" + ,"id":"#TedCruz#NaturalBorn" + }, + { + "source":"#TheDonald" + ,"target":"#JimmyFallon" + ,"id":"#TheDonald#JimmyFallon" + }, + { + "source":"#TheDonald" + ,"target":"#TheTonightShow" + ,"id":"#TheDonald#TheTonightShow" + }, + { + "source":"#TheDonald" + ,"target":"#TrumpPence16" + ,"id":"#TheDonald#TrumpPence16" + }, + { + "source":"#TheTonightShow" + ,"target":"#JimmyFallon" + ,"id":"#TheTonightShow#JimmyFallon" + }, + { + "source":"#TheTonightShow" + ,"target":"#TheDonald" + ,"id":"#TheTonightShow#TheDonald" + }, + { + "source":"#TheTonightShow" + ,"target":"#TrumpPence16" + ,"id":"#TheTonightShow#TrumpPence16" + }, + { + "source":"#TPP" + ,"target":"#Debates2016" + ,"id":"#TPP#Debates2016" + }, + { + "source":"#trump" + ,"target":"#makeamericagreatagain" + ,"id":"#trump#makeamericagreatagain" + }, + { + "source":"#trump" + ,"target":"#WeAreBernie" + ,"id":"#trump#WeAreBernie" + }, + { + "source":"#trump" + ,"target":"#WeWantTrump" + ,"id":"#trump#WeWantTrump" + }, + { + "source":"#Trump" + ,"target":"#Carrier" + ,"id":"#Trump#Carrier" + }, + { + "source":"#Trump" + ,"target":"#Clinton" + ,"id":"#Trump#Clinton" + }, + { + "source":"#Trump" + ,"target":"#Ford" + ,"id":"#Trump#Ford" + }, + { + "source":"#Trump" + ,"target":"#Jobs" + ,"id":"#Trump#Jobs" + }, + { + "source":"#Trump" + ,"target":"#Mexico" + ,"id":"#Trump#Mexico" + }, + { + "source":"#trump2016" + ,"target":"#ICYMI" + ,"id":"#trump2016#ICYMI" + }, + { + "source":"#trump2016" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#trump2016#MakeAmericaGreatAgain" + }, + { + "source":"#trump2016" + ,"target":"#With_Cruz_you_lose" + ,"id":"#trump2016#With_Cruz_you_lose" + }, + { + "source":"#Trump2016" + ,"target":"#AlwaysTrump" + ,"id":"#Trump2016#AlwaysTrump" + }, + { + "source":"#Trump2016" + ,"target":"#AmericaFirst" + ,"id":"#Trump2016#AmericaFirst" + }, + { + "source":"#Trump2016" + ,"target":"#ArizonaPrimary" + ,"id":"#Trump2016#ArizonaPrimary" + }, + { + "source":"#Trump2016" + ,"target":"#AZPrimary" + ,"id":"#Trump2016#AZPrimary" + }, + { + "source":"#Trump2016" + ,"target":"#CrookedHillary" + ,"id":"#Trump2016#CrookedHillary" + }, + { + "source":"#Trump2016" + ,"target":"#ECONOMY" + ,"id":"#Trump2016#ECONOMY" + }, + { + "source":"#Trump2016" + ,"target":"#EndCommonCore" + ,"id":"#Trump2016#EndCommonCore" + }, + { + "source":"#Trump2016" + ,"target":"#FITN" + ,"id":"#Trump2016#FITN" + }, + { + "source":"#Trump2016" + ,"target":"#FoxNews" + ,"id":"#Trump2016#FoxNews" + }, + { + "source":"#Trump2016" + ,"target":"#Hannity" + ,"id":"#Trump2016#Hannity" + }, + { + "source":"#Trump2016" + ,"target":"#IACaucus" + ,"id":"#Trump2016#IACaucus" + }, + { + "source":"#Trump2016" + ,"target":"#IAPolitics" + ,"id":"#Trump2016#IAPolitics" + }, + { + "source":"#Trump2016" + ,"target":"#ICYMI" + ,"id":"#Trump2016#ICYMI" + }, + { + "source":"#Trump2016" + ,"target":"#ImWithYou" + ,"id":"#Trump2016#ImWithYou" + }, + { + "source":"#Trump2016" + ,"target":"#INPrimary" + ,"id":"#Trump2016#INPrimary" + }, + { + "source":"#Trump2016" + ,"target":"#KansasCaucus" + ,"id":"#Trump2016#KansasCaucus" + }, + { + "source":"#Trump2016" + ,"target":"#LESM" + ,"id":"#Trump2016#LESM" + }, + { + "source":"#Trump2016" + ,"target":"#MAGA" + ,"id":"#Trump2016#MAGA" + }, + { + "source":"#Trump2016" + ,"target":"#MAGAhttps" + ,"id":"#Trump2016#MAGAhttps" + }, + { + "source":"#Trump2016" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#Trump2016#MakeAmericaGreatAgain" + }, + { + "source":"#Trump2016" + ,"target":"#MakeAmericaGreatAgainhttps" + ,"id":"#Trump2016#MakeAmericaGreatAgainhttps" + }, + { + "source":"#Trump2016" + ,"target":"#MakeAmericaGreatAgain@Snapchat" + ,"id":"#Trump2016#MakeAmericaGreatAgain@Snapchat" + }, + { + "source":"#Trump2016" + ,"target":"#MakeAmericaGreatAgainTickets" + ,"id":"#Trump2016#MakeAmericaGreatAgainTickets" + }, + { + "source":"#Trump2016" + ,"target":"#MeetTheTrumps" + ,"id":"#Trump2016#MeetTheTrumps" + }, + { + "source":"#Trump2016" + ,"target":"#NASCAR" + ,"id":"#Trump2016#NASCAR" + }, + { + "source":"#Trump2016" + ,"target":"#NewYorkValues" + ,"id":"#Trump2016#NewYorkValues" + }, + { + "source":"#Trump2016" + ,"target":"#NHPolitics" + ,"id":"#Trump2016#NHPolitics" + }, + { + "source":"#Trump2016" + ,"target":"#NYPrimary" + ,"id":"#Trump2016#NYPrimary" + }, + { + "source":"#Trump2016" + ,"target":"#NYPrimaryTickets" + ,"id":"#Trump2016#NYPrimaryTickets" + }, + { + "source":"#Trump2016" + ,"target":"#POTUS" + ,"id":"#Trump2016#POTUS" + }, + { + "source":"#Trump2016" + ,"target":"#presidenttrump" + ,"id":"#Trump2016#presidenttrump" + }, + { + "source":"#Trump2016" + ,"target":"#primary" + ,"id":"#Trump2016#primary" + }, + { + "source":"#Trump2016" + ,"target":"#PrimaryDay" + ,"id":"#Trump2016#PrimaryDay" + }, + { + "source":"#Trump2016" + ,"target":"#RNC" + ,"id":"#Trump2016#RNC" + }, + { + "source":"#Trump2016" + ,"target":"#RTM2016" + ,"id":"#Trump2016#RTM2016" + }, + { + "source":"#Trump2016" + ,"target":"#SCPrimary" + ,"id":"#Trump2016#SCPrimary" + }, + { + "source":"#Trump2016" + ,"target":"#SuperSaturday" + ,"id":"#Trump2016#SuperSaturday" + }, + { + "source":"#Trump2016" + ,"target":"#SuperTuesday" + ,"id":"#Trump2016#SuperTuesday" + }, + { + "source":"#Trump2016" + ,"target":"#TrumpNV" + ,"id":"#Trump2016#TrumpNV" + }, + { + "source":"#Trump2016" + ,"target":"#TrumpTrain" + ,"id":"#Trump2016#TrumpTrain" + }, + { + "source":"#Trump2016" + ,"target":"#TrumpTrainhttps" + ,"id":"#Trump2016#TrumpTrainhttps" + }, + { + "source":"#Trump2016" + ,"target":"#VoteTrump" + ,"id":"#Trump2016#VoteTrump" + }, + { + "source":"#Trump2016" + ,"target":"#VoteTrumpNV" + ,"id":"#Trump2016#VoteTrumpNV" + }, + { + "source":"#Trump2016" + ,"target":"#VoteTrumpNY" + ,"id":"#Trump2016#VoteTrumpNY" + }, + { + "source":"#Trump2016" + ,"target":"#VoteTrumpSC" + ,"id":"#Trump2016#VoteTrumpSC" + }, + { + "source":"#Trump2016" + ,"target":"#WattersWorld" + ,"id":"#Trump2016#WattersWorld" + }, + { + "source":"#Trump2016" + ,"target":"#WesternTuesday" + ,"id":"#Trump2016#WesternTuesday" + }, + { + "source":"#Trump2016" + ,"target":"#WIPrimary" + ,"id":"#Trump2016#WIPrimary" + }, + { + "source":"#Trump2016" + ,"target":"#Women4Ttump" + ,"id":"#Trump2016#Women4Ttump" + }, + { + "source":"#TRUMP2016" + ,"target":"#MAGA" + ,"id":"#TRUMP2016#MAGA" + }, + { + "source":"#Trump2016https" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#Trump2016https#MakeAmericaGreatAgain" + }, + { + "source":"#Trump2016https" + ,"target":"#MakeYoutubeGreatAgain" + ,"id":"#Trump2016https#MakeYoutubeGreatAgain" + }, + { + "source":"#Trump2016https" + ,"target":"#UtahCaucus" + ,"id":"#Trump2016https#UtahCaucus" + }, + { + "source":"#Trump2016https" + ,"target":"#UTCaucus" + ,"id":"#Trump2016https#UTCaucus" + }, + { + "source":"#Trump2016https" + ,"target":"#VoteTrump" + ,"id":"#Trump2016https#VoteTrump" + }, + { + "source":"#Trump2016Tickets" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#Trump2016Tickets#MakeAmericaGreatAgain" + }, + { + "source":"#TrumpCountry" + ,"target":"#Mormon" + ,"id":"#TrumpCountry#Mormon" + }, + { + "source":"#TrumpCountry" + ,"target":"#Utah" + ,"id":"#TrumpCountry#Utah" + }, + { + "source":"#TrumpCountry" + ,"target":"#Utah4Trump" + ,"id":"#TrumpCountry#Utah4Trump" + }, + { + "source":"#TrumpCountry" + ,"target":"#UtahPrimary" + ,"id":"#TrumpCountry#UtahPrimary" + }, + { + "source":"#TrumpIsWithYou" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#TrumpIsWithYou#MakeAmericaGreatAgain" + }, + { + "source":"#TrumpIsWithYou" + ,"target":"#RNCinCLE" + ,"id":"#TrumpIsWithYou#RNCinCLE" + }, + { + "source":"#TrumpMovement" + ,"target":"#MAGA" + ,"id":"#TrumpMovement#MAGA" + }, + { + "source":"#TrumpNV" + ,"target":"#Trump2016" + ,"id":"#TrumpNV#Trump2016" + }, + { + "source":"#TrumpPence16" + ,"target":"#AmericaFirst" + ,"id":"#TrumpPence16#AmericaFirst" + }, + { + "source":"#TrumpPence16" + ,"target":"#CrookedHillary" + ,"id":"#TrumpPence16#CrookedHillary" + }, + { + "source":"#TrumpPence16" + ,"target":"#DebateNight" + ,"id":"#TrumpPence16#DebateNight" + }, + { + "source":"#TrumpPence16" + ,"target":"#JimmyFallon" + ,"id":"#TrumpPence16#JimmyFallon" + }, + { + "source":"#TrumpPence16" + ,"target":"#MAGA" + ,"id":"#TrumpPence16#MAGA" + }, + { + "source":"#TrumpPence16" + ,"target":"#TheDonald" + ,"id":"#TrumpPence16#TheDonald" + }, + { + "source":"#TrumpPence16" + ,"target":"#TheTonightShow" + ,"id":"#TrumpPence16#TheTonightShow" + }, + { + "source":"#TrumpPence2016" + ,"target":"#NeverHillary" + ,"id":"#TrumpPence2016#NeverHillary" + }, + { + "source":"#TrumpPence2016" + ,"target":"#RNCinCLE" + ,"id":"#TrumpPence2016#RNCinCLE" + }, + { + "source":"#TrumpTrain" + ,"target":"#AlwaysTrump" + ,"id":"#TrumpTrain#AlwaysTrump" + }, + { + "source":"#TrumpTrain" + ,"target":"#AmericaFirst" + ,"id":"#TrumpTrain#AmericaFirst" + }, + { + "source":"#TrumpTrain" + ,"target":"#EauClaire" + ,"id":"#TrumpTrain#EauClaire" + }, + { + "source":"#TrumpTrain" + ,"target":"#GOPDebate" + ,"id":"#TrumpTrain#GOPDebate" + }, + { + "source":"#TrumpTrain" + ,"target":"#ImWithYou" + ,"id":"#TrumpTrain#ImWithYou" + }, + { + "source":"#TrumpTrain" + ,"target":"#MAGA" + ,"id":"#TrumpTrain#MAGA" + }, + { + "source":"#TrumpTrain" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#TrumpTrain#MakeAmericaGreatAgain" + }, + { + "source":"#TrumpTrain" + ,"target":"#Racine" + ,"id":"#TrumpTrain#Racine" + }, + { + "source":"#TrumpTrain" + ,"target":"#Trump2016" + ,"id":"#TrumpTrain#Trump2016" + }, + { + "source":"#TrumpTrain" + ,"target":"#VoteTrump2016" + ,"id":"#TrumpTrain#VoteTrump2016" + }, + { + "source":"#TrumpTrain" + ,"target":"#Wausau" + ,"id":"#TrumpTrain#Wausau" + }, + { + "source":"#TrumpTrain" + ,"target":"#WesternTuesday" + ,"id":"#TrumpTrain#WesternTuesday" + }, + { + "source":"#TrumpTrain" + ,"target":"#Wisconsin" + ,"id":"#TrumpTrain#Wisconsin" + }, + { + "source":"#TrumpTrainhttps" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#TrumpTrainhttps#MakeAmericaGreatAgain" + }, + { + "source":"#TrumpTrainhttps" + ,"target":"#NYPrimary" + ,"id":"#TrumpTrainhttps#NYPrimary" + }, + { + "source":"#TrumpTrainhttps" + ,"target":"#Trump2016" + ,"id":"#TrumpTrainhttps#Trump2016" + }, + { + "source":"#TrumpWaikiki" + ,"target":"#Mahalo" + ,"id":"#TrumpWaikiki#Mahalo" + }, + { + "source":"#TrumpWon" + ,"target":"#MAGA" + ,"id":"#TrumpWon#MAGA" + }, + { + "source":"#USA" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#USA#MakeAmericaGreatAgain" + }, + { + "source":"#UT" + ,"target":"#AZ" + ,"id":"#UT#AZ" + }, + { + "source":"#Utah" + ,"target":"#Mormon" + ,"id":"#Utah#Mormon" + }, + { + "source":"#Utah" + ,"target":"#TrumpCountry" + ,"id":"#Utah#TrumpCountry" + }, + { + "source":"#Utah" + ,"target":"#Utah4Trump" + ,"id":"#Utah#Utah4Trump" + }, + { + "source":"#Utah" + ,"target":"#UtahPrimary" + ,"id":"#Utah#UtahPrimary" + }, + { + "source":"#Utah4Trump" + ,"target":"#Mormon" + ,"id":"#Utah4Trump#Mormon" + }, + { + "source":"#Utah4Trump" + ,"target":"#TrumpCountry" + ,"id":"#Utah4Trump#TrumpCountry" + }, + { + "source":"#Utah4Trump" + ,"target":"#Utah" + ,"id":"#Utah4Trump#Utah" + }, + { + "source":"#Utah4Trump" + ,"target":"#UtahPrimary" + ,"id":"#Utah4Trump#UtahPrimary" + }, + { + "source":"#UtahCaucus" + ,"target":"#AmericanSamoa" + ,"id":"#UtahCaucus#AmericanSamoa" + }, + { + "source":"#UtahCaucus" + ,"target":"#ArizonaPrimary" + ,"id":"#UtahCaucus#ArizonaPrimary" + }, + { + "source":"#UtahCaucus" + ,"target":"#AZPrimary" + ,"id":"#UtahCaucus#AZPrimary" + }, + { + "source":"#UtahCaucus" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#UtahCaucus#MakeAmericaGreatAgain" + }, + { + "source":"#UtahCaucus" + ,"target":"#Trump2016https" + ,"id":"#UtahCaucus#Trump2016https" + }, + { + "source":"#UtahCaucus" + ,"target":"#UTCaucus" + ,"id":"#UtahCaucus#UTCaucus" + }, + { + "source":"#UtahCaucus" + ,"target":"#VoteTrump" + ,"id":"#UtahCaucus#VoteTrump" + }, + { + "source":"#UtahPrimary" + ,"target":"#Mormon" + ,"id":"#UtahPrimary#Mormon" + }, + { + "source":"#UtahPrimary" + ,"target":"#TrumpCountry" + ,"id":"#UtahPrimary#TrumpCountry" + }, + { + "source":"#UtahPrimary" + ,"target":"#Utah" + ,"id":"#UtahPrimary#Utah" + }, + { + "source":"#UtahPrimary" + ,"target":"#Utah4Trump" + ,"id":"#UtahPrimary#Utah4Trump" + }, + { + "source":"#UTCaucus" + ,"target":"#AmericanSamoa" + ,"id":"#UTCaucus#AmericanSamoa" + }, + { + "source":"#UTCaucus" + ,"target":"#ArizonaPrimary" + ,"id":"#UTCaucus#ArizonaPrimary" + }, + { + "source":"#UTCaucus" + ,"target":"#AZPrimary" + ,"id":"#UTCaucus#AZPrimary" + }, + { + "source":"#UTCaucus" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#UTCaucus#MakeAmericaGreatAgain" + }, + { + "source":"#UTCaucus" + ,"target":"#Trump2016https" + ,"id":"#UTCaucus#Trump2016https" + }, + { + "source":"#UTCaucus" + ,"target":"#UtahCaucus" + ,"id":"#UTCaucus#UtahCaucus" + }, + { + "source":"#UTCaucus" + ,"target":"#VoteTrump" + ,"id":"#UTCaucus#VoteTrump" + }, + { + "source":"#veterans" + ,"target":"#GIBill" + ,"id":"#veterans#GIBill" + }, + { + "source":"#VoterFraud" + ,"target":"#MSM" + ,"id":"#VoterFraud#MSM" + }, + { + "source":"#VoterRegistrationDay" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VoterRegistrationDay#MakeAmericaGreatAgain" + }, + { + "source":"#VotersSpeak" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VotersSpeak#MakeAmericaGreatAgain" + }, + { + "source":"#VoteTrump" + ,"target":"#AmericanSamoa" + ,"id":"#VoteTrump#AmericanSamoa" + }, + { + "source":"#VoteTrump" + ,"target":"#ArizonaPrimary" + ,"id":"#VoteTrump#ArizonaPrimary" + }, + { + "source":"#VoteTrump" + ,"target":"#AZPrimary" + ,"id":"#VoteTrump#AZPrimary" + }, + { + "source":"#VoteTrump" + ,"target":"#FITN" + ,"id":"#VoteTrump#FITN" + }, + { + "source":"#VoteTrump" + ,"target":"#IACaucus" + ,"id":"#VoteTrump#IACaucus" + }, + { + "source":"#VoteTrump" + ,"target":"#IAPolitics" + ,"id":"#VoteTrump#IAPolitics" + }, + { + "source":"#VoteTrump" + ,"target":"#ImWithYou" + ,"id":"#VoteTrump#ImWithYou" + }, + { + "source":"#VoteTrump" + ,"target":"#INPrimary" + ,"id":"#VoteTrump#INPrimary" + }, + { + "source":"#VoteTrump" + ,"target":"#IowaCaucus" + ,"id":"#VoteTrump#IowaCaucus" + }, + { + "source":"#VoteTrump" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VoteTrump#MakeAmericaGreatAgain" + }, + { + "source":"#VoteTrump" + ,"target":"#NASCAR" + ,"id":"#VoteTrump#NASCAR" + }, + { + "source":"#VoteTrump" + ,"target":"#NewYorkValues" + ,"id":"#VoteTrump#NewYorkValues" + }, + { + "source":"#VoteTrump" + ,"target":"#NYPrimary" + ,"id":"#VoteTrump#NYPrimary" + }, + { + "source":"#VoteTrump" + ,"target":"#ORPrimary" + ,"id":"#VoteTrump#ORPrimary" + }, + { + "source":"#VoteTrump" + ,"target":"#RIPrimary" + ,"id":"#VoteTrump#RIPrimary" + }, + { + "source":"#VoteTrump" + ,"target":"#SuperTuesday" + ,"id":"#VoteTrump#SuperTuesday" + }, + { + "source":"#VoteTrump" + ,"target":"#Trump2016" + ,"id":"#VoteTrump#Trump2016" + }, + { + "source":"#VoteTrump" + ,"target":"#Trump2016https" + ,"id":"#VoteTrump#Trump2016https" + }, + { + "source":"#VoteTrump" + ,"target":"#UtahCaucus" + ,"id":"#VoteTrump#UtahCaucus" + }, + { + "source":"#VoteTrump" + ,"target":"#UTCaucus" + ,"id":"#VoteTrump#UTCaucus" + }, + { + "source":"#VoteTrump" + ,"target":"#WIPrimaryhttps" + ,"id":"#VoteTrump#WIPrimaryhttps" + }, + { + "source":"#VoteTrump2016" + ,"target":"#TrumpTrain" + ,"id":"#VoteTrump2016#TrumpTrain" + }, + { + "source":"#VoteTrumphttps" + ,"target":"#INPrimary" + ,"id":"#VoteTrumphttps#INPrimary" + }, + { + "source":"#VoteTrumphttps" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VoteTrumphttps#MakeAmericaGreatAgain" + }, + { + "source":"#VoteTrumphttps" + ,"target":"#PAPrimary" + ,"id":"#VoteTrumphttps#PAPrimary" + }, + { + "source":"#VoteTrumpNH" + ,"target":"#FITN" + ,"id":"#VoteTrumpNH#FITN" + }, + { + "source":"#VoteTrumpNH" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VoteTrumpNH#MakeAmericaGreatAgain" + }, + { + "source":"#VoteTrumpNH" + ,"target":"#NewHampshire" + ,"id":"#VoteTrumpNH#NewHampshire" + }, + { + "source":"#VoteTrumpNH" + ,"target":"#NHPrimary" + ,"id":"#VoteTrumpNH#NHPrimary" + }, + { + "source":"#VoteTrumpNV" + ,"target":"#BikersForTrump" + ,"id":"#VoteTrumpNV#BikersForTrump" + }, + { + "source":"#VoteTrumpNV" + ,"target":"#NevadaCaucus" + ,"id":"#VoteTrumpNV#NevadaCaucus" + }, + { + "source":"#VoteTrumpNV" + ,"target":"#Trump2016" + ,"id":"#VoteTrumpNV#Trump2016" + }, + { + "source":"#VoteTrumpNVhttps" + ,"target":"#NevadaCaucus" + ,"id":"#VoteTrumpNVhttps#NevadaCaucus" + }, + { + "source":"#VoteTrumpNY" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VoteTrumpNY#MakeAmericaGreatAgain" + }, + { + "source":"#VoteTrumpNY" + ,"target":"#POTUS" + ,"id":"#VoteTrumpNY#POTUS" + }, + { + "source":"#VoteTrumpNY" + ,"target":"#PrimaryDay" + ,"id":"#VoteTrumpNY#PrimaryDay" + }, + { + "source":"#VoteTrumpNY" + ,"target":"#Trump2016" + ,"id":"#VoteTrumpNY#Trump2016" + }, + { + "source":"#VoteTrumpSC" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#VoteTrumpSC#MakeAmericaGreatAgain" + }, + { + "source":"#VoteTrumpSC" + ,"target":"#SCPrimary" + ,"id":"#VoteTrumpSC#SCPrimary" + }, + { + "source":"#VoteTrumpSC" + ,"target":"#Trump2016" + ,"id":"#VoteTrumpSC#Trump2016" + }, + { + "source":"#VoteTrumpWI" + ,"target":"#WIPrimary" + ,"id":"#VoteTrumpWI#WIPrimary" + }, + { + "source":"#WashingtonDC" + ,"target":"#Statehood" + ,"id":"#WashingtonDC#Statehood" + }, + { + "source":"#WattersWorld" + ,"target":"#Trump2016" + ,"id":"#WattersWorld#Trump2016" + }, + { + "source":"#Wausau" + ,"target":"#EauClaire" + ,"id":"#Wausau#EauClaire" + }, + { + "source":"#Wausau" + ,"target":"#Racine" + ,"id":"#Wausau#Racine" + }, + { + "source":"#Wausau" + ,"target":"#TrumpTrain" + ,"id":"#Wausau#TrumpTrain" + }, + { + "source":"#WCS16" + ,"target":"#ImWithYou" + ,"id":"#WCS16#ImWithYou" + }, + { + "source":"#WeAreBernie" + ,"target":"#makeamericagreatagain" + ,"id":"#WeAreBernie#makeamericagreatagain" + }, + { + "source":"#WeAreBernie" + ,"target":"#trump" + ,"id":"#WeAreBernie#trump" + }, + { + "source":"#WeAreBernie" + ,"target":"#WeWantTrump" + ,"id":"#WeAreBernie#WeWantTrump" + }, + { + "source":"#WesternTuesday" + ,"target":"#Trump2016" + ,"id":"#WesternTuesday#Trump2016" + }, + { + "source":"#WesternTuesday" + ,"target":"#TrumpTrain" + ,"id":"#WesternTuesday#TrumpTrain" + }, + { + "source":"#WeWantTrump" + ,"target":"#makeamericagreatagain" + ,"id":"#WeWantTrump#makeamericagreatagain" + }, + { + "source":"#WeWantTrump" + ,"target":"#trump" + ,"id":"#WeWantTrump#trump" + }, + { + "source":"#WeWantTrump" + ,"target":"#WeAreBernie" + ,"id":"#WeWantTrump#WeAreBernie" + }, + { + "source":"#WH" + ,"target":"#DavidCameron" + ,"id":"#WH#DavidCameron" + }, + { + "source":"#WIPrimary" + ,"target":"#MAGAhttps" + ,"id":"#WIPrimary#MAGAhttps" + }, + { + "source":"#WIPrimary" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#WIPrimary#MakeAmericaGreatAgain" + }, + { + "source":"#WIPrimary" + ,"target":"#Trump2016" + ,"id":"#WIPrimary#Trump2016" + }, + { + "source":"#WIPrimary" + ,"target":"#VoteTrumpWI" + ,"id":"#WIPrimary#VoteTrumpWI" + }, + { + "source":"#WIPrimaryhttps" + ,"target":"#VoteTrump" + ,"id":"#WIPrimaryhttps#VoteTrump" + }, + { + "source":"#Wisconsin" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#Wisconsin#MakeAmericaGreatAgain" + }, + { + "source":"#Wisconsin" + ,"target":"#TrumpTrain" + ,"id":"#Wisconsin#TrumpTrain" + }, + { + "source":"#With_Cruz_you_lose" + ,"target":"#MakeAmericaGreatAgain" + ,"id":"#With_Cruz_you_lose#MakeAmericaGreatAgain" + }, + { + "source":"#With_Cruz_you_lose" + ,"target":"#trump2016" + ,"id":"#With_Cruz_you_lose#trump2016" + }, + { + "source":"#Women4Ttump" + ,"target":"#Trump2016" + ,"id":"#Women4Ttump#Trump2016" + }, + { + "source":"Nullpunkt", + "target":"FavoriteCount:2900000", + "id":"FavoriteCount:100000_FavoriteCount:2900000" + }, + { + "source":"Nullpunkt", + "target":"RetweetCount:5000000", + "id":"RetweetCount:100000_RetweetCount:5000000" + }],"nodes":[ +{ + "label":"Nullpunkt" + ,"x":"0" + ,"y":"0" + ,"id":"Nullpunkt" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + + { + "label":"FavoriteCount:100000" + ,"x":"0" + ,"y":"100000" + ,"id":"FavoriteCount:100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:200000" + ,"x":"0" + ,"y":"200000" + ,"id":"FavoriteCount:200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:300000" + ,"x":"0" + ,"y":"300000" + ,"id":"FavoriteCount:300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:400000" + ,"x":"0" + ,"y":"400000" + ,"id":"FavoriteCount:400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:500000" + ,"x":"0" + ,"y":"500000" + ,"id":"FavoriteCount:500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:600000" + ,"x":"0" + ,"y":"600000" + ,"id":"FavoriteCount:600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:700000" + ,"x":"0" + ,"y":"700000" + ,"id":"FavoriteCount:700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:800000" + ,"x":"0" + ,"y":"800000" + ,"id":"FavoriteCount:800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:900000" + ,"x":"0" + ,"y":"900000" + ,"id":"FavoriteCount:900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1000000" + ,"x":"0" + ,"y":"1000000" + ,"id":"FavoriteCount:1000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1100000" + ,"x":"0" + ,"y":"1100000" + ,"id":"FavoriteCount:1100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1200000" + ,"x":"0" + ,"y":"1200000" + ,"id":"FavoriteCount:1200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1300000" + ,"x":"0" + ,"y":"1300000" + ,"id":"FavoriteCount:1300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1400000" + ,"x":"0" + ,"y":"1400000" + ,"id":"FavoriteCount:1400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1500000" + ,"x":"0" + ,"y":"1500000" + ,"id":"FavoriteCount:1500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1600000" + ,"x":"0" + ,"y":"1600000" + ,"id":"FavoriteCount:1600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1700000" + ,"x":"0" + ,"y":"1700000" + ,"id":"FavoriteCount:1700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1800000" + ,"x":"0" + ,"y":"1800000" + ,"id":"FavoriteCount:1800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:1900000" + ,"x":"0" + ,"y":"1900000" + ,"id":"FavoriteCount:1900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2000000" + ,"x":"0" + ,"y":"2000000" + ,"id":"FavoriteCount:2000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2100000" + ,"x":"0" + ,"y":"2100000" + ,"id":"FavoriteCount:2100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2200000" + ,"x":"0" + ,"y":"2200000" + ,"id":"FavoriteCount:2200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2300000" + ,"x":"0" + ,"y":"2300000" + ,"id":"FavoriteCount:2300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2400000" + ,"x":"0" + ,"y":"2400000" + ,"id":"FavoriteCount:2400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2500000" + ,"x":"0" + ,"y":"2500000" + ,"id":"FavoriteCount:2500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2600000" + ,"x":"0" + ,"y":"2600000" + ,"id":"FavoriteCount:2600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2700000" + ,"x":"0" + ,"y":"2700000" + ,"id":"FavoriteCount:2700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2800000" + ,"x":"0" + ,"y":"2800000" + ,"id":"FavoriteCount:2800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"FavoriteCount:2900000" + ,"x":"0" + ,"y":"2900000" + ,"id":"FavoriteCount:2900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:100000" + ,"x":"100000" + ,"y":"0" + ,"id":"RetweetCount:100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:200000" + ,"x":"200000" + ,"y":"0" + ,"id":"RetweetCount:200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:300000" + ,"x":"300000" + ,"y":"0" + ,"id":"RetweetCount:300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:400000" + ,"x":"400000" + ,"y":"0" + ,"id":"RetweetCount:400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:500000" + ,"x":"500000" + ,"y":"0" + ,"id":"RetweetCount:500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:600000" + ,"x":"600000" + ,"y":"0" + ,"id":"RetweetCount:600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:700000" + ,"x":"700000" + ,"y":"0" + ,"id":"RetweetCount:700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:800000" + ,"x":"800000" + ,"y":"0" + ,"id":"RetweetCount:800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:900000" + ,"x":"900000" + ,"y":"0" + ,"id":"RetweetCount:900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1000000" + ,"x":"1000000" + ,"y":"0" + ,"id":"RetweetCount:1000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1100000" + ,"x":"1100000" + ,"y":"0" + ,"id":"RetweetCount:1100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1200000" + ,"x":"1200000" + ,"y":"0" + ,"id":"RetweetCount:1200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1300000" + ,"x":"1300000" + ,"y":"0" + ,"id":"RetweetCount:1300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1400000" + ,"x":"1400000" + ,"y":"0" + ,"id":"RetweetCount:1400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1500000" + ,"x":"1500000" + ,"y":"0" + ,"id":"RetweetCount:1500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1600000" + ,"x":"1600000" + ,"y":"0" + ,"id":"RetweetCount:1600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1700000" + ,"x":"1700000" + ,"y":"0" + ,"id":"RetweetCount:1700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1800000" + ,"x":"1800000" + ,"y":"0" + ,"id":"RetweetCount:1800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:1900000" + ,"x":"1900000" + ,"y":"0" + ,"id":"RetweetCount:1900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2000000" + ,"x":"2000000" + ,"y":"0" + ,"id":"RetweetCount:2000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2100000" + ,"x":"2100000" + ,"y":"0" + ,"id":"RetweetCount:2100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2200000" + ,"x":"2200000" + ,"y":"0" + ,"id":"RetweetCount:2200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2300000" + ,"x":"2300000" + ,"y":"0" + ,"id":"RetweetCount:2300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2400000" + ,"x":"2400000" + ,"y":"0" + ,"id":"RetweetCount:2400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2500000" + ,"x":"2500000" + ,"y":"0" + ,"id":"RetweetCount:2500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2600000" + ,"x":"2600000" + ,"y":"0" + ,"id":"RetweetCount:2600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2700000" + ,"x":"2700000" + ,"y":"0" + ,"id":"RetweetCount:2700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2800000" + ,"x":"2800000" + ,"y":"0" + ,"id":"RetweetCount:2800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:2900000" + ,"x":"2900000" + ,"y":"0" + ,"id":"RetweetCount:2900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3000000" + ,"x":"3000000" + ,"y":"0" + ,"id":"RetweetCount:3000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3100000" + ,"x":"3100000" + ,"y":"0" + ,"id":"RetweetCount:3100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3200000" + ,"x":"3200000" + ,"y":"0" + ,"id":"RetweetCount:3200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3300000" + ,"x":"3300000" + ,"y":"0" + ,"id":"RetweetCount:3300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3400000" + ,"x":"3400000" + ,"y":"0" + ,"id":"RetweetCount:3400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3500000" + ,"x":"3500000" + ,"y":"0" + ,"id":"RetweetCount:3500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3600000" + ,"x":"3600000" + ,"y":"0" + ,"id":"RetweetCount:3600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3700000" + ,"x":"3700000" + ,"y":"0" + ,"id":"RetweetCount:3700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3800000" + ,"x":"3800000" + ,"y":"0" + ,"id":"RetweetCount:3800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:3900000" + ,"x":"3900000" + ,"y":"0" + ,"id":"RetweetCount:3900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4000000" + ,"x":"4000000" + ,"y":"0" + ,"id":"RetweetCount:4000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4100000" + ,"x":"4100000" + ,"y":"0" + ,"id":"RetweetCount:4100000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4200000" + ,"x":"4200000" + ,"y":"0" + ,"id":"RetweetCount:4200000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4300000" + ,"x":"4300000" + ,"y":"0" + ,"id":"RetweetCount:4300000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4400000" + ,"x":"4400000" + ,"y":"0" + ,"id":"RetweetCount:4400000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4500000" + ,"x":"4500000" + ,"y":"0" + ,"id":"RetweetCount:4500000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4600000" + ,"x":"4600000" + ,"y":"0" + ,"id":"RetweetCount:4600000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4700000" + ,"x":"4700000" + ,"y":"0" + ,"id":"RetweetCount:4700000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4800000" + ,"x":"4800000" + ,"y":"0" + ,"id":"RetweetCount:4800000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:4900000" + ,"x":"4900000" + ,"y":"0" + ,"id":"RetweetCount:4900000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"RetweetCount:5000000" + ,"x":"5000000" + ,"y":"0" + ,"id":"RetweetCount:5000000" + ,"color":"rgb(0,0,0)" + ,"size":"10" + }, + { + "label":"#ActOnClimate" + ,"x":"3739" + ,"y":"2753" + ,"id":"#ActOnClimate" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#ADA" + ,"x":"1293" + ,"y":"452" + ,"id":"#ADA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AIDSFreeGeneration" + ,"x":"2528" + ,"y":"955" + ,"id":"#AIDSFreeGeneration" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AIPAC2016" + ,"x":"9704" + ,"y":"3488" + ,"id":"#AIPAC2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ALConvention2016" + ,"x":"20610" + ,"y":"6355" + ,"id":"#ALConvention2016" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#AlwaysTrump" + ,"x":"32742" + ,"y":"10146" + ,"id":"#AlwaysTrump" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#AmericaFirst" + ,"x":"1148627" + ,"y":"405552" + ,"id":"#AmericaFirst" + ,"color":"rgb(0,0,255)" + ,"size":"58" + }, + { + "label":"#AmericaFIRST" + ,"x":"11674" + ,"y":"3876" + ,"id":"#AmericaFIRST" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AmericaGreatAgain" + ,"x":"3459" + ,"y":"941" + ,"id":"#AmericaGreatAgain" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AmericanSamoa" + ,"x":"8750" + ,"y":"2973" + ,"id":"#AmericanSamoa" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#APAHM" + ,"x":"3681" + ,"y":"1294" + ,"id":"#APAHM" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Arizona" + ,"x":"7981" + ,"y":"2933" + ,"id":"#Arizona" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ArizonaPrimary" + ,"x":"16783" + ,"y":"5398" + ,"id":"#ArizonaPrimary" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#ArmedForcesDay" + ,"x":"28920" + ,"y":"10199" + ,"id":"#ArmedForcesDay" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#ArmyBDay" + ,"x":"2744" + ,"y":"882" + ,"id":"#ArmyBDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AsLongAsItTakes" + ,"x":"7947" + ,"y":"3589" + ,"id":"#AsLongAsItTakes" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#AZ" + ,"x":"15391" + ,"y":"4530" + ,"id":"#AZ" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#AZPrimary" + ,"x":"32721" + ,"y":"10742" + ,"id":"#AZPrimary" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#Benghazi" + ,"x":"56562" + ,"y":"30921" + ,"id":"#Benghazi" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#BikersForTrump" + ,"x":"6718" + ,"y":"2496" + ,"id":"#BikersForTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BlackMenForBernie" + ,"x":"10727" + ,"y":"4626" + ,"id":"#BlackMenForBernie" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BlacksForTrump" + ,"x":"10727" + ,"y":"4626" + ,"id":"#BlacksForTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BlackWomensEqualPay" + ,"x":"5523" + ,"y":"2513" + ,"id":"#BlackWomensEqualPay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#brexit" + ,"x":"13633" + ,"y":"5213" + ,"id":"#brexit" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Brexit" + ,"x":"1451" + ,"y":"1283" + ,"id":"#Brexit" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#BrexitVote" + ,"x":"35255" + ,"y":"17038" + ,"id":"#BrexitVote" + ,"color":"rgb(255,0,0)" + ,"size":"4" + }, + { + "label":"#Brussels" + ,"x":"45696" + ,"y":"17560" + ,"id":"#Brussels" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#BuildTheWall" + ,"x":"15416" + ,"y":"4254" + ,"id":"#BuildTheWall" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Bush" + ,"x":"4010" + ,"y":"1680" + ,"id":"#Bush" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CA4Trump" + ,"x":"9309" + ,"y":"2561" + ,"id":"#CA4Trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#campaignfinance" + ,"x":"4153" + ,"y":"2443" + ,"id":"#campaignfinance" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CAPrimary" + ,"x":"19771" + ,"y":"6448" + ,"id":"#CAPrimary" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#Caribbean" + ,"x":"674" + ,"y":"312" + ,"id":"#Caribbean" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Carrier" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Carrier" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CaucusForTrump" + ,"x":"54347" + ,"y":"18928" + ,"id":"#CaucusForTrump" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#CaucusForTrumphttps" + ,"x":"6913" + ,"y":"2951" + ,"id":"#CaucusForTrumphttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CBNNews" + ,"x":"2955" + ,"y":"1027" + ,"id":"#CBNNews" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ChangeAgents" + ,"x":"1096" + ,"y":"594" + ,"id":"#ChangeAgents" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Charleston9" + ,"x":"3522" + ,"y":"1450" + ,"id":"#Charleston9" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CincoDeMayo" + ,"x":"115107" + ,"y":"82653" + ,"id":"#CincoDeMayo" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#CitizensUnited" + ,"x":"6146" + ,"y":"3262" + ,"id":"#CitizensUnited" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#Clinton" + ,"x":"11435" + ,"y":"5530" + ,"id":"#Clinton" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ClintonKaine" + ,"x":"6579" + ,"y":"2664" + ,"id":"#ClintonKaine" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#CNN" + ,"x":"10608" + ,"y":"3066" + ,"id":"#CNN" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CoastGuardDay" + ,"x":"35595" + ,"y":"10741" + ,"id":"#CoastGuardDay" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#Colbert" + ,"x":"4719" + ,"y":"1635" + ,"id":"#Colbert" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CommanderInChiefForum" + ,"x":"23543" + ,"y":"9687" + ,"id":"#CommanderInChiefForum" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#CommonCore" + ,"x":"6729" + ,"y":"2271" + ,"id":"#CommonCore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CommonLaw" + ,"x":"2351" + ,"y":"801" + ,"id":"#CommonLaw" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CreatorsAskHRC" + ,"x":"5516" + ,"y":"1921" + ,"id":"#CreatorsAskHRC" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#CripTheVote" + ,"x":"1293" + ,"y":"452" + ,"id":"#CripTheVote" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CrookedHillary" + ,"x":"328929" + ,"y":"141810" + ,"id":"#CrookedHillary" + ,"color":"rgb(0,0,255)" + ,"size":"14" + }, + { + "label":"#Cruz" + ,"x":"2361" + ,"y":"876" + ,"id":"#Cruz" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CruzFraud" + ,"x":"10184" + ,"y":"6228" + ,"id":"#CruzFraud" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#CTPrimary" + ,"x":"11128" + ,"y":"4806" + ,"id":"#CTPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DACA" + ,"x":"1163" + ,"y":"482" + ,"id":"#DACA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DavidCameron" + ,"x":"1826" + ,"y":"683" + ,"id":"#DavidCameron" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DDay" + ,"x":"41913" + ,"y":"16809" + ,"id":"#DDay" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#debate" + ,"x":"21098" + ,"y":"12899" + ,"id":"#debate" + ,"color":"rgb(0,255,255)" + ,"size":"4" + }, + { + "label":"#Debate" + ,"x":"1946" + ,"y":"1523" + ,"id":"#Debate" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#debatenight" + ,"x":"612778" + ,"y":"363020" + ,"id":"#debatenight" + ,"color":"rgb(0,0,255)" + ,"size":"19" + }, + { + "label":"#DebateNight" + ,"x":"755436" + ,"y":"367087" + ,"id":"#DebateNight" + ,"color":"rgb(0,0,255)" + ,"size":"33" + }, + { + "label":"#Debates2016" + ,"x":"310728" + ,"y":"154973" + ,"id":"#Debates2016" + ,"color":"rgb(0,0,255)" + ,"size":"14" + }, + { + "label":"#Decision2016" + ,"x":"4893" + ,"y":"1913" + ,"id":"#Decision2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DeclareYourAmbition" + ,"x":"2652" + ,"y":"1464" + ,"id":"#DeclareYourAmbition" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DefendtheSecond" + ,"x":"15524" + ,"y":"7523" + ,"id":"#DefendtheSecond" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#DemConvention" + ,"x":"35768" + ,"y":"10859" + ,"id":"#DemConvention" + ,"color":"rgb(255,0,0)" + ,"size":"14" + }, + { + "label":"#DemocraticSitIn" + ,"x":"9485" + ,"y":"3016" + ,"id":"#DemocraticSitIn" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DemPlatform" + ,"x":"8147" + ,"y":"3785" + ,"id":"#DemPlatform" + ,"color":"rgb(0,255,0)" + ,"size":"4" + }, + { + "label":"#DemsinPhilly" + ,"x":"23356" + ,"y":"10626" + ,"id":"#DemsinPhilly" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#DemsInPhilly" + ,"x":"369246" + ,"y":"136660" + ,"id":"#DemsInPhilly" + ,"color":"rgb(0,0,255)" + ,"size":"51" + }, + { + "label":"#DemsinPHL" + ,"x":"14709" + ,"y":"10489" + ,"id":"#DemsinPHL" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#DemsInPHL" + ,"x":"11997" + ,"y":"3801" + ,"id":"#DemsInPHL" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#DEPrimary" + ,"x":"11128" + ,"y":"4806" + ,"id":"#DEPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DisarmHate" + ,"x":"31231" + ,"y":"25916" + ,"id":"#DisarmHate" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#DivoDeJuarez" + ,"x":"991" + ,"y":"381" + ,"id":"#DivoDeJuarez" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Diwali" + ,"x":"1710" + ,"y":"833" + ,"id":"#Diwali" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DNC" + ,"x":"49552" + ,"y":"16484" + ,"id":"#DNC" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#DNCinPHL" + ,"x":"684" + ,"y":"274" + ,"id":"#DNCinPHL" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Donald" + ,"x":"8926" + ,"y":"2387" + ,"id":"#Donald" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#DonaldTrump" + ,"x":"18157" + ,"y":"6925" + ,"id":"#DonaldTrump" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#dtmag" + ,"x":"20114" + ,"y":"6045" + ,"id":"#dtmag" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#EarthDay" + ,"x":"2834" + ,"y":"1439" + ,"id":"#EarthDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EastVillage" + ,"x":"1226" + ,"y":"552" + ,"id":"#EastVillage" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EauClaire" + ,"x":"14266" + ,"y":"4767" + ,"id":"#EauClaire" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ECONOMY" + ,"x":"4256" + ,"y":"1651" + ,"id":"#ECONOMY" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#election2016" + ,"x":"3708" + ,"y":"2119" + ,"id":"#election2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ElectionDay" + ,"x":"15524" + ,"y":"7523" + ,"id":"#ElectionDay" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Elkhart" + ,"x":"10283" + ,"y":"3124" + ,"id":"#Elkhart" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EndCommonCore" + ,"x":"11832" + ,"y":"4411" + ,"id":"#EndCommonCore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EndGunViolence" + ,"x":"2913" + ,"y":"844" + ,"id":"#EndGunViolence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Enjoy" + ,"x":"10737" + ,"y":"2482" + ,"id":"#Enjoy" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#enough" + ,"x":"4151" + ,"y":"1904" + ,"id":"#enough" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Enough" + ,"x":"4965" + ,"y":"2117" + ,"id":"#Enough" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#EstoyConElla" + ,"x":"2072" + ,"y":"1006" + ,"id":"#EstoyConElla" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#Excellent" + ,"x":"3157" + ,"y":"940" + ,"id":"#Excellent" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#extremevetting" + ,"x":"7551" + ,"y":"4484" + ,"id":"#extremevetting" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FAIL" + ,"x":"7230" + ,"y":"4894" + ,"id":"#FAIL" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#fairandbalancedmyass" + ,"x":"4672" + ,"y":"1687" + ,"id":"#fairandbalancedmyass" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FallonTonight" + ,"x":"10484" + ,"y":"2515" + ,"id":"#FallonTonight" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FeelTheBern" + ,"x":"1217" + ,"y":"476" + ,"id":"#FeelTheBern" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FightForFamilies" + ,"x":"6119" + ,"y":"3013" + ,"id":"#FightForFamilies" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#Filibuster" + ,"x":"4965" + ,"y":"2117" + ,"id":"#Filibuster" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FirstInPOTUS" + ,"x":"1540" + ,"y":"513" + ,"id":"#FirstInPOTUS" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FITN" + ,"x":"145416" + ,"y":"48915" + ,"id":"#FITN" + ,"color":"rgb(0,0,255)" + ,"size":"23" + }, + { + "label":"#fixdemocracyfirst)" + ,"x":"583" + ,"y":"317" + ,"id":"#fixdemocracyfirst)" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FlashbackFriday" + ,"x":"32212" + ,"y":"16769" + ,"id":"#FlashbackFriday" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#FNS" + ,"x":"11825" + ,"y":"3034" + ,"id":"#FNS" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Ford" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Ford" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Fox" + ,"x":"6168" + ,"y":"1841" + ,"id":"#Fox" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#FoxNews" + ,"x":"16130" + ,"y":"5602" + ,"id":"#FoxNews" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#Frozen" + ,"x":"62473" + ,"y":"26094" + ,"id":"#Frozen" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#GIBill" + ,"x":"1215" + ,"y":"471" + ,"id":"#GIBill" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GO" + ,"x":"6801" + ,"y":"2047" + ,"id":"#GO" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GoldenGlobe" + ,"x":"6188" + ,"y":"1714" + ,"id":"#GoldenGlobe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#goodtrouble" + ,"x":"12285" + ,"y":"5417" + ,"id":"#goodtrouble" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GoodTrouble" + ,"x":"12170" + ,"y":"5689" + ,"id":"#GoodTrouble" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GOP" + ,"x":"16541" + ,"y":"5995" + ,"id":"#GOP" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#GOPConvention" + ,"x":"84256" + ,"y":"18578" + ,"id":"#GOPConvention" + ,"color":"rgb(0,0,255)" + ,"size":"3" + }, + { + "label":"#GOPdebate" + ,"x":"5582" + ,"y":"3397" + ,"id":"#GOPdebate" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GOPDebate" + ,"x":"214831" + ,"y":"77543" + ,"id":"#GOPDebate" + ,"color":"rgb(0,0,255)" + ,"size":"20" + }, + { + "label":"#GOPinCLE" + ,"x":"26046" + ,"y":"7182" + ,"id":"#GOPinCLE" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#GPLFers" + ,"x":"5989" + ,"y":"2414" + ,"id":"#GPLFers" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Greta" + ,"x":"7863" + ,"y":"2754" + ,"id":"#Greta" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#gunviolence" + ,"x":"7947" + ,"y":"3589" + ,"id":"#gunviolence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#GunViolence" + ,"x":"6220" + ,"y":"2532" + ,"id":"#GunViolence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HaileyPuckett" + ,"x":"6445" + ,"y":"1962" + ,"id":"#HaileyPuckett" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Hannity" + ,"x":"26030" + ,"y":"7618" + ,"id":"#Hannity" + ,"color":"rgb(255,255,0)" + ,"size":"3" + }, + { + "label":"#HarveyPitt" + ,"x":"2799" + ,"y":"695" + ,"id":"#HarveyPitt" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Hillary2016" + ,"x":"10727" + ,"y":"4626" + ,"id":"#Hillary2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryClinton" + ,"x":"1238" + ,"y":"568" + ,"id":"#HillaryClinton" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryKaine2016" + ,"x":"12850" + ,"y":"5971" + ,"id":"#HillaryKaine2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryOnCNN" + ,"x":"1426" + ,"y":"837" + ,"id":"#HillaryOnCNN" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HillaryOnGMA" + ,"x":"977" + ,"y":"499" + ,"id":"#HillaryOnGMA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HispanicHeritageMonth" + ,"x":"2384" + ,"y":"1407" + ,"id":"#HispanicHeritageMonth" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HistoryMade" + ,"x":"5685" + ,"y":"1347" + ,"id":"#HistoryMade" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#holdthefloor" + ,"x":"3153" + ,"y":"1152" + ,"id":"#holdthefloor" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HoustonFlood" + ,"x":"2993" + ,"y":"1231" + ,"id":"#HoustonFlood" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#HRC4PA" + ,"x":"1110" + ,"y":"599" + ,"id":"#HRC4PA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#IACaucus" + ,"x":"71648" + ,"y":"28963" + ,"id":"#IACaucus" + ,"color":"rgb(0,0,255)" + ,"size":"14" + }, + { + "label":"#IAPolitics" + ,"x":"5773" + ,"y":"1901" + ,"id":"#IAPolitics" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ICYMI" + ,"x":"54728" + ,"y":"23370" + ,"id":"#ICYMI" + ,"color":"rgb(0,0,255)" + ,"size":"5" + }, + { + "label":"#imwithher" + ,"x":"1293" + ,"y":"452" + ,"id":"#imwithher" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ImWithHer" + ,"x":"158924" + ,"y":"52168" + ,"id":"#ImWithHer" + ,"color":"rgb(0,0,255)" + ,"size":"18" + }, + { + "label":"#ImWithHernandez" + ,"x":"20705" + ,"y":"6131" + ,"id":"#ImWithHernandez" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#imwithyou" + ,"x":"10923" + ,"y":"4685" + ,"id":"#imwithyou" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Imwithyou" + ,"x":"53939" + ,"y":"20561" + ,"id":"#Imwithyou" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#ImWithYou" + ,"x":"1015305" + ,"y":"371621" + ,"id":"#ImWithYou" + ,"color":"rgb(0,0,255)" + ,"size":"44" + }, + { + "label":"#ImWithYouhttps" + ,"x":"83152" + ,"y":"32428" + ,"id":"#ImWithYouhttps" + ,"color":"rgb(0,0,255)" + ,"size":"4" + }, + { + "label":"#Indiana" + ,"x":"14767" + ,"y":"4837" + ,"id":"#Indiana" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#INDPrimary" + ,"x":"13689" + ,"y":"3934" + ,"id":"#INDPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#INPrimary" + ,"x":"133066" + ,"y":"48025" + ,"id":"#INPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"10" + }, + { + "label":"#InternationalNursesDay" + ,"x":"4674" + ,"y":"1995" + ,"id":"#InternationalNursesDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Iowa" + ,"x":"3788" + ,"y":"1236" + ,"id":"#Iowa" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#IowaCaucus" + ,"x":"7961" + ,"y":"3311" + ,"id":"#IowaCaucus" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#IranDeal" + ,"x":"3458" + ,"y":"1089" + ,"id":"#IranDeal" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#iRegistered" + ,"x":"3206" + ,"y":"1235" + ,"id":"#iRegistered" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ISIS" + ,"x":"15499" + ,"y":"6680" + ,"id":"#ISIS" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#iVoted" + ,"x":"4350" + ,"y":"1581" + ,"id":"#iVoted" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#jenniferrubin" + ,"x":"5205" + ,"y":"1416" + ,"id":"#jenniferrubin" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JimmyFallon" + ,"x":"15449" + ,"y":"4411" + ,"id":"#JimmyFallon" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Jobs" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Jobs" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JohnRyder" + ,"x":"13719" + ,"y":"4877" + ,"id":"#JohnRyder" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Jonas" + ,"x":"2299" + ,"y":"741" + ,"id":"#Jonas" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JuanGabriel" + ,"x":"991" + ,"y":"381" + ,"id":"#JuanGabriel" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#JuntosSePuede" + ,"x":"2557" + ,"y":"1014" + ,"id":"#JuntosSePuede" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KansasCaucus" + ,"x":"7255" + ,"y":"1763" + ,"id":"#KansasCaucus" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KenLangone" + ,"x":"6168" + ,"y":"1841" + ,"id":"#KenLangone" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KentuckyDerby" + ,"x":"4576" + ,"y":"1772" + ,"id":"#KentuckyDerby" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#KhizrKhan" + ,"x":"11269" + ,"y":"6827" + ,"id":"#KhizrKhan" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LaborDay" + ,"x":"27247" + ,"y":"10177" + ,"id":"#LaborDay" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#LAflood" + ,"x":"1475" + ,"y":"670" + ,"id":"#LAflood" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LaudatoSi" + ,"x":"975" + ,"y":"381" + ,"id":"#LaudatoSi" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Laurence" + ,"x":"3291" + ,"y":"1229" + ,"id":"#Laurence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#laurencetribe" + ,"x":"1943" + ,"y":"639" + ,"id":"#laurencetribe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LaurenceTribe" + ,"x":"2130" + ,"y":"754" + ,"id":"#LaurenceTribe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LawandOrder" + ,"x":"28433" + ,"y":"10015" + ,"id":"#LawandOrder" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#LeadRight2016" + ,"x":"9207" + ,"y":"2966" + ,"id":"#LeadRight2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LESM" + ,"x":"132517" + ,"y":"43642" + ,"id":"#LESM" + ,"color":"rgb(0,0,255)" + ,"size":"5" + }, + { + "label":"#LGBT" + ,"x":"4547" + ,"y":"1759" + ,"id":"#LGBT" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#LibrarianOfCongress" + ,"x":"1652" + ,"y":"634" + ,"id":"#LibrarianOfCongress" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LightweightSenatorMarcoRubio" + ,"x":"11708" + ,"y":"4922" + ,"id":"#LightweightSenatorMarcoRubio" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LittleMarco" + ,"x":"13353" + ,"y":"4545" + ,"id":"#LittleMarco" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LoneStarState" + ,"x":"4696" + ,"y":"1463" + ,"id":"#LoneStarState" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#LoveTrumpsHate" + ,"x":"37806" + ,"y":"17409" + ,"id":"#LoveTrumpsHate" + ,"color":"rgb(255,0,0)" + ,"size":"6" + }, + { + "label":"#LSSC" + ,"x":"7543" + ,"y":"2758" + ,"id":"#LSSC" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#LyingTed" + ,"x":"42159" + ,"y":"16101" + ,"id":"#LyingTed" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#MadeForHistory" + ,"x":"1322" + ,"y":"521" + ,"id":"#MadeForHistory" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MadeInAmerica" + ,"x":"1982" + ,"y":"818" + ,"id":"#MadeInAmerica" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MAGA" + ,"x":"1220960" + ,"y":"426343" + ,"id":"#MAGA" + ,"color":"rgb(0,0,255)" + ,"size":"57" + }, + { + "label":"#MAGAhttps" + ,"x":"11943" + ,"y":"4044" + ,"id":"#MAGAhttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Mahalo" + ,"x":"8753" + ,"y":"2639" + ,"id":"#Mahalo" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MaitnerStrong" + ,"x":"6412" + ,"y":"2044" + ,"id":"#MaitnerStrong" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#makeamericagreatagain" + ,"x":"3369" + ,"y":"950" + ,"id":"#makeamericagreatagain" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaGreatAgain" + ,"x":"2624619" + ,"y":"917605" + ,"id":"#MakeAmericaGreatAgain" + ,"color":"rgb(0,0,255)" + ,"size":"204" + }, + { + "label":"#MAKEAMERICAGREATAGAIN" + ,"x":"21961" + ,"y":"7130" + ,"id":"#MAKEAMERICAGREATAGAIN" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#MakeAmericaGreatAgainhttps" + ,"x":"29922" + ,"y":"9302" + ,"id":"#MakeAmericaGreatAgainhttps" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#MakeAmericaGreatAgain@Snapchat" + ,"x":"10388" + ,"y":"3312" + ,"id":"#MakeAmericaGreatAgain@Snapchat" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaGreatAgainTickets" + ,"x":"7116" + ,"y":"2893" + ,"id":"#MakeAmericaGreatAgainTickets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaGreatAgainWatch" + ,"x":"12596" + ,"y":"5777" + ,"id":"#MakeAmericaGreatAgainWatch" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeAmericaSafeAgain" + ,"x":"30751" + ,"y":"9303" + ,"id":"#MakeAmericaSafeAgain" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#MakeAmericaSafeAgainhttps" + ,"x":"16937" + ,"y":"7060" + ,"id":"#MakeAmericaSafeAgainhttps" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#makersandtakers" + ,"x":"1111" + ,"y":"516" + ,"id":"#makersandtakers" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MakeYoutubeGreatAgain" + ,"x":"8650" + ,"y":"3249" + ,"id":"#MakeYoutubeGreatAgain" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MaryBrigidMcManamon" + ,"x":"4712" + ,"y":"1677" + ,"id":"#MaryBrigidMcManamon" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#MattSchlapp" + ,"x":"5205" + ,"y":"1416" + ,"id":"#MattSchlapp" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MayDay" + ,"x":"5371" + ,"y":"2214" + ,"id":"#MayDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MDPrimary" + ,"x":"11128" + ,"y":"4806" + ,"id":"#MDPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MDW" + ,"x":"27640" + ,"y":"10998" + ,"id":"#MDW" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#media" + ,"x":"17312" + ,"y":"5298" + ,"id":"#media" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Mediafraud" + ,"x":"14973" + ,"y":"5676" + ,"id":"#Mediafraud" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#MeetTheTrumps" + ,"x":"13313" + ,"y":"3058" + ,"id":"#MeetTheTrumps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MegynKellyPresents" + ,"x":"6371" + ,"y":"1423" + ,"id":"#MegynKellyPresents" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MemorialDay" + ,"x":"7532" + ,"y":"3046" + ,"id":"#MemorialDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Mexico" + ,"x":"4889" + ,"y":"1896" + ,"id":"#Mexico" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MichaelBrown" + ,"x":"1096" + ,"y":"594" + ,"id":"#MichaelBrown" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MichaelMoore" + ,"x":"4601" + ,"y":"1690" + ,"id":"#MichaelMoore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MikePence" + ,"x":"2975" + ,"y":"3037" + ,"id":"#MikePence" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MoreInCommon" + ,"x":"1180" + ,"y":"386" + ,"id":"#MoreInCommon" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Mormon" + ,"x":"9960" + ,"y":"3390" + ,"id":"#Mormon" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MorningJoe" + ,"x":"5995" + ,"y":"1634" + ,"id":"#MorningJoe" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MothersDay" + ,"x":"1936" + ,"y":"767" + ,"id":"#MothersDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MothersoftheMovement" + ,"x":"1096" + ,"y":"594" + ,"id":"#MothersoftheMovement" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MSM" + ,"x":"36501" + ,"y":"14214" + ,"id":"#MSM" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#MSNBCTownhall" + ,"x":"8943" + ,"y":"3677" + ,"id":"#MSNBCTownhall" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#MSPrimary" + ,"x":"9389" + ,"y":"3087" + ,"id":"#MSPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#MyTeacherIsWeird" + ,"x":"10484" + ,"y":"2515" + ,"id":"#MyTeacherIsWeird" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NAACP107" + ,"x":"3691" + ,"y":"3034" + ,"id":"#NAACP107" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NABJNAHJ16" + ,"x":"5765" + ,"y":"1713" + ,"id":"#NABJNAHJ16" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NASCAR" + ,"x":"9205" + ,"y":"3361" + ,"id":"#NASCAR" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NationalVoterRegistrationDay" + ,"x":"41258" + ,"y":"27555" + ,"id":"#NationalVoterRegistrationDay" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#NATO" + ,"x":"28727" + ,"y":"9887" + ,"id":"#NATO" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#NaturalBorn" + ,"x":"2351" + ,"y":"801" + ,"id":"#NaturalBorn" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NBCNewsForum" + ,"x":"48238" + ,"y":"24699" + ,"id":"#NBCNewsForum" + ,"color":"rgb(0,0,255)" + ,"size":"11" + }, + { + "label":"#NeilCavuto" + ,"x":"6168" + ,"y":"1841" + ,"id":"#NeilCavuto" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NetNeutrality" + ,"x":"2235" + ,"y":"954" + ,"id":"#NetNeutrality" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NevadaCaucus" + ,"x":"24738" + ,"y":"7918" + ,"id":"#NevadaCaucus" + ,"color":"rgb(255,255,0)" + ,"size":"4" + }, + { + "label":"#NeverCruz" + ,"x":"25288" + ,"y":"10252" + ,"id":"#NeverCruz" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#NeverDems" + ,"x":"9309" + ,"y":"2561" + ,"id":"#NeverDems" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NeverForget" + ,"x":"753" + ,"y":"447" + ,"id":"#NeverForget" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NeverHillary" + ,"x":"110009" + ,"y":"38421" + ,"id":"#NeverHillary" + ,"color":"rgb(0,0,255)" + ,"size":"6" + }, + { + "label":"#NeverTrump" + ,"x":"47837" + ,"y":"16113" + ,"id":"#NeverTrump" + ,"color":"rgb(0,0,255)" + ,"size":"3" + }, + { + "label":"#NewDay" + ,"x":"7340" + ,"y":"2242" + ,"id":"#NewDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NewHampshire" + ,"x":"6116" + ,"y":"2602" + ,"id":"#NewHampshire" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NewYork" + ,"x":"2299" + ,"y":"741" + ,"id":"#NewYork" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NewYorkValues" + ,"x":"75997" + ,"y":"25947" + ,"id":"#NewYorkValues" + ,"color":"rgb(0,0,255)" + ,"size":"6" + }, + { + "label":"#NHPolitics" + ,"x":"9941" + ,"y":"4002" + ,"id":"#NHPolitics" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#NHPrimary" + ,"x":"41886" + ,"y":"13648" + ,"id":"#NHPrimary" + ,"color":"rgb(255,0,0)" + ,"size":"6" + }, + { + "label":"#NoBillNoBreak" + ,"x":"55560" + ,"y":"25884" + ,"id":"#NoBillNoBreak" + ,"color":"rgb(0,0,255)" + ,"size":"8" + }, + { + "label":"#NoLoyalty" + ,"x":"7223" + ,"y":"2341" + ,"id":"#NoLoyalty" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NoMoreSilence" + ,"x":"11100" + ,"y":"4741" + ,"id":"#NoMoreSilence" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#NotOneMore" + ,"x":"2964" + ,"y":"1062" + ,"id":"#NotOneMore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NPS100" + ,"x":"9026" + ,"y":"3339" + ,"id":"#NPS100" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#NVcaucus" + ,"x":"9193" + ,"y":"2106" + ,"id":"#NVcaucus" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#NYCPride" + ,"x":"15834" + ,"y":"4812" + ,"id":"#NYCPride" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#NYPrimary" + ,"x":"75453" + ,"y":"25566" + ,"id":"#NYPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"8" + }, + { + "label":"#NYPrimaryTickets" + ,"x":"7872" + ,"y":"2743" + ,"id":"#NYPrimaryTickets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Obamacare" + ,"x":"79907" + ,"y":"33017" + ,"id":"#Obamacare" + ,"color":"rgb(0,0,255)" + ,"size":"4" + }, + { + "label":"#ObamaCare" + ,"x":"22498" + ,"y":"8431" + ,"id":"#ObamaCare" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#OHHillYes" + ,"x":"2017" + ,"y":"564" + ,"id":"#OHHillYes" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Olmstead" + ,"x":"2425" + ,"y":"715" + ,"id":"#Olmstead" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#OnTheRecord" + ,"x":"9675" + ,"y":"2857" + ,"id":"#OnTheRecord" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#OpeningCeremony" + ,"x":"35693" + ,"y":"10719" + ,"id":"#OpeningCeremony" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#OpioidAwarenessWeek" + ,"x":"5353" + ,"y":"2116" + ,"id":"#OpioidAwarenessWeek" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Orlando" + ,"x":"2311" + ,"y":"1542" + ,"id":"#Orlando" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#OrlandoUnited" + ,"x":"5782" + ,"y":"2452" + ,"id":"#OrlandoUnited" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#ORPrimary" + ,"x":"7292" + ,"y":"2886" + ,"id":"#ORPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#PAPrimary" + ,"x":"20535" + ,"y":"8009" + ,"id":"#PAPrimary" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#PhilandoCastile" + ,"x":"25057" + ,"y":"10433" + ,"id":"#PhilandoCastile" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#Politician" + ,"x":"7230" + ,"y":"4894" + ,"id":"#Politician" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#polls" + ,"x":"13376" + ,"y":"5587" + ,"id":"#polls" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Polls" + ,"x":"18329" + ,"y":"7925" + ,"id":"#Polls" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#POTUS" + ,"x":"109849" + ,"y":"38806" + ,"id":"#POTUS" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#presidenttrump" + ,"x":"14309" + ,"y":"5356" + ,"id":"#presidenttrump" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#primary" + ,"x":"14309" + ,"y":"5356" + ,"id":"#primary" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#PrimaryDay" + ,"x":"27979" + ,"y":"11934" + ,"id":"#PrimaryDay" + ,"color":"rgb(255,255,0)" + ,"size":"6" + }, + { + "label":"#Prince" + ,"x":"1238" + ,"y":"568" + ,"id":"#Prince" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Pulse" + ,"x":"1452" + ,"y":"444" + ,"id":"#Pulse" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#PurpleHeartDay" + ,"x":"20909" + ,"y":"7416" + ,"id":"#PurpleHeartDay" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Racine" + ,"x":"14266" + ,"y":"4767" + ,"id":"#Racine" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RepMikeKelly" + ,"x":"8630" + ,"y":"2286" + ,"id":"#RepMikeKelly" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RestoreTheVRA" + ,"x":"15986" + ,"y":"6363" + ,"id":"#RestoreTheVRA" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#RiggedSystem" + ,"x":"78550" + ,"y":"40507" + ,"id":"#RiggedSystem" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#Rio2016" + ,"x":"35693" + ,"y":"10719" + ,"id":"#Rio2016" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#RIP" + ,"x":"991" + ,"y":"381" + ,"id":"#RIP" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RIPrimary" + ,"x":"8469" + ,"y":"2769" + ,"id":"#RIPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RIPrimaryhttps" + ,"x":"11128" + ,"y":"4806" + ,"id":"#RIPrimaryhttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RNC" + ,"x":"3340" + ,"y":"1075" + ,"id":"#RNC" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RNCinCLE" + ,"x":"511766" + ,"y":"238639" + ,"id":"#RNCinCLE" + ,"color":"rgb(0,0,255)" + ,"size":"54" + }, + { + "label":"#RNCInCLE" + ,"x":"5747" + ,"y":"4334" + ,"id":"#RNCInCLE" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#RNCINCLE" + ,"x":"1749" + ,"y":"1295" + ,"id":"#RNCINCLE" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RNCinCLEhttps" + ,"x":"47497" + ,"y":"16629" + ,"id":"#RNCinCLEhttps" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#RNCwithBernie" + ,"x":"15660" + ,"y":"7034" + ,"id":"#RNCwithBernie" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#RobotRubio" + ,"x":"10759" + ,"y":"4585" + ,"id":"#RobotRubio" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ROGERAILES" + ,"x":"4601" + ,"y":"1690" + ,"id":"#ROGERAILES" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RogerStone" + ,"x":"7299" + ,"y":"2728" + ,"id":"#RogerStone" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RollCallVote" + ,"x":"9545" + ,"y":"2520" + ,"id":"#RollCallVote" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#RosanellEaton" + ,"x":"1648" + ,"y":"903" + ,"id":"#RosanellEaton" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#RTM2016" + ,"x":"14847" + ,"y":"4296" + ,"id":"#RTM2016" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Rubio" + ,"x":"4010" + ,"y":"1680" + ,"id":"#Rubio" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SallyRideDay" + ,"x":"6575" + ,"y":"2977" + ,"id":"#SallyRideDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SaveElephants" + ,"x":"1359" + ,"y":"541" + ,"id":"#SaveElephants" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SayHerName" + ,"x":"896" + ,"y":"478" + ,"id":"#SayHerName" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SB50" + ,"x":"9113" + ,"y":"2328" + ,"id":"#SB50" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SCOTUS" + ,"x":"34419" + ,"y":"15999" + ,"id":"#SCOTUS" + ,"color":"rgb(255,0,0)" + ,"size":"4" + }, + { + "label":"#SCPrimary" + ,"x":"40572" + ,"y":"17556" + ,"id":"#SCPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#SecondAmendment" + ,"x":"12162" + ,"y":"6718" + ,"id":"#SecondAmendment" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ShesWithUs" + ,"x":"1752" + ,"y":"869" + ,"id":"#ShesWithUs" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SheWon" + ,"x":"72288" + ,"y":"21180" + ,"id":"#SheWon" + ,"color":"rgb(0,0,255)" + ,"size":"5" + }, + { + "label":"#sitin" + ,"x":"10860" + ,"y":"4433" + ,"id":"#sitin" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#slipping" + ,"x":"18329" + ,"y":"7925" + ,"id":"#slipping" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#smallbiz" + ,"x":"9567" + ,"y":"3915" + ,"id":"#smallbiz" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#SmallBizWeek" + ,"x":"905" + ,"y":"495" + ,"id":"#SmallBizWeek" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SOTU" + ,"x":"24315" + ,"y":"9395" + ,"id":"#SOTU" + ,"color":"rgb(255,255,0)" + ,"size":"2" + }, + { + "label":"#SouthCarolina" + ,"x":"4780" + ,"y":"1631" + ,"id":"#SouthCarolina" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SouthCarolinaPrimary" + ,"x":"3990" + ,"y":"1256" + ,"id":"#SouthCarolinaPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Srebrenica" + ,"x":"753" + ,"y":"447" + ,"id":"#Srebrenica" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StandTogether" + ,"x":"3179" + ,"y":"1689" + ,"id":"#StandTogether" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StandWithLouisiana" + ,"x":"45253" + ,"y":"17551" + ,"id":"#StandWithLouisiana" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#StanleyCup" + ,"x":"22250" + ,"y":"7340" + ,"id":"#StanleyCup" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Statehood" + ,"x":"728" + ,"y":"378" + ,"id":"#Statehood" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StopCommonCore" + ,"x":"12250" + ,"y":"4320" + ,"id":"#StopCommonCore" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#StopGunViolence" + ,"x":"11916" + ,"y":"5709" + ,"id":"#StopGunViolence" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#StoptheHate" + ,"x":"9087" + ,"y":"5555" + ,"id":"#StoptheHate" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#StrongerTogether" + ,"x":"43362" + ,"y":"18491" + ,"id":"#StrongerTogether" + ,"color":"rgb(0,0,255)" + ,"size":"6" + }, + { + "label":"#SuperBowlSunday" + ,"x":"9113" + ,"y":"2328" + ,"id":"#SuperBowlSunday" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#SuperSaturday" + ,"x":"33932" + ,"y":"10508" + ,"id":"#SuperSaturday" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#SuperTuesday" + ,"x":"283887" + ,"y":"98610" + ,"id":"#SuperTuesday" + ,"color":"rgb(0,0,255)" + ,"size":"18" + }, + { + "label":"#taxplan" + ,"x":"8126" + ,"y":"3355" + ,"id":"#taxplan" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TBT" + ,"x":"49987" + ,"y":"16606" + ,"id":"#TBT" + ,"color":"rgb(0,0,255)" + ,"size":"10" + }, + { + "label":"#TBThttps" + ,"x":"4443" + ,"y":"2015" + ,"id":"#TBThttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TeacherAppreciationDay" + ,"x":"7744" + ,"y":"3340" + ,"id":"#TeacherAppreciationDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Teachers4Trump" + ,"x":"9309" + ,"y":"2561" + ,"id":"#Teachers4Trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TeamTrump" + ,"x":"25923" + ,"y":"8263" + ,"id":"#TeamTrump" + ,"color":"rgb(255,255,0)" + ,"size":"4" + }, + { + "label":"#TeamUSA" + ,"x":"35693" + ,"y":"10719" + ,"id":"#TeamUSA" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#Ted" + ,"x":"5782" + ,"y":"2221" + ,"id":"#Ted" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TedCruz" + ,"x":"4481" + ,"y":"1555" + ,"id":"#TedCruz" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#TerenceCrutcher" + ,"x":"24955" + ,"y":"12204" + ,"id":"#TerenceCrutcher" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#ThankAVet" + ,"x":"11030" + ,"y":"3879" + ,"id":"#ThankAVet" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ThanksObama" + ,"x":"2446" + ,"y":"1202" + ,"id":"#ThanksObama" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TheDonald" + ,"x":"15449" + ,"y":"4411" + ,"id":"#TheDonald" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#TheTonightShow" + ,"x":"15449" + ,"y":"4411" + ,"id":"#TheTonightShow" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#TitleIX" + ,"x":"8580" + ,"y":"2467" + ,"id":"#TitleIX" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TPP" + ,"x":"13196" + ,"y":"5045" + ,"id":"#TPP" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#trump" + ,"x":"3369" + ,"y":"950" + ,"id":"#trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump" + ,"x":"60453" + ,"y":"20738" + ,"id":"#Trump" + ,"color":"rgb(0,0,255)" + ,"size":"7" + }, + { + "label":"#TRUMP" + ,"x":"15287" + ,"y":"4187" + ,"id":"#TRUMP" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#trump2016" + ,"x":"14405" + ,"y":"3858" + ,"id":"#trump2016" + ,"color":"rgb(0,255,0)" + ,"size":"3" + }, + { + "label":"#Trump2016" + ,"x":"3410805" + ,"y":"1200797" + ,"id":"#Trump2016" + ,"color":"rgb(0,0,255)" + ,"size":"276" + }, + { + "label":"#TRUMP2016" + ,"x":"13763" + ,"y":"6895" + ,"id":"#TRUMP2016" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Trump2016https" + ,"x":"277707" + ,"y":"101118" + ,"id":"#Trump2016https" + ,"color":"rgb(0,0,255)" + ,"size":"27" + }, + { + "label":"#Trump2016Tickets" + ,"x":"7225" + ,"y":"2380" + ,"id":"#Trump2016Tickets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump360" + ,"x":"7706" + ,"y":"2773" + ,"id":"#Trump360" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump4President" + ,"x":"2625" + ,"y":"686" + ,"id":"#Trump4President" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Trump4Vets" + ,"x":"13269" + ,"y":"5249" + ,"id":"#Trump4Vets" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpCountry" + ,"x":"9960" + ,"y":"3390" + ,"id":"#TrumpCountry" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpDallas" + ,"x":"13227" + ,"y":"4469" + ,"id":"#TrumpDallas" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpinEverett" + ,"x":"7882" + ,"y":"2273" + ,"id":"#TrumpinEverett" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpIsWithYou" + ,"x":"13024" + ,"y":"3779" + ,"id":"#TrumpIsWithYou" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpLV" + ,"x":"6110" + ,"y":"2532" + ,"id":"#TrumpLV" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpMovement" + ,"x":"17418" + ,"y":"7632" + ,"id":"#TrumpMovement" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#TrumpNV" + ,"x":"4457" + ,"y":"1622" + ,"id":"#TrumpNV" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpPence16" + ,"x":"525664" + ,"y":"171366" + ,"id":"#TrumpPence16" + ,"color":"rgb(0,0,255)" + ,"size":"22" + }, + { + "label":"#TrumpPence16https" + ,"x":"33408" + ,"y":"18434" + ,"id":"#TrumpPence16https" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#TrumpPence2016" + ,"x":"38871" + ,"y":"11177" + ,"id":"#TrumpPence2016" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#TrumpSupporters" + ,"x":"7806" + ,"y":"2812" + ,"id":"#TrumpSupporters" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpTrain" + ,"x":"368147" + ,"y":"120335" + ,"id":"#TrumpTrain" + ,"color":"rgb(0,0,255)" + ,"size":"29" + }, + { + "label":"#TrumpTrainhttps" + ,"x":"31772" + ,"y":"10646" + ,"id":"#TrumpTrainhttps" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#TrumpWaikiki" + ,"x":"8753" + ,"y":"2639" + ,"id":"#TrumpWaikiki" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TrumpWon" + ,"x":"69829" + ,"y":"26816" + ,"id":"#TrumpWon" + ,"color":"rgb(0,0,255)" + ,"size":"2" + }, + { + "label":"#TrumpYourself" + ,"x":"11447" + ,"y":"6085" + ,"id":"#TrumpYourself" + ,"color":"rgb(0,255,0)" + ,"size":"4" + }, + { + "label":"#Turkey" + ,"x":"5451" + ,"y":"2603" + ,"id":"#Turkey" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#TurnUpToVote" + ,"x":"11025" + ,"y":"7110" + ,"id":"#TurnUpToVote" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UAW" + ,"x":"1412" + ,"y":"837" + ,"id":"#UAW" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#ugpride2016" + ,"x":"1572" + ,"y":"638" + ,"id":"#ugpride2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UnderstandSlavery" + ,"x":"1916" + ,"y":"866" + ,"id":"#UnderstandSlavery" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UNGA" + ,"x":"4935" + ,"y":"2448" + ,"id":"#UNGA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UPUPUP" + ,"x":"8936" + ,"y":"2831" + ,"id":"#UPUPUP" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#USA" + ,"x":"18600" + ,"y":"5085" + ,"id":"#USA" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#USMC2016" + ,"x":"3687" + ,"y":"1103" + ,"id":"#USMC2016" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UT" + ,"x":"15391" + ,"y":"4530" + ,"id":"#UT" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Utah" + ,"x":"21800" + ,"y":"6903" + ,"id":"#Utah" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#Utah4Trump" + ,"x":"9960" + ,"y":"3390" + ,"id":"#Utah4Trump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UtahCaucus" + ,"x":"17404" + ,"y":"5770" + ,"id":"#UtahCaucus" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#UtahPrimary" + ,"x":"9960" + ,"y":"3390" + ,"id":"#UtahPrimary" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#UTCaucus" + ,"x":"17404" + ,"y":"5770" + ,"id":"#UTCaucus" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#vaticanwalls" + ,"x":"9912" + ,"y":"5392" + ,"id":"#vaticanwalls" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#veterans" + ,"x":"1215" + ,"y":"471" + ,"id":"#veterans" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VirWINia" + ,"x":"5617" + ,"y":"1887" + ,"id":"#VirWINia" + ,"color":"rgb(0,255,0)" + ,"size":"2" + }, + { + "label":"#VoterFraud" + ,"x":"36501" + ,"y":"14214" + ,"id":"#VoterFraud" + ,"color":"rgb(255,0,0)" + ,"size":"1" + }, + { + "label":"#VoterRegistrationDay" + ,"x":"6963" + ,"y":"2953" + ,"id":"#VoterRegistrationDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VotersSpeak" + ,"x":"8877" + ,"y":"3585" + ,"id":"#VotersSpeak" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#voteTrump" + ,"x":"8649" + ,"y":"2201" + ,"id":"#voteTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrump" + ,"x":"623108" + ,"y":"216620" + ,"id":"#VoteTrump" + ,"color":"rgb(0,0,255)" + ,"size":"55" + }, + { + "label":"#VoteTrump2016" + ,"x":"31377" + ,"y":"9889" + ,"id":"#VoteTrump2016" + ,"color":"rgb(255,0,0)" + ,"size":"2" + }, + { + "label":"#VoteTrumphttps" + ,"x":"32158" + ,"y":"11235" + ,"id":"#VoteTrumphttps" + ,"color":"rgb(255,0,0)" + ,"size":"3" + }, + { + "label":"#VoteTrumpIL" + ,"x":"8357" + ,"y":"2634" + ,"id":"#VoteTrumpIL" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpMA" + ,"x":"6273" + ,"y":"2128" + ,"id":"#VoteTrumpMA" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpMI" + ,"x":"19970" + ,"y":"6807" + ,"id":"#VoteTrumpMI" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#VoteTrumpNC" + ,"x":"7946" + ,"y":"2728" + ,"id":"#VoteTrumpNC" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpNH" + ,"x":"41123" + ,"y":"14943" + ,"id":"#VoteTrumpNH" + ,"color":"rgb(255,0,0)" + ,"size":"7" + }, + { + "label":"#VoteTrumpNV" + ,"x":"39146" + ,"y":"12363" + ,"id":"#VoteTrumpNV" + ,"color":"rgb(255,0,0)" + ,"size":"6" + }, + { + "label":"#VoteTrumpNVhttps" + ,"x":"8828" + ,"y":"3020" + ,"id":"#VoteTrumpNVhttps" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpNY" + ,"x":"21659" + ,"y":"8652" + ,"id":"#VoteTrumpNY" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#VoteTrumpSC" + ,"x":"68924" + ,"y":"27673" + ,"id":"#VoteTrumpSC" + ,"color":"rgb(0,0,255)" + ,"size":"9" + }, + { + "label":"#VoteTrumpVT" + ,"x":"4965" + ,"y":"1559" + ,"id":"#VoteTrumpVT" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#VoteTrumpWI" + ,"x":"13887" + ,"y":"4862" + ,"id":"#VoteTrumpWI" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WakeUpAmerica" + ,"x":"21868" + ,"y":"8009" + ,"id":"#WakeUpAmerica" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#WashingtonDC" + ,"x":"728" + ,"y":"378" + ,"id":"#WashingtonDC" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WATCH" + ,"x":"4769" + ,"y":"1826" + ,"id":"#WATCH" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WattersWorld" + ,"x":"13081" + ,"y":"4044" + ,"id":"#WattersWorld" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Wausau" + ,"x":"14266" + ,"y":"4767" + ,"id":"#Wausau" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WCS16" + ,"x":"13527" + ,"y":"4087" + ,"id":"#WCS16" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeAreBernie" + ,"x":"3369" + ,"y":"950" + ,"id":"#WeAreBernie" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeMadeHistory" + ,"x":"27915" + ,"y":"12708" + ,"id":"#WeMadeHistory" + ,"color":"rgb(255,255,0)" + ,"size":"3" + }, + { + "label":"#WesternTuesday" + ,"x":"21909" + ,"y":"7099" + ,"id":"#WesternTuesday" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#WestVirginia" + ,"x":"928" + ,"y":"358" + ,"id":"#WestVirginia" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeTrumpHate" + ,"x":"2716" + ,"y":"1092" + ,"id":"#WeTrumpHate" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WeWantTrump" + ,"x":"3369" + ,"y":"950" + ,"id":"#WeWantTrump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WH" + ,"x":"1826" + ,"y":"683" + ,"id":"#WH" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WHCD" + ,"x":"7550" + ,"y":"3054" + ,"id":"#WHCD" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WHD" + ,"x":"1702" + ,"y":"691" + ,"id":"#WHD" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WheresHillary" + ,"x":"62133" + ,"y":"27723" + ,"id":"#WheresHillary" + ,"color":"rgb(0,0,255)" + ,"size":"1" + }, + { + "label":"#WIBackHer" + ,"x":"6959" + ,"y":"1945" + ,"id":"#WIBackHer" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#Wimbledon" + ,"x":"11611" + ,"y":"3707" + ,"id":"#Wimbledon" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WIPrimary" + ,"x":"130969" + ,"y":"46174" + ,"id":"#WIPrimary" + ,"color":"rgb(0,0,255)" + ,"size":"11" + }, + { + "label":"#WIPrimaryhttps" + ,"x":"13843" + ,"y":"5500" + ,"id":"#WIPrimaryhttps" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Wisconsin" + ,"x":"19235" + ,"y":"6610" + ,"id":"#Wisconsin" + ,"color":"rgb(0,255,255)" + ,"size":"2" + }, + { + "label":"#WISCONSIN" + ,"x":"12965" + ,"y":"6653" + ,"id":"#WISCONSIN" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#With_Cruz_you_lose" + ,"x":"2571" + ,"y":"703" + ,"id":"#With_Cruz_you_lose" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#womancard" + ,"x":"3476" + ,"y":"1870" + ,"id":"#womancard" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WomanCard" + ,"x":"28180" + ,"y":"12529" + ,"id":"#WomanCard" + ,"color":"rgb(255,255,0)" + ,"size":"7" + }, + { + "label":"#WOMEN4TRUMP" + ,"x":"14329" + ,"y":"5128" + ,"id":"#WOMEN4TRUMP" + ,"color":"rgb(0,255,255)" + ,"size":"1" + }, + { + "label":"#Women4Ttump" + ,"x":"8317" + ,"y":"3173" + ,"id":"#Women4Ttump" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#WomensEqualityDay" + ,"x":"15633" + ,"y":"8122" + ,"id":"#WomensEqualityDay" + ,"color":"rgb(0,255,255)" + ,"size":"3" + }, + { + "label":"#WORK" + ,"x":"26644" + ,"y":"5713" + ,"id":"#WORK" + ,"color":"rgb(255,255,0)" + ,"size":"1" + }, + { + "label":"#WorldRefugeeDay" + ,"x":"5728" + ,"y":"2049" + ,"id":"#WorldRefugeeDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#YouthDay" + ,"x":"4279" + ,"y":"2058" + ,"id":"#YouthDay" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }, + { + "label":"#YUGE" + ,"x":"2572" + ,"y":"828" + ,"id":"#YUGE" + ,"color":"rgb(0,255,0)" + ,"size":"1" + }]} \ No newline at end of file diff --git a/sigma.js-1.2.0/examples/data/geolocalized.json b/sigma.js-1.2.0/examples/data/geolocalized.json new file mode 100644 index 0000000..146aa5d --- /dev/null +++ b/sigma.js-1.2.0/examples/data/geolocalized.json @@ -0,0 +1 @@ +{"nodes":[{"id":"n1","label":"n1","latitude":50.93,"longitude":2.48,"size":"5.5","color":"rgb(1,179,255)"},{"id":"n2","label":"n2","latitude":50.88,"longitude":2.0,"size":"5.0","color":"rgb(1,179,255)"},{"id":"n4","label":"n4","latitude":49.4,"longitude":0.19,"size":"6.0","color":"rgb(1,179,255)"},{"id":"n5","label":"n5","latitude":48.49,"longitude":-1.92,"size":"6.0","color":"rgb(1,179,255)"},{"id":"n6","label":"n6","latitude":48.26,"longitude":-4.38,"size":"4.5","color":"rgb(1,179,255)"},{"id":"n7","label":"n7","latitude":47.15,"longitude":-2.09,"size":"6.5","color":"rgb(1,179,255)"},{"id":"n8","label":"n8","latitude":46.02,"longitude":-1.04,"size":"6.5","color":"rgb(1,179,255)"},{"id":"n9","label":"n9","latitude":43.22,"longitude":-1.85,"size":"5.0","color":"rgb(1,179,255)"},{"id":"n10","label":"n10","latitude":42.38,"longitude":3.18,"size":"4.0","color":"rgb(1,179,255)"},{"id":"n11","label":"n11","latitude":43.47,"longitude":4.04,"size":"5.5","color":"rgb(1,179,255)"},{"id":"n12","label":"n12","latitude":42.9,"longitude":6.59,"size":"5.0","color":"rgb(1,179,255)"},{"id":"n13","label":"n13","latitude":43.62,"longitude":7.66,"size":"6.0","color":"rgb(1,179,255)"},{"id":"n14","label":"n14","latitude":46.05,"longitude":6.19,"size":"6.5","color":"rgb(1,179,255)"},{"id":"n15","label":"n15","latitude":47.43,"longitude":7.65,"size":"6.0","color":"rgb(1,179,255)"},{"id":"n16","label":"n16","latitude":48.9,"longitude":8.32,"size":"5.5","color":"rgb(1,179,255)"},{"id":"n17","label":"n17","latitude":49.83,"longitude":4.94,"size":"6.5","color":"rgb(1,179,255)"},{"id":"Paris","label":"Paris","latitude":48.72,"longitude":2.46,"size":"9.0","color":"rgb(1,179,255)"}],"edges":[{"id":"8","source":"n1","target":"Paris"},{"id":"7","source":"n2","target":"n4"},{"id":"28","source":"n4","target":"n1"},{"id":"30","source":"n4","target":"n7"},{"id":"26","source":"n5","target":"n1"},{"id":"27","source":"n5","target":"n2"},{"id":"0","source":"n6","target":"n5"},{"id":"29","source":"n7","target":"n5"},{"id":"1","source":"n7","target":"n8"},{"id":"17","source":"n7","target":"Paris"},{"id":"10","source":"n8","target":"n13"},{"id":"18","source":"n8","target":"Paris"},{"id":"15","source":"n9","target":"n8"},{"id":"34","source":"n10","target":"n9"},{"id":"31","source":"n10","target":"n11"},{"id":"11","source":"n11","target":"n13"},{"id":"13","source":"n11","target":"n14"},{"id":"32","source":"n12","target":"n10"},{"id":"12","source":"n12","target":"n11"},{"id":"23","source":"n12","target":"n13"},{"id":"33","source":"n13","target":"n10"},{"id":"25","source":"n13","target":"n14"},{"id":"14","source":"n14","target":"n9"},{"id":"5","source":"n14","target":"n17"},{"id":"19","source":"n14","target":"Paris"},{"id":"6","source":"n15","target":"n8"},{"id":"22","source":"n15","target":"n16"},{"id":"20","source":"n15","target":"Paris"},{"id":"4","source":"n16","target":"n15"},{"id":"24","source":"n16","target":"Paris"},{"id":"9","source":"n17","target":"n7"},{"id":"21","source":"n17","target":"n17"},{"id":"2","source":"Paris","target":"n4"},{"id":"3","source":"Paris","target":"n17"},{"id":"16","source":"Paris","target":"Paris"}]} diff --git a/sigma.js-1.2.0/examples/data/moroccan-ediaspora.gexf b/sigma.js-1.2.0/examples/data/moroccan-ediaspora.gexf new file mode 100644 index 0000000..614e5fe --- /dev/null +++ b/sigma.js-1.2.0/examples/data/moroccan-ediaspora.gexf @@ -0,0 +1,4976 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gexf xmlns="http://www.gexf.net/1.2draft" version="1.2" xmlns:viz="http://www.gexf.net/1.2draft/viz" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gexf.net/1.2draft http://www.gexf.net/1.2draft/gexf.xsd"> + <meta lastmodifieddate="2014-06-26"> + <creator>Gephi 0.8.1</creator> + <description></description> + </meta> + <graph defaultedgetype="directed" mode="static"> + <attributes class="node" mode="static"> + <attribute id="adb_id" title="db_id" type="integer"></attribute> + <attribute id="aurl" title="url" type="string"></attribute> + <attribute id="adesc_01" title="desc_01" type="string"></attribute> + <attribute id="atype" title="type" type="string"></attribute> + <attribute id="acategory" title="Category" type="string"></attribute> + <attribute id="asubcategory" title="Sub-category" type="string"></attribute> + <attribute id="anb_of_languages" title="Count of Languages" type="string"></attribute> + <attribute id="alanguages" title="Languages" type="string"></attribute> + <attribute id="amain_language" title="Main language" type="string"></attribute> + <attribute id="ainteraction" title="Interaction" type="string"></attribute> + <attribute id="aextension_url" title="Top Level Domain" type="string"></attribute> + <attribute id="aaddressee_user" title="Addressee User" type="string"></attribute> + <attribute id="alocation_whois" title="Location (by Whois)" type="string"></attribute> + <attribute id="alocation_website" title="Website Location" type="string"></attribute> + <attribute id="alocalisation_user_country" title="Country Localisation of Users" type="string"></attribute> + <attribute id="alocalisation_user" title="Localisation of Users" type="string"></attribute> + <attribute id="aarchiving_frequence" title="archiving_frequence" type="string"></attribute> + <attribute id="ablabla" title="blabla" type="string"></attribute> + </attributes> + <nodes> + <node id="1" label="http://maes.blogfree.net/"> + <attvalues> + <attvalue for="adb_id" value="1"></attvalue> + <attvalue for="aurl" value="http://maes.blogfree.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="information"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="spanish|arabic"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="houston texas"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="29.405989" y="1566.1614" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="2" label="http://rmeconsultants.com/"> + <attvalues> + <attvalue for="adb_id" value="4"></attvalue> + <attvalue for="aurl" value="http://rmeconsultants.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="business"></attvalue> + <attvalue for="asubcategory" value="consulting"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="clichy-93"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="102.94118"></viz:size> + <viz:position x="935.27966" y="805.2539" z="0.0"></viz:position> + <viz:color r="191" g="173" b="64"></viz:color> + </node> + <node id="3" label="http://asso-amel.fr/"> + <attvalues> + <attvalue for="adb_id" value="5"></attvalue> + <attvalue for="aurl" value="http://asso-amel.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="lille"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-268.80237" y="1214.7377" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="4" label="http://traselviaje.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="6"></attvalue> + <attvalue for="aurl" value="http://traselviaje.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="247.81334" y="1407.4834" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="5" label="http://centromohammed6.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="7"></attvalue> + <attvalue for="aurl" value="http://centromohammed6.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="chile"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1036.5093" y="1214.489" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="6" label="http://amf.chez.com/"> + <attvalues> + <attvalue for="adb_id" value="8"></attvalue> + <attvalue for="aurl" value="http://amf.chez.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1375.881" y="829.96594" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="7" label="http://moroccanconsulate.com/"> + <attvalues> + <attvalue for="adb_id" value="9"></attvalue> + <attvalue for="aurl" value="http://moroccanconsulate.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="vienna-virginia"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="alocalisation_user" value="new york"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1090.8152" y="-55.573322" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="8" label="http://mobisud.be/"> + <attvalues> + <attvalue for="adb_id" value="11"></attvalue> + <attvalue for="aurl" value="http://mobisud.be/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="business"></attvalue> + <attvalue for="asubcategory" value="telecommunication"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="dutch"></attvalue> + <attvalue for="amain_language" value="dutch"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".be"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="belgium"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-863.9783" y="829.9243" z="0.0"></viz:position> + <viz:color r="191" g="173" b="64"></viz:color> + </node> + <node id="9" label="http://marocrus.com/"> + <attvalues> + <attvalue for="adb_id" value="12"></attvalue> + <attvalue for="aurl" value="http://marocrus.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="russian|french"></attvalue> + <attvalue for="amain_language" value="russian"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="morocco"></attvalue> + <attvalue for="alocation_website" value="marrakech"></attvalue> + <attvalue for="alocalisation_user_country" value="russie"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1246.405" y="980.56287" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="10" label="http://daba2012.com/"> + <attvalues> + <attvalue for="adb_id" value="13"></attvalue> + <attvalue for="aurl" value="http://daba2012.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="51.88194" y="-41.5433" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="11" label="http://soumiaz.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="17"></attvalue> + <attvalue for="aurl" value="http://soumiaz.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view-califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="-523.2344" y="-672.3979" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="12" label="http://yawatani.com/"> + <attvalues> + <attvalue for="adb_id" value="20"></attvalue> + <attvalue for="aurl" value="http://yawatani.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="nanterre 92"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-46.047115" y="230.94595" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="13" label="http://supertimba.skynetblogs.be/"> + <attvalues> + <attvalue for="adb_id" value="21"></attvalue> + <attvalue for="aurl" value="http://supertimba.skynetblogs.be/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".be"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="belgium"></attvalue> + <attvalue for="alocation_website" value="bruxelles"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-749.02844" y="-1055.8269" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="14" label="http://sonofwords.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="22"></attvalue> + <attvalue for="aurl" value="http://sonofwords.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|english"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="89.70589"></viz:size> + <viz:position x="-644.52673" y="-1598.8274" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="15" label="http://plateforme-mre.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="23"></attvalue> + <attvalue for="aurl" value="http://plateforme-mre.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="arabic|french|dutch"></attvalue> + <attvalue for="amain_language" value="arabic"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="-464.63864" y="191.37885" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="16" label="http://www.ccme.org.ma/"> + <attvalues> + <attvalue for="adb_id" value="26"></attvalue> + <attvalue for="aurl" value="http://www.ccme.org.ma/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="4"></attvalue> + <attvalue for="alanguages" value="french|english|arabic|spanish"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ma"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="102.94118"></viz:size> + <viz:position x="874.3423" y="-104.174225" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="17" label="http://darnna.com/"> + <attvalues> + <attvalue for="adb_id" value="27"></attvalue> + <attvalue for="aurl" value="http://darnna.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="religion juive"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="chesterbrook pennsylvania"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-671.6031" y="951.11444" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="18" label="http://www.7didane.org/"> + <attvalues> + <attvalue for="adb_id" value="28"></attvalue> + <attvalue for="aurl" value="http://www.7didane.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="provo utah"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="-797.45703" y="-1912.8909" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="19" label="http://talkmorocco.net/"> + <attvalues> + <attvalue for="adb_id" value="29"></attvalue> + <attvalue for="aurl" value="http://talkmorocco.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="information"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="brighton massachussets"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-131.03954" y="-1010.9634" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="20" label="http://blogmaghreb-observateur.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="30"></attvalue> + <attvalue for="aurl" value="http://blogmaghreb-observateur.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="review"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="-1331.4122" y="38.487923" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="21" label="http://ambexonline.net/"> + <attvalues> + <attvalue for="adb_id" value="31"></attvalue> + <attvalue for="aurl" value="http://ambexonline.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="falls church-virginia"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1840.5632" y="-428.0462" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="22" label="http://ambamaroc.ca/"> + <attvalues> + <attvalue for="adb_id" value="32"></attvalue> + <attvalue for="aurl" value="http://ambamaroc.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="embassy"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="ottawa"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1887.2834" y="439.71442" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="23" label="http://monagora.fr/"> + <attvalues> + <attvalue for="adb_id" value="34"></attvalue> + <attvalue for="aurl" value="http://monagora.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mood"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-1113.8853" y="-1450.7158" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="24" label="http://mirabab.fr/"> + <attvalues> + <attvalue for="adb_id" value="36"></attvalue> + <attvalue for="aurl" value="http://mirabab.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="bondy 93"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="107.35294"></viz:size> + <viz:position x="1294.4542" y="659.4413" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="25" label="http://oef75.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="37"></attvalue> + <attvalue for="aurl" value="http://oef75.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="-1100.1428" y="-1009.1306" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="26" label="http://aataourirt.org/"> + <attvalues> + <attvalue for="adb_id" value="38"></attvalue> + <attvalue for="aurl" value="http://aataourirt.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french| arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="-1479.7107" y="406.65134" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="27" label="http://adilski.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="39"></attvalue> + <attvalue for="aurl" value="http://adilski.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="english|french|arabic"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="665.071" y="-1176.121" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="28" label="http://www.marocainsdumonde.gov.ma/"> + <attvalues> + <attvalue for="adb_id" value="41"></attvalue> + <attvalue for="aurl" value="http://www.marocainsdumonde.gov.ma/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="ministry"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="french|english|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".ma"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="160.29411"></viz:size> + <viz:position x="1188.413" y="359.24182" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="29" label="http://lesamismarocains.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="44"></attvalue> + <attvalue for="aurl" value="http://lesamismarocains.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mood"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="52.358173" y="146.15752" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="30" label="http://almaghreb-almoulahed.com/"> + <attvalues> + <attvalue for="adb_id" value="46"></attvalue> + <attvalue for="aurl" value="http://almaghreb-almoulahed.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="review"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="arabic|french"></attvalue> + <attvalue for="amain_language" value="arabic"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="-1208.7242" y="-97.61195" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="31" label="http://ascib.net/"> + <attvalues> + <attvalue for="adb_id" value="49"></attvalue> + <attvalue for="aurl" value="http://ascib.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="spanish|arabic"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="spain"></attvalue> + <attvalue for="alocation_website" value="barcelona"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="alocalisation_user" value="barcelona"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="490.4436" y="1089.9109" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="32" label="http://maghreb-observateur.qc.ca/"> + <attvalues> + <attvalue for="adb_id" value="50"></attvalue> + <attvalue for="aurl" value="http://maghreb-observateur.qc.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="tv"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="saint sauveur quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="-1316.472" y="-209.01892" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="33" label="http://marouki.joeuser.com/"> + <attvalues> + <attvalue for="adb_id" value="51"></attvalue> + <attvalue for="aurl" value="http://marouki.joeuser.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|english"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="washington"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="105.82267" y="-1556.7146" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="34" label="http://cabalamuse.wordpress.com/"> + <attvalues> + <attvalue for="adb_id" value="52"></attvalue> + <attvalue for="aurl" value="http://cabalamuse.wordpress.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="new york"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="133.82353"></viz:size> + <viz:position x="13.580149" y="-1312.3636" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="35" label="http://www.consulatmaroc-pontoise.fr/"> + <attvalues> + <attvalue for="adb_id" value="54"></attvalue> + <attvalue for="aurl" value="http://www.consulatmaroc-pontoise.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="phone"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="germany"></attvalue> + <attvalue for="alocation_website" value="karlsruhe"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="pontoise"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="664.63153" y="529.4918" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="36" label="http://lailalalami.com/"> + <attvalues> + <attvalue for="adb_id" value="55"></attvalue> + <attvalue for="aurl" value="http://lailalalami.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="california"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="107.35294"></viz:size> + <viz:position x="129.4461" y="-1241.0768" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="37" label="http://aceimi.insa-lyon.fr/"> + <attvalues> + <attvalue for="adb_id" value="61"></attvalue> + <attvalue for="aurl" value="http://aceimi.insa-lyon.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-144.94943" y="1311.5579" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="38" label="http://klamia.canalblog.com/"> + <attvalues> + <attvalue for="adb_id" value="63"></attvalue> + <attvalue for="aurl" value="http://klamia.canalblog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="isle jourdain"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="-1151.493" y="-1344.5822" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="39" label="http://emigrant.canalblog.com/"> + <attvalues> + <attvalue for="adb_id" value="67"></attvalue> + <attvalue for="aurl" value="http://emigrant.canalblog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="l'isle jourdain 32"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-941.31604" y="-727.59064" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="40" label="http://wladbladi.com/"> + <attvalues> + <attvalue for="adb_id" value="69"></attvalue> + <attvalue for="aurl" value="http://wladbladi.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1103.6724" y="926.82074" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="41" label="http://badrryadi.centerblog.net/"> + <attvalues> + <attvalue for="adb_id" value="70"></attvalue> + <attvalue for="aurl" value="http://badrryadi.centerblog.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="villebon sur yvette"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="-428.59503" y="453.9688" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="42" label="http://saad.amrani.free.fr/blog/"> + <attvalues> + <attvalue for="adb_id" value="72"></attvalue> + <attvalue for="aurl" value="http://saad.amrani.free.fr/blog/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|english"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-1464.9756" y="-1739.1626" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="43" label="http://marocentrepreneurs.com/"> + <attvalues> + <attvalue for="adb_id" value="73"></attvalue> + <attvalue for="aurl" value="http://marocentrepreneurs.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="la garenne colombes-92"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="322.85684" y="280.80823" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="44" label="http://yabiladi.com/"> + <attvalues> + <attvalue for="adb_id" value="76"></attvalue> + <attvalue for="aurl" value="http://yabiladi.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="morocco"></attvalue> + <attvalue for="alocation_website" value="casablanca"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="133.82353"></viz:size> + <viz:position x="106.56548" y="-230.01329" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="45" label="http://purplemind-candysha.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="77"></attvalue> + <attvalue for="aurl" value="http://purplemind-candysha.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="133.24222" y="-1924.3843" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="46" label="http://consulatmarocmilan.it/"> + <attvalues> + <attvalue for="adb_id" value="78"></attvalue> + <attvalue for="aurl" value="http://consulatmarocmilan.it/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="french|italian|arabic"></attvalue> + <attvalue for="amain_language" value="italian"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".it"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="italie"></attvalue> + <attvalue for="alocation_website" value="milano"></attvalue> + <attvalue for="alocalisation_user_country" value="italie"></attvalue> + <attvalue for="alocalisation_user" value="milano"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="1665.4874" y="609.7331" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="47" label="http://maghrebin.net/"> + <attvalues> + <attvalue for="adb_id" value="80"></attvalue> + <attvalue for="aurl" value="http://maghrebin.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="morocco"></attvalue> + <attvalue for="alocation_website" value="agadir"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-367.128" y="1467.7607" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="48" label="http://blogreda.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="81"></attvalue> + <attvalue for="aurl" value="http://blogreda.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="129.41177"></viz:size> + <viz:position x="-337.9899" y="-1500.6162" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="49" label="http://arabika.ning.com/"> + <attvalues> + <attvalue for="adb_id" value="84"></attvalue> + <attvalue for="aurl" value="http://arabika.ning.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="social network"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="spanish|arabic"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="forum|comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="broomfield colorado"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-63.840904" y="1522.7004" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="50" label="http://consulatmaroc-bruxelles.be/"> + <attvalues> + <attvalue for="adb_id" value="85"></attvalue> + <attvalue for="aurl" value="http://consulatmaroc-bruxelles.be/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".be"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="danemark"></attvalue> + <attvalue for="alocation_website" value="copenhagen"></attvalue> + <attvalue for="alocalisation_user_country" value="belgium"></attvalue> + <attvalue for="alocalisation_user" value="bruxelles"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="569.8974" y="92.058304" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="51" label="http://myrtus.typepad.com/"> + <attvalues> + <attvalue for="adb_id" value="87"></attvalue> + <attvalue for="aurl" value="http://myrtus.typepad.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mood"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="sanfransico"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="98.52942"></viz:size> + <viz:position x="133.26582" y="-1442.297" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="52" label="http://etudiants-marocains.forumactif.com/"> + <attvalues> + <attvalue for="adb_id" value="88"></attvalue> + <attvalue for="aurl" value="http://etudiants-marocains.forumactif.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal/forum"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="dallas texas"></attvalue> + <attvalue for="alocalisation_user_country" value="morocco"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-380.5335" y="984.18915" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="53" label="http://wafin.be/"> + <attvalues> + <attvalue for="adb_id" value="90"></attvalue> + <attvalue for="aurl" value="http://wafin.be/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="×"></attvalue> + <attvalue for="aextension_url" value=".be"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="danemark"></attvalue> + <attvalue for="alocation_website" value="Copenhagen"></attvalue> + <attvalue for="alocalisation_user_country" value="belgium"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="714.34766" y="-149.55095" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="54" label="http://aljalia-almaghrebia.com/"> + <attvalues> + <attvalue for="adb_id" value="91"></attvalue> + <attvalue for="aurl" value="http://aljalia-almaghrebia.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal/forum"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="arabic|russian|french"></attvalue> + <attvalue for="amain_language" value="arabic|russian"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="russia"></attvalue> + <attvalue for="alocation_website" value="Moskva"></attvalue> + <attvalue for="alocalisation_user_country" value="russia"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1644.3995" y="-273.94473" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="55" label="http://savdev.org/"> + <attvalues> + <attvalue for="adb_id" value="92"></attvalue> + <attvalue for="aurl" value="http://savdev.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="pompertuzat-31"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="1603.8699" y="-66.28049" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="56" label="http://slimane.canalblog.com/"> + <attvalues> + <attvalue for="adb_id" value="94"></attvalue> + <attvalue for="aurl" value="http://slimane.canalblog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mood"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_website" value="isle jourdain"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="-1452.408" y="-1385.6141" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="57" label="http://amp-usa.org/"> + <attvalues> + <attvalue for="adb_id" value="95"></attvalue> + <attvalue for="aurl" value="http://amp-usa.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="falls church virginia"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="89.70589"></viz:size> + <viz:position x="832.32477" y="-417.1588" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="58" label="http://www.consulatmaroc-toulouse.org/"> + <attvalues> + <attvalue for="adb_id" value="97"></attvalue> + <attvalue for="aurl" value="http://www.consulatmaroc-toulouse.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="toulouse 31"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="toulouse"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="1064.6848" y="708.91125" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="59" label="http://marocainsdalgerie.sosblog.com/"> + <attvalues> + <attvalue for="adb_id" value="98"></attvalue> + <attvalue for="aurl" value="http://marocainsdalgerie.sosblog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="dallas-texas"></attvalue> + <attvalue for="alocalisation_user_country" value="algeria"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1234.6519" y="775.70154" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="60" label="http://maghreballiance.com/"> + <attvalues> + <attvalue for="adb_id" value="100"></attvalue> + <attvalue for="aurl" value="http://maghreballiance.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="lakewood california"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="1086.1218" y="-634.9369" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="61" label="http://sebti.fr/"> + <attvalues> + <attvalue for="adb_id" value="101"></attvalue> + <attvalue for="aurl" value="http://sebti.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix-59"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="-1058.4196" y="-809.7114" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="62" label="http://amanaonline.org/"> + <attvalues> + <attvalue for="adb_id" value="103"></attvalue> + <attvalue for="aurl" value="http://amanaonline.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="germantown maryland"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1018.3884" y="-726.7484" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="63" label="http://larbi.org/"> + <attvalues> + <attvalue for="adb_id" value="104"></attvalue> + <attvalue for="aurl" value="http://larbi.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="issy les moulineaux 92"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="200.0"></viz:size> + <viz:position x="-695.68567" y="-912.75793" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="64" label="http://capdema.org/"> + <attvalues> + <attvalue for="adb_id" value="105"></attvalue> + <attvalue for="aurl" value="http://capdema.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-287.8643" y="567.3269" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="65" label="http://embajada-marruecos.es/"> + <attvalues> + <attvalue for="adb_id" value="106"></attvalue> + <attvalue for="aurl" value="http://embajada-marruecos.es/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="embassy"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".es"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-587.0828" y="1415.1858" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="66" label="http://poliquonautemarocain.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="107"></attvalue> + <attvalue for="aurl" value="http://poliquonautemarocain.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="94.117645"></viz:size> + <viz:position x="-688.1085" y="-1201.261" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="67" label="http://labelash.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="108"></attvalue> + <attvalue for="aurl" value="http://labelash.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="english|french"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="133.82353"></viz:size> + <viz:position x="-350.4689" y="-1378.6755" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="68" label="http://moroccoboard.com/"> + <attvalues> + <attvalue for="adb_id" value="109"></attvalue> + <attvalue for="aurl" value="http://moroccoboard.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="host country"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="provo-utah"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="173.52942"></viz:size> + <viz:position x="603.1411" y="-900.90186" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="69" label="http://ecmb.association.over-blog.com/"> + <attvalues> + <attvalue for="adb_id" value="111"></attvalue> + <attvalue for="aurl" value="http://ecmb.association.over-blog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="belgium"></attvalue> + <attvalue for="alocalisation_user" value="mons"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-791.1554" y="1166.1509" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="70" label="http://marbel.free-bb.com/"> + <attvalues> + <attvalue for="adb_id" value="115"></attvalue> + <attvalue for="aurl" value="http://marbel.free-bb.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="host country"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-502.49057" y="1198.846" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="71" label="http://enmarruecos.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="116"></attvalue> + <attvalue for="aurl" value="http://enmarruecos.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califorma"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-857.2837" y="723.2823" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="72" label="http://asociacionmarroqui.com/"> + <attvalues> + <attvalue for="adb_id" value="117"></attvalue> + <attvalue for="aurl" value="http://asociacionmarroqui.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="spain"></attvalue> + <attvalue for="alocation_website" value="malaga"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="alocalisation_user" value="malaga"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-2.372797" y="1137.9336" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="73" label="http://marocains-d-algerie.niceboard.com/"> + <attvalues> + <attvalue for="adb_id" value="119"></attvalue> + <attvalue for="aurl" value="http://marocains-d-algerie.niceboard.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="host country"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocalisation_user_country" value="algeria"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-858.748" y="-617.52673" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="74" label="http://9afia.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="120"></attvalue> + <attvalue for="aurl" value="http://9afia.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormie"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="89.70589"></viz:size> + <viz:position x="-1074.335" y="-1549.0375" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="75" label="http://lemythe.com/"> + <attvalues> + <attvalue for="adb_id" value="121"></attvalue> + <attvalue for="aurl" value="http://lemythe.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="morocco"></attvalue> + <attvalue for="alocation_website" value="marrakech"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="98.52942"></viz:size> + <viz:position x="-980.3939" y="-1674.2867" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="76" label="http://karlamassini.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="122"></attvalue> + <attvalue for="aurl" value="http://karlamassini.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="94.117645"></viz:size> + <viz:position x="-114.77347" y="-1872.5544" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="77" label="http://cgm-colombes.com/"> + <attvalues> + <attvalue for="adb_id" value="123"></attvalue> + <attvalue for="aurl" value="http://cgm-colombes.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="lyon 69"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="colombes"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="89.70589"></viz:size> + <viz:position x="966.04376" y="896.0217" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="78" label="http://atmf.org/"> + <attvalues> + <attvalue for="adb_id" value="125"></attvalue> + <attvalue for="aurl" value="http://atmf.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="-1776.4502" y="447.0509" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="79" label="http://asdhom.org/"> + <attvalues> + <attvalue for="adb_id" value="126"></attvalue> + <attvalue for="aurl" value="http://asdhom.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-591.5802" y="1089.7407" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="80" label="http://association-khamsa.org/"> + <attvalues> + <attvalue for="adb_id" value="127"></attvalue> + <attvalue for="aurl" value="http://association-khamsa.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="vandoeuvre 54"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="-1686.9839" y="208.54492" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="81" label="http://ampsq.com/"> + <attvalues> + <attvalue for="adb_id" value="131"></attvalue> + <attvalue for="aurl" value="http://ampsq.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="montreal quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="alocalisation_user" value="montreal quebec"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="1619.4932" y="131.6152" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="82" label="http://fincome.ma/"> + <attvalues> + <attvalue for="adb_id" value="132"></attvalue> + <attvalue for="aurl" value="http://fincome.ma/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="4"></attvalue> + <attvalue for="alanguages" value="french|english|arabic|spanish"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".ma"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1677.4119" y="223.41138" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="83" label="http://aemc14.fr/"> + <attvalues> + <attvalue for="adb_id" value="133"></attvalue> + <attvalue for="aurl" value="http://aemc14.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="sarreguemines 57"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="caen"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1046.7448" y="1090.031" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="84" label="http://mars-net.org/"> + <attvalues> + <attvalue for="adb_id" value="134"></attvalue> + <attvalue for="aurl" value="http://mars-net.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="scottsdale-arizona"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1741.1768" y="-325.7863" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="85" label="http://alwatan.ma/"> + <attvalues> + <attvalue for="adb_id" value="135"></attvalue> + <attvalue for="aurl" value="http://alwatan.ma/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="foundation"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ma"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="102.94118"></viz:size> + <viz:position x="958.51776" y="162.81879" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="86" label="http://www.eatbees.com/blog/"> + <attvalues> + <attvalue for="adb_id" value="137"></attvalue> + <attvalue for="aurl" value="http://www.eatbees.com/blog/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="asheville north carolina"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="169.11765"></viz:size> + <viz:position x="-175.53465" y="-1111.2314" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="87" label="http://atlassolidarite.free.fr/"> + <attvalues> + <attvalue for="adb_id" value="138"></attvalue> + <attvalue for="aurl" value="http://atlassolidarite.free.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-1451.4978" y="518.5807" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="88" label="http://amge-caravane.com/"> + <attvalues> + <attvalue for="adb_id" value="139"></attvalue> + <attvalue for="aurl" value="http://amge-caravane.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="80.882355"></viz:size> + <viz:position x="-167.36864" y="402.1872" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="89" label="http://dcusa.themoroccanembassy.com/"> + <attvalues> + <attvalue for="adb_id" value="140"></attvalue> + <attvalue for="aurl" value="http://dcusa.themoroccanembassy.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="embassy"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="carrollton texas"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="alocalisation_user" value="washinghton"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1457.3099" y="483.00677" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="90" label="http://marruecos-maroc.com/"> + <attvalues> + <attvalue for="adb_id" value="143"></attvalue> + <attvalue for="aurl" value="http://marruecos-maroc.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="host country"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="spanish|arabic|french"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="spain"></attvalue> + <attvalue for="alocation_website" value="madrid"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="743.29034" y="609.22144" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="91" label="http://us.biomatec.org/"> + <attvalues> + <attvalue for="adb_id" value="144"></attvalue> + <attvalue for="aurl" value="http://us.biomatec.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="miami Florida"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="80.882355"></viz:size> + <viz:position x="1324.9896" y="-7.9080515" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="92" label="http://tiwizi59.over-blog.com/"> + <attvalues> + <attvalue for="adb_id" value="148"></attvalue> + <attvalue for="aurl" value="http://tiwizi59.over-blog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="saint mande 92"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="alocalisation_user" value="lille"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-375.49432" y="896.0121" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="93" label="http://al9adiya7amda.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="149"></attvalue> + <attvalue for="aurl" value="http://al9adiya7amda.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califorma"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="-50.865227" y="-1715.9819" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="94" label="http://kalima.hautetfort.com/"> + <attvalues> + <attvalue for="adb_id" value="150"></attvalue> + <attvalue for="aurl" value="http://kalima.hautetfort.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="malakoff"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="-690.1107" y="-1735.2966" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="95" label="http://amb-maroc.fr/"> + <attvalues> + <attvalue for="adb_id" value="151"></attvalue> + <attvalue for="aurl" value="http://amb-maroc.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="embassy"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="491.91907" y="762.3252" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="96" label="http://www.consulatmarocdijon.net/"> + <attvalues> + <attvalue for="adb_id" value="152"></attvalue> + <attvalue for="aurl" value="http://www.consulatmarocdijon.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="talant 21"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="dijon"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="80.882355"></viz:size> + <viz:position x="668.95105" y="438.44708" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="97" label="http://atime.es/"> + <attvalues> + <attvalue for="adb_id" value="153"></attvalue> + <attvalue for="aurl" value="http://atime.es/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="spanish|arabic"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".es"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="spain"></attvalue> + <attvalue for="alocation_website" value="madrid"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="935.24066" y="937.49414" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="98" label="http://lallamenana.free.fr/"> + <attvalues> + <attvalue for="adb_id" value="154"></attvalue> + <attvalue for="aurl" value="http://lallamenana.free.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mood"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="72.930145" y="-1602.9775" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="99" label="http://suisse-maroc.com/"> + <attvalues> + <attvalue for="adb_id" value="156"></attvalue> + <attvalue for="aurl" value="http://suisse-maroc.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="switzerland"></attvalue> + <attvalue for="alocation_website" value="lausanne"></attvalue> + <attvalue for="alocalisation_user_country" value="switzerland"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1280.957" y="882.931" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="100" label="http://amctprp.org/RIM"> + <attvalues> + <attvalue for="adb_id" value="157"></attvalue> + <attvalue for="aurl" value="http://amctprp.org/RIM"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="argenteuil-95"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="-1179.7588" y="370.24817" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="101" label="http://mobisud.fr/"> + <attvalues> + <attvalue for="adb_id" value="158"></attvalue> + <attvalue for="aurl" value="http://mobisud.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="business"></attvalue> + <attvalue for="asubcategory" value="telecommunication"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-719.58716" y="508.4318" z="0.0"></viz:position> + <viz:color r="191" g="173" b="64"></viz:color> + </node> + <node id="102" label="http://moroccansociety.org/"> + <attvalues> + <attvalue for="adb_id" value="159"></attvalue> + <attvalue for="aurl" value="http://moroccansociety.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="harrisonburg-virginia"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="1456.6932" y="-777.4824" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="103" label="http://maooc.com/"> + <attvalues> + <attvalue for="adb_id" value="160"></attvalue> + <attvalue for="aurl" value="http://maooc.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="laval quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="alocalisation_user" value="chicago"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1489.1056" y="-682.0405" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="104" label="http://bioacm.ca/"> + <attvalues> + <attvalue for="adb_id" value="162"></attvalue> + <attvalue for="aurl" value="http://bioacm.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="montreal quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="1631.0564" y="37.76025" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="105" label="http://lecitoyenmarocain.com/"> + <attvalues> + <attvalue for="adb_id" value="165"></attvalue> + <attvalue for="aurl" value="http://lecitoyenmarocain.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="chesterbrook pennsylvania"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="924.7262" y="-1018.7587" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="106" label="http://taha.fr/"> + <attvalues> + <attvalue for="adb_id" value="166"></attvalue> + <attvalue for="aurl" value="http://taha.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-400.04803" y="1366.853" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="107" label="http://marokkanskforening.no/"> + <attvalues> + <attvalue for="adb_id" value="167"></attvalue> + <attvalue for="aurl" value="http://marokkanskforening.no/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="danish"></attvalue> + <attvalue for="amain_language" value="danish"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".no"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="danemark"></attvalue> + <attvalue for="alocation_website" value="copenhagen"></attvalue> + <attvalue for="alocalisation_user_country" value="danemark"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-922.51355" y="1036.6807" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="108" label="http://centromohammed6.cl/"> + <attvalues> + <attvalue for="adb_id" value="171"></attvalue> + <attvalue for="aurl" value="http://centromohammed6.cl/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".cl"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="chile"></attvalue> + <attvalue for="alocalisation_user_country" value="chile"></attvalue> + <attvalue for="alocalisation_user" value="coquimbo"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-951.1106" y="1311.4114" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="109" label="http://idd-reseau.org/"> + <attvalues> + <attvalue for="adb_id" value="172"></attvalue> + <attvalue for="aurl" value="http://idd-reseau.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="-1625.4888" y="327.5265" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="110" label="http://elmuhajer.com/"> + <attvalues> + <attvalue for="adb_id" value="173"></attvalue> + <attvalue for="aurl" value="http://elmuhajer.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="tv"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="arabic|english"></attvalue> + <attvalue for="amain_language" value="arabic"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="scottsdale arizona"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="1225.2301" y="-971.5149" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="111" label="http://magiaenmarruecos.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="175"></attvalue> + <attvalue for="aurl" value="http://magiaenmarruecos.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="251.75922" y="1595.358" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="112" label="http://louladekhmissbatata.wordpress.com/"> + <attvalues> + <attvalue for="adb_id" value="176"></attvalue> + <attvalue for="aurl" value="http://louladekhmissbatata.wordpress.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="new york"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="147.05884"></viz:size> + <viz:position x="-507.0153" y="-1807.036" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="113" label="http://minbarachaab.net/"> + <attvalues> + <attvalue for="adb_id" value="178"></attvalue> + <attvalue for="aurl" value="http://minbarachaab.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="information"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="arabic"></attvalue> + <attvalue for="amain_language" value="arabic"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="philadephia-pennsylvania"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="125.0"></viz:size> + <viz:position x="1078.4658" y="-526.85754" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="114" label="http://cgmrotterdam.nl/"> + <attvalues> + <attvalue for="adb_id" value="180"></attvalue> + <attvalue for="aurl" value="http://cgmrotterdam.nl/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="dutch|arabic"></attvalue> + <attvalue for="amain_language" value="dutch"></attvalue> + <attvalue for="ainteraction" value="phone"></attvalue> + <attvalue for="aextension_url" value=".nl"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="netherlands"></attvalue> + <attvalue for="alocation_website" value="groningen"></attvalue> + <attvalue for="alocalisation_user_country" value="netherlands"></attvalue> + <attvalue for="alocalisation_user" value="rotterdam"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="673.85944" y="231.1642" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="115" label="http://mlouizi.unblog.fr/"> + <attvalues> + <attvalue for="adb_id" value="181"></attvalue> + <attvalue for="aurl" value="http://mlouizi.unblog.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="alocalisation_user" value="lille"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-359.82626" y="777.35864" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="116" label="http://www.sierra.ht.st/"> + <attvalues> + <attvalue for="adb_id" value="184"></attvalue> + <attvalue for="aurl" value="http://www.sierra.ht.st/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".st"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1365.562" y="-407.54196" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="117" label="http://yenoo.be/"> + <attvalues> + <attvalue for="adb_id" value="185"></attvalue> + <attvalue for="aurl" value="http://yenoo.be/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".be"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="belgium"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="-541.14374" y="356.69434" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="118" label="http://migdev.org/"> + <attvalues> + <attvalue for="adb_id" value="186"></attvalue> + <attvalue for="aurl" value="http://migdev.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="marseille"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="1128.7743" y="39.19479" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="119" label="http://palmier-savoir.net/"> + <attvalues> + <attvalue for="adb_id" value="187"></attvalue> + <attvalue for="aurl" value="http://palmier-savoir.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="argenteuil-95"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="-1593.4294" y="483.54684" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="120" label="http://boubouh.over-blog.com/"> + <attvalues> + <attvalue for="adb_id" value="190"></attvalue> + <attvalue for="aurl" value="http://boubouh.over-blog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-584.609" y="1745.6838" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="121" label="http://bled.ma/"> + <attvalues> + <attvalue for="adb_id" value="195"></attvalue> + <attvalue for="aurl" value="http://bled.ma/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="home country"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".ma"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="montreal quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="838.52954" y="983.8976" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="122" label="http://kugelschreiber.canalblog.com/"> + <attvalues> + <attvalue for="adb_id" value="196"></attvalue> + <attvalue for="aurl" value="http://kugelschreiber.canalblog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mood"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="isle jourdain"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-1362.1049" y="-1505.932" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="123" label="http://ama-co.org/"> + <attvalues> + <attvalue for="adb_id" value="197"></attvalue> + <attvalue for="aurl" value="http://ama-co.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="aurora-colorado"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="620.1304" y="-514.1849" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="124" label="http://dafina.net/"> + <attvalues> + <attvalue for="adb_id" value="198"></attvalue> + <attvalue for="aurl" value="http://dafina.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="religion juive"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|english"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="los angeles california"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-556.4886" y="669.5337" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="125" label="http://mohblog.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="199"></attvalue> + <attvalue for="aurl" value="http://mohblog.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="literature"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view-califormie"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-837.4586" y="-1304.5186" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="126" label="http://cnmf.fr/"> + <attvalues> + <attvalue for="adb_id" value="200"></attvalue> + <attvalue for="aurl" value="http://cnmf.fr/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="citizenship"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".fr"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="versailles 78"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="194.86188" y="-86.55545" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="127" label="http://kingstoune.com/"> + <attvalues> + <attvalue for="adb_id" value="201"></attvalue> + <attvalue for="aurl" value="http://kingstoune.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="nice"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-526.3707" y="-1251.1437" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="128" label="http://maroc-canada.ca/"> + <attvalues> + <attvalue for="adb_id" value="202"></attvalue> + <attvalue for="aurl" value="http://maroc-canada.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="montreal-quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="alocalisation_user" value="quebec"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="58.82353"></viz:size> + <viz:position x="1157.0012" y="-179.61412" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="129" label="http://cgml.net/"> + <attvalues> + <attvalue for="adb_id" value="204"></attvalue> + <attvalue for="aurl" value="http://cgml.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="Vaulx en Velin 69"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="lyon"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1185.6432" y="1001.29553" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="130" label="http://www.cg-maroc-rennes.com/"> + <attvalues> + <attvalue for="adb_id" value="205"></attvalue> + <attvalue for="aurl" value="http://www.cg-maroc-rennes.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="rennes"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="rennes"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1517.639" y="948.43616" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="131" label="http://www.cg-maroc-orleans.org/"> + <attvalues> + <attvalue for="adb_id" value="206"></attvalue> + <attvalue for="aurl" value="http://www.cg-maroc-orleans.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="orleans"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="orleans"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1217.1663" y="848.46533" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="132" label="http://tunion.org/"> + <attvalues> + <attvalue for="adb_id" value="207"></attvalue> + <attvalue for="aurl" value="http://tunion.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="herouville saint clair 14"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1463.5747" y="-477.06274" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="133" label="http://aelmb.net/"> + <attvalues> + <attvalue for="adb_id" value="208"></attvalue> + <attvalue for="aurl" value="http://aelmb.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="aix-en-provence 13"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="bordeaux"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-261.5904" y="1036.8342" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="134" label="http://maghreb-canada.ca/"> + <attvalues> + <attvalue for="adb_id" value="209"></attvalue> + <attvalue for="aurl" value="http://maghreb-canada.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="review"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="montreal quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="alocalisation_user" value="quebec"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="160.29411"></viz:size> + <viz:position x="1258.653" y="-364.50854" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="135" label="http://sahara-libre.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="210"></attvalue> + <attvalue for="aurl" value="http://sahara-libre.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="253.1347" y="12.435148" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="136" label="http://judaisme-marocain.org/"> + <attvalues> + <attvalue for="adb_id" value="211"></attvalue> + <attvalue for="aurl" value="http://judaisme-marocain.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="culture/religion"></attvalue> + <attvalue for="asubcategory" value="religion"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="belgium"></attvalue> + <attvalue for="alocation_website" value="bruxelles"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1409.983" y="669.8915" z="0.0"></viz:position> + <viz:color r="100" g="64" b="191"></viz:color> + </node> + <node id="137" label="http://mre.ma/"> + <attvalues> + <attvalue for="adb_id" value="212"></attvalue> + <attvalue for="aurl" value="http://mre.ma/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".ma"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="28.084202" y="1082.6349" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="138" label="http://wafin.com/"> + <attvalues> + <attvalue for="adb_id" value="213"></attvalue> + <attvalue for="aurl" value="http://wafin.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="houston texas"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="111.76471"></viz:size> + <viz:position x="813.6925" y="-582.745" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="139" label="http://amdt.ca/"> + <attvalues> + <attvalue for="adb_id" value="219"></attvalue> + <attvalue for="aurl" value="http://amdt.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|english"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="toronto"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="alocalisation_user" value="toronto"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="1453.0883" y="-223.74092" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="140" label="http://murmures.net/"> + <attvalues> + <attvalue for="adb_id" value="220"></attvalue> + <attvalue for="aurl" value="http://murmures.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="englewood"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="142.64706"></viz:size> + <viz:position x="-347.78644" y="-1657.7517" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="141" label="http://kennza.wordpress.com/"> + <attvalues> + <attvalue for="adb_id" value="222"></attvalue> + <attvalue for="aurl" value="http://kennza.wordpress.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="mixed"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="new york"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="85.29411"></viz:size> + <viz:position x="-346.48593" y="-1974.9248" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="142" label="http://fatima-salma.over-blog.com/"> + <attvalues> + <attvalue for="adb_id" value="223"></attvalue> + <attvalue for="aurl" value="http://fatima-salma.over-blog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="cooking"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-1219.0205" y="562.5318" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="143" label="http://rtv1860.com/"> + <attvalues> + <attvalue for="adb_id" value="224"></attvalue> + <attvalue for="aurl" value="http://rtv1860.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="tv"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="french|arabic"></attvalue> + <attvalue for="amain_language" value="arabic"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="piedmont"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="76.47059"></viz:size> + <viz:position x="-1449.6562" y="-51.917187" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="144" label="http://bladi.net/"> + <attvalues> + <attvalue for="adb_id" value="227"></attvalue> + <attvalue for="aurl" value="http://bladi.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="portal"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="morocco"></attvalue> + <attvalue for="alocation_website" value="rabat"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="102.94118"></viz:size> + <viz:position x="-68.60857" y="-373.03134" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="145" label="http://forumhorizonsmaroc.com/"> + <attvalues> + <attvalue for="adb_id" value="232"></attvalue> + <attvalue for="aurl" value="http://forumhorizonsmaroc.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="students/qualified"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="roubaix 59"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-213.16731" y="624.91156" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="146" label="http://pourunmarocmeilleur.com/"> + <attvalues> + <attvalue for="adb_id" value="234"></attvalue> + <attvalue for="aurl" value="http://pourunmarocmeilleur.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="development"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="650.4445" y="-313.28952" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="147" label="http://consulatmarocfrankfurt.de/"> + <attvalues> + <attvalue for="adb_id" value="236"></attvalue> + <attvalue for="aurl" value="http://consulatmarocfrankfurt.de/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="french|deutsch|arabic"></attvalue> + <attvalue for="amain_language" value="deutsch"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".de"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="germany"></attvalue> + <attvalue for="alocation_website" value="frankfurt"></attvalue> + <attvalue for="alocalisation_user_country" value="germany"></attvalue> + <attvalue for="alocalisation_user" value="frankfurt"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="63.235294"></viz:size> + <viz:position x="1177.5378" y="566.34546" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="148" label="http://consulatdumaroc.ca/"> + <attvalues> + <attvalue for="adb_id" value="239"></attvalue> + <attvalue for="aurl" value="http://consulatdumaroc.ca/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="3"></attvalue> + <attvalue for="alanguages" value="french|english|arabic"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".ca"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="canada"></attvalue> + <attvalue for="alocation_website" value="montreal quebec"></attvalue> + <attvalue for="alocalisation_user_country" value="canada"></attvalue> + <attvalue for="alocalisation_user" value="montreal quebec"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="1528.1263" y="276.3866" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + <node id="149" label="http://marruecosdigital.net/"> + <attvalues> + <attvalue for="adb_id" value="240"></attvalue> + <attvalue for="aurl" value="http://marruecosdigital.net/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="media"></attvalue> + <attvalue for="asubcategory" value="portal/forum"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="spanish"></attvalue> + <attvalue for="amain_language" value="spanish"></attvalue> + <attvalue for="ainteraction" value="forum"></attvalue> + <attvalue for="aextension_url" value=".net"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="orlando-florida"></attvalue> + <attvalue for="alocalisation_user_country" value="spain"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="29.198727" y="1358.6741" z="0.0"></viz:position> + <viz:color r="191" g="64" b="64"></viz:color> + </node> + <node id="150" label="http://www.anasalaoui.com/"> + <attvalues> + <attvalue for="adb_id" value="243"></attvalue> + <attvalue for="aurl" value="http://www.anasalaoui.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="courbevoie 94"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="-1041.5767" y="-1149.748" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="151" label="http://washingtonmoroccanclub.org/"> + <attvalues> + <attvalue for="adb_id" value="244"></attvalue> + <attvalue for="aurl" value="http://washingtonmoroccanclub.org/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="english"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".org"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="alexandria virginia"></attvalue> + <attvalue for="alocalisation_user_country" value="usa"></attvalue> + <attvalue for="alocalisation_user" value="washinghton"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="111.76471"></viz:size> + <viz:position x="1036.0952" y="-830.6911" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="152" label="http://munt.nu/"> + <attvalues> + <attvalue for="adb_id" value="245"></attvalue> + <attvalue for="aurl" value="http://munt.nu/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="association/ngo"></attvalue> + <attvalue for="asubcategory" value="culture"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="dutch"></attvalue> + <attvalue for="amain_language" value="dutch"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".nu"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="netherlands"></attvalue> + <attvalue for="alocation_website" value="amsterdam"></attvalue> + <attvalue for="alocalisation_user_country" value="netherlands"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-738.11914" y="1359.5813" z="0.0"></viz:position> + <viz:color r="64" g="191" b="136"></viz:color> + </node> + <node id="153" label="http://ridm-maroc.com/"> + <attvalues> + <attvalue for="adb_id" value="247"></attvalue> + <attvalue for="aurl" value="http://ridm-maroc.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="community"></attvalue> + <attvalue for="asubcategory" value="host country"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="registration"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="north bergen new jersey"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="50.0"></viz:size> + <viz:position x="-806.5348" y="615.5641" z="0.0"></viz:position> + <viz:color r="100" g="191" b="64"></viz:color> + </node> + <node id="154" label="http://makhoudjit.blogspot.com/"> + <attvalues> + <attvalue for="adb_id" value="251"></attvalue> + <attvalue for="aurl" value="http://makhoudjit.blogspot.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="social/politic"></attvalue> + <attvalue for="anb_of_languages" value="2"></attvalue> + <attvalue for="alanguages" value="english"></attvalue> + <attvalue for="amain_language" value="arabic"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="usa"></attvalue> + <attvalue for="alocation_website" value="mountain view califormia"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="72.05882"></viz:size> + <viz:position x="-310.06207" y="-809.9856" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="155" label="http://nowbi.over-blog.com/"> + <attvalues> + <attvalue for="adb_id" value="252"></attvalue> + <attvalue for="aurl" value="http://nowbi.over-blog.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="blog"></attvalue> + <attvalue for="asubcategory" value="intimist"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="comment"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants|non migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="paris"></attvalue> + <attvalue for="alocalisation_user_country" value="all countries"></attvalue> + <attvalue for="aarchiving_frequence" value="weekly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="54.411766"></viz:size> + <viz:position x="-387.39615" y="1638.9236" z="0.0"></viz:position> + <viz:color r="64" g="136" b="191"></viz:color> + </node> + <node id="156" label="http://cgmb-maroc.com/"> + <attvalues> + <attvalue for="adb_id" value="253"></attvalue> + <attvalue for="aurl" value="http://cgmb-maroc.com/"></attvalue> + <attvalue for="adesc_01" value="corpus"></attvalue> + <attvalue for="atype" value="corpus"></attvalue> + <attvalue for="acategory" value="institutional"></attvalue> + <attvalue for="asubcategory" value="consulate"></attvalue> + <attvalue for="anb_of_languages" value="1"></attvalue> + <attvalue for="alanguages" value="french"></attvalue> + <attvalue for="amain_language" value="french"></attvalue> + <attvalue for="ainteraction" value="mail"></attvalue> + <attvalue for="aextension_url" value=".com"></attvalue> + <attvalue for="aaddressee_user" value="migrants"></attvalue> + <attvalue for="alocation_whois" value="france"></attvalue> + <attvalue for="alocation_website" value="floirac 33"></attvalue> + <attvalue for="alocalisation_user_country" value="france"></attvalue> + <attvalue for="alocalisation_user" value="bordeaux"></attvalue> + <attvalue for="aarchiving_frequence" value="monthly"></attvalue> + <attvalue for="ablabla" value="lalala"></attvalue> + </attvalues> + <viz:size value="67.64706"></viz:size> + <viz:position x="1485.4576" y="896.60474" z="0.0"></viz:position> + <viz:color r="191" g="64" b="173"></viz:color> + </node> + </nodes> + <edges> + <edge source="2" target="28"> + <attvalues></attvalues> + </edge> + <edge source="2" target="35"> + <attvalues></attvalues> + </edge> + <edge source="2" target="44"> + <attvalues></attvalues> + </edge> + <edge source="2" target="58"> + <attvalues></attvalues> + </edge> + <edge source="2" target="77"> + <attvalues></attvalues> + </edge> + <edge source="2" target="95"> + <attvalues></attvalues> + </edge> + <edge source="2" target="96"> + <attvalues></attvalues> + </edge> + <edge source="2" target="121"> + <attvalues></attvalues> + </edge> + <edge source="2" target="129"> + <attvalues></attvalues> + </edge> + <edge source="2" target="131"> + <attvalues></attvalues> + </edge> + <edge source="2" target="156"> + <attvalues></attvalues> + </edge> + <edge source="4" target="31"> + <attvalues></attvalues> + </edge> + <edge source="4" target="111"> + <attvalues></attvalues> + </edge> + <edge source="4" target="149"> + <attvalues></attvalues> + </edge> + <edge source="10" target="44"> + <attvalues></attvalues> + </edge> + <edge source="11" target="63"> + <attvalues></attvalues> + </edge> + <edge source="11" target="154"> + <attvalues></attvalues> + </edge> + <edge source="13" target="63"> + <attvalues></attvalues> + </edge> + <edge source="13" target="67"> + <attvalues></attvalues> + </edge> + <edge source="13" target="74"> + <attvalues></attvalues> + </edge> + <edge source="13" target="75"> + <attvalues></attvalues> + </edge> + <edge source="13" target="127"> + <attvalues></attvalues> + </edge> + <edge source="13" target="144"> + <attvalues></attvalues> + </edge> + <edge source="13" target="154"> + <attvalues></attvalues> + </edge> + <edge source="14" target="18"> + <attvalues></attvalues> + </edge> + <edge source="14" target="36"> + <attvalues></attvalues> + </edge> + <edge source="14" target="63"> + <attvalues></attvalues> + </edge> + <edge source="14" target="75"> + <attvalues></attvalues> + </edge> + <edge source="15" target="117"> + <attvalues></attvalues> + </edge> + <edge source="15" target="144"> + <attvalues></attvalues> + </edge> + <edge source="16" target="28"> + <attvalues></attvalues> + </edge> + <edge source="16" target="44"> + <attvalues></attvalues> + </edge> + <edge source="16" target="53"> + <attvalues></attvalues> + </edge> + <edge source="16" target="57"> + <attvalues></attvalues> + </edge> + <edge source="16" target="68"> + <attvalues></attvalues> + </edge> + <edge source="16" target="85"> + <attvalues></attvalues> + </edge> + <edge source="16" target="134"> + <attvalues></attvalues> + </edge> + <edge source="16" target="138"> + <attvalues></attvalues> + </edge> + <edge source="16" target="144"> + <attvalues></attvalues> + </edge> + <edge source="19" target="34"> + <attvalues></attvalues> + </edge> + <edge source="19" target="63"> + <attvalues></attvalues> + </edge> + <edge source="19" target="86"> + <attvalues></attvalues> + </edge> + <edge source="19" target="150"> + <attvalues></attvalues> + </edge> + <edge source="19" target="154"> + <attvalues></attvalues> + </edge> + <edge source="20" target="30"> + <attvalues></attvalues> + </edge> + <edge source="20" target="32"> + <attvalues></attvalues> + </edge> + <edge source="20" target="143"> + <attvalues></attvalues> + </edge> + <edge source="22" target="28"> + <attvalues></attvalues> + </edge> + <edge source="22" target="82"> + <attvalues></attvalues> + </edge> + <edge source="22" target="148"> + <attvalues></attvalues> + </edge> + <edge source="24" target="7"> + <attvalues></attvalues> + </edge> + <edge source="24" target="46"> + <attvalues></attvalues> + </edge> + <edge source="24" target="58"> + <attvalues></attvalues> + </edge> + <edge source="24" target="77"> + <attvalues></attvalues> + </edge> + <edge source="24" target="96"> + <attvalues></attvalues> + </edge> + <edge source="24" target="97"> + <attvalues></attvalues> + </edge> + <edge source="24" target="114"> + <attvalues></attvalues> + </edge> + <edge source="24" target="129"> + <attvalues></attvalues> + </edge> + <edge source="24" target="130"> + <attvalues></attvalues> + </edge> + <edge source="24" target="131"> + <attvalues></attvalues> + </edge> + <edge source="24" target="147"> + <attvalues></attvalues> + </edge> + <edge source="24" target="148"> + <attvalues></attvalues> + </edge> + <edge source="24" target="156"> + <attvalues></attvalues> + </edge> + <edge source="25" target="63"> + <attvalues></attvalues> + </edge> + <edge source="27" target="36"> + <attvalues></attvalues> + </edge> + <edge source="28" target="35"> + <attvalues></attvalues> + </edge> + <edge source="28" target="46"> + <attvalues></attvalues> + </edge> + <edge source="28" target="58"> + <attvalues></attvalues> + </edge> + <edge source="28" target="82"> + <attvalues></attvalues> + </edge> + <edge source="28" target="85"> + <attvalues></attvalues> + </edge> + <edge source="28" target="96"> + <attvalues></attvalues> + </edge> + <edge source="28" target="129"> + <attvalues></attvalues> + </edge> + <edge source="28" target="148"> + <attvalues></attvalues> + </edge> + <edge source="28" target="156"> + <attvalues></attvalues> + </edge> + <edge source="29" target="12"> + <attvalues></attvalues> + </edge> + <edge source="29" target="28"> + <attvalues></attvalues> + </edge> + <edge source="29" target="44"> + <attvalues></attvalues> + </edge> + <edge source="29" target="63"> + <attvalues></attvalues> + </edge> + <edge source="29" target="137"> + <attvalues></attvalues> + </edge> + <edge source="29" target="144"> + <attvalues></attvalues> + </edge> + <edge source="30" target="20"> + <attvalues></attvalues> + </edge> + <edge source="30" target="32"> + <attvalues></attvalues> + </edge> + <edge source="30" target="143"> + <attvalues></attvalues> + </edge> + <edge source="32" target="20"> + <attvalues></attvalues> + </edge> + <edge source="32" target="30"> + <attvalues></attvalues> + </edge> + <edge source="32" target="143"> + <attvalues></attvalues> + </edge> + <edge source="34" target="14"> + <attvalues></attvalues> + </edge> + <edge source="34" target="19"> + <attvalues></attvalues> + </edge> + <edge source="34" target="27"> + <attvalues></attvalues> + </edge> + <edge source="34" target="36"> + <attvalues></attvalues> + </edge> + <edge source="34" target="48"> + <attvalues></attvalues> + </edge> + <edge source="34" target="51"> + <attvalues></attvalues> + </edge> + <edge source="34" target="63"> + <attvalues></attvalues> + </edge> + <edge source="34" target="67"> + <attvalues></attvalues> + </edge> + <edge source="34" target="68"> + <attvalues></attvalues> + </edge> + <edge source="34" target="86"> + <attvalues></attvalues> + </edge> + <edge source="34" target="93"> + <attvalues></attvalues> + </edge> + <edge source="34" target="112"> + <attvalues></attvalues> + </edge> + <edge source="35" target="85"> + <attvalues></attvalues> + </edge> + <edge source="36" target="63"> + <attvalues></attvalues> + </edge> + <edge source="36" target="67"> + <attvalues></attvalues> + </edge> + <edge source="36" target="68"> + <attvalues></attvalues> + </edge> + <edge source="36" target="144"> + <attvalues></attvalues> + </edge> + <edge source="38" target="56"> + <attvalues></attvalues> + </edge> + <edge source="38" target="63"> + <attvalues></attvalues> + </edge> + <edge source="38" target="122"> + <attvalues></attvalues> + </edge> + <edge source="39" target="63"> + <attvalues></attvalues> + </edge> + <edge source="41" target="88"> + <attvalues></attvalues> + </edge> + <edge source="41" target="117"> + <attvalues></attvalues> + </edge> + <edge source="42" target="75"> + <attvalues></attvalues> + </edge> + <edge source="43" target="88"> + <attvalues></attvalues> + </edge> + <edge source="43" target="95"> + <attvalues></attvalues> + </edge> + <edge source="44" target="88"> + <attvalues></attvalues> + </edge> + <edge source="44" target="126"> + <attvalues></attvalues> + </edge> + <edge source="45" target="93"> + <attvalues></attvalues> + </edge> + <edge source="48" target="14"> + <attvalues></attvalues> + </edge> + <edge source="48" target="23"> + <attvalues></attvalues> + </edge> + <edge source="48" target="34"> + <attvalues></attvalues> + </edge> + <edge source="48" target="63"> + <attvalues></attvalues> + </edge> + <edge source="48" target="66"> + <attvalues></attvalues> + </edge> + <edge source="48" target="67"> + <attvalues></attvalues> + </edge> + <edge source="48" target="75"> + <attvalues></attvalues> + </edge> + <edge source="48" target="76"> + <attvalues></attvalues> + </edge> + <edge source="48" target="86"> + <attvalues></attvalues> + </edge> + <edge source="48" target="112"> + <attvalues></attvalues> + </edge> + <edge source="49" target="149"> + <attvalues></attvalues> + </edge> + <edge source="50" target="28"> + <attvalues></attvalues> + </edge> + <edge source="50" target="44"> + <attvalues></attvalues> + </edge> + <edge source="50" target="53"> + <attvalues></attvalues> + </edge> + <edge source="50" target="85"> + <attvalues></attvalues> + </edge> + <edge source="50" target="144"> + <attvalues></attvalues> + </edge> + <edge source="51" target="27"> + <attvalues></attvalues> + </edge> + <edge source="51" target="34"> + <attvalues></attvalues> + </edge> + <edge source="51" target="36"> + <attvalues></attvalues> + </edge> + <edge source="51" target="63"> + <attvalues></attvalues> + </edge> + <edge source="51" target="68"> + <attvalues></attvalues> + </edge> + <edge source="51" target="86"> + <attvalues></attvalues> + </edge> + <edge source="51" target="112"> + <attvalues></attvalues> + </edge> + <edge source="51" target="140"> + <attvalues></attvalues> + </edge> + <edge source="57" target="43"> + <attvalues></attvalues> + </edge> + <edge source="57" target="68"> + <attvalues></attvalues> + </edge> + <edge source="57" target="85"> + <attvalues></attvalues> + </edge> + <edge source="57" target="138"> + <attvalues></attvalues> + </edge> + <edge source="58" target="28"> + <attvalues></attvalues> + </edge> + <edge source="58" target="95"> + <attvalues></attvalues> + </edge> + <edge source="61" target="25"> + <attvalues></attvalues> + </edge> + <edge source="61" target="63"> + <attvalues></attvalues> + </edge> + <edge source="61" target="66"> + <attvalues></attvalues> + </edge> + <edge source="63" target="19"> + <attvalues></attvalues> + </edge> + <edge source="63" target="23"> + <attvalues></attvalues> + </edge> + <edge source="63" target="44"> + <attvalues></attvalues> + </edge> + <edge source="63" target="48"> + <attvalues></attvalues> + </edge> + <edge source="63" target="61"> + <attvalues></attvalues> + </edge> + <edge source="63" target="66"> + <attvalues></attvalues> + </edge> + <edge source="63" target="86"> + <attvalues></attvalues> + </edge> + <edge source="63" target="127"> + <attvalues></attvalues> + </edge> + <edge source="63" target="144"> + <attvalues></attvalues> + </edge> + <edge source="63" target="150"> + <attvalues></attvalues> + </edge> + <edge source="64" target="88"> + <attvalues></attvalues> + </edge> + <edge source="66" target="23"> + <attvalues></attvalues> + </edge> + <edge source="66" target="44"> + <attvalues></attvalues> + </edge> + <edge source="66" target="48"> + <attvalues></attvalues> + </edge> + <edge source="66" target="63"> + <attvalues></attvalues> + </edge> + <edge source="66" target="93"> + <attvalues></attvalues> + </edge> + <edge source="66" target="127"> + <attvalues></attvalues> + </edge> + <edge source="66" target="150"> + <attvalues></attvalues> + </edge> + <edge source="67" target="13"> + <attvalues></attvalues> + </edge> + <edge source="67" target="25"> + <attvalues></attvalues> + </edge> + <edge source="67" target="33"> + <attvalues></attvalues> + </edge> + <edge source="67" target="34"> + <attvalues></attvalues> + </edge> + <edge source="67" target="48"> + <attvalues></attvalues> + </edge> + <edge source="67" target="63"> + <attvalues></attvalues> + </edge> + <edge source="67" target="68"> + <attvalues></attvalues> + </edge> + <edge source="67" target="76"> + <attvalues></attvalues> + </edge> + <edge source="67" target="112"> + <attvalues></attvalues> + </edge> + <edge source="67" target="127"> + <attvalues></attvalues> + </edge> + <edge source="67" target="154"> + <attvalues></attvalues> + </edge> + <edge source="68" target="27"> + <attvalues></attvalues> + </edge> + <edge source="68" target="34"> + <attvalues></attvalues> + </edge> + <edge source="68" target="36"> + <attvalues></attvalues> + </edge> + <edge source="68" target="44"> + <attvalues></attvalues> + </edge> + <edge source="68" target="57"> + <attvalues></attvalues> + </edge> + <edge source="68" target="60"> + <attvalues></attvalues> + </edge> + <edge source="68" target="62"> + <attvalues></attvalues> + </edge> + <edge source="68" target="86"> + <attvalues></attvalues> + </edge> + <edge source="68" target="91"> + <attvalues></attvalues> + </edge> + <edge source="68" target="102"> + <attvalues></attvalues> + </edge> + <edge source="68" target="103"> + <attvalues></attvalues> + </edge> + <edge source="68" target="105"> + <attvalues></attvalues> + </edge> + <edge source="68" target="110"> + <attvalues></attvalues> + </edge> + <edge source="68" target="113"> + <attvalues></attvalues> + </edge> + <edge source="68" target="123"> + <attvalues></attvalues> + </edge> + <edge source="68" target="138"> + <attvalues></attvalues> + </edge> + <edge source="68" target="151"> + <attvalues></attvalues> + </edge> + <edge source="73" target="63"> + <attvalues></attvalues> + </edge> + <edge source="74" target="18"> + <attvalues></attvalues> + </edge> + <edge source="74" target="23"> + <attvalues></attvalues> + </edge> + <edge source="74" target="63"> + <attvalues></attvalues> + </edge> + <edge source="74" target="75"> + <attvalues></attvalues> + </edge> + <edge source="74" target="94"> + <attvalues></attvalues> + </edge> + <edge source="74" target="140"> + <attvalues></attvalues> + </edge> + <edge source="75" target="48"> + <attvalues></attvalues> + </edge> + <edge source="76" target="36"> + <attvalues></attvalues> + </edge> + <edge source="76" target="48"> + <attvalues></attvalues> + </edge> + <edge source="76" target="67"> + <attvalues></attvalues> + </edge> + <edge source="76" target="112"> + <attvalues></attvalues> + </edge> + <edge source="76" target="140"> + <attvalues></attvalues> + </edge> + <edge source="76" target="141"> + <attvalues></attvalues> + </edge> + <edge source="77" target="28"> + <attvalues></attvalues> + </edge> + <edge source="77" target="58"> + <attvalues></attvalues> + </edge> + <edge source="77" target="85"> + <attvalues></attvalues> + </edge> + <edge source="77" target="95"> + <attvalues></attvalues> + </edge> + <edge source="77" target="129"> + <attvalues></attvalues> + </edge> + <edge source="77" target="131"> + <attvalues></attvalues> + </edge> + <edge source="77" target="156"> + <attvalues></attvalues> + </edge> + <edge source="78" target="109"> + <attvalues></attvalues> + </edge> + <edge source="80" target="78"> + <attvalues></attvalues> + </edge> + <edge source="81" target="22"> + <attvalues></attvalues> + </edge> + <edge source="81" target="28"> + <attvalues></attvalues> + </edge> + <edge source="81" target="82"> + <attvalues></attvalues> + </edge> + <edge source="81" target="104"> + <attvalues></attvalues> + </edge> + <edge source="81" target="148"> + <attvalues></attvalues> + </edge> + <edge source="86" target="14"> + <attvalues></attvalues> + </edge> + <edge source="86" target="19"> + <attvalues></attvalues> + </edge> + <edge source="86" target="27"> + <attvalues></attvalues> + </edge> + <edge source="86" target="34"> + <attvalues></attvalues> + </edge> + <edge source="86" target="36"> + <attvalues></attvalues> + </edge> + <edge source="86" target="44"> + <attvalues></attvalues> + </edge> + <edge source="86" target="48"> + <attvalues></attvalues> + </edge> + <edge source="86" target="51"> + <attvalues></attvalues> + </edge> + <edge source="86" target="63"> + <attvalues></attvalues> + </edge> + <edge source="86" target="68"> + <attvalues></attvalues> + </edge> + <edge source="86" target="74"> + <attvalues></attvalues> + </edge> + <edge source="86" target="75"> + <attvalues></attvalues> + </edge> + <edge source="86" target="112"> + <attvalues></attvalues> + </edge> + <edge source="86" target="125"> + <attvalues></attvalues> + </edge> + <edge source="86" target="127"> + <attvalues></attvalues> + </edge> + <edge source="86" target="140"> + <attvalues></attvalues> + </edge> + <edge source="86" target="144"> + <attvalues></attvalues> + </edge> + <edge source="86" target="154"> + <attvalues></attvalues> + </edge> + <edge source="88" target="100"> + <attvalues></attvalues> + </edge> + <edge source="88" target="144"> + <attvalues></attvalues> + </edge> + <edge source="88" target="145"> + <attvalues></attvalues> + </edge> + <edge source="89" target="28"> + <attvalues></attvalues> + </edge> + <edge source="90" target="31"> + <attvalues></attvalues> + </edge> + <edge source="90" target="97"> + <attvalues></attvalues> + </edge> + <edge source="90" target="113"> + <attvalues></attvalues> + </edge> + <edge source="91" target="28"> + <attvalues></attvalues> + </edge> + <edge source="91" target="82"> + <attvalues></attvalues> + </edge> + <edge source="91" target="85"> + <attvalues></attvalues> + </edge> + <edge source="91" target="104"> + <attvalues></attvalues> + </edge> + <edge source="94" target="63"> + <attvalues></attvalues> + </edge> + <edge source="94" target="75"> + <attvalues></attvalues> + </edge> + <edge source="94" target="112"> + <attvalues></attvalues> + </edge> + <edge source="96" target="44"> + <attvalues></attvalues> + </edge> + <edge source="96" target="85"> + <attvalues></attvalues> + </edge> + <edge source="96" target="95"> + <attvalues></attvalues> + </edge> + <edge source="96" target="144"> + <attvalues></attvalues> + </edge> + <edge source="98" target="67"> + <attvalues></attvalues> + </edge> + <edge source="100" target="26"> + <attvalues></attvalues> + </edge> + <edge source="102" target="110"> + <attvalues></attvalues> + </edge> + <edge source="109" target="26"> + <attvalues></attvalues> + </edge> + <edge source="109" target="78"> + <attvalues></attvalues> + </edge> + <edge source="109" target="80"> + <attvalues></attvalues> + </edge> + <edge source="109" target="119"> + <attvalues></attvalues> + </edge> + <edge source="110" target="113"> + <attvalues></attvalues> + </edge> + <edge source="110" target="138"> + <attvalues></attvalues> + </edge> + <edge source="110" target="151"> + <attvalues></attvalues> + </edge> + <edge source="112" target="18"> + <attvalues></attvalues> + </edge> + <edge source="112" target="23"> + <attvalues></attvalues> + </edge> + <edge source="112" target="34"> + <attvalues></attvalues> + </edge> + <edge source="112" target="48"> + <attvalues></attvalues> + </edge> + <edge source="112" target="63"> + <attvalues></attvalues> + </edge> + <edge source="112" target="67"> + <attvalues></attvalues> + </edge> + <edge source="112" target="75"> + <attvalues></attvalues> + </edge> + <edge source="112" target="86"> + <attvalues></attvalues> + </edge> + <edge source="112" target="125"> + <attvalues></attvalues> + </edge> + <edge source="112" target="140"> + <attvalues></attvalues> + </edge> + <edge source="112" target="141"> + <attvalues></attvalues> + </edge> + <edge source="112" target="150"> + <attvalues></attvalues> + </edge> + <edge source="113" target="7"> + <attvalues></attvalues> + </edge> + <edge source="113" target="28"> + <attvalues></attvalues> + </edge> + <edge source="113" target="60"> + <attvalues></attvalues> + </edge> + <edge source="113" target="62"> + <attvalues></attvalues> + </edge> + <edge source="113" target="68"> + <attvalues></attvalues> + </edge> + <edge source="113" target="85"> + <attvalues></attvalues> + </edge> + <edge source="113" target="91"> + <attvalues></attvalues> + </edge> + <edge source="113" target="102"> + <attvalues></attvalues> + </edge> + <edge source="113" target="103"> + <attvalues></attvalues> + </edge> + <edge source="113" target="110"> + <attvalues></attvalues> + </edge> + <edge source="113" target="123"> + <attvalues></attvalues> + </edge> + <edge source="113" target="138"> + <attvalues></attvalues> + </edge> + <edge source="113" target="151"> + <attvalues></attvalues> + </edge> + <edge source="114" target="28"> + <attvalues></attvalues> + </edge> + <edge source="114" target="44"> + <attvalues></attvalues> + </edge> + <edge source="114" target="85"> + <attvalues></attvalues> + </edge> + <edge source="114" target="144"> + <attvalues></attvalues> + </edge> + <edge source="117" target="15"> + <attvalues></attvalues> + </edge> + <edge source="118" target="16"> + <attvalues></attvalues> + </edge> + <edge source="118" target="55"> + <attvalues></attvalues> + </edge> + <edge source="118" target="85"> + <attvalues></attvalues> + </edge> + <edge source="119" target="87"> + <attvalues></attvalues> + </edge> + <edge source="119" target="109"> + <attvalues></attvalues> + </edge> + <edge source="121" target="2"> + <attvalues></attvalues> + </edge> + <edge source="122" target="14"> + <attvalues></attvalues> + </edge> + <edge source="122" target="23"> + <attvalues></attvalues> + </edge> + <edge source="122" target="38"> + <attvalues></attvalues> + </edge> + <edge source="122" target="56"> + <attvalues></attvalues> + </edge> + <edge source="122" target="63"> + <attvalues></attvalues> + </edge> + <edge source="122" target="112"> + <attvalues></attvalues> + </edge> + <edge source="123" target="7"> + <attvalues></attvalues> + </edge> + <edge source="123" target="44"> + <attvalues></attvalues> + </edge> + <edge source="123" target="68"> + <attvalues></attvalues> + </edge> + <edge source="125" target="23"> + <attvalues></attvalues> + </edge> + <edge source="125" target="44"> + <attvalues></attvalues> + </edge> + <edge source="125" target="63"> + <attvalues></attvalues> + </edge> + <edge source="125" target="75"> + <attvalues></attvalues> + </edge> + <edge source="125" target="122"> + <attvalues></attvalues> + </edge> + <edge source="125" target="150"> + <attvalues></attvalues> + </edge> + <edge source="126" target="44"> + <attvalues></attvalues> + </edge> + <edge source="127" target="18"> + <attvalues></attvalues> + </edge> + <edge source="127" target="63"> + <attvalues></attvalues> + </edge> + <edge source="127" target="86"> + <attvalues></attvalues> + </edge> + <edge source="128" target="16"> + <attvalues></attvalues> + </edge> + <edge source="128" target="134"> + <attvalues></attvalues> + </edge> + <edge source="131" target="28"> + <attvalues></attvalues> + </edge> + <edge source="134" target="16"> + <attvalues></attvalues> + </edge> + <edge source="134" target="21"> + <attvalues></attvalues> + </edge> + <edge source="134" target="28"> + <attvalues></attvalues> + </edge> + <edge source="134" target="44"> + <attvalues></attvalues> + </edge> + <edge source="134" target="54"> + <attvalues></attvalues> + </edge> + <edge source="134" target="55"> + <attvalues></attvalues> + </edge> + <edge source="134" target="57"> + <attvalues></attvalues> + </edge> + <edge source="134" target="60"> + <attvalues></attvalues> + </edge> + <edge source="134" target="62"> + <attvalues></attvalues> + </edge> + <edge source="134" target="81"> + <attvalues></attvalues> + </edge> + <edge source="134" target="84"> + <attvalues></attvalues> + </edge> + <edge source="134" target="91"> + <attvalues></attvalues> + </edge> + <edge source="134" target="102"> + <attvalues></attvalues> + </edge> + <edge source="134" target="103"> + <attvalues></attvalues> + </edge> + <edge source="134" target="104"> + <attvalues></attvalues> + </edge> + <edge source="134" target="116"> + <attvalues></attvalues> + </edge> + <edge source="134" target="123"> + <attvalues></attvalues> + </edge> + <edge source="134" target="132"> + <attvalues></attvalues> + </edge> + <edge source="134" target="139"> + <attvalues></attvalues> + </edge> + <edge source="134" target="148"> + <attvalues></attvalues> + </edge> + <edge source="134" target="151"> + <attvalues></attvalues> + </edge> + <edge source="135" target="44"> + <attvalues></attvalues> + </edge> + <edge source="137" target="149"> + <attvalues></attvalues> + </edge> + <edge source="138" target="7"> + <attvalues></attvalues> + </edge> + <edge source="138" target="27"> + <attvalues></attvalues> + </edge> + <edge source="138" target="28"> + <attvalues></attvalues> + </edge> + <edge source="138" target="53"> + <attvalues></attvalues> + </edge> + <edge source="138" target="57"> + <attvalues></attvalues> + </edge> + <edge source="138" target="68"> + <attvalues></attvalues> + </edge> + <edge source="138" target="110"> + <attvalues></attvalues> + </edge> + <edge source="138" target="151"> + <attvalues></attvalues> + </edge> + <edge source="140" target="18"> + <attvalues></attvalues> + </edge> + <edge source="140" target="23"> + <attvalues></attvalues> + </edge> + <edge source="140" target="36"> + <attvalues></attvalues> + </edge> + <edge source="140" target="38"> + <attvalues></attvalues> + </edge> + <edge source="140" target="51"> + <attvalues></attvalues> + </edge> + <edge source="140" target="63"> + <attvalues></attvalues> + </edge> + <edge source="140" target="67"> + <attvalues></attvalues> + </edge> + <edge source="140" target="74"> + <attvalues></attvalues> + </edge> + <edge source="140" target="75"> + <attvalues></attvalues> + </edge> + <edge source="140" target="76"> + <attvalues></attvalues> + </edge> + <edge source="140" target="86"> + <attvalues></attvalues> + </edge> + <edge source="140" target="94"> + <attvalues></attvalues> + </edge> + <edge source="140" target="112"> + <attvalues></attvalues> + </edge> + <edge source="140" target="134"> + <attvalues></attvalues> + </edge> + <edge source="140" target="141"> + <attvalues></attvalues> + </edge> + <edge source="141" target="14"> + <attvalues></attvalues> + </edge> + <edge source="141" target="36"> + <attvalues></attvalues> + </edge> + <edge source="141" target="76"> + <attvalues></attvalues> + </edge> + <edge source="141" target="112"> + <attvalues></attvalues> + </edge> + <edge source="141" target="140"> + <attvalues></attvalues> + </edge> + <edge source="143" target="20"> + <attvalues></attvalues> + </edge> + <edge source="143" target="30"> + <attvalues></attvalues> + </edge> + <edge source="143" target="32"> + <attvalues></attvalues> + </edge> + <edge source="146" target="44"> + <attvalues></attvalues> + </edge> + <edge source="146" target="134"> + <attvalues></attvalues> + </edge> + <edge source="146" target="144"> + <attvalues></attvalues> + </edge> + <edge source="147" target="28"> + <attvalues></attvalues> + </edge> + <edge source="147" target="85"> + <attvalues></attvalues> + </edge> + <edge source="149" target="1"> + <attvalues></attvalues> + </edge> + <edge source="149" target="137"> + <attvalues></attvalues> + </edge> + <edge source="151" target="57"> + <attvalues></attvalues> + </edge> + <edge source="151" target="62"> + <attvalues></attvalues> + </edge> + <edge source="151" target="68"> + <attvalues></attvalues> + </edge> + <edge source="151" target="102"> + <attvalues></attvalues> + </edge> + <edge source="151" target="103"> + <attvalues></attvalues> + </edge> + <edge source="151" target="105"> + <attvalues></attvalues> + </edge> + <edge source="151" target="110"> + <attvalues></attvalues> + </edge> + <edge source="151" target="113"> + <attvalues></attvalues> + </edge> + <edge source="151" target="138"> + <attvalues></attvalues> + </edge> + <edge source="155" target="120"> + <attvalues></attvalues> + </edge> + </edges> + </graph> +</gexf> diff --git a/sigma.js-1.2.0/examples/data/standard_graph.gexf b/sigma.js-1.2.0/examples/data/standard_graph.gexf new file mode 100644 index 0000000..12f79cc --- /dev/null +++ b/sigma.js-1.2.0/examples/data/standard_graph.gexf @@ -0,0 +1,204 @@ +<?xml version="1.0" encoding="UTF-8"?> +<gexf xmlns:viz="http:///www.gexf.net/1.1draft/viz" version="1.1" xmlns="http://www.gexf.net/1.1draft"> +<meta lastmodifieddate="2010-05-14+15:57"> +<creator>Gephi 0.7</creator> +</meta> +<graph defaultedgetype="undirected" idtype="string" type="static" backgroundx="-147.4" backgroundy="-1050.7" backgroundxratio="0.4849" backgroundyratio="0.4849"> +<attributes class="node" mode="static"> +<attribute id="latitude" title="latitude" type="float"/> +<attribute id="longitude" title="longitude" type="float"/> +</attributes> +<nodes count="17"> +<node id="n1" label="n1"> +<attvalues> +<attvalue for="latitude" value="50.93"/> +<attvalue for="longitude" value="2.48"/> +</attvalues> +<viz:size value="5.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-2.320261" y="1036.1836" z="0.0"/> +</node> +<node id="n2" label="n2"> +<attvalues> +<attvalue for="latitude" value="50.88"/> +<attvalue for="longitude" value="2.0"/> +</attvalues> +<viz:size value="5.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-10.697842" y="1034.7998" z="0.0"/> +</node> +<node id="n4" label="n4"> +<attvalues> +<attvalue for="latitude" value="49.4"/> +<attvalue for="longitude" value="0.19"/> +</attvalues> +<viz:size value="6.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-42.2883" y="994.49225" z="0.0"/> +</node> +<node id="n5" label="n5"> +<attvalues> +<attvalue for="latitude" value="48.49"/> +<attvalue for="longitude" value="-1.92"/> +</attvalues> +<viz:size value="6.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-79.114746" y="970.3091" z="0.0"/> +</node> +<node id="n6" label="n6"> +<attvalues> +<attvalue for="latitude" value="48.26"/> +<attvalue for="longitude" value="-4.38"/> +</attvalues> +<viz:size value="4.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-122.04985" y="964.2657" z="0.0"/> +</node> +<node id="n7" label="n7"> +<attvalues> +<attvalue for="latitude" value="47.15"/> +<attvalue for="longitude" value="-2.09"/> +</attvalues> +<viz:size value="6.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-82.08181" y="935.47577" z="0.0"/> +</node> +<node id="n8" label="n8"> +<attvalues> +<attvalue for="latitude" value="46.02"/> +<attvalue for="longitude" value="-1.04"/> +</attvalues> +<viz:size value="6.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-63.75585" y="906.7781" z="0.0"/> +</node> +<node id="n9" label="n9"> +<attvalues> +<attvalue for="latitude" value="43.22"/> +<attvalue for="longitude" value="-1.85"/> +</attvalues> +<viz:size value="5.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-77.89302" y="838.1003" z="0.0"/> +</node> +<node id="n10" label="n10"> +<attvalues> +<attvalue for="latitude" value="42.38"/> +<attvalue for="longitude" value="3.18"/> +</attvalues> +<viz:size value="4.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="9.897045" y="818.11865" z="0.0"/> +</node> +<node id="n11" label="n11"> +<attvalues> +<attvalue for="latitude" value="43.47"/> +<attvalue for="longitude" value="4.04"/> +</attvalues> +<viz:size value="5.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="24.906874" y="844.1002" z="0.0"/> +</node> +<node id="n12" label="n12"> +<attvalues> +<attvalue for="latitude" value="42.9"/> +<attvalue for="longitude" value="6.59"/> +</attvalues> +<viz:size value="5.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="69.41277" y="830.4562" z="0.0"/> +</node> +<node id="n13" label="n13"> +<attvalues> +<attvalue for="latitude" value="43.62"/> +<attvalue for="longitude" value="7.66"/> +</attvalues> +<viz:size value="6.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="88.08779" y="847.712" z="0.0"/> +</node> +<node id="n14" label="n14"> +<attvalues> +<attvalue for="latitude" value="46.05"/> +<attvalue for="longitude" value="6.19"/> +</attvalues> +<viz:size value="6.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="62.431454" y="907.5323" z="0.0"/> +</node> +<node id="n15" label="n15"> +<attvalues> +<attvalue for="latitude" value="47.43"/> +<attvalue for="longitude" value="7.65"/> +</attvalues> +<viz:size value="6.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="87.91326" y="942.68054" z="0.0"/> +</node> +<node id="n16" label="n16"> +<attvalues> +<attvalue for="latitude" value="48.9"/> +<attvalue for="longitude" value="8.32"/> +</attvalues> +<viz:size value="5.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="99.606964" y="981.15027" z="0.0"/> +</node> +<node id="n17" label="n17"> +<attvalues> +<attvalue for="latitude" value="49.83"/> +<attvalue for="longitude" value="4.94"/> +</attvalues> +<viz:size value="6.5"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="40.614838" y="1006.07544" z="0.0"/> +</node> +<node id="Paris" label="Paris"> +<attvalues> +<attvalue for="latitude" value="48.72"/> +<attvalue for="longitude" value="2.46"/> +</attvalues> +<viz:size value="9.0"/> +<viz:color b="1" g="179" r="255"/> +<viz:position x="-2.6693265" y="976.3798" z="0.0"/> +</node> +</nodes> +<edges count="35"> +<edge id="8" source="n1" target="Paris"/> +<edge id="7" source="n2" target="n4"/> +<edge id="28" source="n4" target="n1"/> +<edge id="30" source="n4" target="n7"/> +<edge id="26" source="n5" target="n1"/> +<edge id="27" source="n5" target="n2"/> +<edge id="0" source="n6" target="n5"/> +<edge id="29" source="n7" target="n5"/> +<edge id="1" source="n7" target="n8"/> +<edge id="17" source="n7" target="Paris"/> +<edge id="10" source="n8" target="n13"/> +<edge id="18" source="n8" target="Paris"/> +<edge id="15" source="n9" target="n8"/> +<edge id="34" source="n10" target="n9"/> +<edge id="31" source="n10" target="n11"/> +<edge id="11" source="n11" target="n13"/> +<edge id="13" source="n11" target="n14"/> +<edge id="32" source="n12" target="n10"/> +<edge id="12" source="n12" target="n11"/> +<edge id="23" source="n12" target="n13"/> +<edge id="33" source="n13" target="n10"/> +<edge id="25" source="n13" target="n14"/> +<edge id="14" source="n14" target="n9"/> +<edge id="5" source="n14" target="n17"/> +<edge id="19" source="n14" target="Paris"/> +<edge id="6" source="n15" target="n8"/> +<edge id="22" source="n15" target="n16"/> +<edge id="20" source="n15" target="Paris"/> +<edge id="4" source="n16" target="n15"/> +<edge id="24" source="n16" target="Paris"/> +<edge id="9" source="n17" target="n7"/> +<edge id="21" source="n17" target="n17"/> +<edge id="2" source="Paris" target="n4"/> +<edge id="3" source="Paris" target="n17"/> +<edge id="16" source="Paris" target="Paris"/> +</edges> +</graph> +</gexf> diff --git a/sigma.js-1.2.0/examples/drag-nodes.html b/sigma.js-1.2.0/examples/drag-nodes.html new file mode 100644 index 0000000..ae4de11 --- /dev/null +++ b/sigma.js-1.2.0/examples/drag-nodes.html @@ -0,0 +1,127 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.plugins.dragNodes/sigma.plugins.dragNodes.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + + #sidebar { + bottom: 0; + right: 0; + width: 200px; + height: 150px; + position: absolute; + background-color: #999; + padding: 10px; + } + </style> + <div id="graph-container"></div> + <div id="sidebar">This area is not a drop target.</div> +</div> +<script> +/** + * This example shows how to use the dragNodes plugin. + */ +var i, + s, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: '#ccc' + }); +// sigma.renderers.def = sigma.renderers.canvas +// Instantiate sigma: +s = new sigma({ + graph: g, + container: 'graph-container' +}); + +// Initialize the dragNodes plugin: +var dragListener = sigma.plugins.dragNodes(s, s.renderers[0]); + +dragListener.bind('startdrag', function(event) { + console.log(event); +}); +dragListener.bind('drag', function(event) { + console.log(event); +}); +dragListener.bind('drop', function(event) { + console.log(event); +}); +dragListener.bind('dragend', function(event) { + console.log(event); +}); +</script> diff --git a/sigma.js-1.2.0/examples/edge-renderers.html b/sigma.js-1.2.0/examples/edge-renderers.html new file mode 100644 index 0000000..1afd742 --- /dev/null +++ b/sigma.js-1.2.0/examples/edge-renderers.html @@ -0,0 +1,112 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.renderers.edgeLabels/settings.js"></script> +<script src="../plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.def.js"></script> +<script src="../plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curve.js"></script> +<script src="../plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curvedArrow.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This example shows the available edge label renderers for the canvas + * renderer. + */ +var i, + s, + N = 10, + E = 50, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + label: 'Edge ' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: '#ccc', + type: ['line', 'curve', 'arrow', 'curvedArrow'][Math.random() * 4 | 0] + }); + +// Instantiate sigma: +s = new sigma({ + graph: g, + renderer: { + container: document.getElementById('graph-container'), + type: 'canvas' + }, + settings: { + edgeLabelSize: 'proportional' + } +}); +</script> diff --git a/sigma.js-1.2.0/examples/events.html b/sigma.js-1.2.0/examples/events.html new file mode 100644 index 0000000..f5852bd --- /dev/null +++ b/sigma.js-1.2.0/examples/events.html @@ -0,0 +1,128 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This example is a copy of "basic.html", but with event bindings after. + * Open your browser's console to see the "click", "overNode" and + * "outNode" events logged. + */ +var i, + s, + N = 20, + E = 200, + g = { + nodes: [], + edges: [] + }; + +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + type: 'curve', + color: '#ccc', + hover_color: '#000' + }); + +s = new sigma({ + graph: g, + renderer: { + container: document.getElementById('graph-container'), + type: 'canvas' + }, + settings: { + doubleClickEnabled: false, + minEdgeSize: 0.5, + maxEdgeSize: 4, + enableEdgeHovering: true, + edgeHoverColor: 'edge', + defaultEdgeHoverColor: '#000', + edgeHoverSizeRatio: 1, + edgeHoverExtremities: true, + } +}); + +// Bind the events: +s.bind('overNode outNode clickNode doubleClickNode rightClickNode', function(e) { + console.log(e.type, e.data.node.label, e.data.captor); +}); +s.bind('overEdge outEdge clickEdge doubleClickEdge rightClickEdge', function(e) { + console.log(e.type, e.data.edge, e.data.captor); +}); +s.bind('clickStage', function(e) { + console.log(e.type, e.data.captor); +}); +s.bind('doubleClickStage rightClickStage', function(e) { + console.log(e.type, e.data.captor); +}); +</script> diff --git a/sigma.js-1.2.0/examples/filters.html b/sigma.js-1.2.0/examples/filters.html new file mode 100644 index 0000000..0bdc169 --- /dev/null +++ b/sigma.js-1.2.0/examples/filters.html @@ -0,0 +1,288 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.gexf/gexf-parser.js"></script> +<script src="../plugins/sigma.parsers.gexf/sigma.parsers.gexf.js"></script> +<script src="../plugins/sigma.plugins.filter/sigma.plugins.filter.js"></script> +<link href='http://fonts.googleapis.com/css?family=Lato:300,700' rel='stylesheet' type='text/css'> +<div id="container"> + <style> + body { + color: #333; + font-size: 14px; + font-family: Lato, sans-serif; + } + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + #control-pane { + top: 10px; + /*bottom: 10px;*/ + right: 10px; + position: absolute; + width: 230px; + background-color: rgb(249, 247, 237); + box-shadow: 0 2px 6px rgba(0,0,0,0.3); + } + #control-pane > div { + margin: 10px; + overflow-x: auto; + } + .line { + clear: both; + display: block; + width: 100%; + margin: 0; + padding: 12px 0 0 0; + border-bottom: 1px solid #aac789; + background: transparent; + } + h2, h3, h4 { + padding: 0; + font-variant: small-caps; + } + .green { + color: #437356; + } + h2.underline { + color: #437356; + background: #f4f0e4; + margin: 0; + border-radius: 2px; + padding: 8px 12px; + font-weight: 700; + } + .hidden { + display: none; + visibility: hidden; + } + + input[type=range] { + width: 160px; + } + </style> + <div id="graph-container"></div> + <div id="control-pane"> + <h2 class="underline">filters</h2> + + <div> + <h3>min degree <span id="min-degree-val">0</span></h3> + 0 <input id="min-degree" type="range" min="0" max="0" value="0"> <span id="max-degree-value">0</span><br> + </div> + <div> + <h3>node category</h3> + <select id="node-category"> + <option value="" selected>All categories</option> + </select> + </div> + <span class="line"></span> + <div> + <button id="reset-btn">Reset filters</button> + <button id="export-btn">Export</button> + </div> + <div id="dump" class="hidden"></div> + </div> +</div> +<script> +/** + * This is an example on how to use sigma filters plugin on a real-world graph. + */ +var filter; + +/** + * DOM utility functions + */ +var _ = { + $: function (id) { + return document.getElementById(id); + }, + + all: function (selectors) { + return document.querySelectorAll(selectors); + }, + + removeClass: function(selectors, cssClass) { + var nodes = document.querySelectorAll(selectors); + var l = nodes.length; + for ( i = 0 ; i < l; i++ ) { + var el = nodes[i]; + // Bootstrap compatibility + el.className = el.className.replace(cssClass, ''); + } + }, + + addClass: function (selectors, cssClass) { + var nodes = document.querySelectorAll(selectors); + var l = nodes.length; + for ( i = 0 ; i < l; i++ ) { + var el = nodes[i]; + // Bootstrap compatibility + if (-1 == el.className.indexOf(cssClass)) { + el.className += ' ' + cssClass; + } + } + }, + + show: function (selectors) { + this.removeClass(selectors, 'hidden'); + }, + + hide: function (selectors) { + this.addClass(selectors, 'hidden'); + }, + + toggle: function (selectors, cssClass) { + var cssClass = cssClass || "hidden"; + var nodes = document.querySelectorAll(selectors); + var l = nodes.length; + for ( i = 0 ; i < l; i++ ) { + var el = nodes[i]; + //el.style.display = (el.style.display != 'none' ? 'none' : '' ); + // Bootstrap compatibility + if (-1 !== el.className.indexOf(cssClass)) { + el.className = el.className.replace(cssClass, ''); + } else { + el.className += ' ' + cssClass; + } + } + } +}; + + +function updatePane (graph, filter) { + // get max degree + var maxDegree = 0, + categories = {}; + + // read nodes + graph.nodes().forEach(function(n) { + maxDegree = Math.max(maxDegree, graph.degree(n.id)); + categories[n.attributes.acategory] = true; + }) + + // min degree + _.$('min-degree').max = maxDegree; + _.$('max-degree-value').textContent = maxDegree; + + // node category + var nodecategoryElt = _.$('node-category'); + Object.keys(categories).forEach(function(c) { + var optionElt = document.createElement("option"); + optionElt.text = c; + nodecategoryElt.add(optionElt); + }); + + // reset button + _.$('reset-btn').addEventListener("click", function(e) { + _.$('min-degree').value = 0; + _.$('min-degree-val').textContent = '0'; + _.$('node-category').selectedIndex = 0; + filter.undo().apply(); + _.$('dump').textContent = ''; + _.hide('#dump'); + }); + + // export button + _.$('export-btn').addEventListener("click", function(e) { + var chain = filter.export(); + console.log(chain); + _.$('dump').textContent = JSON.stringify(chain); + _.show('#dump'); + }); +} + +// Initialize sigma with the dataset: +// e-Diaspora Moroccan corpus of websites +// by Dana Diminescu & Matthieu Renault +// http://www.e-diasporas.fr/wp/moroccan.html +sigma.parsers.gexf('data/moroccan-ediaspora.gexf', { + container: 'graph-container', + settings: { + edgeColor: 'default', + defaultEdgeColor: '#ccc' + } +}, function(s) { + // Initialize the Filter API + filter = new sigma.plugins.filter(s); + + updatePane(s.graph, filter); + + function applyMinDegreeFilter(e) { + var v = e.target.value; + _.$('min-degree-val').textContent = v; + + filter + .undo('min-degree') + .nodesBy(function(n) { + return this.degree(n.id) >= v; + }, 'min-degree') + .apply(); + } + + function applyCategoryFilter(e) { + var c = e.target[e.target.selectedIndex].value; + filter + .undo('node-category') + .nodesBy(function(n) { + return !c.length || n.attributes.acategory === c; + }, 'node-category') + .apply(); + } + + _.$('min-degree').addEventListener("input", applyMinDegreeFilter); // for Chrome and FF + _.$('min-degree').addEventListener("change", applyMinDegreeFilter); // for IE10+, that sucks + _.$('node-category').addEventListener("change", applyCategoryFilter); +}); + + + +</script> diff --git a/sigma.js-1.2.0/examples/force.html b/sigma.js-1.2.0/examples/force.html new file mode 100644 index 0000000..7356ca6 --- /dev/null +++ b/sigma.js-1.2.0/examples/force.html @@ -0,0 +1,136 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script src="../plugins/sigma.layout.forceAtlas2/worker.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/supervisor.js"></script> +<script> +/** + * Just a simple example to show how to use the sigma.layout.forceAtlas2 + * plugin: + * + * A random graph is generated, such that its nodes are separated in some + * distinct clusters. Each cluster has its own color, and the density of + * links is stronger inside the clusters. So, we expect the algorithm to + * regroup the nodes of each cluster. + */ +var i, + s, + o, + N = 1000, + E = 5000, + C = 5, + d = 0.5, + cs = [], + g = { + nodes: [], + edges: [] + }; + +// Generate the graph: +for (i = 0; i < C; i++) + cs.push({ + id: i, + nodes: [], + color: '#' + ( + Math.floor(Math.random() * 16777215).toString(16) + '000000' + ).substr(0, 6) + }); + +for (i = 0; i < N; i++) { + o = cs[(Math.random() * C) | 0]; + g.nodes.push({ + id: 'n' + i, + label: 'Node' + i, + x: 100 * Math.cos(2 * i * Math.PI / N), + y: 100 * Math.sin(2 * i * Math.PI / N), + size: Math.random(), + color: o.color + }); + o.nodes.push('n' + i); +} + +for (i = 0; i < E; i++) { + if (Math.random() < 1 - d) + g.edges.push({ + id: 'e' + i, + source: 'n' + ((Math.random() * N) | 0), + target: 'n' + ((Math.random() * N) | 0) + }); + else { + o = cs[(Math.random() * C) | 0] + g.edges.push({ + id: 'e' + i, + source: o.nodes[(Math.random() * o.nodes.length) | 0], + target: o.nodes[(Math.random() * o.nodes.length) | 0] + }); + } +} + +s = new sigma({ + graph: g, + container: 'graph-container', + settings: { + drawEdges: false + } +}); + +// Start the ForceAtlas2 algorithm: +s.startForceAtlas2({worker: true, barnesHutOptimize: false}); +</script> diff --git a/sigma.js-1.2.0/examples/img/img1.png b/sigma.js-1.2.0/examples/img/img1.png new file mode 100644 index 0000000000000000000000000000000000000000..55b9bef1239d2612f7a900cf22447c106adc3ea0 GIT binary patch literal 310100 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®>HY81vy1O@yDZSZAsY5t)yA&=@1IYXzORm7Z+-jpzvuJg>;7(iYqEB!$jK*V zqFWz6d@Xm+S#$Q)3Zaaac*Ub8XH>2(a9ta6TPuWl0#{s@jp*u~o>!0LEDGD3vsEm2 z&QCj`DFTb5{1on7X$kMQO<8VmC`43j)v}QMg8@}~{oU;sq>nbHv@LFL*}?hZAjbrW z&G#9me8}7&aB<_#1soDBM#p$Gx8^O8IMQ<EV3wudCBgE$Cv<%dJgc@@%CpRT_qR}w zAK_cyIUgx@-}=We_1WXQmwOfTR=4Tx{r*Lrg@5WZe(#XSb2;Bfzr7M~6WO!#n)OCU z{@M3;hvnC?*UotV`C4|h3YS%@&{Ok=JE!le_w2rEeKyYdsH{gUm;ApAw_mScf7fr* ztYw=ozTKMKGHJFx<9Rk8zohP&t~(Tj>?ITh=c$!!z0J+^qJ-;E2y?pd(F5ykZg9P@ z?0vFF*S<8hFz)8M&94ePd+yJAXnxW7xOj1f%6qAg#=K9~Z1%TF-nceQJK9k9GJDaY zlRXoz8$DUZXnFHQ(mg+`;!3~QD?V`QUC2BkwbJ24c|1d?NYCrn&e_wiJ^1q8|A<eO z)3;jw6H?9UF}l-(Zg1;sd7r!g+XS7rs*85Izu!AWX`!cqXG`I}4QJ#&)oE<Je%t)b zPi1+FRHMb*{@WUk$YvD8Z49mm{`c<QtxTQ7m6L4OeNb5}*T&AK9yPb?BLnLhx7YKV z7CvefpQ7|)9`ng}y1&l7+gtwrcirD>>+~;LX+~FSl?q>JxN_R9;ewviMGnsXLcdea za<YoEUU^+TyGCTKXn=^v-JILomK=<9lyeSEJsEsgQgFfUBNisXA~}z(bhtH)*aMwH zUrbh)d2-KMIVw9vK=!DSPhrXD)mQr#un10@_+{olb!OuuSKJf}j6(Ns&iN%RaC$TE zgVF{3|H3AJpY`xhSort(vlhrLn%e$r&h?wF<+hjZ2LD^Ts(PEM&7tghI{SAljyd-G z{r&Q7J=-UrkY73XyRvUY-{l2u#$IW48SX6~46j{@e7j2W%qqTbmKH~5dMPHzxLcm8 z6?=V1?V(J5^}pGV_jO+O$<%6f`_lM8CV|bvC1J)H73cd?R3}DPzL>Uy_jkb3c|{q% zf{dZ7I3EfLK6<yP)ZkpkbMx#yw><u_p3h_IOO5C`R=wutbGBd=CN1_=S^q94Cnb5j zU)$Rk+9EjV;~u%?hgYsyKga)1?(J=FGZUJUtEL6p3p16AcO)(`dw%Pr*UD05o+Z^O zwWp5R_8TSp9u<~fcg0xJG_)hFEh%l<rH(I4gl876NVh7^emm>5+2u33L80^c?6u2w z#wZ>7el03^w&rEY-BPj+q1Np$m~L!a8+N*BI|sw_mWOp(bxS5si@p0abG9W{@!UC) zvUktdYj_zqCl#JP<5RF`txvq#xzC)N{J*K?I9w@um&5vK(UhR68l8Cs{kL9!z4dLi zcYY7w!p_6d_rHI*8!|7e^52H3Z#@I%Y_iRF{4(L$!juGw#05bLW~<i)t;)Q6YU#AB z6MAR4^rrvXa&`IIyy$!POguCt--y3E^sYxi=`HWHbs@bQE#;<3cV(ztnO(AQS?6Z= z?7e$yve)k2vnS<QeC?{#)w7nbxL0g*=kD29m7;(pN{?*)8Xa~nohB&!bHOo|ycHT2 z_EK^WE#95Jbnx1v{|8T49hs}}G%@7f{`jA#qHnJ$FPUArpkleFmD|<za~PI;ExVj) zqEWnOr9;hism9$GpY|?$((vQ~N1I4(#D@DTFCQ*ZozuU3cE>(eIhj|b8ONFnGt9Nm zEYSSoar~&pJfo6q^VK^(r{zuEWqkPMGrcE&OXscIl_NVzR6}r1;{Be3+kJBFG)1oR z82g&el?*VD6*sHAAn75{b5n>*GUMI5by5E7U+vhlxVj-wsCeO_De=!{q?WZeZhST4 z?TrtqODwA^M4eQfRCKFfmVMZ$C4FvR&+c!RfBp3PWV}Fh`q?#05*3;6eL6VBe(!dX z_cK?p<yn<pe6)GZ%B;1fkNGyeTHcYmt^9aWj^Pf6u1vi@ZAqq<{>RhO7!K~O{5)^! z)(Fi~@2~mkrw>JX$No+d?0vD({le|9OSi9Hbxq4#;*s67vamKuHu2Yc`~M{i6bW_5 zUMnkIC9KpC`c}wi*71jmC42tbtP3*F4{7D$pMQ4tlNz14``7rsF?p7?d9BDu^JGx{ zzTQ`MuGXzGuH8-NMMWpb>EH1E#_#Xydu7|{r_Fi(A;}A3=H2-lon5(BOGP3jWa}ag zF6Qn9Gjg`(ZLO;^a%9kYk#-~Nrry_2TUM%Rsv6uo*zry=H$S-~f7)A<%{4~BSC&8b zRS>*o%X8}8y|S`zd*A9`|NAui{oks+vl6SH?YDG;tp(UO<+Pb!$P~@)w}Op#q+Fi7 zh&5Wrpj`cH%|`p|U;g~ZHfl+&*uPL}!gib7{IIPO!JB@6YGxNYwXv;sv)#w7(utZ~ z_cd4BD@9dWtUi6{|E>ooqj&weel>6ByJdcVuim#;kP+G;X*N$)RGqQ)+=-sq-<!>i zB<J0!5dOPu)h))fi<9j_)Y&8QU;mO&o!=p}-FddA)ZEUehd<a!?-p#EG|l?7%;d}q z=Qd5eJ;gHNeC?e=;}2)+|FG4Vo_;8kBWLdYYE#KExusk3Yfrwr{$$}2{W&~mub%4B zjJUNY=B>_hOZFP0`W2OOA(~SH8jUAM6!U2<zi~#8ck<ywg4d_|H3zqsb1j^!ZyMv) z;ujTdoUbUCd$BpCso%FTf&V!}={+0&^H)~C{giW6Z8I<PyA~#sj;<!h^p4dlUJG>e zZL@W8D0kCi6Px+wS<Z5`Ws6ehJzJ3^q_Ol_LRLrW%<lNrqQz>@)^5EQbtu3mEyblu zMNM6&egbb$#u|ogch1CqpT5sr)UJL<50|dHR#Rlx5*wv$Z!;5*`7vqFHQr^h!kwe5 z=J&Necj^4JYp<2=Y<zLTaH{L98D9S`l}+z`aPFRM<LxCAoyy!MD;zeoyKBO{CdJBP zg1TpTH}AHomv(<wWBs?~VP-X7V8+y<MzI^LX^WojD%X&_zOS73dd4Y(SzVbsG`%jK zPCGxnXy=sY-nVYeX_=X~Z1ze?2l<09D)acw_V4<=)%Dl|*F_9f#iCok-eH$KV)3>$ zm_=Xz<EN+DyUp%L=U3lfe_3@=T3D9u*Pv`u?McSLyDl8$*wxm~JnP@BhthL@s4#qZ zFroh3%!9I3FUx*aoc>m=U+`|X@KJM~$Ndu&RPy&JKFXJt_&1Mh*`E%-XDgm`Ozu&A zq9Syt`Td7yvp$CCy!DwojkTQZo{{<-e}VP;f1awY_F$~2m#O+bpVN?I;oP)olME7K zpDdYTH2dM6{hm$xoOl+Ai2K=Hc;O}y+^)Gjd*{|iR*OyB^S?**_FBw;T5IDL@#SaB z(ly%(86GTN-g@Bs;#3>fx<i-tO}nMS;&Cz2TtHAlDW;`SuH^ffp3`e)y8aTISR&YS zVgAER?=v@&3Qq8@J!Sn!r~X5ST*=b)JO^Z=^c-8}om@Yex#&9|-})0v7Vn(==E{-A zt4}2Te9i=^H>GHrN-w^ecz<O9e{sma^qn%vo{BLp&Y_8+Q%~6YtQK$YHGaDAu=dmx z<A+wRoh#4O#_``j<1uZK%J*wQKH7_%kKK%M*_K;fRdvea;q?6bpS;Bbjnh88m6X~( zW8L+-*!JZ;-_Ojf{2ZH>@>(n0Ds|>g@faPeNv^#)k8Qbp4ltb8oMEGyaD`W-u&j`! zTJL7bs*dLmT-K~8-J#u;Gkq0XnM;S+O|#uLFYW909q3vhFg0n>?5StHa<9A&)m&>@ z>Bz8K$tSa<w}kiB<)wAM3V#0BlRN!W$doHvqOx4?p5fvtu{zqyvdYop`?ad~cbOMB zhD`Bjnc*GqET%nZ^4xn-Tg2Y(s{j4x)7#V2%kJKceZkP3c{6L}(wt~L$4g&c&h0r@ z@KNqfLh2Wrz$m`MuFv-UelbZt`#Vdy*@vIc_dWT!eQ7}a?|bhIR^`vWwm-N%Z*Stq z@GaB-Z=AU7j$_ihhtt-_-QSz@<apd2>7#1X{9mgqyFU5QlV`m(Yu8sE*R7MgH1FY2 ze$_qe!yAsDdvmRA`J&h7FHKvvYFXPRo#)LP&OAJG?7+ePbcSC%c6&<&Z8Bb-%l|)9 zZJqg^cc~Y@xtN{{*cI|@_lZ-Ay&VGYkK3*~Dc`8^?AU9UizlYE=Cn35Zn*q%=Q{qE z-rE)&3vs#IXY{2;`?o{2&fF6k20ZcZT&xm@Oj>v&>&o97?mm!E<dLwbqeXvr_2+Bt zi8WzAH~%$s_p`le5VG;a^8+8sm#@-4uj{Zjlwq^hGRZ;~$?R3e{@yA7(lw7S>02LA zWA$X4;KaY>?|g&ZEbq=#Ik~OBSJU8m<h^Qr^_ZCKvv;R%dcWJ+^-0mroUJuAb+`0X z9T)uGci*QdjeXkg!zCO~&c_zo|2z}@dW#6d=_4L%_&sJev(I>TChQVRnwF9+pQ*6x zd!c1dSls4Me)v)SoWL%w(?6`)ud14#R5msU@G30N|M;n>_rd3OuDU-zWOy?9#6|C3 z(Tmbr^Jcfko~@sPQi98tPPw>bvW`^rT|2vc``VhSe-l2x^WzgO>@z8Tp!G1pVWL@d zXU4_q`-)O~OBDmw9<Xr9Jn8DJz&LO3(dp-}+wZUW{p<Mj>C>nGeY#4dIqdM|r8(12 zKMmUMeK+fui2t<y8>&`|z27T_Gq+^D^bMadiBsCJ`h{Zl;pDj<_g>7=<a)jG*RC@U zV%HwF=G(cuO{iXXpL*T`;V1Xk73X)xs71YbHv3U2e|NCLg|`mh--|_m(3LqG__<?y zO~q=b9eXzBZQaSY<P@j<w`TnxKmKjb+>zYt<Y)18=b6(QS2o)PuMp|EvF-Au8|+<% zU#5Nk9P4w&lIQQAa+APA&AUBW9v@jT=hCBy-D0Bh(U%!lU%LE$cED5N=x~?g?3{+u zmpQ6jeD-dd^JrRJ?~mt-_6CQK`Q4asQ0`%;jF?gIIpgcq%eL)mS?*LkCnEpoY;M2W zd-r5NTPZDC%6j8yal5AI&rqXzUsZRD&3td_+EjbZU{>zx=cfZ*{vDp`#30GDaiw|e z%TqhU<$f|GIeA)tn&Zgj&-1W`H`}24-uq`FQ*`6v;u2&h<leTctN8ch&yrQw|K6_K zJ1_Q|;N9l}x92J!KhC%B`YwMN^TPs@va04;zj!NK@xGa5(eXde%J{@j3m&XIX|5L& z`AkZF&-^=0yZu*8o;^#;i!mX1MeFOYyWa1fWn-J0_Txt7-QU-zKU)}fMsN0uV*>o^ z*M&v+tl2QjFHoo@<Y@5P^V8q{JpA<V(?x0$iz}Ed4mX!rE`IhW{8~oKE4g!Sf`%d@ zOEX;Zv$K*MFTURT_uKL7_v?PYJ)K{_?b(+dQ+}1KT*+8lRaIBFu2lQ>vPzD~$1Ncl zt>z!urd(K&S^XgEdfUqk8~H7J*4vBAHC{4W%J=;2eVhG{5??Q~3DJL^e=olFL%m0G zr^Vl=KfJfK)UQ4~d-L(;e`lQS4_*FZcR<sa(bY#KX^ZYAsiltt_&I+)cJt~B71MBe z;;y{>d3$rMOtjOpOQpIA%MX9Ib1a$0YkfWaPL@O5*{!K7#M7_c5tz=<EbDV{!W=;X zg9R)Z3MM|jSGhvAhOAx{wN^~qXkJeTNBdLhT}r2e#aI5iVZ86yo;lq|<}Cf@IF*l! z`DNvK^&Ljt8o}QsJnt`FS@9&yCq#*Z*(=ay_wEKw3z_q~CnWZB2RSX=6w<J&q_CrX zhk+0CL%~B#XDiny%=5X-AUe-HglA^yH_1725~~ihDqdoga$hxbd5XP6t;HOV@BrR< z)7SShuk|>k#;G9kC}^A1+{cF}Z_HlgA|x5>a-?h0+>3W7X7Sk_K2`TtX;<vL?YWB| zU75(zA<?<s?BsvWh_C}`IZGy;J1BKkr&6%z%+yr1Lm8J+IX-eYC^PvnY!%rY^Y+lw zqA3$j1)bWKYrE&YZ&BEdsO+~@dw<=#vo~r*)Un@!w+<_YZBw6|l$P@5_q;8ElI-gP zjiz(f3M^g7<ax^TQsLP%cippWlQx_EBvIdMyj{~FH&zs8J>A(m^E>wUOG7KIio zFkEdYf4_Do$Lgs`)BJDst#%0c{C{D<+6!9q*eC4UY`S*u7d5T((L49CT=XoBy1PoW z_|o0)84tE@2#qs0nfBq}wz5u*r8f4bKf9XqPL);63N+JR>ZH2zPL^UuQ^4e`q}FK1 z6;<Nz7lwI?Esb2<@}2QmbNel|O?yr1e%Abbp1=R!>-hg)-=3bXe}CQVsn1Ub*H-O{ z*;b`lx;w+s^ZETnpJpxK=yI>v(0uoX=t2(Ji6Ro&?RRQBIG6)Asc|NY3HK<M`kZay zl}os`rgHmv3%5X?Htuu0hcp9z9jQEi@Z5pblJn=q-_vFInRwu)gVfA@sooV4+`jLa z4-}e(@$WqOaqG`jr!tLKzW;soolJQ7lPMFL>;5#`K3nY7SH5fA^~L+k_q~liuy%U_ z%lg^3R?7J9HV;)W7LeTW|J?VR37nycdziZCDEs{gC@)zq@vKnq@Pq?PGcq_b`uM)( z33jYhh;Ul9IoN=E-b~$TR~k|s9G0$PQL6vX!Szf^@MV6)q*cQ6g3`tA9_$oI^3#7` ze7nEAMv8M;@%rBBw%=^el{}uyQ@P4&i?z&yjk6!}<h_&JYE_lpf3#7?-N@~|?a?hp z^R_>lmvZRAjjg@gOZQ4H-hch#yWKpDLPyw`z1;oQobfZLHcMi;r&D(D=d3k+U;iwV zHVLUbC4Xbh7p=6gR{>5{{1d0~Hg;T@<hHJ7Z^U+&B}?^p|Ctk)VjlBasm}05G2fot z=+FBKoIW$Dtv7jNrd!EoFxU0y^W)bhDo@L8+pT;*rY$RQYLeyIG#CE`u|dDirN@L8 zR%zwUn>X(cS9MCkk;zwsbdD@An=$o4*h|5!A2wx{hcX{!_>!iyY3i?sMK@Qa?&zPj z!b>;J^r_=Qvu9#I{Z#iUJu^I)C1}i`7PDiEpz7Ldl5cnY|M~NF{omL9^?zT-&$qAN z7q|YU-^#6a_V)FEHrU!<UB3KnP~pxMv!*01ebV!yqDO|)?D@=Iiw+ZuJDCj6x;V=p zO)OtlzkK<Hv-fLWzx;K};KPTLn)z+z|6~PEJ$`QU^rL^}7pZIer^sJRpVyGH-s@Lv z(D@UdKh3Q!$}dW)(-(TNmiNB)&2@G>+qS-mVPPoVu~F!v4~v#oz||t>kM?YHH|IWe z7VBAc>AmT`@0KZ7JgbE!S*(mJ^a%|ueR}@xi>h{x4c`+Lr02`WN_$*BvqjqDjKtiH zL5hu%;d%@<N1Sg7E-ABPOWT)Y)p>B@?+K^M3heeNGd=bA^*FFLbd%}g&CmZE{dtzK zxa7NAzGT;dhY~&!w@&=M7%=~!gR=Dd8OGCpo;dL0$@wJ7#ELI+VaIgN+1~lPtDGUt z#ZYkLrn9#n@0gpg%i~e@31$vatK9Tur3v-NJC&z2%nX&Snd8ACRlOyL<++-f(yxz^ zvfYN7ORofdQ4)+zdU7^JtTEnpPk;IT@5Mh>m8aeL`LxKg+U%OLX%fr2ONSRfopiqI z>gO51j!h6(FPXVUBhfOoLgu7g*VH&K|8K`D0+znmATnd2L+ibpi_|$UFK}I8G;_jE z*EseaxwkWpMrT)VFA9C}G-&QK#l71X%sBRWveTBgU(_|WrB4^&_?o(WmEG01hucp- zO^ViBnic9XF=)#S1<gmFAFo#B-f+leNpNP{+eI^;Y~pySYiMj)x#{n%|38ZU{{Q!S z`~UCtf3M5e*Sxbm^W^fjSiR}|^X>k9IlbIpe!iXE_0!8{-@GjBGRbyx-dVZ3zE@M; z%o1dod-3=k5An${%THV0mr{TG$EQ-=xqbP9Nw<xf%EdB2b1v2{ea(L6LcM$G&+z>x zS8`t}-&ZWibMr)m^PDB0*Xv&^RIvRUR@m2aeDRbP^9qBa*~|X=wSWI{-TI~FeZz(F z>n-D^x>ZhXDOl(E`E+T4#wUi?sXFaJYmMgX9BNPdd4=2lL5G$Af7I2*-MybnTjm6H z8LfC|)3iT*qRWJhVhNnzWEbDG)R)cH(m2+l!cuz5vu$sji}KZ}J#smBjjh6B6BjL? z!K2i^(D+g0iYs;%9xsip<1&tT%w<(OGV^odsT1w5x4ipxP~qDIhn6V^%fy!Q{ki?p zYgv?%_uLsm#}pJ4XKj&eJ7Bb7<+ppLwU<*1rbWMByR~N4^rQ<$W}9YRG?a|4Gs;U3 zx_KhNWBD}+iQXt{rrQ4H&g;^R9@a>`5?r!<TEAiW``UOX{<dz9(9O9l+o~>aVOu78 z)OOGN!*lX(MLYbR`}mt=)~k14<~=?;``o2Go;Qt;{fsZGdfKWS`F?O_de@q@rUn~4 ztPHlk>}HU7cWJi!_aLs7OVV~7w)pkZ;_?|~Mb-%nt5X+cZ9A8<Gef{JXP08tevu=o ztM^)0tuQ{5k#>Ii^V6xTUC&1JZk4)nR^yfBrI4#FqN%r<q)J=v1e?bsb#s`mQn(ZH zVAVq*#okYEe|`G>zW&eW`TPHUyDk4)Z#uVK-Jc&HA74H`-|pY1{`qx3pI$!x{OwQA z?MYc1uP)7cb=)yv<{!z44lYlm{CBOgINsQN@(r)`)jcf1?GEQRuP~QexLo$n2EJ3f zFLBM0FJzwl{rX)d{<Tln&p!Ho{g*h)%lBtYzh{$t`pVYZuetuKeSiAwzWjN9RpDj+ zn=hp1npVD!DLB4z<~A)Ex!tpCzHBcNy7n>XT)_R`ajzck`I5NTC+5A^W?koLoS~Y^ z#&0v8DOI)jnYZ%ow3Jj|&b>TV?fbbo;<ZO^KAFK%*>E`1B)7_^dqco!?gggH>otY@ z12>geuH!nBVpe&0!@MZR;7MmM*PckR>-S*sRZ+FsP@cKgaAmkonDe7Hc~L<g{*D0U zl$L!?t`CGP(k4Y5T5((H?Fr?}2lla_d~o7%T1(HNvWTfuFIg&Q-|YO7KQl7&{0jxq z&mQh)buW2s<k&Q2(vtsnyjMIU);*mRa{S`?qi3EUX=?Xu>bzW1C?XViapJU@$Ns*N z{X92k@A-0*nVXaCYWCI%pGf+(#L)1nwsX#+RXx{keZB3S?K{Crc6qyd{4%THZP%jq zPcjh<-5aAf{WR;8%du8V+~p338XdZjseOE+`ch}Pi#|H;3nFKPYw7s7m%TAOps_r% zwa?k`Sw=u8gS1_h(T$+_f>JGAPFFfPp2%r*t`AuKG)aK7|DH$I)$W<E+IJQ%Srrz@ zsvDrO=GuI%hPC-;msVCRpE-M)x9i$9)3zxEcAvQ>%6T$HLpu8Wp5xt1d(B*yNF8m_ z6JB~GsQbd5o6#}*_r-kApKt&F=hxTIIc}Q$e7U^e{{NrP%lrN9|9<&6J>IVNS7vqH zDu2`c>JrwiKJF`>&Sq^r{gjE*z=8i;L8#_Vo9@P3Erm?i2NReSjtb1&Q!6a;>v7h} zlY6VuFBZQRK3&7}zcBmY@0rj33tD{red0}#(bb#fTjyQ2Kd0PU?8%#-eD?9N^19tE z)!B~i)>lqnnQ`aY=RI3LTJ61Z-1JRuO^;oXP~YWl!=qNyjD0k^opd{QB{{H3&MDvH z{K;T3gF*5BTBm3uF-Q5%+VgUsUp}*oU2@S*UZnKW`MQ0=dp%opmPRajvS`WesD(?f zP2H~=V908EY+LRDHs&r%^S5t0GhUs0H<_6;=z!CY53Ri)3WE}wZ<(^cve~+MyYN(j zlT35>yT1GOhmT+EV*0CUpCs>3%WOB_KNRiqt7zgj50PM{n5MqO=_Zp5vQ)l%c`AMV zczc@VgY0YVNn2yqOuKmdsq(S5tBN}<ySH0^YJApdyn|=Tyx%`MKD;<MW9hF1JqEYJ zGbZ0cCxmSE;d2P$Z+o(-diT4R*LK*1hBA6jk4^A6>G<L4FC({`9jnrgnN~{AtM=G+ zee<*(@#pVMR)~IIS9DayJ5`ip%az7<NzL~!mu`sm+`P6q;7BCniph@ig}4+S-V1kF zBRVCJqtq>J-jf=xR#&M_f&w!fmn>72cXX8FYteZT=xq~!=1f#Ne_ZsJd)^{~nx`g} z@+C(399<S4Bfz$LR+bj$LM`4!Qfi04ad{n^RGj0+WAJ{_tFKxK991j-d=T7vZGL^_ zzn9D3POq=|_4D%a`So>Gb=%f15|b3%Xvs9wXL-#B4Pn+PVS5&Qb7)_k?dGP;EO1aj zS4+L)c5P{8@ph9{-bQ;Z<~2S^?tQAQARh0}x3Amrr?=eh?fY(9pFY~2eDZUy&!#(! z#+6Yf`;|`HWGp{-HSes-<1p2ayAprp9kgEW^CivZ(}DK#`*UQkJ(!*N<)L=P?wPw8 z4|F>nQRSLC;m%@a9W^dP>DcDJfBK#8y<;U;JvK-*PK$b$qb=_7^N!7a-_JE7=@!o? z)!O%*RPYxUYm+pc#8ubYd2)hC(E_`zF(Fe0csV^?XK`_ID=aCW?h)rPX;QOf?#zJv zBNsNjdKZ@|FwHPF=~wabo$uA2K2M9|mE9C%<k6q;?#$m7x$F9S_;pUqC}?tWGF>EX zGOa_Us_VUNOz0*1<*Ov0U*0|2@Aa0IzZP=6yz8yGG(=l9H|wR8#%<Nl2h-=RTC-t! zqmkmTMd#+v+5hrd#PT_X0)cb%U8_uvTid-+Ix+F#q9#U-wC;$re1ab{?kfN6E!})N zY}4gMJIpe3)4z*_Pn!S#hjM+%$}FRtT%{!A<LPI0FIU&qX4)}-)|fZ%drQGQ`|{QL zHp1^exlHp-JZI3R6cC=ZWKExt&s|leB#)&fZaV}QEtM$!;JP!#aq&qJxA&d1gxhXS zc=CG!lTkmrSK%*?hXLD_#D%#-u3vMFe!tgd<F4wK6*~^Dap;v`n<Jy{C^~DgPnC+A zd#2HmJ1U_oqAq((Q0y#z)o^;LUHy%^Utd&|s{5l}ANM~mZy#6p^XX&%`Sa}ll-%r^ zAta@hP@)+!z41eF;`e>qSJ$on7HIQ=@vVSxsqE{Eg1d~?2dz50$@D_yEUBuE?@fF< z!uih|?ysAWQ^%kCFrLfg|GO2R=c?>Ee(#$(6WgPy*8gl8be_l0yK+1K)b@^9NA^~I zj(EBE?`ivglg%HTTg^B3hFCv)Kfl4e{%ztnpYHi;wnuNNiUy<O3aNJM=tM60+cO<k z$*fo0u2BB4=@8G{&dm;nw~g<~ah#iVrZ`tFN!KvFI^&rAeO`5@=ZDsJcC<Z-P6-Lt zHE=BpIwD}t!h7sVmuphi!^|TOBvgW)UGnn@++!NDqFd?tUcJdTBrS5Q^10*Isq_E- zDYH&?%f_9OR?BnJ?Pq^p&*9`e^YNa2|D0Un7oOMFThQ(<J$L2<1yk$8cc=fi;*NW7 zdpOWoM_T=H_q{ob4!ACxCcNPtpZCXC)8w45?3{ke+2h$3#pIhw@1&1>+3-D8BKY=q z+bHuFORss~ZQ8AM&7$Ga<>mHMWM9s;DU8pLP+xs`cZ}Zeef@UMO5FFN%%^3pj-S@H zyZ^?cZCgIH@4F#7Y5Io$e;oIgJFE<l%?S+E%{r>H=)C*SDeos4yPVfdwEA(S@|@rf zscwxa51G=VVq2|4x@UDottjhSS<3i&-{P$*Q@XT@)CJ!ZudM&CJtIKUV8xmfpOm=^ zntGW8L@IY(>Gz*Lzy4Rs))sEAdG<D-k-`s!)&G9{`4ZC=bi=@W_ubt_Vjoi;-fXg6 z#4meo*R#is3Y%t#UzRxYcv|<t4!f0N^$v3Vw_T=%dv86kwzBX2YLk1HF703c|IfPZ ze}Auis5$-d*YEn?_pJOr8}-F*o+P`AQ_iRMj!cfAI^!k@w=G=@=EomfwCTvodu<ut z9x^xx+nPpC=&X+V>3Ld+ondZu8-Is@W&d3MSz9(3<))mT?)2m5^y39S!AZB+Lk&(^ z#c-Z;T-Y7KZo|+S)pJ3GclIjIsY&n3B;}cf797y@>U>dI!yI{Or(;=wRZ`uG>r7&- zR_A6c%2M0x(H^k&*^j=HQ`L`F@3?NHFzsdQ>+UnN)utFU26B6IYTHG|FM6i+?#)_v z0mnsd9UHoG4SK)Sxkv2$a;?O8N6p{Q#T(x~_P3uJWVc{jS?*rN2=fLlMTc82eHfgg zDjGY*G`b`8B$#s_9Eh6!;ziIA1;@fdeow!tZCbJu<%<jg|FUJ)O=Ylc;_S`&eedqx zDZNU$?jBdX0=E_|{4)LZxeOlNuS!CK)lOWh3mh&UdUtp4_GJRWJFl!-I%U(!tP>nF z1rEJ(?<x^zI2w>+(=9sh<txc3TZg%`{xNd~KAWlNw8H6{(Z<Ag%MW)o@i}xKR1w`1 z*%QC7wlDkrLk9inyRMeJD-C>m?|W_j_38WeSKPmA-E?)yvRunU)zXY>MYtudTyaX7 zKKI-Uxm&NEI<K7G@y<{<RdUs?tIx08e780=iMe6Xwyb+MzOCeXxp(#z>9gHBm!0Cj z7v$?3rrpS!&dairW5%kL5sgww(^uATajK>FsnoQ07>TShxp8BaaZx#|Dfi+kkJl;r zhdPCVTBQ;K%)k2y=b4!;QBqte#CMi8&2Mezy~_p~7sHO*uN7f)c<FI@mBX=pQ&%nd z^t^xe%jK_2KMP#lWLv)@$N#+iwk!?B&@&=k1^IL5o!RfRTYAd0OEy=m7q=-iOz6qw zKmNd><yqsLH*d5Slm#&cJ0+-fJai6UV$u5j-Fln8=YBQ2T4WvU)Q-EoG+FCu`XloE z4!`Dd>7_p>|M{X`<u-lqJD#U<TP4(UPbI6KwmHqXy|ij!-utKphTne7lYW?^e&x61 zla->~lh1bFH@7@d8!`9A&Rcs`x7A!NlzV^5vv<|^#Bae<>zvP8J~1oXlY1qwu+Pn_ zy^d4JXnEk03v9k-yqk;!eN(t3LcPy<KGT-}en;?w*)z^|hP;cn;^%jU?fS7%YmQ*~ zPQ6ohnPKNOKX_Xd-Scl@*ZimC#Ay6;YR?9dxydp%Q$$|!JSmYdNR?;fboJb{)_Q+! z?Z+Fwiz7Vay!up)!(Kj{w|F^wJ<r)q(Nng3T;7^2@E~~O$#=1RDtn%OmRRif-9$pi z=7Hp{GB=OqAt|<rnr{zuCs@9-Rx+KLy7Z^aok9tbm9M5m?>@cpo<z={!mvk1A5+fB zE1xj^9w29a;O+8EjfbHQQVRtY6D~M1>2wL4mIzAkmNWTyEqb?_dQ>R)tA_Y5@AiJ4 zbB<%GvrI{an|#;PPl`|9vAbUO)3&m-Ix16lj=N6B@%}A^HR&e~UF6$;=F?AK`R4^Y zd!((E7M;<bv+vl?CysrG`fmtaVhG$Qs9^utOZUBHo80e^Sb1G-<z1iVDDtJQ3%l-D zd1~3DcXy|56RGstv1I+mCFM>m7dGYkKiw4Sx^}C`)iskZ-mN|+?-#U=Ewjw})=bOk z-gj8vYNZ}5eSWX}L%Y!q)B5hKk8SU@KXiOvlH{}AtU+nQ{_cu@+I%Mes^kAPFPWPB zSFCWgbfxd(+Pk~-9)2w{7Px;_;?ix$73UiLD>eS@S-ocarMeRmhvhyzS`+>G_N$ky zGV$fBB{x1^?N{xVb@JgHFRM<Mt1RiS@7?**<#3@^{;p!vmYt{g5<Pn#io8AV{!^zy zeXE+tP6h@A22U5q5M7xdz5RLLo23l4S%+*j;rYE}_tG<a-Cyrro148Z`~*+(G`)+} zuMY|wV4K(|;E<}|ctB!fEpz3{!xOZ1dfv&&C544}8~xs2^Hb?TYVi6XCP)AJ5>5Uz zLBY(-2>xFuG_nGiSd645EAH&M-TuJX$=|tc;<*XZlOsQzld4)WK_U9{0jb`;=j-{W zmt^G`PrRyZ!gTc22dnTIysfV${J!$AfMd@?LnkX1Nym<^)V}hd*ebW9#;x9uX2$zR zy=(T{)1+LV^-H4qzG|Vd<jICFY1OaK-gTWQ5Lm?=;k7a=O-wLz?E@}D@s1P0cdt#> zzFb-~<@r0Mja$|k+8x~Z{&&;FXFKfTUu}I`zGd^CJ)PEjS3l)%-}U%rE_;jA>6$}d z6-@-^i>zqLJ%3{T$4rTf{jY-y)(O9RcVaW2ven83(hIz#6oqCbb_gjxT;Sn*c8!43 ziJDCUY@v?l42#XIT@sCoCyHo(IooQq*m+N0#U<XQT3yqU(uCHqZhiKr=E0ub@89um zF!Y_<xOe)lwFyVhq)6G>Fyw8ST4%H4%?XJKCmNKB0#1KstM69%6c*Sa9Af$G@t2Kv zKHOi^WIpBG{(oERSKhkIdcdf!<^6Hd*SbGG&6E~0|G(O{W!{{95%&Ws?s;S?zT7pF zVZ+gMlgAJ34#YStV~cA4R&+zaSLMmJ1o_s=z30AiGdW$=sbJo$v?^c)*JR^0U5oF_ z3naxZnd6`%e5T}?*NLC3Ea{8V?2b&G)Ma;Xf|uHX&WpFUPAi(Twb^i4)rqsdZf};T z8*nU2Y2}%<`_0|`TVL$m{$tvcEgM~g8fP#{ZsU|}P8GS5<tF^&-Noo7fe|ZyZ{2<^ zE^2+(3gdf|CyJcsTy(@&A;4}?%i(7_m6rsgl5VM_RJ=;rk{VkmvQvl2(=6obW#0+s zcU0c7ym{KjO~`lIab53AFSO2d<vp+7J!MhY@`HSeCW0ql$cr#8c*=87(fQL(i=NNi z+l<~_bZq}vSl+|(;6<kB8Ic97wn44|#~ydDQxcNBcQ<zN#C1J_?h?KCEX3y|I4qqp zHE31prwWh2tFyG0MgK~DvhbA8^QQU2*K96b?@(rad1vX`JskWym9x~Q{hpIwx30sI z+xEM*@ZYA#?mh)8IyAh(9<hAwd86-8BY$1@>QOx<#aZ*NSb9ypli1D?(pBA2BDiU{ z-};%N98OmGXV)|pHl6w4mLYd&()uGS=bp@->S!~$Zc&IP7q1&fP5%8!n}f6NngvHZ z;b~3`QDx!j6nl43Y0;C0kZzW0l?UA0cC<OJx@>wwk@ZDL@T!*8kt%Ddd_0QWOb?lT zw)mRYc+oob_oI$Ew{|al8mZRuKjCb3JJ+Z8H-z?Ge)v>YqWtl`_ne{U(phA<cP2Mk zo5t|RuuQof*?#LM`;mv9(pS|Ci;E^5JM+7wlfidczRpFz$47Z(-XEDHGw1x{oPs0i z33Iids!R)<7;vLya>pSN#y~!e4SK5UBWF&{J*gApQe(imdGV>=6DF6K=dF^t!E663 zD3K$4$yVd4Y$vxJoQI-!RGV<t-JQ*^&nUtgHtFTo_5)lc$^uWik3V1k_UY57+t1hg zsqEij-I0|R<vX7-An<jV{@0?F(p#r+<iC43@0by{<Ne?J%x4}tZ&-hR?Fyw%k)kCJ zDkt&IP_?@3Vi-`Nw&2u@=Qk$HYfK6-wp{g3^U=B~N;8+J?U}0ia#lU(RY}b&I?=Yx zOO7AjKI5QM#VPaqY4XXR7qDuzc!je0<}>Z?xBYVC;={a|6F<%gc~uh>G4HNQfdcon z<tB^F%a`wNQJ>KwIH@)MvxQ)bztglG!4n19I+v%U)U>$AsrG1WfA}lo-X(*8Y}45c zQco0Yj6^lIuDQKU^!B{@^RC^w<p1)>&ChF_j|N?uwkUn2ll;uP>r_|I>Pp%Wt=!_> zJIS)<`0ohs*cSp_tMZuNrLKC($fzo%C^b{9#nVP$g~6c+SD}xOR-JmcPCGfG$mV3r zd4G+vb5@s=4Sib;zb-!F(LbA`<6vj^$H}QYZ-YyDUcRg_ag}s>u6QR<xLaq7Vo5;A zj8yxbFReta9zDExr@Oj2W8Y<m`9^`ucT@{&GX4l)<38fha_r36?uL26>*6e5$z7AS z%lVNfqP_iORed$b&%-B9wo6UhA1rk`qxXr<Mw|FqpZV+7I-gYve3Fp)=*ge3dy_VN zikj!PIGI<iTiC#y<>!;5(zUNAo<F{&d#22W%!wN>Hp<kooqBX(ed4o?lPmVjp0j^0 z-^@>U4*6EuWvmLgcx8>e&XLD~_QGqQ-zj~|w{cpZ)`Ck#Y7?`p4$cjCIoD}>SGL)H zrsV_Mnnj6bUE9tTD5mD?CCqr=m#_ct_51ntzyF@kzrXJPug}-tbXuuK^$UnfY`JmV zWNN(L^ymEYcK`l-yzDQ(ZSAGmeSgfFwB**7zGvKcC*{jKNAuK+$;HLpxgEjV!j2tx zVo8mV6_TBM(KUI6>*Nl@|DtWZ*EC~is@}P*SpWN&q-)jpC%v<7vGDXwoo5tWcPz3s z!sb$-`&k{nxyxsTF6fAo|90p|bjGUJHM#49uTS~@t?<9f_Q_tIHe7CE`wQJ0jo#0k zT0SGpWBCrD1P!P5pQR7(cyvVRc3il2YtLDyR>6tC_bl3aZI<`$Yf)-ki8VWpHKm_B z>?~0I`Az2W(<l1uEmyyre9UM{ewx{wPGRf1x_QgiB$rlLR;*aI{mik>c_Olfk`8>y z*FWX2R9McRKd<`Avu2m0T?bu#5(FnsD-dP-w5Q>u&es6fmNlK(YQB|x9%4B~zV4+< zefT%FEiLkNwTR^U=^**Zj8WOj$hiCN8I$f=?)kkJpEo*6i0xhJ+2VfQvS%7o=+>EA zCbHXp=i9!fQeb+6sJMlXC;P#BGlCn>G=+A!zqqk7!Qz7NbFX(>g_!ciBz|YJ`uq&% zzQo_5`|<Ak&)=gCAG*xfpUwH-?exzZ-wPgZm6A+epFVGUwZ+uP%D!W-zr0!GB)`<~ z?u`U@t+SfxbGQ_OEDi2eO+LI+Zija1W9#YdUUMYoTh3DRu3_jcx<6^+%EQ6)D&2IP z=DYdp6>_q<M5*iKytSP1G*>3-dH$l+r$g3!6L-4YU7cR;rXQdgFs0*!+YQdPE!Wof zuJvZw|1LNG-}CLS--C{CdVKnQea+uLKcD{ERG%AuhIPO7-qNy5hu3r*I<qbJ_lK94 z|9`#z?_>Y}Z>Nv<pO3!!{B2U&N}W>^7qcv^JT`r`$=khRH^Rh1e$}izzN-G#_DypG z8=rSgtafoR`R@0vhKt+1ZT=C)W;tv7_p6Pg?6unq<XD^%w}u6J8<+Bb^iVbn**fE% zkJG0V)0S{6WBY(L5t=65ic5EHTt9DZDI=$cPe7B7aSy-tU#2q>T^wE4KK}T&uyo>! zhkm=b0vG5cIG89cxODuTn2)XS<bw4|$_;&26mNcC;NGw2czxbauD#{4+qyzlzN<bT z=h9wt^vo5u?5-1m8{*erpE_Y)Y;xR|Ym2X0d58$^v_Jj&zZLTf8KqrWiFNh5w^OFx zoclj<!wa`VNlM`{Njsh@^pyl~@H7Q^8<@`xhzf|6^?NU*wW@5z5s#oUM%9b2czjqc zed=P#`y!(_aa-WLyX{IsFD7f9JMl(q(wkK;KX*@`E<SN}`7%vA9b;DG^1>PWa$Guj z_BS%_oWb+mQh+mqeaa)wRbo{xua=Z`Y8?&9eR(%Ua_KRT&%QO+Z_mA4?>6UC7^Cpd z{-b~I6n?8`$qbXbvLQPDdbIb^;L}B)&A(pT_jlKXI~`%q_Or7*?^?dRY_@k-QO+kd zujgBm1*BKzY@RrKZbguRYkH!xUwD?=o0CQl&dBE~HF<O`VwB8X^WccV=_~%c8=uG| zzv@z&CuKPOPEqoMsh2-22?$8jIkB)sP)_{Yog*_MTguB9uI`!|bFes2%%<l3#j?z~ zD(kBM{ChtA|JV5cf9C)HJ^%lo=kx39>UPFeyObFA%@gMMB6fYc`2A?j$4~O2|9*IQ zSbqNhKfgXbU0(m^Q~m!>om0G5TK1f?3c2FOk+b|q-Yc%tcQ1aZ(Ct1^b8P0VpKe}W z?JUZ-t&h!}cIIyK1L5=?u}yKYPs~hG9*LgM(7qb9$x(84;7j+bGV2v5oZh*$MQ&%6 zFn=tMMrG1M8^83pNCBloTNhjPR;qc=GM-!Ip_SCs;Ho0gooRV&o>pdxr}{M&37u_x zE=y+pbYalX-m~i4yEz}*->p+JO5dq{bme!yU9)CHE_uzD?xE<J#%@`u6}&)EsQIMu z>De=$W-Y4s3+WEJHg`kG^V5l%R+o~luc(~UTa&~3Z2GeYE#0}=A=4c^wEP*PFAIt~ z6{pVF^mt~!g!-h5FP`%)JX@2<|7S<~&Obk=Ox9ceu>Q2I)Uzw*)3@5*nQeXBj%l*B zjqK~CQ@pn(MP-|6%kFik$*OF!U9@I}6DOas>TwaHXIz#V5?{(KlVAIvUd(=C(&hSD ze+shQgucz!Z0Fy6@&56;f9(G?A3NwW-_X6{FnhQEnI!>_L;m~QKEAP{@S$Pes&~F~ zqvik2o}IbIy`4Eyqf>98lDxB$(9POoD;KPL)Zl8iS#|cA>p6u}wx}MQ@WyZ2_1`TL z5(^w&bd*c(cVKze?6zXgRt{&Y$b`ctJsVB@q7NN3n|<odv5$+Ue&N`qs4d^V?ybz0 z3BR+197W}=W~V%FUuEGd>Ugwb-qWH7x2yuoudly<=hWxR=g;fkUw2*qcYb}$|KI=r zJpccr{@?fY^>u%L<=(et_;R81#H4#|KKsAN{Z>5`x-+-x?RCBSF45(AVH!(C-C7#2 zo=Vl;b@kc`Nf|ETl&RMfL;c?gh8X=$u+jeR!=$6MXrWX7-2e93?|-R87RCJhS=e8_ zInI{9fFY^lDc5OM&zIa=FV#Js<+IE_c3bu@oy*OS^fDs^juaUf+xEX(x9ZFu^E>@^ z6)tyXhhF`xaFI>9aptR4Yie5BchCQ9Ef;kCNbfS61|c~)!LSuqRF7m&4cf7eLCrYe z<gFtwM7GolvAAs9(|Dlh?ZTsJzm%2<x{8LCvFIDRIvQ?eitu0zS<7;@;6f3vkDidE zVQw&MsO}O01(O{NJ!*vp9r;qdG9PA7S@ThE>O|4gUCSPNwqyl`xGuR?qMTyZP+@WS zvfa|AHFw^bzF5V@xxvV(X`kNn&pR!TT>avp5t<{i{7<d>J8jSJ0h3=>GChk^(DoG7 zy>@L5o9l&TMlC-i?`g~IQ&!LASTn&pZ}AqDWAmC7XPRg`pSL_$XuNvsyF+s>?>i`y z-QD4MnVDI1VsMK{w)~PZvqME&Z`-n276mqJ@G4r!y)x=Tk;^T?($b?r2EI|*8}bYf zZ(X-FjGwQx<aFj`&F+%a-HH9$`TmopFa`)rOj6A(I-O}b|9X_NA=4V&ulpXwsLy>K zq#p0>_>jwd%AUTAle)Qn>CUPm>k2x!&%X=&yl$1N*GtEl)*s`%4{*JYu)laC$&1-p z;=KIHzggj};z_(e_RdujaF#n*;V-&p!ORofuYT2jo-F*daq7*m9(`k@?G+0yF6!*L zclz7sJF;p;$0c?PEUcOSCoTT%E$Pkct;+8&&)=LdVcEr$>94kluNL1Ucl}oT%uBN> z9JS7yJQaxCyG@_5EY6mxd6w>xg1N6H8oO2~t+ih0q#Cj?Hjlky3u~Nq#m?_HytOAw zUKQVybMJ<l;^q+cH%;HSt<!VaE#thHwV|2kLhH)&nYFIRC6!`i9-dp!^7~gs)$b2K zj!uuS|MoLHe$T&euk-KK{{8l^qAbvOvsOdK%hTHmR=%FKk}LOMaO7*D65}1awWckV z<701*Ip1EC%XIquhM7~8xB@*n*89F(`Bsvnw@X`bL50WdSuA=^a(nv!?#feDT6Ama zO#Sv4wkJEz<P=3dyeK=TE9e(zFK;@l$ZSQqxsnpGuh(T7ngws3_(>&a)!k(cXWP{7 z&pxp1OK$!Np0bOKR+sv&dp>_-cOYN>kIAvk$)3|{i~CLq?^WA)lw;MZj?$B<yErnI zEuHev#piDd*Tv&ay8exROhJ>DzTjwm&wc&TzB0x&@3@}`^F0)1eiUc8WL3b;<b>n< zi`I+x#{S<~Stz?@GozpGh3A*GLU}*h&fD(F%yG1<EGmA<{wZ3!TV+B|eEA=2#KLU* zY}<~tzKx<2Yc9Tjnc%iY=%v8x7be$U#d%)JeVed{<%kxmq~a9rY=>7;4)-P`ysdlC zQ?StT>>9tVN49LtRc_D<SkM)+iYe=+#*+nRS#{;1idqJyPKm+Wj>|cj1h~{k^dBs@ z&$aG4CBI^-bIhjcADwSpPA!i6?wV#|Td|+@OYM2F*o({WzMoxu>K*s7dHD?!e*3xU zA61?vGxeJOqQB*DUR?CwBi`%T;k)G$*HoU>ho=RrFVa;E|Ni)z(K@%Cit=5}VLGZ) z(wtaL-(EUl8h1~fcW!w@+=rs~Dvl1eJ6K<>$_P3mx~TC&l6d&+xM{jhzdoMpRh@A} z(syzj_rr&=e_~?<6df0z+I4LA@$&Wie?7DR|Mz{}_nYaUbo20ycK3|Vgvi=myRsiK zO`j9<bcOI%rVWc$x369CkZFya;Mco%@811-_U+lNbxW=n&E1kBd^u@pi_-yvsp?Ps z&(C0RbL-r(J~!va3v<7!3zFXXTZ;uBX*wNtz4UjP5(9%~l4e+Om&it)Sjq2R<>DSK z?JJVBwuuMx*q3S^y|TsUg3{TW3*NBmD7Cy(n%OJ%Q~9#}4Z%rEx_dHi=uOU;pLtd_ z<<^xo|1)1K=DVHaeRJKXj8gN~Jy%rXpH!E6$rR^Jd+Bs&f!S2g<I7`LYjt_%JoT#S zdDE7ek-k8VOHek`<*t2#t@6sA6*r~{3Qjb6wI}bn5JQ4r<daC3t<`VpUwp7h2#+^r zty`k{jCX@=&XQeAGSAxVe41PAROI08`r?&Q+xZQX<mGryrYG0USaEPs#g5;rqy(~> z`*!{I*d()P`7*79%&S%>b>AkYG0Qxh^<mB~J(W8zLnW?7uU_*?V3&eKXN4gDtQ8EV zxwSmAt_Rhus(Z0`B1fxn&x#2OYN`kIWYdp{axLXLqq&MB#A9L51Mx*Rm68`ur2p~! zY4`S-{qOVg1@1fggP-$r&+r!A9lyZMY<r{K(;%mcOv`${Ycl_*ul<;Hx%Z+><EifV zIXR81Q&sYL{nvG@nEKsuQTaRVYN3leXP0ebJdr0~`SDem``v$vfi72+<_7C7Pd13G zethF#m#t)3wPeYK;$2$7x9=NH70?naH2m@O+p?b0<||%3T)9i47g-!p5=!R}jb##P z$*7tofA0DH`j2Px>%aT&|9M=0U&Y_EhgV)o3)*_4#$p0TV~5+CZv8d;bON={JX<=C z;o^r^3)`gpE?)gxQnhEdb={AHch%+VONwiE-z!?n*qgb%D)XS*$|=Dw6&E-b8cb00 zn0_Sesnb!XmW8#p)0VewXfnA_wbj^|^(;@1Ah(|2<1MW-W_WG8K53<`<h-^z#SOOq zD!7-OuUwXue$Dhgr>LI8lUXM;IxjK02AfT+R!CC#@#$*$g`m8{^8)6r`m4y8yLMIZ z+PABdc;6pfJN^2@XV1(uG&pCLm8&fG(Gi`OX6Ac&1LKC9%%?6iuw?u3MW6d&d@SeR z;f=1|ujX*LuG09Pd#B)8uk_&wowoi}QVr7E9<``Dy{KKi<>ag~g9yPww<`@^>27KT zM`rFklbE43<=^Xosy9roDSFrL*mbD%Z@<{BZ9czw#)VDYv(&>%HYk0%zMzA9_Y52F z<qd16zdfC5zPZCx#^bze#}4HMXP&YuP5N_4K|;@qQ`Fz`;+@#HQkC7Y*&)AnwPaSD z^l9^nTo!d}=7N@%w8`Q;DM5RTzt2)J&HSI*5N@<!(d|gZAI@9Lf6ZHUO#GJhtNy#+ z_Wo~t>-hg4Gj~yEchZMDf$KLtz5HZJq4}1al8?)GmS5ss;(udC<)$UNnL2B?om5|= zU0dEYb)M}vrDZG38BZ-=u&FySr@!p*KgUm<Z;HjOCxp%Yrux_Z;08CT$>KZWa|<r4 z_*e8%;@3RouZ?cJ0f%2MTW0lE=I_}zp5<0YnQtZWdC2S8c?PXn8KfC>eX2ncm-%vg zn|1r^|DLV?y<C4^-S3L}FH;3Rg;ZKhnZ28T{rdHqPyhY<_vh{Q*M~~KM%gx*1|3v9 zSHK@;zuw~d*MAke_UbLa{ODZL=eu`57Fe_tN4;h@4=$5lW|tYB^G4~GCp&YG$s_I= zAD0O(RPqb-pDtJa`j^7q{zH4tpYjsh!?@{F59|4-Ggqx>+ptbiDSMtQ%gI+Eu54*S zLQd%_40o1IN;{JGhJQj*fW&Oo{d+qq?|4l2E4fm<%fPdfNtiR`j&H_+-K7R>$1C0E zoHSl*e(+K+!=Y=FStp72<Q<%L;@fUF3l*tGcGfj}6ISeYpT99JQ^r4Ya^xhz(|x*r znT?`zp0Cbj(VFEt>&dGfGAm+I%6p=w?qMxYKjHD(w=(^fkjpm1mvOt8Zp&|yIM((t z;Zj%DS<U>d*982#XPXtw=rb_L{=jy=uxVA$>#`qFD(X9KMjz);{pp!DC*xhUXr8-r z?xRcVYCpRCozb{zr<#eX?^Yka_;7xHH}4(Y6Sg?aSWy1w%mmk|Cj*51#2yNrb4U{1 zv@!dGS@grC4Jq|fHo?3K2UjTePG;xrXgpM4$gs4ts_-P6^xy3-mzGSvuc)<Cg#Qy~ z#*4qUck-T!Nj%>3{;gvDoTm#4b)U9>S(&Qh$Gd;6-R9JuTgtW_nOowgJv90hCv-#M z*=&z_Kf08rJC?s)u08L{|8Em~=GQ-eBGadTIlb;%%?;g4D;^)1_cL(K_u}6lO8SoJ z-+yu|O*}I57OO&wS6j}d&yI_3S7h#rZCtqQg2dOZDF%&)xQypjzm9R%UMMHV<Dchc z$E_H;`*ZWjM2}Q99S;6j<#+zCuixMI`_<XQv$ubLFW2v~^Y@2um;LSb{eIBAdiClK zi+PV~;{2CC-J|y|F>B^uTmSIf6&l&uQrA9IsfCAXUw(Y{?AhDDk7v%x`mr@$H1cY} z1`8RB*wPeb1v#aOaTSgnM*4HvUJBoz^?iTFi_H>YHg2!y8Xe-ZJy<0FgxgSofmKPN z#Y$2!d&@M{j!RSeDu2u}v&*u+AJTnuN?r!Ty$rkDjhoxJRHHbO7DhG2X|akdc3z`+ zwm5u=z{Y9%%5oQNa+P=NP2KKZ5|h$)IzyOi+PXusftKR`*i-fAJPdU?b3-*MdD`|= zp_N(hoM*qcuDswIu#xA2&!M@j1^tVX(lRe*S2=wz(37>XwKIA*FSB@+7a!01^hbN* zyQH?g^A$<+aMIlN!{F`HlysfI(A=^u$I5dHu5aTmP+iTj!c(NnS8ciKbStUctX(T* zU+C8MPchqD`cm=D%&hEFLTX#HtCWrQyk^q4eEh&A7O!PeKE09?t~g#*l2dpg7%FsK zK#(Wklj}-deF4|NmRBiP+I%uTJ-9aE>8*R8*)()cwLEGqNL>+fl0Vd~p;7Y#vx{WQ zjwvpWzkgVK@yXYMC-N6u|8{>X`<=CYbLQWNWfgA^{YvSQJKy!<*=jvzubsROUp2oN z`Acpzy0RvD-p#|z@hi%r9lq#&{L^WlID@6-R?xgM<_Z5QzS#1y?{?X~Mc~z)tAP`Z z&$jKj!SjCCU$?s!JH;0`Njvr_bvY<ao4IrTObL;>yPOsG)*9*`651NPR&m0W!W7{Y zwMR~;a|%OOr3xD#Thepk(Z04Trk3xN4z0)vu6VahS?SZR=-32T*VL(>qu$G(zrSba z|7T|p-!AXxU%uHPKR^Hf6Y=_A>+65!zkB!Y-k!?OzrMb{zJ7nj?{8~o)_yq1e)?rj z7+<^dTGMND#6u@)o}ayE;dQO$OXd8Y|1R&(&wIZ-)9dVsk2_XfRG$`f=2_+}9;2G? zPF*{^4Cch$jpZqsz9Q$QtECLjx4`IpyP)FLpRe4@zsOUWD;|1AWU0u)E*AsFg+e=> zMI~A?q%X0>%IDACR)4GV=fc*UpK{ZS)|PRphwL_bp!SF{+i}5_38(zBmNQtsQ<|#~ zD7jN+(V?Y3KiWhcH1=qWlJ`hUJ)Ni)(t2`f;rh^{#y)zUKQBcaJ1&`Dw`cWi`E|aJ zFXbdGe*J23@;kx!O}TEV&*vCVEd83Qe^y>L!tLIyNX^dz+gw_XAN_1rvQYWsV<n}H z<z0uJE&o0LS(DcOcI!FjlD3(x21a`(&hj_ce55!nJkCT+GUU^&Nm}Nb32n!gRma}i zpt-hm0hdZwY+|I?#HH81=|nCR;_#mT>sfBb&y!o9CNws5dbhZImFt@wD7Ults-V8Z zww|QTlML=X-ILZCDr&6jTB^lacGsQXZO1g930@j+owyaRs<keh@Q7ovnz?%WT%N+6 zIUZ%n2bRZP{I~3Da(Lc-+1JKR?cd_R?K|~7Cg8K|?gP)wCcR&`Ty+Vz_NJdZR+w*E zY|L$S=jTbA31vT9^6qrUxmz1Aed=DE|6BC!B*~1MJ}SQ3Xa4JdX~~&-`nx9!tB!We z|Lg{nZt358vGcCpx^{A_dN_Nv(#_diS4H?blx>S`=TzMZt7;K-f5w>N;XGS4-f6ay zo9@@0UTimSyjd0?nt3pW;fzE<qUgjG*+mnoWKFHIC$G-<8j*E?i}iF=fB*CC`S14E zetvd#c6t7L`Lk~h_uKt=dA{ynxBcJCpwTo2IXO9oJ9qEO@Lgt?uL<$``RTKM-|@#b z=TC1++SVZzbJ8^8^5&Rq)2&gDE8^t)j<^4QeD><YSFc{ZIu*XdP2<z5*^@Qcv@_;v zOuK%<?7^wR$mQ$a_8hpa;OMe#$JWCSFO*d8dlx#rch(BGgx;%1jTvA6DwxV~_KVTt zom+42{PXKb@YJ1#mO?4&23y7T`jr~G3hPQUO_i4<me0_YZSU*8banGj?`35-OxRcD z?BkYnE18mX_{@VhDe@C9bf_Nv<Z6D<gYWjtCKp+$@D<biPOvPo4P@RmRoUxB@aaGE z7{j=HmtQhS&{JBi6MgYkySUqJuWg|hx3wJJw;)fPd-k>&-LVI&<qAF?nZGab&dCmg z*+z#At-fTMbllEg@?zSaM{8#GT?jk%vQu=KDrbmc(<EK-hRk`lbEfU^P%G>WsPYZd zyWq5Y)%D!P2PX)8-{O1e8UHWXS^&3CBA2Wtg)h|GCtA4O^R&&)kV|bwY3GDRroE1v zv2ts(wy&rj$C3i;V)?+}ok|8<1EO4nFQi^;y)fhY?zyMe&TkRP+Oz!d@8_Yr-|P7P zTJ-sEJkQB9o{ewsU%kKo@a31wc>T9LjVakW_vjC?j4P9FxNhrH>$iUV?P<_1oB0Jv z$w!pi9Z!DCJ@t2AGKb2xz<CwF^rlVCdMugKoBi5%d(RgWX8x<!PJ2jit&P2Yj${4? z7neLuMZUAIo@sb~;WV3<zdJ5`$D))6jcrU}2?D8&8XY}l+4~$=k9<BnIa(w5>ahh$ zDuOH;jgP*vxC!t-cYVQTy!&HB>$^wKpK|Q2{$5aDAGNQx`rq02cE3NJ&c9bvZGZdf z*>?GVukHUn{r|)M@9zG(PbWXt{Q7p={QnpK{r2<E*Z*4`|Myk+{$F1%``_PJ`+NSs z$NxXhzW?W0ja_`KtjemJiIF?j%~_v+@9zGoUu)L+eLwzq(W>LCzwTK#i?Qf*RK)3= zV#B3tUPqnZuycyctBMV5FDK15|K1_B`boO=)&*=kD!#gAsZBk6X4W%<&+}GjX=L>U zT{m9vIcL=@mGyJdwjN>=o%o9H^3PWj&Mul9#kj(8xzWn4S=0HC<#2JPE;8d;Ww3OU z(F)b43QV7`+&-0}CZc-OmLbzq+~a0$+Go}#4=?4z*|ziiG_?X}EaQ+|baab}WA^Et zohB=;D(zgE8xeR+sIF{%vE`SJ4;S`0c5Zi{eB}H!L!ZCT<h%}rYDHdE+p8CDzN7D{ zq4p7}Ivcx`>yx<7zTsOg6liO|jcw=NeVOeZ_qDD@U5~n}xqHf{vvclA@8*b~wySX0 z;<d)DH@}&Rq+8y2(Dl6GvMpPw)p3<d*(DJZ3hj0;Ula7K@><eTpOhc7es2r7nrZbU zb6eHYj+Eot6F1nNU$;?&muq!JZ$vRiLQjd(^dKd%P)YTb3_^hm(%w$-sI54nxX4%e zx5#uO&x@L3UL9_WBc99=Srp#xJYBzaefGB(Jz5GAE;pH0OlSyMS`nb*;;VS5s;sRg zYQ_ww^k9Fc?(37UA3f!}*<waualX)_iL(+#8r&8J+`h56bCT1%#J|U7KGoh7-}IRO z{iO5mZ)+AY)#m$u`*$t(zwg_>VeFFc4#=7>+`nF6@5Vgk7jyV;UYPxKXMXLU+};N| z(no7V4DKrLcw=d=6FSTPs9M98SXZ^i#S`CrFAh~$ux)zj+b@%+w}{_9>9jHbYI*hH z-YK*0oPB<NN7;=p1~Dg8XIUlcp2~Q5Xm>fo_EgR9)=pXrR3Fb_opp%aG<T;Br=M}_ ziWQDJy?>g8JW?mmdmiTSx$Rs+fKSBUO+q}a(@MXVe$BtP=kK4dyUX9-v%MpK_wTc3 z&*J~T3a|f`U-$Lp^7($3AAWs(eSZDFpS$MS|NC*c{`>oXug?GfbN>CicXq$ue767f z<gxy~Keb}-GiM!ZW9yndd-nW4Pt*kuE}b_m`Q80#sg)HKGkm)bPCuHhX?FjN*4(oa zJn^3vy*wmxpv7x)<hIV6394M&TiW-SP5daF=cu`PH@8uHBFnOJ(*$vjOtIq!|6TBG zU3E{t_`?~K9A5#WoBpA!W@h&+uO^FU@pgoq65VsZ+;RD<8>QcQBQ>`B*WZ%+mizR8 z-fffQ2NK1xQzlL5d*ZKrJg<c#l(F}cPlc1)m47)~OTSKT$TSw#T=nYj%T1Y5E2Yl< z<vp7i{aZa`>P4MfT3i3>Ejv8(!QD*rS26!qcU(D^_xy@jdd3S@!}OaMmnpqoHe>IV zGB^2|Vw=w{n%?(xVZG#m+a^aB`wLrzIv6zt8ab<9yuCQvCI9cYqDHe-u0}_SZ_k>X zX0jqMn05Of&9+q+M0#7ivUXd!x~!Eu^<t8g;LIp7_gglfrj}p28y?tbWwKt-bJFBJ zx#j!0stl$vh?=~bwO08>(k1De3fhM>1VTauwUmWC=O13aEd4Fx<okP7Ztv*--=un9 z*!($vrf_B8fx0<u#o=$`UVT^-^L3Tkgs2A*{S)U_v?`k2++P0pLVe!U;zz1oY3sJL zwY*f?s@J|?Y4qiyy~~sQZ8(3kf4K9u?q%f-F=K1J52-i3Ka1)!bidr;WiTUX>r>?b zCh^@?k~=+mmbEWSTR+oD^y-93D^}ZBtmw_s)t%?IIZ(kxLQhB1ZBqX>S;@(&8_!Ji z<Xqh??6~;M@vGB29<SWDyS}EvX5Bmax*s3a?SKE=|9}4fzxChq>mqaN{(cSL|MzWv z{rBDXeLw$s{{P$kfBFAk|NnG({=YBV_y2tx9$)wEZTR~B@9&>w23>vpvBIu>RZxs! z?WdFK^*^WA|NMAd{`9N(y01s=|2#AA@BhAZ%JJjwsdN1Mx3kCRuj6}qEx-HJ)>#}% zHd`E-)=C$ycIaw4IPbvCbce_lQB!lLOXr$ASDK|_ICB|i!<OtQFNYWBdS+#Z&;R$% zSF6v@)zxUG)!$ITi%mPCbB!;n{YZ1?_%55(q_u}NQkXa6^07J5uee@vSk)c~lz#3c zl5utK((2hy4OiKo(wM3nmz_7ss-5B8O3S4MhggiyCmU>G<oRW$Cvi)#>e6DnlMY{& z)@uKcy7eUZ)QlJJ!ZS9@wk;}}YU(<b!Rhyp?crN%wmq-Bmo8wpe;f0%U6S{#XZKk5 zr+Hb{v;@Cz7LVd7ynH&R@2kl58B=9`ZM`f!@9VzxyO-=%Q9U%<Np<btm+Bb;-)=ND zUPxk75M3f_qA9nlMZL(oz08D%C+(#69JgGT%ipYbO$`$2pKQ16*{=z`vqE0a@~jYK z<PDq^7(HQ;GiR#Uo(_R9&Mi4QntFUK9Hz0nD-zm|rSh;&zu=h|6jZTXL@7om({9lf zKY^*IFTZL1^)cC0&41OcGM)X)_g2e=e9)QjjbCYgr`;u;_SpGXJ_qj-X}!JTQ_@Mp zC(}1AwzrqGxn(SUzxb-Ba8TL057Y7*_C^*}8Kz}yxI53JzUt@S@~QIr&zAG&@7NZs z?43EGp+wN7?)nae6;FTLEm^;0N$I1|Lo+s=Yw`1+R1>ai5c=}8?_3S7MVX2Vm-NkN z5j^wRRy|yxF!JIX+tuy6A_8Oz4px5My2>|v(dU<M1V6si|MzA3{y&@d|G7H<e%*&x z`~Urtuls$w{>P*5|4VG-?Ek)49KQbDw97AFUtj<K-~K<-@BjIA{q)a|@4o$7+;3O( zef`Pbzqd~f^4hs~@88Y#zc=sy$N&Ff{NL5}Pmh1D|F?Vp-(RcOzk7dQ@ARS);i}jj zVa?aWH>(}uN;)Kv&w9{#kypqC)$qI=lLn8}G=osirBnXpJvz$G?sEBGDnsVUFLTZu z;p-H;aa(EU)WnJB{<zJ5&#?2>EQ3(prx%p{w}0i=JScD^Zu0hnHM^hMYWpZfM|(M~ z)A}CB;F5A6-|j?0yvDN=7d__qYgg@E((aXABGVgibisw$CTBtxExYHsX|J&7O^$`U zYvm7JOI*z%TzGvC@7W`s4za##7PvIN`^$N!SS>k2*)hjaIC;6LZ}83BuX@RoZsgW5 zFHd5)6WuDobn)K#Tzy9`8!OJGZ)QKf*l*^s*H>d!XZXRG1$k?lKUS1Itoga~WNOW$ zcV;&pwnpz1kD4{Rp|bt#yA2zw*%Y>&n&xut-_q*b-M!D`uLgOgZn`V%9C-PVp;v{R zY$s<{-0nT6F1Q|=yQ*V_5bFv>*M%wvPaO+34xX%Wa^lkPwr$&jj`ju}&2e(nzv26J zif`-w?R$>$mG6;^i+{6p-{IGPmu#^W*V`NMe_p;o{I0;<MYF}_Bpxlz?}+>GW<zjV z+zO|p@BW%qiob3gRkkrc@HKGxo;wdC(|f)?TDACM*5n|qs%mwmu9rIx+C4p`FSh64 z&zzmbwJdASTV3>Czb7rAKz`4Y|EE`_X(}pyo5|N3*p{(Ebh^sT^eNme1t;HZO4`sc z(~n6w*mYI7*ZZvFD`%GL3*5`+%`@o_nCYUFWpOuggJjm4o;?S{cUFG=xSC(<!_TW{ z@5cW*8vp0h^!l>$^6$@P=l_59|95@e_ucn(mw$GbzjOC)%-)~hUjP3w|6jS_&)NHb z&eq@m=Tgb9$@V|LO!l|4l<UvGzt8vV@wac^&j0i1^8R0|_y2kgI=0}?Bk}k9em#3w zVSoPf$BLd^KVsBclh(yN`IcqmbJ=9}%2fMTS6M4xRG+=S@<5PMM)ddju{syp@;|=0 zma23j;6=v_onnbkUqYU34!f~}_2$#5E6=KgENygRVlaI=SJvUKfSiY{uknm8kL`pP zFFpEw#Z;k7a&abmtD8iQ{g}k%ZRlFIW2S@p#kC~@n=|L}-&{V)X1+LQkj+|-0N)dC zv4<9KTGzw1^5iQfg@^C5`H!Z~xAZPrsB9Fj)N1Lo%*So#vw3Pijh)%8eJ@w2{Jdj# z$NowCiW`5PoVz8wT{%_%vdPrUOUF7SJFc8dUzpbOe#ROH*4_MXR;0+zxVG*6LAM}J z!HYJspDd!YbMK!GVT_+{_9sVijcN9hMJ^p?m4Qun7AVPzPfxgh%f;jHf9G7s*-Q(c zn!d4ou*iB@vkzz9qw-JEGlE=94l5m2PUk#o@+-L4?M-LLt*gtGA2oL|J+@gXHbp6G zi;+&D<>#I)KiyY7D+*}!I47%e!edW!+7ISAJ68x_o%TVha$VZu@6IdYRHPTgw)w5% z^uHJXdEfq%w|!0H-${Lcn%faopR?=G=64@fKG>Y0DIndw%g-Qh>PlW8p`ep%^Nw~i zdiy5}FB9jU=W%0OqxY@sV&T#Un|lQ(dw6%;-6kUG%h$1Oq0M*eL*4C#3oS(BYHsdm zd{8uPrS7wfENol?xii$(^1PnR!ui&aKdFI{)yh%*m5<1x6=IE@Vz-uPFu6!?Rb>rv z60s~uO@FJ_+p2ga=I&~b(xod_WHNp^WxT@s;e^LU%T`SN`Rm)e{yh6X-T(j9|9CwA zZ;j>J_&@(X>)ZYQ`@a5vb@~3iyX|Du;?LFppa1{c-QDf+|9@RSz3I<K`Trl!UY#S; z_xWdu-TWfUi4!Xr{FYySKEM9o)9LYgr!TRWSj<1atf*KxtiVEsuQ>4Zg6Q^^m2RS( z`NokA50`jUICFciC^#be&Zc8yt8J&*&PCjuQHR#CaJZi2U#RKiQu1bnZv%(B%H-RV zjPxr%t#Xh)5GXK(qx`B!oY|eNJ35vz3Ei6W?BbOD8RZ2%swLbR=Tl1*=f10yNpF~A zUcE_m-Er;7>t5bl^l1U(R+d92<U%j4vfJ8Scqel2rPWb+wUgg2mc4t+Z^gzBr|Yji z>G-=ta$oDUGiya1!_MC`Kc4sQU0qhZz52QPi^_X%&UtxGV&D4itkibH%f3rj=Gson zx@u=Vjq~y}5qrIjt9IIFFUjnbN$T4#cWBFfR}R;iQ+}UI%=GeU)tJ(D&1|QO;Mcwn zstYzO`RU`dysbq@PSbg^ZcxsqJ)s@d$$OcVwY4^WTeRxR6qkTSt9?Y(*fvIGs~$== zzZL4>ZD_pW)zwh#iVFfESM|!yPR-3YXSPtb_t=7GMn{dE1DhH-)-ff|ek+`?%p*u? zdZBNqUyyCKjln7=y)!SR*O%0o?cI4|UomI-%7TZ*`bYR3`(lHl=7nu~|HE#&>gP_` z0_n^+(*?#k@iUX=i%+sTc0;b}rlqjYS4-onC%QHlXTQ<h@|W+Tu*5>^n41@}zNxgt zzI-=->08FQu2d(z61~M6VpaYu+JE4RK<4X3W|!aJy!*y-nalZOZ_mrKGwANDTja`p zB;ja@*j&-cw-_06+O$fVW*y-0ZWNhNcsufwsP23h>2jvOhQYmJ467FUxP>0dHt?!Y z<vafQ@ZrZl_gs0r^WT%n^Z$LB>|g(F^ZeM@*xHZ&^XtFeOh4X!{PN+&-2KPd-9&%= z-CZ8P|DRh^duG_d$A3T8{K?P1w};X4d~w@~+TU-t*MBdsH}{>a@$cLJKl}gxyI%jj z|NoEv*Sn;;I<7>WjAUIp<#3EwAm?|52*tzz-KY|;PUn{O4+XDsRUI>#u|vR6)-v!d zZ-OOnQ0V(FYc^J9>HoF)I(0c)%Y-`%r|8WpICSICVs_!87qYjcJ9kNUa#(K+X%k>N z7$y8rxJjMqm+l$c8(axdvnNlAk&HXee(G-j@#L;BFU@6>4;cShuFB1%6nI6!OIvEo zw<{f9JDPm<ew^}<*HlKt^(ObG<Mp0x+qQO?eA&4m{enYDoqGw_nX_ko>lW-OveiF* zX;;>6t<N^g<&5@!-nC9nvAy}kQNMNCe#h7SbxKvcQzjO9tf*|SKkKWbv)}EjlHDS1 z+T-h`x!FXsYm4stqnQfI0oe!MUF1{m2yxrLIOX+PtrKPO5-*Ph3l`4mInCIbwV~(W zD$%XId!1bZq|Yl&4(rNdxGK%EVy4M29UqUl*t<CsCVx{uKJ)4ouf_!4U+3B`GB+>k z;@;ra9@d@ySh7)T-gfscDU&tKB3_!7j^E}byLIjnYq<8b{QiF3-4hc2b;q#SXK4O- zvcA9Op8RL^xJ7d_#n;X_>36n6jBDoPjN5NN%rgsGd@*qIbnbiJ)|=Ir&77EU;nN49 zUJdC5LKmKFb|~{-x^2$k>GMyWj(>jA<V(BF@6JvppXha49c{AX{Y>Xis@T+jfip~m z)oixxg2_o@!3(p*GYog9XI-{mn6E4>G|}jLSl{o>e4RR-X~GIdt&<;>3bHj>#N0j8 z{`v3AwPL@&Jm3H0=JNVauiiCBy*9sJ^Z94`{JquR*Ii4U_k2a2)m)`V5C8r6_V#wv z>Y1|r&pVVG%HQ9+`eBZ>>yf{IL5mf3N4<Xh@<;r?_5Z(r)~}z>GbQTvE~baq!;KAm zvywfYzEe|7_?lJAt|E}0q|RixPW|l5wMtrEl1%J(h0U27lT^KgjxMsi#JiJ4$#(7Y zyXmQBsk3C;cbVQ_c9GB5I9T`PZm)Tc_y5N1`IRQ-=%4Cax}vCBymi~m^vQW~F`2tN zGM~(PHhJ>#^61-sQCuz4l<L>ZeYrQy^V7Di&C$_r*UTOkI4W%ZthA=|f)kg?^fsYO zwNJekbhK1w&+yW`bJF?6zaz|Y9eWecO<!u8xl}Xn)BAaT%lT#;3qEkKuYIR?M^5>% zeZAcmPremMwaQ4z>1mYktk&(ZOY(QFeRQu{sqe<bEg}-nPER{}Mke0y<^kI|EuNy^ z{ykf%kr8P9PH+?B4U_V(Zwe3Ie4KdXb5ELIXQRgL$kJZlexZgJYj(#w3YR2{r3Srr z*nMR~&+=BKBtNI5MLP;unKW`0XDqY7dMRMd%z`zF8MpUreD`zTuPGH@-b*XLY7I}k z?D@-{S^e)Ji!bw)qdS+cnEsDXbH@5zf1Inc8uvKN6__enefhA*ROiE6zkHABS5A20 zkakLs)2<?sSw8vJg>Kf_k6vz#+QF)!EPO+1(Pr<Z^EspSmrU;sOii9Yy~=(A&*e5F z&NFYdJXu=KU6q)2@=@Z-H>Zt!SD3Gv*eQ~#`SjK@?XAr(SmrV&|8~&W+L0kJ@!iC4 z3OyoQ8VkR)ugcZB`Zc9xLeMhHj;;kCN}}YaFZJS_cKGXEfBx;Czh1ri@Y%O-S52m` z-&gnd?CkRUd#bB#=3gsF)hYe?YqtLL!w=u?&c7;TXmj;ycJJq(d)DQ-su`;vEs4Fp ze*eE;uh;L3y8iXE{yr=H*PHCl9bK1~Cpc%BKz)qgu^$yo>6=)*XJss2$89{#hj&T( znbos=ZWY~Pn0;oG!qeyS4d1T33CRjLGG|qqF<YlaqjvGknUi*W=n(i|FjbCsy_qam zLRiq_>*ni2mNsp@CbMf2kEuxWs*dU%S2V8aR46@sShCB)Mo4h_uG(q$f*7ti1uedR z%Jvd(nAgIaCTD$hly}TpFI`#Lt9nlJ>S@lM#=+|f|5vbB%$%9|b;8nT^WGbX&*q=} zOl$40T_KSiYXhSb@}<8uHB8RpDZh5>p{6FcQ|u%Ob*|G_R!8l<7WI0T=Mtukk^ENi zcV*6;*?lSH#z|v|q@c$O62ER*vg+#exJ47nQ_tVh-1U^<c$&?8erwLdGxiCrns)Z2 z$xYUiNB?Rb{<diw?}dmsJ=SdFS*9l#72IaHc_la*nMJ(d@qf90MNv^;CxfVC#|r(H z1D^5Qi-TBVl#c9W3h`-hRO7gN{c~mPG*e>%&ns7z5B1zscorgm_Vnq}ZJC>Xu3FK0 zV66j>kWhBj@t7kGUZD%UXG~cX&=e4$wZwr%B-pS+s;lhkbfE`Rp1jIy&0MUxYr~U} z;*gGmVNa$l&58c`aGyf%`9EdSclz$1l{gUVT5~DZMl$x*x(5Z@jbuKGzfnz?Kkcwy zz&(Ze6@g4$7a#h*4V7t|H<v?I{ha@U$+KN~Q@`(ZJF?wuu8&Z}hSjz+&xuwT{!O^= zyD$I8??;;gqJ$n)M{j?A_`Y4bKulKnFV!<oBd^4VRfKZzEHGGM8)kIz`mD-=PT83* z>Wy8iTn;;>Dc|0|@8g*ruXhBCUR%6f``Dbdno*M)bVPU;u3*hw8@gr6%UdU2zYZ^# z-?Pi^&W;ZsYpTA#JNx+Y<DWI_woVJmTD$!5rZuapCl~~uW|Aq5z5e;9&E^iLvqydw z{Qps5v-9^Ro#(GEp3}VD{5d~={rYuj#=-_odh;$D7rOnsXX-Sk#L1=lg5%`SID@9( z+<AtEKXp1gu3O#7v3zi9y-cM2PZz1KnVp#iOaJPYr@gto_}IT18OG$ZX8Ue0{T?_e z<x1j~^U22fTV)#4BihxY{ujE%KQm6rvr<lqyv}&Hv|r`clD{zy#y-<zJ_&R(h0fip zXx!s?@#L~aci8r(lr$Eno!0f-=CVE4<oAwO!aF?ovHaHP><Bn)GBwFq^s%R0(OHGp zl{b}_wD)ZGm-_1Yj`8tJ-RdWAa}_IhGrqifHMCxB`<8np&)>7p@Lyp#VR>MgKyya( z&i<1VJUpTtHJr{r;BCrLQ}Q{nY|cVS>1-9{<6LVN#ctnuF}<Ootz+5lyx8ldYfo=7 zSP-@8!OmdQDYFyhbxkIBF|63SRaWWI(Yp)TI5(Q*zVdoj_GE|0$#sPu|8Hq;N_F2- zsj=zW_lRv1bw0-IxPM>QzOUueUE`B{<@-F&{AixRJ1?%hP9gKC*UPo{SyPJEo1cxl zT|Mtfg>&KYhIgime>Su)tnRtKUGDO{Pc6S>oAsaF`)ahL>0`8M#k<RD-)!&9`u;Iz z!~C;OCr+Grd3vA4uGLWrUQ5kZC@Q@;%fve4Tgq0?w+dMoCM_%4envKIRpTs0^-88# zjXdTvcV%NG9tp0wv39*vi{ea{DUP@GzV2C<y36)=VWe2>D{bAdQ<af@#~;rw&zF~z z3(A>Pwjwn$Wg>@0*VL6a6rHYJ4gOnEWi!2Ul4nG+tv<6=&5U&oD@A-}&fsd!oVmQ; z?$?WV-^`3XY_GNTiU=&!TBa~tCiv``fUdsPk(x`VWXfz>Iwf=7SucBAbM>1NeQ$+R z7%Cof&Yt-)<jk_I%YGzXD%5>zK5fNow%#enrnN-5h&(wH<;?0>ZqCiX8Wn2PAndv4 z#)`I$|1bRN+f-k8VY>^H|F#Z|O^c(Z$0gZLOSP5jKfOuig=PBeqaq3~G*9fYpZome zv&wz5x~3-8mX{iHwXNs*F3=+Uu;BaEWLDLUy_&Bs1byp|uR57I<7KQ>wr1+Qv&*#e zjc&#=G+8$-ozkZnu(L<tmP+LteR=c6RnI#8FNb&uZZOT&RLb=G+~Q-F@%&!S1wFUD zEPOLp%*=c>X`6mt(C&s8!cFQ5iH%Z<Jy-k{lg*7Ryl2+&cu$^_qO)GpLelZt)_$?i zkG6UXTydDNRWVcSe734{7H@g`jBS@qtB<hFi4V(vcR;{2Tw#^fAuosdOSTmqU+wg) zWrkz%WF_mr;g8<#sek@(PJU$*W17X;x{4iF_q=!Ou9Y|Y?7sfjKgp~!?|*cj_y4`u zXUhVaZ;Nl#uDWA3|E#ym5wqtmHu*Em9(tx%zEz+3``U-fgUYur{a{V5sOGUY@!CC^ z?|}O$u1Bg9UeulXzbSwH^ZyI4en@LwSZ1(mS<k}5ZkO}Lq#KQe4}=<ai$yGq>S9tg zS-|<9f8!sO)N{?{d()rGxd`unw%hda1&ue?FaOKF#4PtpabauFIlbq{A3y&1uf*>D zy<_h41(uaYo<IHR!-oQ^xnl8cY3sUQoVl{aQ_Dy$O7Ypdm{^T-5k|L;6y<jWb#Zkm zvipXIx9^^PJG^{*`{5-{Rk_!jm_jFec1bb(iaM&8q$O+VyWq{|hlgISs64}4>ow_j zXzr1d&wJ~0PH1hf=DfP)sIQB4)e`nK0k<qUL_Z2#ee!Bq_kyYwK{Kblf2F9jCT{Dj zNGXX~?ok~HCp)A049aVR_I6C|{K)y{p@q_<4Th1|OCzVfFtmF9`PYXJAAbCpA#Eo< z|BBbe%yaU(S&ODf?c1fZagFJ+n`+v<d{S%Ml~rt-N^PrKq8(j&S4{9QkGS}WW#-yd zLT9DcYrNAdI+u1)=dkLdop*Fpg_ntQIzBd;nRDyj3c+M$YX^gO>qJ6*b$!foxmITg zUC6Y`S+(fj6ut>(_pRyEEU#lXe7W~o+&{V4|5_qZ{=bx3d>rO-sYoQbdU)kl?>iIJ zu<eJxu2$5M+V&ZYlXF%qOEQ}&w`ut*QBV054+VGbYn(js<%CO@>VIu?6ZDntwyxf? z*XFy$vjU^(S-(nxRTHdqE+ktz2`FaY>hKiJjfl)NJe}ZhbpF-O=N}8~7c?ZA7u}hC z{Ci>+Z@{0wy|=iNW_Abvbr-oV9y-^RZF+|Bq}%JX@;nSecbllk{W*00|GPNpoAamK zUG}yq;-I2_<v)#;zvCm0-*?@TH*x3xEdPu>`~R6&U1zv#x0AbvRnuL6cHI;2`?2bh znQfc6)iy4&I@~pl(}>eILc&X=OCx7Z_skY!ErU1fJKvdjy}i8rf(ncM&V>$#TbcMH zW&L<{uRh)X?{NP4=buYVW%Kg*+h4C<{d)W9pln+?`M%SI7E9S?wlQvd^t`mUG<I{P z(QKCsC$^tGvQ#VVe7C4jBG=WQ1r{|0<-Z@cujeZ^T<F5Py&?E$P&qR@N1MB={I<;Z z)kX8~u}oH6#OO2g%a+~qich4sU8?mtf9=JI)iyp$U;dM3vx?dlmCZfthQ`VKi%a}7 zZZ7n+^t_s(m}Q`pWLao6g=y-+Ro@x?>(?#0|C}@BM(n<<*Spe`T|Huxdreu5wbg#Z z)&fjewM*yp$BLTY&;H%rU4Hzr;Dw-5B{TM%2sNC1X_igsY#&WW`+0vWqFffum=>hA zwYjS7(yB#5aj$pjZPl|e+^U-ubmc|LLfhbJ3+q|DGy|NTvvp@azHKr8yz=52@6F1| zYyJ0!@_C&8l5)@bNZxG8InpPhPfwZV*}9{8sY|SB&AZ0)yIUCF+4KEgax>jN@As@5 z|3BYVI?6ifZjAn8O^z(jmV`yA8Yfn-S`}%av!=>5P`4q}TT4eV>Qqiu0e^YaN=tA5 zUEZhqgCf1ox7PBkF1&85!TeCk)ir}j*f>ye-g_P8rc%)rZ5^Gnthjw0H8pZ`A7#IL zJ!jpmlh%SJ)1O^BEL>MEZCNC}ZJ*7|J$J6{U2j}H?aJcllNDkNyO%$zeP8g-`cTh2 zKbHI4{b9G)OYc@ZSjM~jljjwNZ@bQ);CQCawj*%GuLl>|js(ZwTJbdYO{LZAr{S+A z%N4S_cJE`|BKP25O!ZFbAKR8s+Fi}N`?tc9#6QC9HHEGxe%E<LEWTOUb;~g~$XcUo z1*cCyhv$_LlU+}3eWQK%TJSOT8J2f%7D^9S{~b4VwFZlEPwraNMNgbwe4QRYclzby z^<Uf{Ykb_g?)9t<_hf8k`P%2OMz*9o^&QyzYuc@A)7k}va(QPbmiD~j%38SaOz_UV zGwmx%e;-^eef3Q1y4-i}E-X_dqqHV0YU5<M?Zbc3x;aVH&r#@@IoI_SWtKwni??<E zQBYs7RH5TVhLuyU6Pv+;i-)~G#}`kj3E+9eu)uW}-#^Y}=kA6Y{|(uF)>k>nD390u zzU5ox%Sur-KkIy!q&eB{p6~y)!tSZjr;i^$o}Ilt|Ng$(?*%c}MK=VUdRU;bG$wX! zyR)wA>6FVRzUw&jC;OE#Xgu`(`gv2=n)S;JHfL^Isq&%OwB{^#cMF%YNA5iP&I5VL z=5~AxMF#7;&b&C8zTn!fHOnX7o&4vY%$c^Sdy@+MGbN>c-`JTk-!*z?yVr8{Vu8Mf zrjNC|svarb)>z(}Tyir;{!)?Vr0F^ymK)r}la{dAJF^(s*!c$gzFRwYsb+V8q~yCP z2PNhyw~2Tkb}`<XI4k69jotE`h|q;D9!3}V+fUZ6+xlqEk@r)UAF{n=>YUTkRmMDL zl8~YoYY2zIeBs0eQ=J!jY`r3#xhd<mb&!D8!?3B#T$vqPoUAWho8@Bmw!)J4Zo7Jc z@SgA7we`(=+C3^OjqLwR@wK}AZ^||KQR9B&bi|$&i|XT^)J^&M(DS6urEsR*f$QFd zPBgl=+sdu}n#(0kqc^ORdk_9v67W`9fA@vrIJ;%yA1;XBPoJFethPnU`NsU9@|yJ4 z_Z&;hc09kp{Nh8TZ^%>Ex$4^<8{N0=2)Gz9#b(XKiBE;Egm5oZa$Ul5`yNY_)XJQg z@L;x6Ic_bFY!9d$cCm?gDY&LYyv>EVaYovq3dUWAE7m=KS`p{R&(AOa@5y12a-Gwg z)|uW}p1Et^zIo3r0~3?iY^l=lN-l4k@l?dS|Er1!-y81CETN<YjBPW#ckZ>S`SI#o zbNF@neY@tKp2RRk?|$(@H{KcBOqO!8&viL?ES1~TP<NH9>*u#~xA#u5FylWM=2Y`0 zb6d?EwMv5(lU7_zSh9?j^_|?kUCxtU-<sy%75AYm?&U}4uuE$m^0=5TI_+Il<SVJ@ ze*5R``(3^dHvGK(Dlc(~2=DZxuRnhL^X(r9)I`ajKfSyB{l34?-hQkpQg=4mdf?ZF z@>y%97@d6zS~vFUmBH(`Z{N1dpDVv^KBJ>_?LL<yLg}KNqE0h{EI2t1hX`GG^Jpul z@159`dCR(2e=###bMdcea`LSG&mt~9%`w|pec0Z7-r;jo@72gAZ+Q7m(f|4U$bjn~ z`WpRi>abTAI|Q3=k=PNqs$AV!e?Ci1h3Eyo6@HQ-Z@W%#Z%r3sO<EI@AUQ)oNz3$7 zZRVjbK9}4DuB1MwPFkj#&U4x1?p`g;S+=(}>1@=K6Fei}ePy4y=k7gfJa^}=TQoH< z^S|fjovL2`G1eO!Q+(#`v7WK!ZNkcTvtFKD_IT2AU!~iHPv(AP`|2Hh&~M8}{h%o} zk>~cFFa0iav`AC(r(pNt^!Wd=R<kbsoqapqLf=?9=T~QQ?se{M%igA1rdIuluMyC? zQ{$aG@1)<<$?tjCYF=hmb+Ola{`qyMSKq&D{sjNJHyh5qS+0F4pFw8jslUe0c0N6A zJ>5*x`}|_jfY@(BQ9Iwbd_KZ?(qrp1wVM}P92L98uAZ=n>{LC!u{73i`Q?{iI1=Wa z&SCv|k8kF(mjxCR<~;xT>{*(`hB?`brc3k)Xou<^pZ==Hr+4L6rH)LajM(!6rmaow zJMYBA?%lO>=iZ%G0n1K4%be9c!*%-eufEK)&PR#p$q4P%3BNg`+|>8kg5uTAlOkum zem3deO6FNl6=t5`>^XBd<nx+4N4{+3n_wSh&=mfh!zpJio3h6W(E}l6r<_lU?AFuj z;+}oWBCfsZ%H880n|;qG^-j1Pbbs&e|G#FN$M667?c>KU-`>7FJKOyIJ=-fEDt9rx ziMd`HYr5UoH?g7SYF=L6I=*kOu0H<wV*R^ohg0635wdn(@W?djP-0MU;B569R~x@@ z=xyX$?4)NGJbQ=m?=3rDy;DAa+V;-&OPiuk=lb8>F}-I&0@rsd<;+Irhj%_DY@VC- zUBW|p#k-K{0^U13|KIz#NTDqM@#>9JH(uG4w^Ow?Y3Ae=3eFLlN{LJcnHioeJdIrz zpH&)FUH7bgY2(D}>F_#ZON{052oa;V`N5hmmIQQ0{MsFn70VLIZ7TR&_eZ!d3*V|; zyIoqBe>};mwX=V5zHf2=w_cy)6UCM<xYN1od-ipO9iP4WGA_OII3U+~Gjvw{2Zk@b z=Oquy>n;EPF7|HsqbbuT82*;Mx8eT7nUTMb?kdjQEoPG`kbM2vJMM>d1yYASrkl^z z(Y<+y|LU1(y8`C#VvgFhdd=)hlaywcFX@Rs|8ILiw!XRNQoc7%yR41Z8b-A0Jxnl& z3GLdX@O+MmsNq&0t#%6$t8Tvw*{fFFbKor#FkQr=lU(QWe3}NY<ad)v-0n)n8ml+W zvPfFHaf99(^)~OS3=xsDavr|T#~;7^_i@J@`EzUX9&HbAzkT@4>z{jMPPcH_$H?2& zlotPaarI?MkZ$|R8Pk6M{_WYjNKmB3Ph;|{6vkrR*O?!eUW>Y}z$CELdx6rSMKP}* zo_nU<nf>+kA?>5F8*ekeTlZ*{#HD~`jD=I3v_d%wMIBxWO>y3-cqG%W!*pk<+PNne zuD6_gBv!tQ`}&7hS8WBe7rp#sweGZvrmgV|j+;(l*=NdHn>ae9maKk|WjDv4zr=09 z7Y`nOMpyOhqO#z#3$yu(s*g{)pygdrVqj6KP<vo8r;3u_^2r@%KBp{ur<WuUeeLQ? z&VzgEWA^=fb^CgJ{pX|8*T?Vwx9i%k0vmnr)>(dEE<BBy&29Vno{*`n@8_6hnOd&# zckkAIxoBQ)e!Y0(?bnC>?SB1e=6}aG*|qdU)mf#<cjeZFzSzihh|lQbfy}k1HEX_p zS$%EkTLlLO)32!^TCow59PQ3mB^)wlY6u;ix^?DT7sl}Cw|ZV3ER7ZZW^q3JEz@#^ z+DN~g2l*F&?yB0bE7E834BwX(%F5pp#n(#jF`mULV0v}#-_x#Q>(6eOYw5X!D<pBz zDFN~8p(#>Ar|x|1YN?LBUK$%NJSFH#h(mmBdk?3BsH1LRc)!~e6OQ7GH`eW$7b#F= zaV1JzZ(rD?RjTQSo=??SRGd(#9k}enfue6`GI|!QnyK(h`s@@RPZ91V909C?HVT^< zLp^!st1c{1)joXU(Yh=zuB;Z1nIfy4lpPu;cdU?XRiC87y7+>yp6Ep1?s9?Hwyqq% z&&!{><ft3$oUu1{-v7T3LQhRwy)X4SZ-M{pIXS`YUus`&eq87MR^iw`xkF0RpDa$e zW%DEEo6)SLpJWZr$bV&@-f-%@<IFuaTaI*h-S{45`$5*$bpP{(pKM><_*<XSzwfHs zL^&?mi2W|25r;o-PY=^wn0#}~Hs>&-UAen;ws=RfJnXqMH?&qw@9Z+e{MpgdpUpcL z&k}$4&b-%NRY40sG0iyiv2xz^Qq`l`9ZyAf$nZ%$Qi-kk%5@-Z_oTy_mWfXk(!NW5 z+3F|7HQ#3)Us-YNx^=npQjP3omIYn7HcRN%-r%<rt6SPw0~3~AdbCY?g^G3f8zHst z`-|R7UsDTr6x_1%QNk<jQ*NxnogC6rP9(U<CTr)KKWC}(a_PC~JlkvKw*^gJMkTML zmCWAe?cVDeF0u7>h>+Un(wOU}^;=42U4I!9zJB@RPrqJo|NnOL{rZnjUz_LO+gttn zLq*i|R}Y(vR$iR@eCahQJxiUl9OaCCmwOJIFn@aX>&IL3@7F(<%s74b?%9v&U-ukg zFAvtNnvu4?$gW#yU0Sn@i+JWoCf&UjukXIxvtp6YtU38F9ZWZ8&I|s!lXXFHcmKf- zt1b?=yUPydv>L=tdH435q@H8>vsdTt*s?E7zG4}+>b$GNsxIz=f_T={3?*y9yvJ#q zZY<ebt`Zv)dyS*GYV!Rru?zIGudG_SrA%N`{_%JV)n9p;ITu5xUU?>^;-*w%@tcET z$x@-I;VuzBDq}e<jxII~z8&VVb>~`rzqbN89apA{MV**t^79Q}@zEt+o@+awOg_v! z-C&|X_GaH1N9)|yev?%`{@&n5Z^w1<|G&QHUB5Rw;rk_#lJ)EU$3=bNpV>6+eZ;)K zpHJWG5AQyuckywjLAd_x6R|y)`DHY|A6hA`EE+rML&(gNu{X25^KYMZW!dn6gWd2d zlWyA45-#mkt;?DY&hzCpd0gZ%;lFq2OVbG}kFdl_95kJ7f6wl<?gOI}hhy$U+TNL4 zy0&y>sp8+q{q{9B^IcMG^<VE=lPzYc=B?^<Ej86cv$$o3=gi(Kr(VSghD^;g3f&vE zPHBgp<@(J|3j9^;Tu(n#SfBU2-_B;wuG#DOleYPl1?*_4@S7MCA}qp_Cs?>wHQjB4 z*|v}+?=;h=%1BwsPF}5}sKgcQ?Dn>E^22>6na&!?>)px|vE6p|c#Q-vqaXkKN8b)M zd=e37D(R~Bt>8$@%v=$5f-7pC-71&a$K73T-*Gu&B7f&^jh%J!thA0buXkOE2%C5Q z>)G9pr^na+z4?CspI2Ya`Imp*b;X?DbW^XTb&hJ+g9fG79~m_ch;WFrGsj&~i}!#2 z^y9;aCev4n)RtDSSv^nufp~pMd9|(Y<wrg3Q+X0*sYSn*<nii#8uP#Y-n}(D`;t#y z`=V)7%+J6vX;ItaRhR!p{r|5%<?G({UxU)V23(6RP3shHvrTc^QEgx0^6m};N8_Yd zmr{<GXb9c7;asufchvn;le5|S)z7-NtVmw>YrRGM?pG3t(H>>laz}OspSW_@+e>qu ztf}j^L;H`U2Wn?2e<<vcY5sP}sXlA(689@LS#6yXkFUQuoHdDeeXC%_3<0qTReT$~ zcU->9D>`@4>s1CJp{+k2n0)MJ|FV@YVeT}G{%2dwxjg-!@F)l}S~46D=v#4V3uDuV z97b1Xm9#gzTAnSNu=!D<$=Sj`vsyhJlNer|V=&{tF>TXH_0_VE<}7;mtTo23@$lDm zFEjXFw6&=+cTc{4PBTe8@tNX<ol_qiRC|AP&FSe=yDy)5!^wW{v*^dw+ApSy)xFbm z`J&SLbY@Na^Zmake|_(0^T$|Zs=CUm=kx3>p2yVWwr?*`o}+T6Q1qK+ya<ojo83R9 z-PGJutlFLnbaV=Py3Y}qoa_;PL|d!pqfL31XOb)bDG3F}S&B0v9gV*v#of8$9NcfH zn$07jn-^t%p2c~7*lWj&Tb?}r7_cm6S<bT;GlKd%+W!{LTDC8q*LjJqu)xmg9$#JD z7>kmW?&ocP7qIE+njRIyXXV#V&P=fVvVNUeeq8*%%B?ro1kXS5Hlt54M}Ogi?hN)~ z1tybuk%fGXC5^#1^k>doJ$t8ske9(0f4><9LMDt(!m5HwUX!$b+f>JDH|_KkSo`S4 z9<^sI(#z$xD)xVL@^~^eJ~zzA_wJ;PS8K!^+*x^j>b%U_72EgkP!c<PCP(Y&nU>#7 zb^Go69+woyzkB!2uIA5|@AWl5UjBW4d-m@&X<TVdEk0}b7#j@@%4fVu(K1shH*r3( z>gZWD#Z!yU#B@o1$UF1w>8n?dl8hBZ+G;kwy%&?OzwLGC^;WUiz%wW39K5r2!h&YT zRCfV4mn~9W>s?edPCc|;FE7x_TCzLR=-KO|lRBh%&d=iIbiD4mP9j;wAnuQqsEzjL zH7j2}?3L+AubjnrWUY4I!mAwW581Okcja*iXtpe{djE%GhErlg*l)EYpBt9j`YkM# zxXxPKx9YXLEtSN(SZTdVR`6o21<Xp~iY|Q0u^)wYJD8|52*$0gHn_4T%w)6jDqn#K z^F3xS-^uJA<&rY_giV7z<CND$vkI35O_X+c!jiew(}FR&b;3e+??wT!#fx`YR#mQ@ zwKF9ChyVTxsre$G&hNN2{p-^`zxISQ?%cA>W?g0JlAk+X{|Y+&Q|Z&E;P{8Fv7e{6 zEay*~{iET=x39bz(#y{*JZZqKk?_#tNacL_Ki4*#kF-4`sBN;)=-<lXDH@H9b$q|J zn!B9}UUYGWyL6*+YnRX2sb|(a$#PpNwP!WMWs{Xz=kn5YX3TI|@?Ln+;+Ka0Iz{#M z`jaG9zW<#UF>%Sp7c;ok3sPRPF?6gDE_Xk6g!8C^a8hKTcvh2*SOD|q3#Q_xiu)qg zu3N7czrU)qc5Br7h#Oxkv|E(!a2p#l9=jqU$SS*I=G?1S?#kLOVUU=#V#i@Ei@7JH zOn((+-d<&RjqSzRLs!4oo(=5YaHTBljA61*g2TkbwsjA>5)zfwte<{qvSPB*lw!6} z*0S0;JDWShu)N6G+`!y4!Rst{eO1rW8LKi2jpe)hCfEHb*?n8q?w(A2-T#k&fA`PN z%gcYy_xJ_Zl2s};IoDPvHlI0~aLTH$QpUZ^Q2Uu%!;zf0GhbJ9En5}PWtrq}A-4DK z-E`gZ@AJ)PpRE#bdM$Zx-`#&7=kNP{?9bPuTB;Kr>NiZ5J$rU;XlSVx*R0}<a?Xoq zKN;#f^9vYWvpwWJX->#a7Ddizhb=tLe<U(}I%I@|-Jgi<6qlGADR1o`_UgU<5|hoV z9cMRa|I1l(o6+Ht(WJG@_M2^!GP|O+ZH4Mot1o@24Xs^WGq*l94m{EN@<^W92g$8l zDkcglH5e|r?)NI=nTC&F!m}$oZf9_LMQ!17ue@45_sf};uXo)&n>fj+GfHJDvyk%z z@mrR;XI0ccw>@d(v^C=svpg<i=U5P4qEpEup(}k>uR+V)j3;8|V%BwHA6qWk%)h^{ zB<Z`)vb$&eqIazF^R}sw*?(bPVT+Vdd0E`NUH81wqO&~H+wOC}<@(h9(doR-!@9dK zKFutAoBW$~&i|0-tv|~J_!X4`eA#<*jM<skSy+wNJT}b@T-32JpTUj8ieFNo^=Jd< z#4MGm3xzFQDqeWbuAFt)LSw~lVT(z{7A<%7gluendeV`TV}-K|pS$R_<IWFO?euZi z4xS#-QuFEYj{iSCE?yOzr_Zq9eR%DDC8f(B3?l9`GfZ3N<5IL@@f3r1(f8FifAu(S z<ZG42qT14zVSD20(O18UK4<N|wdU7CXC>{{T}NV-JX;Dkh8cf3B6GW1z2(#mmG<Bd zY6*8vWivceS}}Q*!FjC^t7GTe9z6WK;*dXMLy?i}^@fcXR+;YHBX~q&v&(D0cZR!y zwswUm6q)yA7%;d9FuBip^{@YeK}m?Bbm`JXi<uc0SnW=}+9|HV_AZ8J+24x#@;^Th zpIz>6E^jYi|L?=Y%gbjUE<DwC;_ij79D6EDcgC%6zj{pe*qYymD~ijbeG+qC2rQZs z5s`LkpCe;)QkPqp5C2bt)GwZPwSGEG_sR?Q?^p8cyA-%Tj+0Ne(K@9#taT3Wh8@~X zq9>Q#`d+K#c4SSdOT4v#+NxVzO>B0tHXA*7GsUK!)Y>G;5h#1NvC~zk=n0ck#h&y= z?TaxSFBwlRl{)$Q#?8*gISe)-sSm3yX6|5m_OP#OY1zD%2QG&9Y!p?~AL<EmPI8*t z<-WDrLBG1FK_u&I2Wu{el*+8NX)n&LvUE`Q&^&Ukr-74Y<@?F67AzJLTsSMRJIdIF zU0=~>W$k+LcB{kji;g~f<=V%>!K28rc-ML6t(~4XF18AAc03lGpTY2XSIM^gIq$yd z+diD`b>jKr)_Iu^_I=qar;>1{{&Qu*lf{QVF1@I|YrEiw%E}|t!?(sC52{X^_j{7! z^Kjb@u6Fk`AJzDAEiJ1LXxaI|@|cnmhvT}hUE(DlK5U;;bmGEczk4DFiiP}o9Nx~E z<zUzE|M$r<hVGl))s0p2G&l+lY*3mcBD3<8;g%_f6Ycwgub(vFxfycRzV??%pRiTt zj}L8UFRVYFtap^JeX&PUn){UnMaTZ>co|Key(!`PWX;=8_*6Mnrqyk(`~L3g_WN=5 zpUbK%FP3w*@Hn)udoNTH6MSva{zVG<!Dl@K=gPEj2p50LaxLiIoAO$_A?r&}H+Q_m z-3y$ON2O0Yy9nHn7F`*4{`}vwaVG<%WNJ!W!;gDCJ$6}`k8eR?Y`ntUHR~8Ob(jjj z9O0i)eD0_~>k?%lQ=O$58)LjQQ+2A!_y7O#^V|FX761SJJ<dO$zr1|+;X)%770I@< zUuSQ>{q|eCeEpkUavbIDAOF?W7gx`}x@=|1VW|fzs(3t)>a0x^N(;NN@<m9|qO8v7 zwGzdiPn>MzuKwNUEiZd%)ol^>XQ9WNOaxX2wKGI5vzn$Km7v7l^ZfIXIn2wYIIsCJ z&q>TwQo3Zg*>%S@_u!?=Z&$5ic^(m~d|^%5LN}Q?Qym)_s~23ic>k?OrsEaIoxQ7k z5C5_IF2J!OOi4^Enn{E~!g}k?%sVexIL~(b7k*N9s|lL>Xh+nQ&{FQm(7g|$S}#gk zY*VmhKeYMriNni|IPr<_&z86wV!C_f&PmNGMgAN@KYA;)R@Kcpyfypmg_CI+M>igg zdf23~TK55;Wr(@dYr*y0;cTH!%?FNddG)Wgd1IbT8s9Nv>pkgW(fZFF^*yD|Cj`eu zgw4}mbXxM^9nF)EmA)*My~n-PaQ}<y|G(C6Si<%9Q`Fas=CzdyiF<eMv=p2eHX-#v z&)#L7JESG9hrId0v7>s5$>9u}mz_uMoq9Kaawk(!SnD~4Tj!Wm8)DY)YMa;*a`cPY zdLeBd&$FR(J0*VYo4>5cMsDqm)u*$Klf4cbthxUBaH5S||MAC#5^M|y>^K)Gt$Jp$ z;n64S-kZ17crJ7-@Xj<|6Sx0X-T$|*^Y6vR?!ULr+;c<AzBCD|#Du=%^1oR9WG}BN z+`zH+7{^47S6fxPz8N)4IC6nyMI56{pk1`>V-K;^h6F!#<J^qx+tPEl?AZCd_`>8r z?`L|inAO-6Tu__+FF+$YOGqN~MG{ZT&k7s4KH<Pu;Zs^R-7=Y`dDz7F=-Y}Jc6Go0 zT>kC<{(k+Rm&?EJUfdt7IBANN=jzkp*X{p3oWJkqyW8@0KMJ=-dA?HDJ$|^Py8eIv z{JLKs9$s!gFaNFl`+WO)I~l&6KC`@w7cS%wmiCL>D#7yTblGpGj@6DGl_r~KJ5SH! zysWnL<5}$sr%#I-ix@DZE9o6=?T|Qe@yzKdlAaTGE!6+$HJ4j0_hUWdAwLHtqiG64 zGpjV&-klTBSySe`eDmauOGN@#uPJ@EHtgK{#SaT|E1#u36JuTPTDpDiuDPuD*mktY zH12)bqN%sWSVuRFl`pGU=<g=}ju}PKI&Yra3N%iy(7tjg(zDqoY?hf8n@dm5n|A>{ z9WARqsjrJaqM-D^ttI2mr~hgNq0WLyZi^J8%(zx)nd>POvsTTBJo~J#Q-2k6aB6zP z?$zQ3X2K@Pt3<1oF&#X-sCECY`igx?e;+k{*qHLfG4bCnrC&+wcj+wj+Q6}*`6$Ol z`5Eh<o4*jYXP7V7qMzH)eevDPj}IkxEz`|8B(h22>&3${tg~P0Eq`$2xu|xBp%=q< zA^B&nM=XOfWSF$M-xas<D{xJ=l!&}~T-nHZ$!b@fHIfla7j9WPS!jZOP8qjPN{QvI zl$l-vZJSS?S~2Y`*FwQ6B@>T~7gEdE)_46`)G}*Q{<gy=va-j5jGmqBV=s*QI(wb; zyL>z4Pcve#Zohr{@4pHgx#gL=_U^r#x1H(U*OmT<mjsCLm=wHfK3!OE(X-p=ovpmp zvFq1wm*>a*{dhe8--pAy<@eYB&N}RD<igCX6t{dw(XLgBGgMw$z1yW1(XDz;pkF;& zbTeZ!bL(ry=Jf{;h?pnxx=0ELtZG`d^vH>o4|6&u8EjUL=({;xuu#D&<KCav0O<pd z+hVvX7}*V2&nw0ryl~W_)$`85!;yk|WyZ=0>ME0B-W1#rH&r)b{$QA{d$dEKFIbRC zfnBcu^4)(GbB>+g{(ZjP{l8y6Ki~iF@8gFP`cKvFm;3eg*`uQB%CEn^zLu~1^IX3E z&&S{Ozn*W;zt8tN)JyZw&a(Ey=k5RhS#JOT?fUxPpX2}knZEzeQ~mmXpXZmAm#>oA zbTX-Rf@bN_g*&{Gnxy<<7~G2#=iRZtbLVaU<A(<SF83=>x^Vk+V;GZ4&&tJ#9vo>_ zH%(rZ7`XYkOcCPTydxx3O-XEf(5Z-1bGjPNxLM4cezNcQ%Bsa36EB3Q8yiSBG#4Ir zk(kNm_Uu&Mrggi+kEXr36ji&Ct8dLb`O<LhNK@sVVN%=$SH0c!cFv8MmGMww!n7US z85zrh-*Rv^tkPC%5}$qI^6FGODK9o2^`kGBz2Oda_6gveVdK_&E-P!5SAg@H0~dKO zO(;5dbAyO$uVeF~*&PBaCheZJQc%iphn2%5hV2`bS8lId%)w#3I9bN%YLG`l>8;Cd zt4p&Ro_Kt|%QV43qJy)A;iZnuls%Ko1k%F1Z*RVI+WXw+RotJJPfq@LFm2u6v<8m4 zm8Od(zqwdnd29QWZF4)r;xz34#uoML`y!BD&%eO-XUM*S!XHbI@3_-y$9Kv0V%0Of zE{$32E`1v8lTLh8a#!<n2;#m~*%hL(MEv5m^rKbtmO4K!U!Zkt`8ktaQ;uymX4odN zQfWs19g}R>T7V>hYb)h^^*Vnq++1525Pnqa-J*{bHZsfKl<dFntGYTm(7G>KZ|RCW zef=|`EnV3c->mCnWBC31u8D7$n&7MLtGh%0pEb|l_xst~|6h;W*L?o=>(|w)gj9)x zG6ILJWtfEp6IH}ilI(2{8#1x=WN?JKe6(uhj5*P{{NZwyWk)sUXD;K{H@O+H=ZE-| zUEY10&wJaM^LIzPO1S)T6?G4}uRW>#(<L6s0MA(Ola`MP8A9)hbnVQ%vF$sDrFi() zyN>0%@BS<JQBwW;<K?qw&))r5p_3K6{ni@&b?erxyT7OQ>#wt~ujlXo|FAuO|KES@ z@^v@zwreg;lrR&YezENSy?g&Y_RH7*dbu2wSpWZ=|G%<y<KOrH|Gl3*d-mPD>lQ~! zH%V<QHvYF|g^=K+iH>21HUB^Udwx>F-n6!&+MPGc8d}y}6I9xuAg;84W6D(<zcV~M zSHt@<Ecko0cW;_?T4M3GGiUk&63;pAHlA-aJ84~*EA#sa{#j>ka{W{>oyZ~Reeq{G z$IP9JR$uhbYk7KW<<`RGd!}ps5tv!)Zk$%tSJqX*J6kZuck%su5&MpOJGb_gQD?qk zLs3qG*~A+>*K(9I`dI=wBRh+)CGE<QYjPH=u~YA#AMO&MwL~{Wo#lbg3qP5n7suF3 zOC1=FriZ>hcxjDuRfWOfnv455AO63v{<;0#54Rt+Jo$O=!^ug%FRgkOub5f+M`yd~ zV!JI1?5>9WpH}pGxy_NIjogevHoC6_X1aC=a|v+@F_$(pspMud^1gY@o%{Xe@r5fy z1AG@BVS5;E%&fa$=cnJytM9c$KU=_-CdepsgWdJK$1Ij#eV;a3MeJ5_R%a+MmwTU= zU;nShyzg;d`Hi<_?S~cn&fU!`pTW2KYL<kRl7`j0<9{vWiX=~-y}Nsg+3TxU)Bc|Q z`qaMm|KIKJ@74W(_v%&AUfGsr-7bze-e-=EDer{N^BfB*4Rhc)5Yum|D<|c*ex0>r z5xZ&eWgB%NonzO<b{H(+DqkyYe;`%q;GgiMz$>ff&T?&!RN8gItL&=SE|Ig0xAvTG z-}dg}qN$7Wd;22KteG)Ask}Vct8<C|&Ntt7->sX~)jV11eOde6haY}^dw2Qy?cH}b zt|-5&@b}lNSFd)<|NC%v`~Cfu-_NcNUw?nkzh}R`W(V)xyVJ67aYsyS?B3en@6MX% z-``vP{p|Mpe^2lK)9v@uzy8<d|G)14KfnLq>;3<3@Be%I@88;_l@l13+m(8(oMO|b zyjdjJ{Akm;6C5k}I4(brb`du#ayQ?3i-(iJp;Ty*%9Zl$^ovHl$#ycw-drn<y{@S0 z;!>KQdwx%lk%=+05_|Y0k(93-w~d#uYdrro=V)KwhS%ZgY5UsPqi@vSQoqf~;JRza z6c%p>7ZpLlOugcR#?kY<JANFQqVtBgc;)Q>wG)G?l{$nNgN~lmFXCBs-}qb@*9;d~ zN83U_w}Z^AQ9jQl1ckafjHWM2xGCvST-du^&-i$G|0MZKid}cUKl|R!bgu9;%Oitd zQdSMe<u0#!W6Y-*V1D>A|GHxL(r4eQUY+~sVDPbL;akt!2O?Q|>r3ZW-%+#E<I=bJ zyuU~6H}9><@q4dEUs?M(-R#z%S&!qI9j13)I{p7|?5(r6F6#H1uXVS1uQRiyb8<(5 zmkWzZ!^uWlh2DUx!gXA}{H(g?uJTFQ8-ECS;K--9VClE%d3<gOe9M;QatXJ+&8WD- zll0tu0gL1Ug~;hAe)S0pznbDbv(L&`wg15^may9C*R{>h?o@bGSYKeOZCTorp;>1k z;v~GV`|Gn`SC769pPs*7zrLdU@3*f{kIo9`6xOVC<IxhownBc@_CT(xT+Jw@nb!pm zPUN`wEMifmb5jWK&xtw9w`J5n=KQX})B2sWF+l0s;pv%<h5hrapSjhqHH<mR>vNWS z#;nyl&7RdPS!sEtlgUa-EBox3FDp|Rlsun#sGM+nz^D2=h^O$-q7C*>e*fKZ+dugn z$Kku6R>!@!W#zk*_0)`bW}i(f{`>9jcKbgc4)fpt|M2bY^4HyOFRT~t=8)|_KKuOq z_wU}FdGqMgr~djs`;$*p78YLo{x{2(<*W75Ew9?&mPyMN&-?Q4U)?G9w0FDsX4*7o zor{vWz&X*f?dkU4hwtC77ZOZ#+ps#<i^pJU-^tzyjSGx^gx1blX7(#tz329f#$e|! zTLXn=GBp^wSu_d@dL=Og2ZV~u3YS`S<5|>>GdxjkiY=?Ab#yE~x$@9a%l5mkCh^}f z5L><3AoH8|krNFQX3SVUf8D#y3HvUbnKb9<VGHM=Gk2xuRp%QX5Et!qh+y_PG&N8s z<*uj$*R^Ri(++l?U_EIOrSHO2!d5OE<eG0M;N1H}pgi2*liK{^!!Me7nYGS3+Af~v zo_I8(p+REiMZw3P1v7jVT#dgfL{%K#Jm-<%9fO<>e<RzvLi_JF3x0;1JDnGwcz^%l z=IN{_>O4ap{gZg{$5d5#%fuPX5w84?w$9UeuiyEicF~1j%F5QS?kr+toBCF#t0Q2B zWTeNg2|QLCniaZ~mAjaeV(;p1yx>+i<-Grt_KDX*xpz3Px$x?VuFT@E_gAZ5aGcPf z(<Yt8x<){2vZ7{U+Lh4rP60g23isdcue36_x%#!Qj{LF5TW+q)%m012PUmQmoUGS8 zo;l&K-+lV@DarUttx#Fotu>d9mQ`%M8yCCoeoSm!&UJCwvd$ao0ivsZ1-Y^Lyfu@` z{(oWine1B;YYLPf&i6T(*A{VMiP7S}EHPyPhaz?E%}LaGcs2XZ|4J4X(}U{w*jjv+ ztm}C9@E9v^hQX}Gp;?Qf3rlrbwS)v2PTb+K`C@eZF-walgG!@v@cRcoch>)S_APJw zZueK03Ji0?z8~)||Ni}P$)5eU<v*9$OflRoT&nr?@T<4G^Y{IJxBLD6|Dd&o*RNmC zj5x|aqyKS<#l5;;KjQy?UH<>q=lOldAM@M)`Ea-V{@;hk>+8P03iWyk+E)6#{{Q#= z|9<LM&Iwz6wfuf<d2Q|9n>qLY|M_VD@3H;6^6i=@SBI}(W+Zg*qr@|xk~D^ZMSekM z|7-TYulskzV}a}boqKMaV*8zxcf7F3Rikr)s^|2G8J4UWr*tkI_mnbP*JkA^7Z<Tq zHk(=GTfMqFtHLzBbqcGbw0Bu<`m>R*_}>$^UzJCn&vebxa8i-!hz$H1w5(&Ntzy~B z63NuQ+6^wB9He(MO$@s^MbG`Iz=ls%1s8R`mlt%`NUYx=*Inh`64&hObbcoDo8|Yo z%4X<oSQVExm#-_s%=Pl4P?ZM<Iy!GyW|V(z)Lc=?o2RjA35V*WsJYoeVou3=+4EMt zzcb}X;{?ZNK6>T7DLGd1JZzl0cGJ$62gX~4&(~p!?-IA4yh^|R|54vlhZ#NuPrfzl zy}qbz&7wJH<9+KUPWvSE`{(s6eer#})T^ItmOhev?a|}uuT;Nxr|XN`onL8d(#|V- z!ywE>=Y*4rOKgH4qogAb$84efMxXq56k1<*JbTEeTj=4sH-R^rnp61_W3>w%gf}e~ zX0j3wFE%~9Oft50i+9SYeNFowCzaiJUMRD*r{x;|9nTzVkJ5^*vG?P1-n}n>Z1GHH zw~gq-Zr}RKt^4*wtquFTO5H`?>R#Tj({Ep8?XD`_d2daaY#P(&HG+ZC=9y_>*+H4E z;ruIt=XB<!arCe-<}_AyoOz#MzGjC0hno)=dCjF(cl)rY^!adev{v60bqzMqubnuj zGt2+Mx@A*0ZQQeIwquOcl|!y=9epy-Yp&dzv8wXmqlR~{9-VlX@XBS;(|`Z!g07ov zw0!$5b^H19-G%$_iyyTSW%XGpeQkDk_v-iis=vRxd;9h4*JsP_^2bhJk|i?N``qr| zzvtKe`d$Bj|Nr}E&z?Pd++V)F?*GHX?N_s&zLU4F`}6w#zmNa^{+_kNZ2QHBD#9;! z<w>y3YPi6dGso$3aMDFJPp&DRZ$JNy>u7ZlQi%6*QdCG`@1L$BSa#%0j}OCw0OwWH z8!HcfnfG;_`gR#s7a>7TrK4NpTz1%<TW0WOlK;2M(_A+8BxRiRO-%egYxZN#jSLN0 z+t}=8DPNX)&3||9&ncUQ^H)jmpHtrZG)Y2m_3OpQwx7$AQf0GIWwUvs@`!hd;Em+; zkFOoWGgkTa{PGRxQkGaH7OuUNqoB3GXiJO=%a)Gte$77RFs4?mNv)qJJu>CKu<4l4 z&D8=|1@}rmcQzL&zJ655(B=Am3#S(2tjCvkmT=d9*XNFYb8y9HR@w7K8h>wi|BGH$ z^*MgZ{nV15KNkLZ#P|N=<-Zk?5^L|}Ow9U!)oJO;Idaz@O#fUoFUL@tV}ahKTkH}O zT3RN~Y;pd?(!nRvou#5UZFxM8(~3CN#XH|jRNk>VF!X@+uBMf(u8!Uup$BA7cAPjc z;Y3m4+E=FL&Yu=4FItzZ&vrTFK+P<T=Q9Khzl(l((l$G^ey1#7`&koF-MFH#P{CL1 zalCi<rwDEK)43p6np68p(a|aO#1R1wE+r8~x0QSJwrAYh;~DqbGj#I1wE3|vjge10 z=RSD8HGf^+qRVwlE$1pOiaYmxt07ag8L#3-4%@0H9j{(`7^xK%G3gXH^)RnkSXr3r z)e&c^Iknu;Gt4quGfqu6t#4V|??Npv*G#Q~>h0ElYRprudn#o<7oK^X!j_?M#N^9u zP%E+a_uuXJ>wZ5wJNs?fS(#mT4jh$O@wRL?zr5X@ntw5$Bve!O-><Lw|8V)7`d=UZ z{r&y@_+gW0nguHIb#?Xi)#{VVc012o7HYplWmdO=lB$yWw?dgvU77i=u`^^et?#_+ z|NH#+*<Ip_FEaPO(z{-pRLFYza-meQ+AH$_o`yMlj=g4J%gL{s<SW`RV@5~Og^)YG zjY_#ptwFtCmqpfJYiZE<#31-i_u?`>-H?O+hqG2JC{vj*V?vna?5UTX@)WB%oxD~2 z%zo+VsLv0Ly(}{C^G4^E;s?1Y9#_w;@x1c4rsvsdtK&R*pZyB&u^MfbFo-BK4^<a% zN_KGF+%#3v*F*J1($$^ao2}&*i=Epv{pah+;T!o?yR<8K+tzS4rA=7*ibulLz;mn8 znb=a6!`JlB{cD}|y}M-U@%q>0f42S+)8EKY_twj=E_Ul5-G-OxIl=|=gtph5obJ6~ zn)1{5s}F5=uKLPqEG(YUrciiAIBdd%i8Cw|1DBdG{q&Jo{l2>E@}9lYJTDx*;*%?` zy>(c-sd(XBa~4w}{_GbCXIwt2B!(KZvIr*m2}`7gx(dFtisUa-DLPztV2<hYM{OK4 zS_-bJE4G-(9uMN;URNa-cIWF1p|Tk+1zV?ezb)AK)~xnEH@Ahm#s&fB>*{RT4z=q& z=P?KrZ+zCfcG`^$zgvI8G+hKE_G-j&O9WZ-oLwbnZ1?#XkAvY&Q`U8bcMPPL%AXK; z#VGz-^lC$)keTt)rd5-guTBx}Vc}HT_#mV0M@WEy@3PAg$KE6}Hpg7y4}P{~?y@3_ zC;sN;-**?DnkIVnpui@nVy@g8^DpA!;raLW?5wISt=!2gaO+TN&hf|p{yqEl?D6uy zb^RT4ml!>r?LR;Cb6)w6+xP!{d-z%XVPDJPX%Dh?-{oUCZs>nm<m2j9w<Zd52g*Kr zTG*v-usUdK?!_rz>&kcR-21*tYMoi^bdd`UcNAwY+PRr6%ckv{=~g|bd5-BPwUrbN ziiIZ5`K<G`>tR_*$xXh6_mpPHp6%=Kxv}Jb`rboE>SDL*^iG{G+I^ozt)a(pQRRos z`OhbJH^k3*-ZgRhjyt|O;SHZ>hnXJ8TyA-mbAI+MgEBF_Rx2-6yP4dx`KQi|+?&z) zbiQzB2<vva2bmw9=s2fkT@-d|QQ4rgBF!(Y!DC8CN6SnhPU#8OZ5li?Up2Hy&eZ;$ zsdgelWX~?faO=b2f4L$beePWIZ|bf?>b@2GH(sdO_@LHS>y3zo_zTA+Pv>)f*0<L? z-Oo_CucAHlRrcd!^B!%O-a28&zNcQAr&XRFU3*{YoXM$v^S9PPtKLhqbIZi;DfH!) zIoQ<HqY$u(@rXOOprfQP)22lV1rCcQvP_sDp?To=gxTy;Oku4rq7)po)vt6r`usLr z@a%x0`zD7F%^AByi;Hz#Sk@&x$UA!Qs>P%8N4-T?2n(glTdR5GOzM9ktNGQT<;upF zJLZ=ie=M@od1=Iz<(ac$7EWimvixe*>|Kdd&75BQ?!U`-`|Jd(bSJms849bJ4H7-{ z7OvErIQPcM3wOP3+B-NL<JRTh{3XR$ddcxYhCt_PZH<yih1m*D0bPobjo;=gw%yK) zb7=IKG0EAj$Gn-#u~l$(-{p00Eo2YeVVc0pCp?KuvSsz%%~m@U3l*MR<X+(%SnLv3 zvRU)@U%U7Gmg2L!`X|e)H{8q1|33fSvfZ&ety`)zc1RzRWq)0?H8wv!cJJSBpkeyB zoVKgGgw4`abW~R}`vyz$AHNMM|Ni`W`M2F+O6|VAuXnw>eD-<J86LC4ZlQa3Ff4rd zu0UbcW(GkfhPhnE%*w{4bAr6iwA((i=(~ApmQ{(7ujIjlWy$|)>YuE;{cUyK<gSgs zS-4tyoF?7iEk3tuXZ-qIbuV`7vF+#0mDu>+_jtZq%d&(QM-FrbsW+zIe30e0vfpLm zQ}*I{6V)c}do3X_*~KBY=40?*?VUe$I#r9poC8|ode^vh?>Vzfw4kAhd&%h~OOrPL zFqzzPV8Io$)ro7e=f%hLbUCUPwLLmEYtCeu#eaKuGCAdE9pyc+(lIjT^peQ4yuC9f zMqKQ&)L67)T8^6`W8yLcHtiK0%cd+z_Eb4ENuYC+COgBlnJz9JGdmq8a5N`ngdMop zI71_^T$l48Pe|*Wi&GCdPvv=S+`|_pqM68Se#ZFxakdYaIcwN>mp|Y7_g!D^i>K$q z7N@#eY%WiBWjbR%Z|UJ%3!mNlx%ko7r42XZKRm3hm4CHAJotwXThN_7&tB}k%*~^I zq2f*P>nF@w?)zgcW~VN<3-n#y)O~N=-c1(@-jr^x-Spz}pWk1XR&}{;e_?&z{IGAA z?fI?KXISS89$OaWrKr^>BE9U<!f$#~9VISVKeH!VGbCtk<c&2lW^fffbR<Gxiik{W z;{?8TXZIPu@^;^g$q5&qUAJ}GKL6{t7rwuob(hyxz06^$RB^y|cGt7X_UrTFG!0Dm zt&l9elN<M(B{1tFqr$2k<*Sr@%3D|QGpt{gowIFiQ1H3g|M^}$m&`0oZ#owDWtDip zVB|%ncZ?@oSDbuyQSQomw<Uc`r#w0;($!?OBKus_lw~W`!uprK;s04T{rKX;6Uy5S zpD$|YkV&>X)72?Bvt`%1`+3{L!^5XfpDr#wJ5eHtqw2Qtg0#yfckh6}-Me?+_6rwl zg*Edy>qh3kaNxQnbXZi}<4EMczJLQ4uL!Q3>{ngPK10oc$(_~z07KlBcjfF1(UXlE z4;)?A-tvO)sOTm`BSVJCtNbprNXWK@6j$!;d89LI{V|d67v#2?8$Y!<dwOSTwvf2{ z=2<f=?z`+f%OKBTarezfONqaieHv`+Psk-q{czCg)xqgX_Pn>Bw?1+@COMJcO<=_V zi#VGo54S_JWMf+w_uG9EJtJZzXpr-`^3$weNozU32E-~_7#FX)y4TLt#YyP)zSQ;t zD=nQxDvw^QjFnahzpf_2U^IWm-nw^<jSmYY?o8gjYr1*yf8oPt(%Fjk*Y>LKul4Hu z!jPA=|B<4tr&R3*-r1UVALq@pjWZ0KVeeh4bdM{pxq0#JpRc)!|5fchdNpqATTTH^ z4GYhVkEsohEXvfMv!!<Q_v%l)wrx#9OYsx0DXiT>-4T*HX>9A(-igw5{cPeJ%#$r} zk>M(X#2Fu5W`?38FBx~OtCHJ1>tMp6GpiTQE(*K4`>}0z{<W3fA)BTyns%0_>RtHX zg3{93+R}}YysP7WHSTtK-KSdUr6CixpKWeI0q@#fu1EY9C)!JvEo`xQ-gm9}jJ7~C zhoIy{<-DV3ZZzL{QqU#0g#DPBl9S5zU5m7r&R99~;?L(xUY<W~W4qe!MUYm2^TJwj zHz(6oj*pLaR|TGb7PUrxTi+q2NnEJ`*H`{{IOB6haAC2ST+8NJPMT~lp1JrP`J1(4 z&z?Q|_SJoTb@k{`R}mYQ?p#03s4L%pA3lD5zFpm)it6fW8@b>j=K0Gs<?6jWEf^gd zCl$|IwrG`&hpX)D_JsDCmZ3@8cM1o3y)4;SuxZya6@^n~ckju6`)&I?hb`q<_~E0o zSTEdFGZqsNG6}g_==Axq!J6H9eUZ<OO0+q%wF;(3v^Pq<`)A|(@r-e?P+y2zsP5&E z?RJIV&i7x|@wvI}$J2KUq%NQMrvCMgtN7xgS?P}*kI#O;Z}XxSA>FN7pL1u3e@yxK zeD&)MuUw@(l}voT@*6iPay42<v4~&S%wp|lZgUY5i}H0ya_cWqF+Ip}hI^+-!H2d9 zkGm!+ooS4?rIqk)o?f|?Tk&0Heo_9jPM<A4@rdZ`7UULn7Gn)rw)6ZmcID&ozT7|O zYqa>AP5=Dj>mI+qQXgj2<O)CQzhr#w|7yGcuKTw1)<o`Hy7Y!R!_V~Sr@MIKO(MEq z`;;h^NX-skv-H?L-9HQu`gYw>KDS?Ff?-CGNK$1-z27@-<^}Guvu_D4-S(jAoTRzL z!6oYRGgxN%8`iO?v3DI~ld7IBW4Px&OWuJOos3mU$Ih@VkTl`snp_+nq!}EzG+=td z#_sOb=Iht#>zUUIB~EaW4L<I`(i2##`>9tcB<kXsuD0^qkJl&`@G5f^if&<=lhDka z;hLj#TiRS?eT@42G&hyBHVzjd^E+h))jGXSOE0yZ5v<C4GVzc|8(*>U<)pVfUst8M zF`c)(RCcme@lr|XS)FR5&k3fpu5L<iTk0^+#@{aO{L$jZ%%+t;SQfOsVoGdX-qf;H zR^8`J?Dbr;+uhyWXVXl1nmb&kOV15HmwIZ~?YnpH-Me@9u55p>=Fy3Zyn{bvRe1_M zt6)8|Z0U^z4#Ur{cX+SNUCS}&jt*auThT#3pQFoHx<o`LCb1M*ty=6SU+e!R(BY!~ z<eY8V50AYpU{Nq}Hwj+5O8$UUM4))oSv41r6Bp;XZd-Ky#tqA!c^T(^&D6fY^f|Wv z{_`W(zjd9zxmocZhx4w`<pLj+(pLA1J-hRD){MZw9UoJlm0W9ROP+165dHf9qW<va z%EKHlnw*OFEMj)#dM4P!x+L=OA%%+%q!?UFRKs3xs8(qXJn}|~d&43_E#@gwzCJuU z8#8?bCFPg$olO6B%IGeyR9)k$^drt}&)-_j4HaaZaOUF46@`b+%{FTif4+5Z#o^Zd zAHDZ3`DeSf`_HdDuedz9nuF#B7UwN$4~GAanr34AL#b3hcgKhCX9D&KbH50Y5>I~0 zey5RR^Sr-$Ve4}pUoB~4YZbeCqC<$~z-AqmIg16~h_AEH`1p2J#?sJCw~!4tz8%*+ z-+4y%#@)G$&G~B>jyQO{YUT8ZnBn`!LNvJGbGL82*UY}f(+(|ZUb64~?sdsu&!!bu z?v$%aEO1KL)aPi>v)W-9pOjIegHGI)EZ)5EaJM<hvywM>E}yI2wD>$<O$ujpduV)I zZ@w%4^NET}7A$2=C^wT{aPVi!ntMlBv-1OE-P4v%3F0z8$SuU&b$bcdx}90CcDb~M znD+myn8A0s#l%20!R?7hxwDFzRI#M{ec4lqTb!@O9B`01+jDhIiu`8Zo12>48w4dc zFUgDGoqaZK^WAmVUzc9@Y-Lg0^?OSHW5ef<+7Bo0zyJRGZ$q=tr48;%EGr%VG%GUn z*&05rde8XccirBb3I{$`oUs&Eu#&XMI#Qv`r2fwBIzvH3tgvts!><{i&)!w!{3g3^ zmsG~?SCbg54u%A8%=+J(Heqv_?Dh<%Rk^jVCkw0!Im*<O6XtcW?WNJ?IbXl*oYum? z^UzF@f6M;FZ=ExhxAHLyKVsnP6b^5lG;?~v6h$lMv$iq`8k0?QJ}G|TIC%V})Y(hB z%<a#H3oxFGI#xL?;Q@<>%0~6W%N8u_5;X4-NZ!m5DiGCoT*=tw@tKuclI0&5Of6Vf z+?Kg2U~BUG$OX3<A@z@bFtAqWpNdaje`enG7Z!g58M|MoCb%c4hzWWr&52OiQD0{D z{Nr_o#s81D&x*hOf3F7T--G^I`|mez)c^B4|9aUiOKGVn<)!NLWpt)i%YE$ho%*`? z_=N@P3wM80J5$P{vi{xvU3V5AZ4%M+l2foYWIUd8nOWqe+}R|RLvt^O|4o??Q*m$N zfxXA}yYRPmnC^F5Jx4!cYDdFF8QIf!4DM^R>dIcZ8oIf8@nmHMK~=W*EEgsOYpM$J zDk+Ld1Wga}(pY_UgPfIONkEZDlgm6OE<Q0ukKQ6qsf!I_-)mc?z8#7S&uci>eO`|B z;OdWyUa3#(xN`nMP$~aIxmM#}-!o22-Ojw0xQ#bv=1=jjdtGv!y<P5zy?pT?LF$R; z)u2VS$I5&)8Qs;wSlD`4_dlJpS&2dN<doc5rz~zpc!e=5O*!ax_Eqq<LapGy%fDuc zeYoOzo%e9s-n)6%Uzd7$cHCJz<&n$A`LmbJ3FU7;eE06VZ*}Ir!G`R*#ySyKy$xMl zw*)P^Tx5JAi_J^L<<fWUG(L~6>^)yED1Xp2%6fEG(wL*CV5W-`2j}U7caCSy@-lPq zy2N{kCyL_&N5h1Pf}UsgrieC{b$&ddZxZUl6>bsr;9+d&+7#otnVM;7y2<%vp;fn^ zpFMS6gFj8IKH=Txq#WtVJsnxAY~}`MugL2z`g-8+)t0l~b<c_v(oUR~E_lm5o2Oah z&*DD6JXS`XApQoKHP<%(x;g)BXWzaCK_<3BDH$GJE{V>~jM9aU88$IW3E#3FJ>AvS zd6wrxPR1H}`J}wii(<<wFP96gtUM8ZXqtj%q1Pc!O+n)c78jCBe;G$_i5KqtY`^X8 z@1yQtmoB~0yh%O&>t`LG``tPV+nF7H_tx!jPu*$d^ZfNmp}k$*@yoXw&kNZ0xnlA@ zo~eCt>!vQ>xw+da;;XoilS;$K{id&uM`>q^O3426%x~DA!SI}a;nwbWYi=dcCXO>_ zo&D$gUcLH?d7X1isIj||alw-f9~x$^e70x5y@Wy&NBI;hhqPskLJiNNMPO?IR6prG z%yMvXd!%;kr9r8w`1uo4oeD%G*6tE_G|oyhTff9k=tzSF1B0dR{PKDJa%;}VD4Uv2 zG$|}vYqFnV)`2;7cY;i_b#iBSWZjvbn7Edkqc@b<DDmiF_O;DvCmUFO_LnhF%y^iV zn5-x=@k(i!NSB}LVzD`!d?(8-59-qNoR?sKC{O2j;P+rj?(Bz?bkk+M^^W>DN~dpK zp;#pK>uj3wn(MXqm3L)%b{3zzxpj(BU-CJtshjS<x3Bvr!)<f*Me}S4_Q+6YAxYCq zB6ltX-mP_+!`iEI##85dwW_6%;f~afKUb@~)TZfOR5-DQWgbs^+_l$N*0T9^T1+%h z7g|^5wj?skpD(~mQK_jVLQtixBjaY#>7|di336=z<(c<aqKkv!ChwPpmWkKO&a&z= zy;@{hykdu#QkQq`4ZYdrthP0;c9a~wax%;EsH?3(*zHT=6_ak9$*46qH@RNrX|{RU z7Z(NfWnBl>wRBd#>Tv1HYk0BkKyrldY43A>NldA3+*^y={S2KC8m6TAZ3<baUt*i? zxMN`fr;&^?clnGZ`}VyxwGv-)AzXCE(x?v~X9(6US9tgQ_3P&EmtNldZJ%IMfAZBQ z^F<cvXP-Y--{Q&m{42jLZ}YeI74Ox5=6}AkH8Wz-u8>^$N6x?fs{QA`7uvr@Eo#Eu z#m^GYC{Gt(RQb+}PxVih+@|dUy%uIG0%V_6)K+U}Xa>tPEqlh$GHJ%|x~B}!jxwC# zo>hG3W5<~@UTF{3O;!<P@H4UJe0D_9Vy*JjsLTVi^*R|s7W10*e@tGo=*qcM&yVc? zF=bnEON$uiH2<G!j{_s3_poUmPI~+40l)CXxk49TsrAdKc#5)ID|fhaXX)!ZMpNdP zmguj2Y10?1X_i*(+%Cd<(;`jPRGgvg`<hfO%k<&{hfVw<mm9u{E%s~cYG3g_Z1vT& ztx-#-98#Yyv^wi#a>)8gy3>nn<dT<I`c9TI^qg%c;TawhdVGT=lYkNDWeeYrujKoW zC#=8n?g*!ImgB^#td6W{&$lToz4F~iMTo8CQuBJY$atRDUw19Cm?&WJwK=;`fnoV7 z_D)VO%js_CAFW>|vf8}k*V~+x>yD`NwO4MxtD?>?+U)&z;;L1yjqL$NLZ5Z|=KHr< z`Q>=MIre~+L1OEi+MIO3<#UypXB)Jr&dgNax5Hhbc=w}F(c3F^9zODYW4wr!)28fx z;O)D6|1G%s@obY|W6;HeExfNn>^uB4dW`L!HL7uM+||sJEmtMnt$%Eu(o~nr&rEJ; zSgIdAC4T0ye$J=5^`du;<68AYci+F^a`LnNVM&|Y&l;>*9!MSLc<}kqn=>iA{gr0> zZmhOl+&b6#gsah~9AV2^U&V$QZ$iC7ISwi?Y%A?kH1=Z@Tph%jd@}v)x5ft<ZC(rV zxRzZ#5o)O2bVs<{LpG5~K%h*Wfn{mf*_?|muRLY;&e(ijQB5%a>AIX(86t=0ow&i` z@=ndxEogRQ(#2WZ8*-NAaX8#svthxBdDoof{X<^ux~k<VUg~;gjmRbsQ76|DwdF3i zub9pXemdPuAz{UXwVv0dZZK)H-)5L)A~fOTqU-Z!{wjUu_2Oft@cPg5rB=x;+-WTJ zBjsd+tKyQZ2~I~6zunPZwOf(Z{<hCuLzU%*>T9)cPujD~>%tis#ZqQo7OO*9bBpcX ze7kI7$!IKmY6k!Dzjpqs7?vH$+<P-;*TJrb9~YEw|NXcw>0Qeuz5Zam#~F{OG|#(e zC~B_%%3<>A%9m9yXPj_4aO%OEcZcSv>rCFYaMj!L<99!9*uC5O-M7$v=Q)n-oMFAl z*Hm_Pqw1-(tFkg2&b;~dFYiq7_0o%HRj#W{niG3gNBX*(vRkXTxcKYDh*Fg$m3#c3 zEZ7mXR&RaS?6YkenG2m7A|~m0%_^8A62HG<)i18~?<RCq=srnXuxgs|!X;C7t$Xc~ z^dP4qYxbcN!gH03+Y5EtF29)9_RfU8`Pat{1^E&)gcGt3+Z>Zvw0qa*%&?c&78zgE zoOUXtcrQavkdn%?D=*Hht^X1nF0#Uyg&|{czPdxwvb283xeNT_d3b!z`Z%5yXj<Uw zbE%~$?ChL`hgJ`&3RSim`g0sO;dhj~iFsCoGvit{D<^e_B4+mOH<uMT87l}eS{W8A zP29P`^`tACLjM~ZlSLagMHRRUI&>K1w7lT+i+g!6?Dv(Qd$zKFI`R1(!@QNAn?v6? zF07iM_wU5jyM0fOhPSxiFJ%;Cs1P~v>&C`^D=J<`KKf~V_x9&cmy0<k{Ed71_vHH@ zGYmi9IB;Xhhiw(><Zu4izh-5w$mh1BQ9bYWOtRjmu>52EpO=Shi}QA8AKRU_?#j^? zG3VDd`=z4_u20f;fBkjWse`U!%`w^E4_aMSU&LU;EEs0INKqjqMdNJTF@w#z^8R-$ zp5=S>=G|ZNDy}+Cy&xs=h}5Q?S0tah?)oKU8nATU#FkAT;vWV7{q^XS+_B4-SI6u* z<M>?ncB??+j!SVt_gNL#8W}(J+;fkJ=?^a7Zmkr!KT6aqxp2Ok@#&jg*BZ<n3_6~l zxHFekxbV12&%{-^m6udhwXHJrmWo`q@qPTSpuWCXdXn&FCy$Fqk6EctzsP&=@Q2I` z(_F57dblQ|O|vRH%`Kqs+0BJJW?40qYL@;zx=Q}up1Qm0WwS4wY5moA%_t^jom24U zsI_ei#m&-E)zsD7GlY{=x;i!;u+yno&A`CJ7hq||c)Ta^O-+fAV3BMf*YckR-5V?S zTzl@#p8I;sh2(=ibqj;n3xAwon7QSdL8oy0+bz8d-1qI>d|q1TkpAtB+}zfau2-C% zHbK0(w{rDeqjcGtypGk6Ztp!4KeOXR;koafq6~tO6`vNh35G^qjH%_6msmQn=9}!X z7ukvlD_`jbvoaqS*eJPm@3T$axiel*PJJEzLqP7wlK6N25$8_E`59GLUj4x|?GtB4 zx6S{>deisz%d*D5>Zor%_c=uRL1awn)ap5lEuM2OU)2=sl6O3_=+>2aVf}pE+i$$w z9emZyLHS|QZvJiJJ%9f23A6T`Q(t;I`h3myHK)#4oV>B{htaB%bIQH;Vu{arGB{ig zoNE!fY=4<cP+f_Qr?f(JZJ=~zWCKrf_1qn%TpPD!8@cla%Pd&Aa_7p`3#}v*I=o(a zHaolvi~hb!xA~@-`!*8}_4oh-CUe%QdT#fe1myZP3l<tMF|^0roN;uv^2U`cC(p8I zgnV7q^<-ndYPoCLhOR#vuB@hMJ)6Vq{srIv-dVZCW~I^B18*{1-Y}fla<62D&HZ<a zPCN}db5P*XnXb93XYG^}PKsH2@M5UxZq<Ubzj+ugf6NHJraAp_#STz6U+#PRqM5H1 zGevjC`k&Z#sU+a+s-s?o^MAHaTympDp)JcT?L<#oo|=criLb9ucXxNcew}^&<G;_x zA20mEX}<a)|NYwHO2e4=vg@}Wetmkh%EO~I;AZzsD}zN`!8zr7&wii&;)#XF&bg<H zrv>l%y6N1_BBSH~-5x*VdlnX1JY~_PvuwK~gPxV9J9b=P>FQ=m$a}UdLHFEhJ=ugf z-?KuMEDVB`zjoC)y*>VX+rR4TrM^FwRcLXY>NQ=QclK#+M~r^f36~ekCLR=!srayq z|EcSnw?VlMrb`(cm1?FxXSi2(gURTa#rKl3$(NN3@~1I{?l8E@vxohD_QvHoTutKZ z-<{(+xS8pM{@hFZPn&!amw$DdOWpR%!@X;^*{`eo$X9VF>s#p6cYi!T>aYL)O#erM zbh%KDkb{Rs_N&IZEH3@>_D*-1n}2?CN@;QIP7`}3@}S;f%eLj~a<)_{#+Lkhes<e@ zrs=#F9>wko_;E(WS39nC*5*GsFV%dGG@5Mba&=!Mvi;ePrfd6e8u@5v%$%5B=ggv3 z?V_KVd}#Ku#Kk*%JNJCc7P%N>5<W|#Aw-xbA?{eg?msSC{9Cw7T$q~XZrTx5-toNr zoutSEW0lDpubkUyD|z*Y51&+VX1mlJPrrK`f;gV6xS$cvmvZCJ#XbR{Z|kJZ?(Ee1 z?AZ17Zd4<GvSGOA6NdwxKHbxEEYB#mvCfp}4Cu0)xw|@Ws!Q54*VxeFi$Ny-VOF!% zjI|#xobo8rRDABHXGv)<J{m~4GE|<4I_-2rM{DavpT)P%nml}Uq(A=6lCVwBPRXkY zJY47f{@xzYh~>AWz4!0F%M)D~lXERUK7Ma)@z&Vo-KP0whd0RmQfX*ek<k<9Ai9C! zR}XL3b?ugapZA=*tI2Vqac@!lffar&2F&ca=UU7*sX3?@d|P#E?jgsttFCV!oZGl1 zx}(~Ero?6q9>IgJSExSI+k9iw-PFf=6<vp;<2v^CKGl95Rm;~im!0is?X=9<+EEYU zIS$|I<UDXk=}W`iD_6Wd0x$f$Vmpa7D(R!nRsLn?y${Zs<4{zzpp9?E(d0Qg-#Yqh zUc8;zd{pHp=k8s*BN<c5dHFsxM?YJiy}53>QQ0ny-}?VgK3!ZR@bO<o)~_cq0rP?$ z|M*;VzMY}^JHwRiLE#VMzRlj->)+KhO>W<2_adn;S7)m^+<s>&8S(gmt=6=+x&l`; z)!funI5vuSCPZ9RTz9iO@V3)0)8bdp4$Ee9+<PR~?VXvi*Zun3PivOumBoH}wZ)Zr zed?vNTdHcDS9p9))}OfUUR_Xv$CO+CBDVAAdSvEZm6tno>_wfD{MJ)O+B?t5Ey-gt z-Kf56rMsWEO>5$b)!HpT5+z@qy7pX9SjWvr^-X@6lDBC74erhRCQWcs33-3CWeIQM z({(kw(knDo^NzSoky^29ic#<Js9#%-M2GHbIq_m6`<A>1UtcY<_<8s5jMELa3o^~N zZk%$`vC~m#B9js0CgsGdK}An9#Ci1>%*@nN?sd76{34<2Sx{G1pwpXH;o$3>6PK)e zuBYfJRjm0m&%W*JBE7(W^|$V=wd_+ldFe{`%xV^frj)R-w6AC0^ql$sKX~&dee39} zS0g=z9Cplnb(1~R`1^t0Gq0q)yuHKJI9UE9rLC$uSDtpqWybQmmk+Nv^W=k`YqQ3_ zn{Lm}?9nN*yZ)Ph`*!oyTnXZb%A%e;x3B%NJ-&Y5{{4F`PoG_NI?7vcrBcX@$bd6P zb|}u?`g4Yxto)MM65YpAMOJP8KP_{k&zU`0|Ekq_?($A7kX+X+!P9NXwelQuK<B<w z^Vap*MSomq=(A;+o=(Ec-(5#`+V|)d?2G+q_PsG_zH4DdoA;F^f_66ITh>1PEWhrv z!0eXB6Pwe|>l_kj44&ZQ+Ht36P2_f#f4+y$ywG@3X<o8IY2_|O|Ky6CQsJE!Y;7L9 zgwH$~{wl28oM&Qs*}@R7&Iw-@yL2#AoR@Ie#E`#fPvo4vlk@*wJN5Tj&I^WpKC*|V z$o`YR5msN2u37IP{cEqqE$26ZYRCR8FWVjd{?zQsX5*hx$G(YqE?}PW{GIiz`ZQ&i z&S{@|Kk~M^vS<m4POGy^<dFWDFy~Zb{&dzyg;qP-E%p~Bowyv?v&Jd#j_Ey3c1g<= zjrcRd0?eW;hlP~ZEO}gB!m>>N^IaF0$WZSY1<!v7Ft1WsXl!1jVs&%x_jN{Y2Orqp zlsxP-?`L$vwHb*nLB(4p1!=L%@vTy{mA%KK9CDX8=wtq|@Av&5Ju@@6S*-l|g41m` zqo1;K8U2;q?j2|7Z)u-7GgN!x7GGv=PO;FSm0BrBZ|o{mwrbw0=XLCK6z`JLOs~#L zF+bm$clXR)t1#^cPC9x)0ZB{6o}GUB@ZqN~Z*OmxIA{8L&&Cr=L(0nEKYMr0%w7E9 z(rcGrUWrPcdimv+Ibmy0KYqG0_gK%hH$^*-Y%u=L&=e83P>C@{q-@64d5J7fp548@ z=xNR7e_wt+Zs#vAy?FZZ^b?GB_vhKw?%MyqqPlqVoq5wgH*K93m96P@rnUQPujdre zgh%t{1S@qqFocQDE!I&Aj1yYrdF7&V=#-gzn?qGQ>t*K6wY8acV)plYvM=}yS`IZ; zKIolku=~fBFDiTmCbgPs5yCA`-nnp`=KtJiDJj9#eOYFavi#m4i%zWv30<B#mstG{ zJ57iz?zC2zR1xnHnsOja;z_GkukgZZ0so{UdYP*vzjS_hw6epP+jUa0$LkhB%ahhg zC0=iAjy+fGxIJ|#--`)3Z}v`6c9wr<kZknq$G>xLo}7EaAu0J*tmpe$4*MPVW!T~> ze2wd;di}_<xWC)p<KBJQxLn44ca9dfeZTAbf-Cj!-msTf+n?1Jt(NX${`aot<IVH) zyw1&0G49qrwy6KZ^_bHx$yE$>>pCUwHVQe^irxFZYUf@d4aGSMMH9}vp8V--;7Q&a zmo7STr1L+VutG?4>Z3_cM{cZC?Mn?#mw$e(WLet<`*<mVMxR4L3vcpmN_)ILK`Crj zo${uD%#DUDj}E`|aF@PZ6H%Pz+!V8LM#RjNa~?`=rE*_FR==NUd+3ZCr{A2}D+K55 z)jckroYE$_?4hP&SF(tsUE+PsJF>~o?(G)ryY>3>&pXwo*^V1IS(eTG>E;#VmDzUf zR$8N~uqM+L@55(xUq_vO=~Q2@ki+Zuz|Sit;=1tbsOhJRe*V6%pS!uf=5N{W@Avca z@~)MB-8^~2tn(_1XD(i{^v=BN91~Y~Th8@Mjr7uddu4j+&KNy^|E=Hij@WS+E%NN{ z_j|_C-aPT>mr$<tUrXxCf4^S8|KF$2=gZBPU(@5~zrXG6!<x-C{|Y|;yxd-@={+$@ zDM(8vm&d}Sk!NGO=5@;&-OgtT#ym?lx765kJTNxWv&y~pm}_FkI`5B-)1;^Qrj~I8 zpMS@*!r##2&Ver#6MA-N*h@^Fq1iv<`r+TUul4>e_?f19!S8EER098%CyB4@)3^k~ zLxfK6v!B$qMT7UEA?NN^Aw9kY>`mc%HiCEa?pZ2cOg*;I&E?M;fez+Y;XUtn@NbH? zE?O`5+e2;lr`3&YmR_#xEpu;n3uNCc=3V6W_aM`=_=Tzm<yVRP|Gez&`<gV5yo&QJ z%<HXgtG#|)Z8h`%lz`7OW4`ux#B}i4-dX%F>-eJNFSkAk*2fje{_c&ecx$Ml$y|N< zeEFV(`jfXm)2qAis6X@OiOEOqt(SkcXJbeI&Jy*mwRv955)B>>$q`9!%Ny1|6H}T~ zcrx+t!`7KSa~`KD#y*+W*D_IY-Vt@JD1#I|2I2R{pAFllIPW~O+sgQo=1d7|?usqh z^P6w?cWv5O=vSBAQ@P9Iq_?;R_l)23@(wQAxYZ!>eP?G*ZTg;8-}T?+{vEyH%CjxE zf41YP%t*2Hs8#c>Ywfy|dGXhmijR3UFVpyn6tC?P(Oe!JtGCoHZl2!s<Hy@i=g056 z_xIcHpL=%Q7n-=L-J17Zo2=$eozs~+EmF4^XtvJ0+S2w$^H{H}$f1(_m*&2OX;vc2 z=Er6CUi<a%@LPTR|3A;y|NHrQ`S~+fqN;0tWZiq0pI`s$$H#yF)`>+<+qLd==2X|z zm7yJXJC8cEYAG$v5R@(NS|yh_!>{91Luhuuf!->g^vBzL<I}#lPSKco*F}-h_k?M` znEbr#Yw;54$_|H*7q6S_>?fjT*17SGo@5$dnd6U}k9<XKvo4>^O|w4ES@fPk_K57q zFvf<h8`vjsi-yg#I?j<Z@3GLjotypU{<yQkHN-e`?z+VX){9L@*4y);yY$L)9{pv; zCo^Y9mZu##BH*6hF=3+B?$d!6reC`!ADS6czvsGH>&Bda9WIaKU*D@<d8z)s=v>{i z+f@|ThXg9ue{OxgD{i;a6r+eIuKTYzd(1oQJh!S%<iZJyO=sn5kF=inw?}Ss4}Vta z^DmDD1iOFf{18%LQhIe;n8U!mF=dzIgt*V4-xg$bZU~9gnksr`nP4FwlhRzR8b9_M z#eJ;Vwtx0Li0ST(Xq_3dSYFU~-LrenD@7mwy|-&C--=VaE;4uSlHA=aP+`J;$$Wvz z(NNh-ygUnf8GHmeeNyl2SY&$SsZ5-+<iU-#%I{@3Pq=*O%X_yh>dtKIIV-1`F3Ocr zC_h(m*y)f;Ym$Zf?+1oYi~@a%R%Xh)JKOFN>#EZecE;_AZC0q5rT|m_e)}m_E-Gt2 z_N{bVvwHXL?RtV`3b(A+d_Tc0D%ew&!FKmxRQAhwKECwVcg?bG%S3MbgjyR*PE+E0 zzi;A-1=m*1w_kg#>Lu5S>$lh1$LX!M&z<WU=^goGOW3o^yFw@YeeC`7*Votef4==b z`!;uPr1iqUdXZh0^HrbB@tnM5mq_H&FP}bqxG`_rJ3%JZf+7>$Jw>L%=9BL2%y_u; z_lG36P;)c;rX7|M=a=99|9bzw@Be?=|GVA3TYA&K?fd`jum5}d|F(Z6_2vJz+yDRa zTEBjkE2ut<-Jo+iQ`gDCCRa!6bd^^4UNyNwvxFoA%joj_olGkteBLrnjGBJc^1Ey7 z^_|@jQpT+;s$xenw|BnOTJbY@hF;Qx=l5P-I633+s-J!KdH(E^64uG<$h`LX#^0fM zb3@?sn>#ii<Xz<Wo5yTLhlt)oJ{In$$!;PUqGf48nnxO&+m;{F4!MvR&CA!wA1172 zti9Unpwpb!(RHd#dT$-;{kJ;)FgN<RM_}T?3(1Gnt6S%M&Jj~CYceV{C_K_TBk_g{ z*W?Xif|{zVey3VHWPR4?a0O0i+tm9Z=cfEderHpQ^WXQdzm+T16G+^z)skXvZoTfH z#-Fb3zc;Mje=D_CEy3m*|HRzlj5lZBFW%ko@qrKXj2ow;XMgZkIbU9Q;kSDCX087L z-QV`E;cD6N*!KLL)3X0oCD_(<q^^`()Z}+$Ci737eF^!k)g{-NPlt9$2(VB7eLDHz zjbuKBv&o7x(kf+4zgspIJpXvTt;RcR?LEfHl7?P~W^uYq*m&9f^Rc<>4(FFktXslq z{x!$$h)TP#37`AjNv_P3jh2Tb{-{XSn$@hD=Ecmw$H_TCQR>h;?q%6?XY{X*Ipi#E z6jZePTUXyR{x~CM<~N`2te50|w=QdPq)PE5_4dfr>Rm_lG!*#%svA#S@k(jcIlo62 zB$!u<q}k5(TYh<yj(25|>T5yM8&%iixK_T}waz^4Zf{53|8HCWSnn=B-v0aY%SF-$ zrx@)I+3KbH{Bz}Psf&-V&1#;xby{n;(I=<FH!s*Ub02Umt)Klp{$|znD7!m%|9m>F zZ~y<#=eKWl1?9G%zW?v<|Kj)GzklEV=g-IK@pV7{{PdG}UK+dVdQ?cL#_QTtPlb=B z7ELoQD;UbF>z#0MI`*P^0$Y|UcYx;Cge_f{V;_Y$-|3tY?OXYI!RE;>1{>PKZhYV3 zJu7Et%}mwEcYk>NW@qWlwS4NbN#tg0g5|VtB@PCziWWSjPmTos<oqPqwK?O9(6JV! zy8lNO$M!BeWGiB|p~7C{{*4*sdvX@~{@&Bq_u}GwD~D~zx0i+=>gFiqVKC&`qLci+ zYfGm>j?v`B+$=AeHZgO%$J{Dk%c?JaFFkH+`L@>dv~AyGbMx~BT-HBj*}GYO@4vM- z;%7dT-6#0}L0J3hAJP}Pmp{BJ_pT;LP<Z|JswEG?*WdN_zZYHo{Ex)eYxm48W}9+n zA9PUe{TZ+<pJV!mdBWWjj{LFXs9c|z)OW1Reoo1=V{A&|ZHFBhBzJS3c=*I6?~R|& zkyANmqPz+PL|-$O3-CSn?VmYE%X7mz<yGywme$0F&TuY`cVT&!-2I{Ptg3<J!N?w+ zg;yF+PM<OPrIXcMX6M|{w5?nF@86IWYCp51ZL;a(H2ugt+sc0%+25X=qx7o4l11b6 zmwVr~<xfj)5dXWTP~uB+)$_Wzi8q9*Y9cRAZive6SJ>W`cSd2^wKcte%+{V>)NQ%z z^3#><A<kVHYhOp@`K8)U{j@-5ft%moqRK7rP8SJHynTDK-m1`f^X6@P`*OSfictUM zmz5_UTx)u+Epg@Z&+MTcGd^ElI@6wUPpR_8M~$^gVgZ~}I77;fE))oSyD4jX|8Cu% zFE6jh*Z=*jU%zXoW$o{8Z*O0}zpv)!@$2jN*Z=zQ@Vfo~FY*6AJ>UQ5>Ga>bh2I2q z>1EyQYTL~5VAY~UDu)}+&-@@DoZ0KCDLlpb&#cDw7K1k*6ppD*NLk*yLs)tdr&rUQ zwt}FJPcoN3?NsG#oGx^Swbk+bu@J+;0&{kz8n!NmTMS1|G}?+<JAN}$KdJh2hZ2iL z72Cn4J7sQjrCnOKW@s8!&7XMNT}daTXe#GjsWaOHXK1d>u1mO{ad?-5l7!t}P8q5E zk0xC2b>664+%rSt=hhd8pKn?@tKaL9@(v%l4Kh~K-px%4bBv9Mwc(#t@G$9&z0sEH z)hxdRKOPs1+9V&a?navZlj8c)^|kf(RcjNJtGbu|JeJnIJ$rZfzaOX9KVQAROl@yd z?@j6Xjr}cC>YXlCxwNd%nt1s^+D3=3CflsI-tFkfSUGoQgySI<v4>%Yc=r7ZIV?~+ zMb5F{PppxWTF`ril`oe#s2qqn+1e7>dql>`XH`>_k~!nPX1%uUym=q9-haK|A=v5J z-*IMf_=U;O<xd`NJQk8rb8^Oq)n|;CE!AvlJ^EZ`icrC#o3nOZ5^p?t)?xRX6PGtR zZSGsDEwIyevddfdowbz*b(AX47;b8|3hUy$wSKEmJA3{64aYZyY`w8*!}5%M?&ddr zCaj55fA{QN-`VQ-Ez2?vsW^o)zUK*1P2RWV+m^`Jw}Ym=+j@AW(&lCP{Xc$veVrM5 z{gb21re66+;jPV~*Mg=6`KjF9b#vRyh1W!ETN@Yk+NX)#_Ptka)YQEpEAT0Qxq1Ds zpP&E!og4lC*YEfI_x~m4{{Hjwoqqk#ulxT@-~Z>=Y5)25cjx;%#c`_bOSRyeIXPR( z>F%9P@)OjKCw}fvcF7T{xgi=EI+agG_|yd{HKhvmzGc(SxU0r7NCw~A5_PG?_jr;3 z%cStI$r{QjEX)@kObxc1>|V#NmY}m$(eSaT(xVr)5$^XUi1b$U{c>?#QV<#_*0SJC zk1DT&GlRn<vr4g~r0q4GGfZ<zn>eHU#QT3#nDGB*Jg;uwmt8DWsPm6c`kvhOB|2^z z;khpTr`3!<U4D2?fosDC<DK2Be>Tocy#Lhe--%bhVlSQeEqbqi#%1H&A2;ist$+Sx zuPfJF`_+4{%=lBd{7CT)o)aC%gTF0mvdMCuv!MRT@&`w!{_5+0<lw`f8KddiGUu%R z3g!mbT7WYgEptNN_Z;7Fep--+R;N<R_X~-Aj~2I^m<UMhj<TzJ<9uXdtA~~3jnrjt zd(D(<^5?lJsrGb6><DONN;@m_EH*8tDvJBY$(faBZ+c4pjbOdOlbX=$)Z3J|`LQL} z+Ycu#9UuCwbPr6+OY1AS{p@<Pg?14y2XDrkvdkQw6>P5aUMz@O@y5T^$0@I6e^1<= z<GTuS7#LQZs<B8oa#=|IJ4;1co!_z(?*kq*ubkMScduxfip<V6e>ZKtw&TUN!u>f* zLRz+RY21*D>za~wflKh^v6KaRSF#tTM)qh2R&Tf#-Td|2g@ae_2zC41+xGVL_4Vb? zFYlUj{i)2WN%#JK+-PfKyK>d!CRLURYs*7lv2Eb9^6CFS|NjQtwb`-LQ!NfwMoue@ z&9}dEuhwFH_o216w%gt&YDW2O|NnRY-=FvE{(hccx9k6phtHmsS&Aw~yqBKUV-b3u zkAHIW?yoPIt@VU$ubhjr5SiR8w0F(&4U1C@+0~Z6DPZzD+PrIapYfSpHaaVt6@8b^ z`Q&mayd>dk_NRLnwzEvN4tiX)N``mAnV*yPvZ{HVd7e5~C{n4Lg{@pbyLjSZMN_TK zO0(Dxu2Eza^bssIJF{2#&Y6c71$#M*6D_*=c$e_2`nqH`E|gn%%5cKuCHLf=3TLiQ zwtk-QDAKrCW{vj*CilFkD-Wj~oXdAWjql#ctB#U(Y-P-wk1tsAW8)OdAG@Ehi$9US zsrKL1Y3gg+^YP}V{f!<;D;w0UKJ?lCNxQ_lL&+-|_kaDW-~0F6<ar-{?W=zCP_F#F z_SZkr`|ZC4H_YrVSoCv=kl-1khy&#_TqjlUXzAuY!pFPVQ2G0eW_7iFI}^_{&zihk zGvezMk>#thzx^$@n7~+2l(a!8ylt|JK;*mbS{LUhdB>#|Pj$9S3B7tywNp)@#_h=r z%bJ#NvD}4<CKKKr@;Z3!QEigSn#RUSIozC?UI&~zQg-HWvVK&2IOmNC>+HhCsa+wm zb50!bti1iu^r!R-msqaJvAjR$`D$-wQF))2Gk2!W+`xsKvNsloTntK$oL2M7r^(OR zrB83~L>(W6PfI(lF|9mu)xmuG>A#mNv+r0*W}7G0mAqd&bL(-jwc$-7k*7}aeA#AO z^ZW02R}X*nIoFEUe%->gdP-_-%^rbH>)f;ZY;AIHi(T^7JiYIQxR~zgD24^sQzQMB z2hWjpDLVZ7$IG(V)mxAE?)th`OLyzNIoClA`PcL7{?)`?-@3_&vC+tkZ=;e@)|^Y% z-P)d?nXTxSl&l-nC7j^I(7h=`Dpr|8Z=3U^C94HG<{oV=eLgGcMh^>5(fdVGh7}jR zc)ow1v&q9ZQ@g0%OM7`%@3tDdCzp?%DxT`$9uU&RS2)4)%*{EnOhE$04?BD9v{p}F zHP0r1$#Sy>=fu^Uc2_Gq_a6&LF!yc}si|v=m@a#)qbGc!L~N4*-^`aTQYL|EWih^A z*DbGoU}@dcsM#4LxU{oZjUlBW<=(CaN1t<34%<vH6cs!1FhNja%k(1me;XZk|98&h zeE+`k;i0Db`U^kYL|GV~u6=kf+OBQ;zPcux0^22j^I|I`>Xse<`Sd}-`gboyrM_>@ zdLKHcgkd4$cD`vdx+`UPs^1s>i=4J}%F-!PpUNFWM5WBOE(o05{H38pQfg`C4vU2N zoFsV$j|qGUj{S=i=ccd!kd{`EerZ!cros+sVdvHzTGi8UvQIB`;E*}<;pbEpcW<`? zoHiCpEw9xSohuwJzPJ&(d_gErA<KCUU9lO5Wivh2{Cv{-Q&G_~hjFuwMf%STo10p{ zSCt?6&XKgGFILEnZ#Lt?qK1RQ>$bQScFD21cX8QOO;w(6IlbTe_M?7*_1SAz?frf& zT4c>CDGtHo$5;;?UAs9$aOonID($D~%P+qy`F~Sx{;$Kq^*c;7Q)6F0e*E;~!yv2O z)y2w<8+K1Dz5gKoU*PYyr8R#GzJL7u+`jhL%g1;B=C=R8|Nr&>&alc9zL;4ng|yFk zCmnvYtNnss===QlUYezWp-)vNI=LkHD;>GE<wVu0*PHIu@A&)U;k)JbwZBU0^`H3M z-BW#gn$o+l8M2$r{RB3AX5`tn|8eCK?Wv)j5j%EN$fZT-on3aTZq9bC{vCEo@@K71 z{&P17kdWF~t0DRB6<_(LA0ac3N?qQQ?z`cmM90(GuNQ>;J#Qy!CiNeb`+0ft*?<fs zCB6=qXS}^<m%ZnePD<=_%djY0)UNnIgMa%xrL$*vpX9#T!sYecGGQgF^D&>QW5ORc z@VhO){w*Ws@Rk)qvOVnWg^nMRi<4f>I_T3}DD@%BVTPgsf0*~D$f8dM#~B?S2tL(a z`)KOaU$JZdU+{TwTzcN-!{3b>U%d4-(Leq5+p+apVlTHgG=BHcUjLJCp5*TPD>?q& z4ZQ#Q*~daNp0z?8fBwn53%$<wapR}zyS*BR(q7z)tO*QUc_istbiQF&x2^IUmv=WO zGBkS_%U$|j_Wp*E!4`?#IprJ*$Nw_OW>0ra?f4!Yadl0!`3_ORt5G|?{A-zUp__wq zs*}s@Z!U*?q;3hHVzJkY`nFSc+5ZF2yXt!;&oh6x^k<Qq$q{b*qt)ju_r8BO)hSr5 z_*oW*x%&mR_LuWG*0dj-7xSI-+Zt~{#hBZA$KRU0E~?r3&GE#VZ%<x4l43USR=hO9 zC`0p3^@KA@`Bot+_mVFPDji`u^KOmUO6?^)ia}9Z>i+DwbEoddj*su-<?DZcir8<f z`}NsN=jxh0HGhAV-rhAc_EvDau*!m{?rCK=B{rR0w&~ve*&S0hZP@yB%e?c?ckiw? z-f->mwy8nqo)^!!c0HK)uFXXK(?Qv57cDw@FGMWK+<4QIeBIZ(*1Zn;y5-e*``Ujm zFCYK>v&2gOo|*X!%c}JgS-T<~QZ6jmJb8DA+_etd*5s_|F%bfq8zWCz%y^(Y!B<Bu zD#k(K<>K?l-ucDZ1RG76;^}g7@mg`|-u48$L)?e`lV(I%Td~Yhb3D|}t0`S*6~%h< z<)n>`z8>;rJWh6LhKy(B-^;P<%P>5h^Il(YN#yHm(b;!p{FD;+sz;<-B${=#|1g=D z<;il|&YA1Ti^$_aMGQr%bFMM!-afl>*1Bsqrt{~jc%N$3Ub^MDYC*$`H?22H6{gMj zDc~&e?C$#<{(Q!1^>-Bi)@{1GdS7e#nVbJj_7?lw*f+d9w(n`xpZUS-Wsd$xXxZ;H zS90d{BHg0ObN7~rt9K-ZRxV?g^b&saTel*>Z^n~|OLF^O8kRljaMh1Fd6D6L#yu}V z-Iy)Ugij^<H(C{b+hxNSYI%!KP4~p{s|ufDyM6dxwttNICpG6l&~Cj0le?Cz+V$+s zky}UaT=3m$5T<*_G0#v`LGaPjE7j)jUrx}C+OqESt~H?%u7_r@F7NZW+st73{*<ZC z?+O31QuZh}dYL%*+LRSdm?V;@v{p~3C0Uazy~5;dh0nViYtJm0U&31~bN20t+WV5) z?Tqu5c!x7`T%E(uXL-gW)W4m*|MQ0_{m0mj39g=|RwELbfBtl)WxL{e+ifcS{i~Nc zxtu+q!lgOG(BJP#o~zIGr_Vz6<t{n3_0`|IvBp_*^`h@@dwcru^!E1U$B!T9D1WP4 zx__PMhA6+bfA9bQ;1@T~c|QB{-M5ib-@nU?`n`1PwTG)Rwf67bYdinE(~g)+c8+{{ zbvt9~e*fOT{hHm~`W0KNc6WGuulxP*%WHl6+J8SjZt)1To9|z4{`%10*ZK9SPKjDw zPxq`4Xr5gjs`fm=WOC)RrCcQe{+G>X=J_$aILje-O;0E>?4!_J)~lzKST>$LBPA~7 zGF3yd_hzTh9)@euYplCjQ+XPu3GZxP-6d-<Bk+4^aerpS4nc)Eipoq%VwadRm!_2Q zH+S$nnz{GXL(LPHo;7$m<XxI^fUWN&t8$+R->bV9@9GFtJc(Ii@OcrVRMNB<MOz`; zIaNKXlf)k?@Ex{mvKPC^za&r5-E~#L<zthVr*}E1h<^RM!d%mJ<Ds03S9rJTJQrfg z5G_<{H-G1|CV}0uYw0!4BZ79SXBM&g9J2E%pIq_w$G>Uc)^J!>rFGa`a-Q-%_JL%w z>M@7&-^2xLzurEi{r1tao%7TmeV=-F%B{^xy8rTY<esiduGBS^+3O`^EO0M9@c)GS z|K<lpotyS7Z^Pr~A`R2EZmiBdCb-sqv)_|6H|KSS3OkgHnj=G^xT+Y{?)M+CD?M;I z>`T^Zai3Wm(@i+zBKxbS1O$0Cihts3u5=Fw5leHtf8x)jyPIS!Oa87gVx75F=L}c6 zwM^#o&1sKYcAB%>^slpdw$@Oi@Mi85qtlw#_C8mxxne5gkub|&`PjdsCNJtIrp<h} z@G$dX_u`KaMQ<%%vODZ)LG<Fn&9epC9xLs=(XRNhp?lXd<5@FJR^8j-QTpOhQ$ORW zigH0AJ*CjqL6H$!I~tZq)hv{rlq$OX(So(nw|)LEl((BP)7Hl3&$rw8{r%H_<hZ@w zR$6R+f17&M53T=-KR$)#+t*mF-KsHLSH-=qOZW69o$ih~{@&TTW*4``O4M1ce_m=i zciN&TkyD43*6i5*v!MF-%YW~l#kf{z2CbeI>lC@_lxZ^a@}N`CB}#9px~5APGsS2! zPt|C9Tw`%DiG4-i#mZaC$0hUA+&UdZ+j9SCbO-*LAj|ivRqQ5jI@7lo`USI0J&n24 zZ(Y|{KKbS8mu{w0d+Zm5pANBj^Q=qIFZJX)`^yG<+z&Un*~K47ZZ;HqBCaIBd3cVJ zY1aXn<so8xZv;Ge^h_o!R`N0_aPo6mdWl<Dcca6)rJdoEWqCR^6U8Ks*PPw4|H<5l zn{)3@)wrR%QmFjG{wkjGHP2bj`(AqgWOm*4Mc<W+kI4UtPSxVvzx@2f?e?ni=9m5l z_}SF`$&y<>HF$UFm4%nM+ip*_P!`JfPF&U@-BIx<=v2zL9o6O;JzF((=Pp*Yyq5Yc zS^2xf#SPx`=G}KHeJ2<#lKj>1>-C<QZmpHscjwN!z33rp%-yxIOdU=4c2C}za-jEG z)b*`;>Q{}XXxb@!^%3#NIiqvuW42H6$A$5N>5A7an|PffGMcPo+)ADwconqcUMBnf z6kFGZow9O{^V#P_omyBZ<rZuA=SbnbdG6E1eWxa;Jm^_k>&Bq5G-cxRdr_}t_nI4b zJIcDoFl9fo7uGoM!ep+#J#Q&T_K`mCNUcoM6$c{&xVuG`pW0;MSw2Iu+cospmo0za zKKt_Y^z<Jp{=WNaYilZQ?Am_s&&P|^^$b4$zM0E1GQHk4FE5`%^$?T%t;dJAD+mN` z2X!R*`T5_i)vMY)FE1}I?_BoUtz5>Rr?20CS0`0-ONib2rCDj*A!}PbxwR(?JeVEL z?r`wXDcgH$?1=@Dl}q@a%+H%=#XZgAA}4R~d%q_-uAN;QIwo<P|Ha(m6Zj<MmT0=T zJO3%CSAlJ-%zkkEbgM{Le`*@3QmxN@=FZ)ar;#;gY`-gw7JvV{ZA$w3<?-q}Y~H`( zcVT`w;Vxsinqru)qO@33yN7O;h=s>YMmbN8;1xb+n3%gYZX{omJNs>}I7d&(0qtpT z_U%f0UFb4}$N5);jr)gy0++=fCi=x${EO^8;~BhEa+;1Cqx9r`fw3R#11EggC|&$l zd(RpNw&prLkzcV!C;LOf+IQ@Fet5^u>r-C;J+pq_`^~f7$1e~4yVz=e`tG~hLZWs# ztL=91T(?(_DOYk@lISt>N8iOq*KdAjhzL3M@mhMl&eM)JeDlsHwYkZ?|M+kf`-Ho5 z8KzIn_dM98QnW#!BeW|k@=z?x)F7=ncdN^t)fv_VEiHH$m94q-npRZg63IKs>+C+( z{jB;O@K)Q<aOdR1%MTRId-}Ms<HnSOmL*19jFBylF4K4#Yc04=I<brC#`50${&DG9 zz032iu4{i1u5>Bgu69B530<wzGVA)CjMch!MhX3%r=ixlG3~>=WrwPlMcvjbyk~3k z+)X7hnDZ9L>IIh*;@Xn$ZtW0LON)5_FkWZPg^c@F9d~EG{CC**&w|gHqTl$-pYPzC z&i#MimCL_w>^>aXWfc8>Z|?n^p8FwPKiaM_=AUiaoO&<mXTpO$A`|AGUw(eReeJIO z_D2K!I~spSuibiY&X!G@Gr2S;R_mYAih2Cxf$Y7D)(v~F8s`O={C9rm-<hx0uiTo> zt)Vl)v9NSQ!LNIho}PGhGyEF!S2nYXsUP<lG%u7?61o-|<XjT!<aeUMSewOXkterx z*PNt9eVzMfO};C)MbY#8SG%B2cQyW%j3@fs{#$I6<+yVE++^l(Y4u8j&kBmJ-{$PH z^nV~Yp^#_Flww9pW5!eOIy$sH)v8Q>J{Ee*vPk@w^~JrK<*Ayd^TOO1n>e<l3#)0& zn4_6KS!c-<li2SZITp8C=SlCnUszeYe^2p*KR<T;<JnWQX61_+zW?vmKKT{#XD-)! z3xmlU`OaPbUU+_T;it5^_aX-WC-3F+uXK#9{J-hZ&csBYuRlcZow>MF{OY~U@>0rQ zg18o(N$6~MNS+g%9lDlb`?V0R_Q?%GJ#v>br@d%N{&l>!s8?0#;~!IA=Y12u&5v*k z`YITBoWaV6F->S~YU?VaQr*^&qpQ|rt9s}v2<;PG7}O;qS7$xr=)t+|A0|IMSi*VF z)9r-HB*tft)!zM`T(R+RG&dLfFOLOhV=5Heg42(b=v249TUgiOz+T?vTg%7Xx6G5r zLcgFSFUD4%@wP;}?x&kxiz4$cZ^(L+Iq{{aUaI1*oPK|Q|Nj2|GcjGqHaZl}dS>?i z*_Oy7r9rC~9d@^UQN!$~d~<2>_je34*OnFvO%Pb!xND(6$KS(uHO2Hrubr3w^LXvd zt=IHs-@kh;cQ^OuSR2v3-~a!;zTf;c&&oqgdt>zM8uZ`YU32r=o!Z#zzkl!M-(LRi z_O5l`<=@-gtBtsx8apkh#c|R6Lr228uAOo{-0<}F<;hyRSG9Z<PAC%e>G+n@<9=}C z6{+UsJxlm6?U$S}V+ym4fSONI`Z?Yp6F$Ynqs%^`j~hfK{fmD`uvO%XUCvbC?^T*8 ze0Z`O$D#)|M`G+wiEN&ifAil@&z9$T22<vQA6)*;>GWJ_i5C*qbM`%4SaE0m(StAf zKCGTRdGTRJW=l&WZ+^ZAjwY3(<xV`uCQS42;m-M@B9tnYDREfs#~h3Qea+EsSzMcq zIOBg;Ha#igXy(mg{MI0-aN+WgX1!15<+?uQk^9b8l$Y<3yRui@?8CHs|3d$sj-D|! zJw7b%YNrab$&;gY+Sz-u7%I+2oqI37KR+?~-tBK2vLgxvj@mrld3MsDs@sci%5+%i zANdfNyJVuy<0ayPFF)MdljYx~aNc=Q|AaL^TXvo=RN8cM*^%q7LM@I?oEdQ<(rA<O zA~s=h4aZd?f$_WY#gFV1bqPv|l;l1!B_edu-C5Ez4jLVrF-KC#?~bfn;yJ!ml9`v- zPcD3CR<_$_cfh90ER4oidbTc=d^hQA%ps0WS+m_ffBUi}{!}PkYD|BA<ixVcFQn!c zuV78B*J?Ta(Vn+Y|D?i;T^r2h)5XP(6*#Wo5RL8nwIcYiUTRTCwG!iOp(DKx2Fs*= zHl9(5aPj6%^448ypgpsFrun4i8KN;VLg&(z#5^=pZ{Il+vNDVF=-H=5J8ib^o?JFz zcm8d$)e~ptzP-JT)A)W(#Pw8Ojh>Dj<%@1<+jr)#)xGuJ@7K$JB~kCaG*1WlanJWJ ziraE+RjX!GkmmY@9!oqbmizU+Q(@p1XbkddnJG9oI#%*Wpix$y;L5dy6PnyZ1YAmI zEIz2EvgDA^t3@?@%g-4YI=?VEXU=|eIbX#Nxxkdg(l>Qmw+A0R=HRA$iR0V3gNnkk zd<TUC&RJI|-aD7G@soqxvRjvH>#U_NuVXoA@aTt|i{Yl=&`%OC1rJ(1s+VBMZ`-^5 zrO!iq*C*PO4>a>TKg!|xShH5guB5}`<ev;JKBL1o{yf>y(K{iU>*tRd${%kR7AE+y z@lBG-VRH5pezN=W68j}xA^|0v_+RVpPtBig`u)wjJ)s-_7H9Q;*V@DQ^5e=d`)QNg zpU;@@ICK8O{ROH;wa*q;KTrO9q3!#vyy<VJJwJcs_VH=9<!A5C3@N`Hk+ImQc_QaA zhC_mDChhpN!{rRiXGO8E+V)-V_g}hdd_s`<?oHwMeU6!lVVY~4l$I!ng<tp1e|E1* zxJkf!rDWXe4?HsbPcwv=*thDqXcst@EPe2Zu_RrrFm)TBaYsVBwo1I#sq>Y$4=f2* zd7|>hAiq#SwCS9OztTsG$Lb7G9bY--E_%+gz`5s&#pkp~5yu2&XD>4L=i79CTAIEF zpW)$*IdbbRzuXcu_k>XSblL5aW&%PR6TDW7O>&xWqB$^C$ZT^^*EFM!f^#~d%=^|K z$qLvZu9(IsyhhYja&n01imZvnfkoj;M&D1XYQN+A^>ljw-f}hD`R7l+oTH^EsOz~S z@9ier*p3&^o;~|k_V>@reN&w7F^0J1``?qxT6-wWi}UTo-HivBnEbL8Kj+OpymBUY zS9kexmCg?vq(3wS96oc0=jAGGHudy^#EFZfBu(b=mqzhLDDPr9Bh_Sc<HJEuQ{$9I zJGbsV_pfca5OMz1DVfLF6&5Gjn?+W#2u_-!mZbAsKi!5?RC?CIW*y=7@X|Gb=hM?F zm(0x!p0Zm%TX1HP<Pqysu~}y_7`#g|g=M8Koeg|=R`6e9oWUZN=8}!iUE=r;ER&eo zXRvlly+Ca4Z<X_|+Qnkr;uaiUnQi4wX;<FPUUX=>UxWGU{f8gDX?cIjsL1}~&PB_1 zep!3gspY=;3Hkq)GnW2&^-TQ3i|t)!Ct5#cKeuq-uHAnESG<s)l*)JcBVSTo+mza$ zm2rm?<8u!ri$3lQ<BY4D$7@^sH0pK;_tZ1?N_HMOi&q}pz3l(Z72)$@Gt1LdkDXcM zvm>`@;bFnodA31yzakcfx`uX`L|(IL>TF>zh&=Ep<!(Z?c(BI<H$Jn^5dpau{`PU5 zEIeg-j%PyT?PP`HYwn(%ouAvSGjG+jLavJzo8H{y`?*xkXXVUS$ItA29{2l`0K5Oh zm?ygo4&Mze58l~tVOQS1q{J$u$?x;lg^m{{{Pd79za^NVv??oYk!#a(*J{3*Q%+pb zJ=1kJ^RQF_w_sA4yTrZZn#xSuRZH*v-d3s<7VGse=(F0a$Uu|V7qxVrCf5|LT{^{e z=`sBsI;l3#<<CUjml9m*bYi;FyHg8P%{Jd-&RTa!DdpN79wtT2GiNUCoP4;Nd8SqQ zyE8Ga3Yyav-hJuQ^5(mnctq&r{}Up)T3d8Ku^vbW3Y|1}I$vJ{@3cu<lW&|>i=0qs zuv~85|Bv5AndbGWrA6#e`hDkKM4I`do%@m(g~si9zsRfoL*wDf><)wZnGy3&mi0|g z^LsCBT<m=8CzlGx$}Ov(|A^{PpSL_d{n-WY_VbBSk6LE(2UcF6Yg`%T7jr#Me|n@{ zP6c~IU-hXJi?&e7=9T%Ub^cexng3n5=}r9Z)IC@4)$BcFobNO1RnLyNNiSQS%S5lA zQ#z@Y7xskH#@nFE&VEX`)}!?B_Vqmvjpjc)VK1$-&w1fV_BXRVzg+pWQEpY$^obkU z6^&%~8hG3(3=?_u;*fBHfSzksXe`&}L$WD;5niR=b9Wo$?+SSu^GG^Z$<<}^!6ch{ zL78()F2Bfn=Oe`vSH9!>s#8j(mT%_?ad5bDYu<U+GjC1s=F@3$ovZb9c(!f0@3tdc zBqibItn|d=PZG*s-aYHlv_)t^w10t=cJhfG%v)u$%UdqC{JZ_|?wb6y-}xStShXhQ zp3pq$ut6;#R8&;+(Bqm_EQtjfau!~F2RwskRyNKv=-wdx{O==|nuBfCoTprTWc}{h zPTtnR)!n~&p+Sd`qvX}Zw#CaLukSwWT6{oam!<C3rVe?1X<<p>=_PU7-(8tI^?@7P zw4*0Gr*>Ga31h7K=5{x<<L=!^$5vO)RYB9dTtWl778Pah%bh)Wu78d5bBngyAGWhz z+w#5rUhItgJo{-ux3_J*mgjf+<z?Hd+uP1=)1Pg-?)9d1*%!~XUe`JhHg!e}gW#$c z@8rr4-n<#eF-hIrWplq`tBdP$?%oKClKzW4Dy&zmCW}nH6rrmu+}aV*Jz>&^FW#1o zQ(R|EiHPu3w{Kl~hDj@G`lj#AH<YK|30@Ju!l}8x^#m8&ftbCsgZUHnjLY9&?>@uv zwfBXU(reuZ))$jE9LznX@VIvK7R%fZ&6W#)Pg}KDkVjBWtjzqt-fHvDZE||msj6j) zg$oz8dcW#UW=NXZFKWvz)V_MkhL@?+4U^=aZJ2ALQ>h#o=Nx`$W~<7CoGa!1l^Y5o z&K>{1^qYFPb!t=edxxjO-DzfLUM%Lgu`{qt%vJr=5mqOCTe&Yb{O?~>d$X7B+T0n> z+9M+s_n<ld_k-gHE^Io><=P*5c5^<*9+}EVp@IQ@-XV-4^U@8N(sf%6Q}{w0?%6AK z`wL$wyLULbu=ha4=Ec8O-F%e#y(mA1C-e8|xi&lB@6d`cT(Zo$v&Z@T6{h{g7CCM@ zk0khdU$iMtO!#+UMUI>Mik_&+E!>$MrUgq%SYM~C_j-EvexcP1#uD=#j-Ihw#U9BW z=4n3NXvQ`F=VJq7cIz8+&ahb;FW#b3Y~i>jvr%DDo}A?CMP4=)&Cj&5{2F$f8o$mf z+|-+Ue(&#tK1OUa%nmDjDo<6DR801m^4U>HEN*GdS*45G``E<hEcfue^|#Vx(u%<E z>9)NaAHIFI%0q2dSuBUQZlS2tblX`fL0&8Or76U7RR+n~I^{?_@w4pld3+`2m`l;A zmuf<911wjZX4ugZzDX-uhfPRgg3zlws`qy;U%qy0{@&TMD+7AE*SN0UuyR_^hOHJN zhLu-cTh5&L{j7k|+L&GD&hH&b|K149Y<;g%yW!~-FN<4Qo5Q#`v@Mk$=`NjJ_;ljQ zS(VC%{0yAj?$usS7BcMq^mC0xziIXLm>!9JFE+Ksq{_&=y~*@F%W~2d!Oq45p;j+q zqMR*+qwW;$Ur?Q&@a;_Hv6#ZV=BZv5-_Is)Jlf&Gd7NoZ#~O1b)smiTjyh6j#DqQy z)N?bY2z*L2_WiZgE!nBHN&8j7EzURLzorOkNGlw^__|Z)mE|IjtByU#;y)hc%l{~% zfBXY%Er7hn>_6>p;a~O%J)asW(DKi9)2zqOHT6p!nYG_3G%J6yWdFLS+vCiQgJvSL ze_5Hm;k7w)b@}nvdnEtO+b%!x)Q-s~1T2NZlN8J5-qk&IjfEjSI7!B3-Z|wrSr$bm zYR?Zn5&8Rzp?_7@g8aK3%FYoj!fN(LF>b|%H%+Fb`#!TcTJY!iA-_(^Gpz^Co~gci z%5~~0je}N|0*O1jmi^J(cquRM?wx~aSE_%d*uE2&Ec_T?>=t=iX7Pr5Yo{2MNM5{G zsI+l{TiNToRqtKonEaeKO`0-=%U{cpsfTHimZckeL1mV3rSZbno5@x?3Y=yO#NA)v zeQ3R(ii+Q1>xq`RPujPAJFuz4=gg%BHWj~M7q7D{4VJN=?UL4eCr;daPtJJa_g1yz zlWSIZT3quhSAUft7M8dpo;A=fyl&0TsLoWLPIqDHwiT;{*F4>_wY&QMw$tzT|1T@w z7kTZ`hvlaaKRz5D8hO2Rr{zNFn$2!2*2K6bXm#eANbK5r@AtI0BDsT}$_~ownwf?7 zigza-VNfk#xcS^g<2vW%Oo7C;XY5`wYw~N(dUbQhzdVjT{P7o8aEr7|7oL12?@dpL zLD|;CGYPdV%<0jyf8I1Idee6<;Iicl-z5hOHmaoctYdU;zN!$zmeqXH(WJg)OIwe( zsJVk`dvUFZ&&I8@c5im>I($b!zpSFH<@ki&ompGT4tIML`rOnHUnb!{;q8;<m+ROc zt^EAJL%`za`_E55y|7L-$PanXq-50f<2Hxc!PBXh&wpKC(f)r)-ILvCHhc_!vQ+lN zT#kj?_uhT)`c!n+rhMrKeSA%a7xmiBb5i%WfBzx8kCF5Cl?C$WtBgPX+FkZ5+2q!p zeMaj4S|>g25cJ%AiSe`M6h))<#H~FNk5=c}@;*2tAogtWyW(wGs-H7#UI?5FdE9j7 z|3k%(UAf+DzvCa}ayA!B^cP8J)|i$~_!Id~R_=Y{k(>=WQ}@h>{BW;1cK%Lwz9OT; z+rD0tGM2fwd-l%A@-G|W*6eDKSS0hyr+aNvf<Wp7m##GP8I!G_>Sx~56<JhhGCl9M z$>NqflN@B7o7qK#+RjWX@-JKDaiwfhv@6THGoP>K%?wg<(3F@I=n;7)($$5Z<<N_o zt`{nKGT&$K5Em>}S2`2w+UI!bjL+KhmuF8gtxZ<8)%OW<&HnLw(`T!q)Z7St$%2;$ zb$E{#Za;gmxLmyNnQ7|X_p5Y*1l&D$ly7iTj&Ru^w%1laduq_Dprsuaf!oin;p{H3 zocc)V-4do(cQ3u?Ss*xZ_U>|HZbQ}thRF_I9ZZiJc~(Bwn|s@H$+-m<6|GAvdBh@G z`+q*UY}gjWwQ|F|-FGh})zqJv{Cr=Iv5?!0xA&Iuw4a_KAFq1&<L87M4EtiHy0qVX z654Y;V;2j5iJj>2r>a^%zsxP}e_r%Su+^(entjp=VNo%$Ah81pJbC8?f>s!8j!brW zuatF^!*6?rYh!DI&9Zrchh@!ozEEy&Wj=i3$joR7N#|4@uT7uRj=u<W_FJ9GX3smf z@_=Au{9gBp^?$!9Ki=!}vP<Gz_?0aCZ+AZ|^ZhXYSmv{juM@T|x$)}J$qzO4X<MW% ze;p9`%)-iQ`uK1Er`VO;dp$httt>0HDE4iWzIA_&ZH!vIU|NHdRauVTxpx_At2ryC z`|M+BoSc;?R&G-KCGW#Iw+EXtd<+-Q>sOgr!RP$jpN}myW>?0YJ?RflS@e3HTvN#3 zrGH&X)S*lBj?3Ly(H#~krukxjkKL>OocsCOo~`Z-ALrjWd-3s$3vO~b8>R<EF^Nr+ zoA{igZW8-j%@a~CXF?toW;9soO<(fh_|D*t#q0%kbB_tIF7WxRxG2@q_i}m07v-C4 zJES7#g<Brc@pIuyRa@7(@Tl_ct9N5FCJWx0VjEiS;HBwYW;y%!!lMp<_PslFc%6fQ zu}`{5=cGiPl*vK47q^|2T^*9BDApT&YL(8StI0b&UcJcMc*UvZkgi;%`NZww_pgMW zR9vzsrb+(klY85jcdzO)3Dr%tTw5AzH!VowQq=Aky@t8dw7O@N-gwp%^|~m|g~j0Y z*)^?G>g|_IT)9bOW4EGS-73T5+b(Wxle-$xm8Lvhc0+|-q{ZC3BIi>@LX;)T`0sGA zSFAhtP`$YLd+HHs+x~a6UQH@g@S7xEJ?D&@eF|I6ZNsB=;Ram(cMn+P{;sJ!zW@H> zzMU^-<Xe6dQ}vu<BbaV3BzD?x`8&-`o9aLPeejNXwYR{8-Q}DM8~CT}HZok<5iN4& z2}}Fr<HzMc&1|S|31NT8)SDN;q_o+4<&34ehAmS?Bo3aCdE6Cwn0NYBN6{sPzdN43 zVDd;maW&_S@51~2FI@PRy_tS?XZ<pM&dRSAzy18qotAsKI$l^b?vAd#P1eq<jCFsR z3ugS1TiQ`4;P@$<?~8qmxcth(Pf?ZPn`NILIcA{Y^T>v2S-}j8bIG?32FzgED7f=r zqt}i1b2hAMGb)vwyX9Kc``V`+g`E?9LMANHnsy@U{_*+Y8b)W98^^_#3moxeF!y-! zv}2lJ&C`W?nK$&-eoaf^pMLsj(atTW#R_lK-ahl@<;&<3yBFu0Pq?;6FX;6yHVt_L z?~IhIw{}?waB{tSa*iSQ#m@Z)9Hr8;7yc7jCE?Jm6XoKd(l>XdK<SR7c49xboT-~q z&wbgh@p+)+359Kr7XND3FzOg2rL8qqZ*4sIVB6icnIWBXVkQ+FnffeBCMMhby;#_8 z9jRmSogCLT{@@kj&wjtmYtfuz_iXg|UD7$;JJ?x>A9?rUu9Zi$|HiF56T5{KH)@Ko zh)rB|^md!ZsjBjBk=9Lmtvx4pZnlg$5whuDc&k>(%o{n`Y0=Y^{XTDfnsNR}XIl%S zqF#_i*Xhnj^6tkPxS!VaS=2=bIBW=+;o5b!htXDIS870yLH!QawSvqh2PfwnwQ<yB zoIH{7h4+4}*)L)DlzV&62HrM4>hi|ZT}0$k(mdsR3+BtDau?6<wtb_p^>*TsIS=1l z)|v97_00cChi+^>^Qc&IW=3!5lH+%dKYF`Z%PC5PPw>5sp_7ap+b5oP4lO%YPunrY z$86Pi#k112yeem%rgT1vQPR15z{+gTo7u<io_zg4@7h7HXJ_Qr{>r)V`8D@@)8=RG zS=K$)dhX>*{v<BCR+@PH{rL~~mUi#`8GpK9##z~Oj%-EksZ4hgr#Q+y+ss@y`OELR z2J<tYzs#{bsb9W(wfNVaxAl|7+EZHNdH8yF?h(s*aeTF9^49bTIdh)Oy6NE|E_id> z+O278W1k2{ELtKlD_K^suk6MXw{%q{n?s4V+d>&yCe4cy59l;3D}Qcy?)Bb$|J#QT zU*5jHfBNaCr>EynKfZkV^5y$-_m*eZuDGXPtgP<ja&pD1%+RabGGv!T1&K`z>OLbG z9mT(SNfXBu$D0?-cC?;QJ@?>fY#6V~vR!N!HACjg+|m{kEPY)lzovT4GuPKa*Cp2W z{<XVv)^h#FEwc-%7(+W+kAJj}oZGA?yEFUok>egydb!;rezGj-joF)b=FaAJv9+Bi zg1L7#y8O8Nr($n8fAaB#{?lzTx>I9a4nN45H}8v)u}yULP6y?5!-m!Xjd_!!vKK@w znkjX?;P$rQ*i~XXE%R@SrJuUIX!&K$cXzMNJ2R_4L?JY3gYe9wlb_jfEBoy4T^SOZ zrsuNdD@PR1_wD{{CY{Gz^xCG+$b5El>otR~{eKdz7OdzL_**HM`2KH%-Urh&k3Iy+ z`>!e6+BMT%&ST%^1)NVM7yXhboGNhfLa{)$)$LDZFTTW7Zc>=h5!*U{t%3eEJvsGo zfln9JW=t;l@a4f7E#=n-_AYD}H8r)Ec*n{k{gDcffzdkIkOqTmtef0288-Iq{u*Of z_C@c(!W(A_`!AYISjJ`3y767Cj&OnRuAnKEtsV#Ew0g|7wk-+WGskT&GxN;qdo>0h z@}}K;U44XKW$pjVf6rJR(^9TZs_&a`sv7rjNsOe}+{pi*lh0V@)Li44x#7X}SNjVK zpK7h~-xT}p(9#N#X4fC57o^DApI@U;^**>vvGMrZyA9W*_;pS*lvx>=JTRCL81$33 zVMFs@iEK;$4UEnwAF^CIv7`F+^n2AM+vWDz*8cqT_Vo1petyt2#PrioU%osU<$h$j zK=+B@>KV`Z#ij&JOVxB;dp@|8EA>rZ!AjNd`&IHY6;7>L$I6t>E_vq6X49^|3-v)$ zU%4a*s;U-elyRwUIA6Fjdu^jHS4ilQO8wJCJ7e57FOvy3l6!2fRFD)G+0s+7CDG9B z>x_8M>SJrpe4Fm!Tiv`{a`x66M#ZZN@4lWf`>e>O<I78L3%fVFT3hql>YiMa7{6VF zrBC6e%bW8@!&_#Ur02M7UAHw%skFT0fUbe@-8J#sicaro`Lv?-WaEjmvpSZ@a8C0G zX}6vl68%LWN#(p(#+e^)ejVxfVaIT%=W}?^rSwyOrYLM%KIw!ZckTI^bG$!qUA1Am zSzgB;tvK&FkMHE%__@GYFu=e144+}bF=Mj`nT19N#V+RD=<}2^=8<gQA$f2K%jypK z<<0CZRSFh-T^Ao#xgVQ&bHme<3m!jn{T8xz)3J?OGc+bD=<0+#nwU~Fk?GaLJyONy zX%i!t^xe07wyrwGsjI!sH(RIl_f)z4g3Nk0EWh4d={-4vH|5AOnZIq?R#z3LO#L5_ z`@Pv^t^L3D|Cyc7tWWYdObXKpyEo(M8BLL(_vXdz!L5ST_w2fNy(&0$XT{SWzdxT7 zlsG)~%p^;mUSspTFXBOBhw5rHo;SZ<Ae4L3(=t(2?cK$bKKB+GPQM`?v#q0CnW>w5 zHP`A5lc#>1GgEry6D_@_8}|-*gnU(bUKJ%LC%5f%@a~+~yXKwWetMVC#;<E%D16wI zQr~v+%)&K6p`lBD_++aUU8`6Vnrgdt)vvd=x8L7aS6fr_=k50U`~Lm=`tjq(*Vo&> zl^7o0mYeeQWo9>D%KMO0n{>R3pC4k}R#3iupO@g3doRA{^CzlyY+SuvF7)o%moeG8 zi_fjzIxpXE`Q?+Tnx})hD)RmR6}(K#^V%~dT6dYtDVEUBK4-K{n|)j&J6jhn?a*?m z%8os8ay8dfF5S5^w(h9TmW^hXKYSs1wZX0SZ!;Z}Uv3jDGbw)GJ9Dn8NE=VTKyIX% zWN>e-Y%;I-&mQlzCvl2vc&_j?y1jAJQCb+Ybjsb`t|#*p&%RLZRXk#M&)QO4uk>zx zQcgwm>%HH%y6oFhy7}}|C7-P;oII31+zO4Dac$8a5w^<u96hB?Qw*a^zMnl;%6r@8 zQ~^8l-dz9VCBcG$dKaBMs%G#0zVEzUi_Ahh(ZoVcA1UJ(A-kOCbb2lhU6JGCb8oM; zXJ?JH(4&(l?rL5tT&Kn2wfFCo)Q=5MSib-Mp#C6il5_c&ch~lqzrNOX!(EvvuA8AX zb)H=}|3Bsgt<q17T-`jmS>0+&<QHjZ{uS-mtCCT<TgkrJAUQ|uU#L=%cUrSS^Ar_} z<f_V=Ghh9@*6Jv!TD+3mT5W6`@g%&A?bV^1nx$gm2G%}{iXZk&m^zc4#X0mWgQ6fC zH>YtY<C#|}o5U}PO(-l9m%0-lCZ?XJz-U=vTGD9H<uuc#=$9Mos>dh#_|%maK0UB$ zk)}t<;i*3|*q`3sr`B#3Fn_h){f$ZTd?w+)j|L`u-St8KlhBf)l*G8}Wj`ysW+s{( zoG)J)!Q5?L7G8O?Xo;=oYs-WuH~fxfpOSww&z|Qbr^Ii`0;%$Es|&8=#4SGhZNCu5 z^@kBBp8cDn{U<`<V#mWBNpE}DFDA8=?TjfBh&pAGwzS!3dSgb?2OE8Pw@pH8enl*i zmy@f0AHT2W=clKq<NyD<zCK=VU+v#tU%r%7X5HJgH}Xr4*rW=sn?IJCmg~E^w63Vy zzvch@ZRNSe%I2F&A2X>$s-Aqi^Y4H8vS(**R-dn!x9#_$Fz;1L!W|LMomnO*M810W z@yxWpH|_?l?D9!t>gd>duk>!G@0F~z1urKu_&sq8USGd=i{Q2itT(rQefu@&{PN<v ze$RO~Tq`qIPFk^v%ewhY=beTvA2gK=)l7exR9C&;%2izEaLeMk_Dj`syS$25i7#S} zoA4-EQ{VA}Id?fb+i7Q`in5eryS95ih;dpsweUg9jYFn#&l@;yzdpVtVpH&}pPYv_ zw4O4&Ixpcgmz}0(=ELWgn0(*)1%#fnd@+M%(e10oy6<aNF)X@zOhIfyB+uTo6)XuX zyW-;ekM~}lmy`CQ_7)fa=DU~Pc$C(aDMr3x$lkQ#%8KV2h4-JZl(lOZZ|v&n>t;-u zrp_Z8H~9_!hpQ9!Zun8f?)I%NRFcc+(*))XsfpLww`SK_Df_#3czn6%Y<jOElEZz^ zwz3JaHw9#WuLwT=aCUgJj!S8U>%C)=kGE|P%|6>Z(^*MHM`gjhh?{RZ`eqCGEVg(Y zW5k$h{`%jCK9zTuLgKq7Y?$ovMf%6H+(&V_;?LaXvAJ(n^LgUBclYjD&W_C2)gAx) zo;H_$c=pn({;xvy-7J6Wzh94Cb^dVP_6cFf+RRlCZLXg1?`(DJ!ZxGEic?KbqgCHN zu6Z|6yZEz#%<kB0vyQik?>%;#H=l8bZ#R?WOt(k3a&|dQ&uEo?`E0H5(dL%YoWqWH zx#VX(>HYDgglpdAeeq{^&$P9-zg{KfoYo!vuJ5k+yyY!nEPEDL2b^7Z{q_3!_Vs^$ zd|W=i?$@86n|H^ozdn7s_kG<<;=8Op_r_FdwsIWWI&JOueecD~rx(q$os;ccE|K+c za;5q7h$(kZE}Y2t_vh19w?c2n1c$_jOr1J!o}c_Z`}uy-+#N9|cyFAVc1pNHy~BCu zifPY|hy-qNRWUkvhw=5fGg_u4@7ca&&wl->keMTU($y(4E~Zj0%KVK{yZa6pd!6GJ z?w-b(^U>m6!kVwCu5P{u(oEQouTo2X)O^uON#@weXYZmdTPt;QMD~`e-&wUkEvBqT z-<C@-?Hil=Hx8wO2(3RcrZQS-dzaURPBD6WYf9_P?zY3dO`W2$<>mY1^f!MH7390p zC#ip`I<oGl-s^)WTUfVudtMMuQ(fBD%BLd45vJ59EBhc&u`=ycg^%q_i%AX}=EaCF zo!>X_pvII>%F25@j~)7$IP<*Rj>NL%Uma{WxcrozKifB0<hAU3PLYSQ9CrhL6+V<H z43jJWy2|fQnE9K$J?+xF<&7I|d{9zRG`C4RAfU%;aA4NQa<3;(ejn-SoRY!dIAz88 zs>%}0<<l%DTQ56tIy0w<n^kw)no8M<8OJTvb^Z7_ck48>9@=r$BjQ)mWrl<Kv(^6J zJ8~nx)Z)HK=)d#%b>((8#<Q#1Uw&RHs3Q9_v@ka0^?~RNxoEd_Ukdj--qTrl?_ARU zzen5cR2`2!Uhyt};}Z8vx3ppvS<dCJ$Uj}E_S~oZ@flfu>04RnK8Kb|g?(*3D&Bs_ zPh}}bz?oIMw{HvXTArbuDslMW!M3Ac7z&Sw7zAoYPbyz{?QPM{nqOaD_uK#f^7;J! znqOaDe*G${_pWa5j+yyic{b(EdmGljQ1EKh?#r*Q-jThv-PdpVshUfd7)ylrM;I5b zQjAbAOF3m2KfBnyNdAXF8FTIGua}pfe}B(*?)+`JtD~<5{n!*e<7q@ktmDzSvjjV= zJ7P>W9pZTRCQr_?SZnbi=j>~_{mCm=d0ku_E&4gI*J-(orwBuie{7IUcQ@NPqpcjA zIcHk0o;l#bIcv#r!NvQ<Wet3Hb1r``W#@l+mDD*FWA0m9QWmPNl8kcUmM+f{%1{aZ ze(!O;>@pvnJ8PSJ?i`r7a+#~(awf$WjUmqtsT@k2z|P|~B}LZY;KgSXZo6kHow7=M zet37G%aMzMACGoa%61xdx@5)qJg_KLZ;nz)UT54CVrdcW-fdK~`rH96`;+IE{RrH} zTOi{8+Gx`?Lt*dqxW_l1U&x&ol9m@Z<&&Wo`+=xuNz;VG)RMdmn%bMrOp3C;@u>1i zLc6r=>)*GkW?ubZ<8kwBld<U1mxs?5w|$CPaA2j(i3hC9cZO=W>(*>oV)<mz8>geX z$BR~qbuJS*zO%Z)!QElqh6c|918&ZXWhbro^z5rW6_ogaPh4N^9;fud&X^9?b3M;& zzlDdYev&-bkpE-Jep9F9OQufm)-Bp~IJx%o>_6pfb$b@=__K{+_wl9EWODRmFDaf~ zwDD?cxoWhS^0`+5m3Q}i&R^iM-}A2Bw(kqQPF1`+(3-H(=OWYRrLM_)f1J(FtxqX0 zd9&0ncJZbBs5Q-86V=)u@Vj1`efZ9cBc<Al&Zno=)wY&y{(FnV_1^J~XT;yha2%QS zR=;5F(kZ?XcUQjs_j-MN-H(Uu^7VgyUOzwod#(D3&zIXzXX~G8IeW%y<@IZG)_ir- zyLTaq{Y^=caki|&|1Uq6Ui<dt$x@LEY~QZ0e*63NGS$9+2KRTz>h1lm=dzYJd51&G zrOBs!&g`$N`}y?p^Qf<fe?Nb}@Arr0@9)`r*6uA4TotuSOpMjr-0b~QuEsMPXKz+! z2+vEq*0HC<B_OwE)85LAh^(cXuSNNl-e%&xb+(VgRzTpdlY!=na+cYF-90jG6V}Re zrps(zd-Ack=E_Oj3GLCVwk)?x(kOCuUD>jAPv?;x>btY%widSqZfS`MbzXMnND~vQ z`v>8Ky|*(A)GqS(*~)ym_)n!`>g9|TO$ld0rnrPWUe577Z|znM^J0GCkg1{~CuC&Z zCw}-Q`+2#8=Ce09HEwMDIQ5ju#um5Y9vK-SiECHP)%{y~6xcR+Uepm|(liNQeS@j+ zgIv>AlgR0lFWVkS5|L(gn)2r4#i9h>trALndW%afXB`t;yUfpB@${M<qS*p16Rab* zFonu4lx<W!)yGg&R=2>2$>BRoX!^tX&l@>vma(2V>Ab=$r9j2+vh9l}!VVI?=av|+ zx^^+Qs7%>RjW_->%PrRbM>GSsSH{H21aDq+_S$P%>Dn3l7}JZ@l?&hRZr=4KlxxYZ zl8J|&O$_6fP%3ObZkV+807v<uY4<k?Ke1CPw?4c5i`swY(7S)bzH6M`BN*Oxr6#YU z^TFq2`{$}n?w5HEne;qwHZz&sUUPU=<l4onS-zB=k8UftTskTKNlP?W{HDdv4c<Ik zb<*Y<?^iWL%kLQ<^{<>UkCL1`bNcR_cOOlnr<_dtG9$4)HR9ZJ-VL?y8{WQM6t%cO z@X@}8rii1mJ}OaJwkxOH`&)Fg{@>Hn{`P;r{QZ9a|EG_ax4zxTzB1^2fT&RG=hs{J z?u(0$)BC-({ny5?t9QSDru4|?%+YUm_X?hT>9SO$v*Hrll5_VYUL0PYE2o~y6gXi) z+Y3RS82xLvLb(r5dh+SZm#SM|UY0CU*W5RgqnxX(*j99!z+%obO23Soe{@(0T6YEt zupP{K#xQl#Eq+<X*UF5CC#`=b*D>EYBThqv+li;>^<lS#A#TCho+6JEL*?7rb9$E_ zm}6-#>&Yl`>CHBmp0t(jGi9b*W@%m%=)JJnP%eJ^3N5cUd!t|HrichR6bJ|P>4sgo zE2*aA>f+53WG#OuSGus?>D*GUKWi*!pW*v9sl3WqO@ObD&7(slhP@+inn>E$H6Jt< z2pZkt@R=1e&){^4OTg=zn4|-X`}erBy#ADS(L<Zhc(d=jTQ%IDFVFH%PI;ASlJw$4 zrX`!~UVdfYBc>Nh9=qP3V$2fO-mG+~uE9ZBplQaoZP%{HFBW-Hy3=OSa=unA`BT?D zs+WGKKD0)7L7?cAL<5zgFA@?)Cmy_+c_P*0*K4JnXGD1v^xoK9Ww|(aIm4?@hx%jP ztJ)2iI?VWXcQxGjyzf)M_OC6s4_e+@yX5EOpZgQCt98B>wA7t`eC6Bz$0zGdEF1P& zu2{VNp9UZQQU2pA{N)YrrWo<sIyud0wY;{)VUp11`-U!ZydU~?M5CBYr%B#pT4DKR zW?9TZhC{L^-#jch^IpO7aB<P0MCO7<y-m+<Z2S9>`NX+urB;oCvUhT7w<R9CuD+b; zqvLdYTWja3Gx72J=lQ8moG@Fisr01iq|nt~hKJYhulxDq^YZ;Q|F8Gk|NnGafB&26 z@}|-wf!kjMTjt*0W_bJc>+9?Fr(fH<`+fX=KJTsXf6IMiPFwjkC2g(bhU;BX+M8Eh z%X7P@CJ~X%+dpf9-{x(RuWkF6$=tLKno@cH_P@{netv$Qd;8y)hhP5v{r&!fy3)#6 zrP5mMOODd6Vj9jIY|M=oP9@ozhBpez6Gc)*(s>`>J|Wtbwz!~R)?%A29ctzM@*&xw zop*}eG=3guIq@)H%ANit-{lOQ%BQ%7o%_IR<#+0$(!8&=VSc*;Y^HT(b=-X};GTTA z`?}>-t67;V1G6l-PdXf*>9ClsIoru8MndoaV}7IOGEElSV<DG~pKQ)w8PvM;vu}UK zr!AMBE)sew#~$RtqBm3IoRgjl59f{LERiZr$r{0#OdlNI6mGHNshHa)l(Omu({^3q zyZUz5-c5M(QIO%}nK}1PEj%>cr~lQvdk;#tbyg&~my}Jq(|Lr|h^zZzwA`L8Gy7*e zpA+EvTjr+24xKxjW@>xCj<N6io4xhd3SF7d3c;e;fm;i_cBXN}>(15nyv1WyHE+$O z?NjQm{m3hI5;Ih~yL@ZPy=f*Dg~Gek&J<h7ezFu2V^dKI5ITFZz(~FH`@A;qS)~To z<{0nuwEN+#k|CwA`~JPX{}j?bzkgh|Z|hInEhg^g?_T50k2FeSO*>s6TK@iRLs@@& zKxqEiAKyc^+z<To;MgXwl;+=F+LllCMBmqKOb&bGzUmk6;a?s4=aux+8?~4VpDZeV zf8N*Njm0XN;(*Py_sc`?ZtFd9GdF5_5|g8n($tP`d+UEa{S3Ol_W!@v`)hxFd3k#J z^c#I=a_;Y*>1k<eYrD7l`@*f?4)@#d-?OLX>YDe~4Y{`?E<|-F|BK0eEXpzc^Us*< z)Sv~?<;Ka5g1yHi?}&Ojy(}>PbWL5dyQ4cy?alAf`}&7MvU95qoi$x&mOowfv_|df z<$dp0B;51h6id%!%ebBOCrI%7yeoQ2IbS(cl#<SSII*XNL`VoEpT9io*PB(WDK;yT z7bZ$9$>IO&nj_@$#QoDvk*u!Gr}un6_O@8qUG(|F3?)`2Q#Zxa!BTH;N>0CM_?hW> zrQWu^EVCWCofr&YYXKNGJrG;4Szxuxf8P_j@6N2?t-2qboi<~c{~gN*4HM&5AKc>2 zc|Pdj+QS85olFMn4$b*h@JQ&&)RV{WhtIswmdZYLYy6fbBiColuENuWbzejW-0yim zbH8Nq37djdzh^~S%vko$INmMq@aJRJb5oOiG#=OXO?6jGY4M)4I6b4wrC9WPcut?w z^wgI9iLr90k5)Wg#U=3j$~>Eny_`ZpK_%%E+D{#9^S$Tpu6tO$t>Iqg%k67_Ey#~t zn!Z8m#Ei+?m+J(+WKwvo=XdWy=v<H2QMdor-T(BxY<D5c#^a~nnD;#YFI;^ue~bU$ zby2$3>x%BoJ?FCadto=PjH;*LMiHyFZ=UYbU5;-JKKwGYX@9A(HG4t8@rg^$n<dG- zQ4Y|2{Qc36)Dsb>=d8QTaC7~<u;q!xvQu{mY`iorXsN}*O&LpOPVN_EIBRDyakKWs z4by(uEu6=GVZE=57hen8VrCJ^TasT@T|Lg<z8vQF`!(N#s+}FH^0rR1I`UL+QGwZk zhW`2c|GeM-=lTBszw7@zwg3O^vcLV?-{;o+zIWzOV9T>IyZPI5i<h5%TC_KgbJ42C z4?li=&Gz8jmdku{TWd`5{qJ*UZqL14-MzRit8lqo?@FyjFWJi@G+VbGSi3Ve>iu5s zITEX8748<enw2&^n|;mp__%%V<n8wSes^B}-rnlxn+m7?O}e__{cerir7PxbQ@^?G zZOEpTFVYqSt;%~oSzv#h{;FM5J(#D+tlDv0&s*y7^6YFjAvLWar_BdMHd@L)(P7I! z_Uw{!*52Ni3356e*LKaBxu-nw*`$a1X$D50j|8}?uFuqAOyE2FMtVb0lSjmn*;9hD zRtEMJynl3LLXl8v%%19e-n-1XK{w}4>2lCIS!Snscz5ZS>#wH^Rmx1b_f6)5$BT~H zrH6wYR%p5XKiA76u#sUgOTX^bOFSD&UZ=S|NqW?}bJdPb8Zn)b9*egu_#n1og;<)J zrMFP=iro_x_t{n*d2uqz-DvYcv3-VaoU?ZB=(bkc%@G(W7ir`6=1jx1SMOY&@m*Y` zAjX=oPyg3JJ%LV_A0o1oDqch?={JR}+RUIAbS&pcr$>)kV0-&~9tC4Bv*&YaT01JA zm^RJr(=dE|XtMfJ!*kzR_9|!G+j%r3l!@h@_0fG?90!lwn90Cx!gBmLtGbAQ7O!f> zjXB8$Tn$Wm2PJQEHEV}#PL_2}aN)M`IkD!5NMoSLGO4!U;2fUj_X2JEvmPWo5>r%e zn^^3@>oW7K^PXOgL<843v+meL-MYwd{bsVUSlmOM!>l4}-|RNooq5#K?C9+U&q7ik zbm)DW{aE;+*rpnFdD)dai$7~`{#VE@C~hR>`}EF-zGCelp+hQjEq_`RyID1@W!9Rz zywoacmXMCi=B)yZ2b9B@nZH{3ZE{<DjL-5>RbOQB%V~8^T#`;Rrkks3+dgUIxmIFP zKV_N(U%bYfg}Ktl86*GLG*6f*wXSp9p)(H*OqF+3Pf%lG@D*7hr!K;-w|=^OJ@{5{ z{r|uI|GnLR|NoztmzPhN@TPk6y!#st`!5exm{B~>-!supOmJDysi#GpexdL8ewUNJ zw=MT$@%(x7Hiw@)xx$y<A%CGdk4eUx>1k!Jv}WaLMVRL+3(j6#vnMY8d+q+Za$Z-Z zLT={YJM&gW&6wC|bn`p+S26z3KR;{a{=JyuxU{T#!udr{W3p4zt~>lsonP7W=;6C- zwSDgGb8Q|cOfxvC!O2yaBP?OlT-X;T_Dn-FO;@hDH|?B7!>={F1ilMiuPn7I$v+bl z+GCRU;zIqk6&#N%a@kS^Z~C<so?BL1kTPxNQ<EGYHI)NFNxP1HoTZ#6Iw$wWR{`0p z3nhgTr)EYv^D3!k`6qFnxih={(aFs-qwnU+o$s%oD?4}b)oJ&CZr@V*d5O_VMxRqf z_RXH=x)qWqKRh&5>A$h*Vm2@P0)L@XbN0wg;CgnUKV_}{7OPEp$A9npb9vU24JB*C zo}SoHWc+c~VR!b4Kir;3i7dbJy@%_oLnqUz9OdH|HvQO^X<=s+o6c~WBYauGk`D_f zCYXPJ7uURM!ZW#ZjfU1ifxDK7?@D&rcVc1M`7akYX78CRS)D)WpLN&HH}~t9mwYO( zIlM{3D=1+uvz5XMSCfX_2iMNH$XdMFGDVh|&$>qC?S{T}`PEUm)7Xw?oDcTkbhEdr zSY2Zu*EgeoXX??@61qQ}A|?hJ?X{7qD2bcLXy7fnu<^KTfP{QIt6EWepxmKF)0I|l z`E?^>`>EvS#A_#e-|!w`U6cD>-u~~e>HmNHyZ`U{|DV_YKd--;H~qBgE{or#O@<dA zu38_wNq^3NgOj0qzrPck_mNe0=FVjgo8+b6zPYRTEOBcX2fO%}qTK1PzgF$tw{PFO z-*tDr9^RQ~^wisB%C~LX&mH*s^i$Q%+ozv?efss+rz%_fmn-v@7hf&^)$$`d=|P@b zOp}ZJMnNZ^4-Ey&{v2m|?KUxKS48}&lsgT#PTcsc5~94hpdvO=RycWD?$1_lpC!zd zR(uVLasfrJ&$aNW^MzOT71r!B&<vQ}`8+^kPr0<hIzg85)=ek2&5Yds>~53ON~J`W z!tKxU+@e=%J^lIf=H0Wi1N%8T?pa$~IXzwB!<7C#K%?cN0MoOaHQbZt=l2WB1iP^H z@gCqj<$8?ST;;OMJHzVa0{O;D_hhjaPL89#QpIg$wtO5ZA2z=G#QODwV@!za5(9g_ zH6=@A1SWoPS+RaU|3niThJ<rIX`9cTnReics{+?-rkv9^W(73#x7$8ScQ@WFyTUT= z&+$9E&l(<^a_LO&%Ll3axu+K{E96s8U6Wj6@#m9A$quiu4JR9NQuIG{)PB>jneEQU z?SFZ$0eAOKZ?_mvk6xP_FA9zX@}E8U>h9W=4A&ZWobq~Apw3x&SJ2b$;~SSc@B1=g zEGKMBKYwq_y?^WHzltyCdzyY(SIkb0+7`b5<d>FZ=kDA&(>LkA+3Es?mT3nQ&M5Z% zaNH@oDzGJ|X_}|z#3k{e;$gjQPb&A!vy-S}J5bf$(f#AiVmF?v`y|YQ4f%uGFTB{9 zTvL}?`Q%2sU*n?t3r>VjO8vrO@?&DlgnE@TF{@J;__MX%Tox4#aof4)UH$LZ{r`W? zzyJSjzJ1-FAD)jA3+5eJapQc1>M4D}z?Dl=I&FHBHa@)Q5fS@%?e)j5@6GsGZigj@ z-`Lihu=C{JxTNQ=(*j#0Bm;#fXiN{vQe8IbnCpVK-$d81-FiCp|EH%<<^MfAeEIWB z+k5l<<vN+y?w+~x$VBtaxvE+weBlP#GY-uAw~MD!Qf`gPqxKjMPsNXOP8RnZ6}WOr zAX3Ay<;e;`(G9B3a*MYu{%CmCaB9kXG0(j{#;3m29&&yo!mQ1zxTng_t^f0>@6!wz zC+aC3JL_}D+PXXAg<`_l9;;HNOOuNx{7Zf&6!cB-i=2=`&)w-Aj$UhYyn-?W?3&-c z5Shi}@@iLsijIi+Cz0=h;(UoZMV(W88XvrPWBEGpLEB-2DBJw1bb0<a{j86wxMJ#! z<)US)duFZ|eNy<r_tiF@wRc1ePrlk@pZ7b)T+F=SLrCHwqvB3piS$BSGp7xF1&-zM zatovnlzdVbVk&FcAQxVlcFe){Leoy=9X(dB4ZMTI(&y|nQ9M}Er}8^eF>z*(u6@;s zTBX*g8$tB~7v|jf&~f4-i_(&W3A3x!-(Qir;i<KGM@gHJb;84iyM8V>%wUl;@m=ic zH{6dN$1VM_*7nWE{<_8gesA;o{QlxLkti#^#l6XjOk8K2-fw$<{od~Fzb9t?*}JO! zn9;X>7XK4w&KJe(^yjCPe!4hk|HrOd-a3bTXCJNIVt0Wt;`3~siwouX&EHz+1ZD3z zw%K*z=G@dt6Wl%@U={3r(fR+A9Y0gT@eRA&ughh>3kln$v1{Un%NhTzHjAhg1zFVp ztor-!xBS1q`t^UGK7RgMwNpBwjBWZU$yX;1Ev?MXEq}kU?VfBj)1fW1mc37T^zrC? z`}&#lT{U;*-hNqfYunn6S&^@=Gknu7Tw8kE>}uB9^4qgZBf^WnC$&YDF6sK3b}jDL z(_3+I>l6M5{|_kHy)S$E-5I)Be|?#916>u1jx2~Q=TMxcAZEnQ@#M)Hg9t4_k5J1W zanCPo<9r(RHiSEy!{}^Il<L-$<K<ED?6<#9%WAOsawK#LYlrDhxx$_e@7y${MfLO? z7@`;T9`=!3FS+X2hHupqeXshI=7*P@TELOIW4l_TVCR)m_i}y#ZuvjVeXrN3ctuug ztoE|)?6{)ayt;k5^{1vy+R}GcsjOWQcwm3$%r5sOjY26!HVTV&1{<&~nWU<=W0H_# zHFJeWd!jafO>pzJXVcf2r_2#@D-%81ubfcHAh=|mpkL9G+k%1{)++N<X)me1`29$t z$&TC2hl?T<na)^6?sIeTTcn(vxXoEipyy+*i?x``39o&9%x$|5YlvwW9sW>dDEiRC z)?Mws;`C&rO*_{#r&-^<%*j44i&ao?o#_{EVKe0=N{1YU-{+pH*IDHLicMtFIRS^0 zGIt&<{e88&*)wu#RmYqZ2OE{@i{6pjSxWv3GM?VfBvuqsSnV@oe{*Y=@Ae0NyY7B^ zpOaa?;c%o$%2Q?jnKnzG6keV6HT!nF{`%{$MJI>%&#v?gm1)YH7GZmL^{SOx!HGc+ z53x+0bk|)?Q2oT2nJH<Tww7uNoSyLdV==q$aR%0eJAJ_s3dK_nttl!$wP5xgUU^T> zg710Ny8e>8%-H!Vx8$%-toQlK=Q6GBgjQ0L(=9!Xm@OQun-6Zhv3d&E0_lA<m49D< zxBv6?_x{?SMK9aDX5C47?(>mtWd@J4bB9D|tj<KOuj?%LZ0o<a-DcMOldE->t~m81 zI`8&0_N@1cc0IiTOBOT)wyBDpy)(h0&9SxIJ^dX+?cYyPCD!)u<M+pe+Qs{Az4ocZ zD)y|x#<~?g;VN@>wtNY6P+;#~+<vvANLfmaF)S%e)FGtlCwG&v^%0R%Yh2DIvWZNZ z6Z^Gxhx$x`sf>4ir|7PGwn30}xsg*t|GN+cLES4M_wH=EYG0Ex`O-}FFS~kQv8)R1 zYGf@*)YNHpb(K+Bu==aqj%htnPY<=OUXf8=-Yx4kWd<wHk=3iC%+(h1e6q2*en#m@ zU!O)s%f$97Gr`YW)_;AH$Dp`Wl`~^k7RS#+eVpa#R*T*%M6SGZH-Y_RtNdh3`NpPv z?dz2+lh+lmF%iG_p)}v@oTeAkAK#7D8VQ1O<~z<k%w~Djv(({uK=Z`M5*)Xi?epzo zjF{78Rf<#$bh=971eU$@?`T`ra_ykyg7nK@TAkN3Zf`wQFEZWl#Q#1QRxh#m&Lu|} zZwY+ZV%ej>QG7~{;jEs?ota9<IuxI55}w$-LhQTKJI3p2fpHwhn^V2@w%<5o$^P5z zMy;2#0qcREUNZgW=kr};Z0`Bq_e%b+EPK%?QsSMQT2Fw`jD?Z+zyJOE^($y#>$-P= zNBWIZcZ^%AW|p?Ry0-e~%CADgYVNuk3!GviwKnqop1`%Scu6j&@aDq0qR%1oS`1}8 zk5qn_a<F;h)x7%jWJBHd*oeH@D}Szd;?|@W8*pf~mC*h+(Q-cKyv2=*L7%QPa@0TP z;YdsjS|+vJgWXV6J#g*y?BBmWefsRb|IhR9_J6)yK7Rf5xfmtA^eCoD0<oul{t=Nn z{n9)lb6fVN&my1JSiSt2DO6~0lY4w)_O-<qQ&%muvA6$zZ~di|ZU0i1iGQu#F7doW zEq9{Bo!{3_m)>5tzwXzi^537Hp8kCK<>B`7AMbVttA3rtY%F*w#n0Wz!f}r6p0kS+ zh4|kuP@Twc$kDZ;V};AEOn!Z4jmTiX9I-zy1bi|-JW0CZ&Mw!;Ip>a$rf}Q#_qs7N z7X%da7EC)jEt%!q9kI6yS?69XPd<2Q)6+L$o)H~;Hcb*yI8`ph!JV1-;oZ9^3C7kS z{--sD>=#z}2Sz;Eam>tNjiUWKNxip+T4&C^YI*7ILuRhYc2*qI4Nbb@LUmdnbhvTO z*5>3$Vor5>^G506$^(shyD!hM_-$SlyhC{BozByXzAwEw;b4y0Ielx9Bxfn3s-v6R zUnWm#b@n#0{OGy5;DAHi7P;CS&gw}*f|2%ru9!F8+RXXxwcPwG!3{r7R4-6Ht1i+| zew<0+*hY_J1&zQmNrRFTR@3&Y8f9oUxE{aXzHdsCqh6pVzlE5^rGG|@H*9M7S9u8q zB^b$A#8<FSHrOeYKl=>d+b1=br6)e+TxKyL_LE!0!TO__1>*7lIQ%Pgp8j8+F#Bo2 z>7RSm)zmzH@7o`vzkdDt>iumi_)qv7KFj)0r}eeOs#Q(NCuHfA<(E%-TlTPD<kDBY zE>~og!D9GYqviL#H@R7_&py>q+Lt$B^X{2(95dbb{P`6WepO84Y5m@EvuQ>lm3-%` zJo4Dr&M+_E=B40bbSrh@dX2V<X^-=S&4rHbdq3a4{_l^EkI&ox|MT<n^=rQbrY781 z{>ZR*dxu$U2*;rwcfDH)hB8(2Z`U;RoD{tHCTGUoJ<|<W_ivneb(WI&Znte+%S>+> zSOwmGwp3)I)YiP1cdt|b2gNhg{Qb36tg^1|-Cud{n_vE(JoD$k+e48uaT&|hDivfO zaVR+kPBffZ-oN+w-2+-e$ISTJPuY~{2XW~1Uw9}NZJRY`Yg1qG`HRoz1a<#dxVc9{ zx7_wt;)k7|{3=<EUvHbZd&csAllOLXiM(#Mm*ZY1W>i=%+Ha#b!MNMV<MG$|&%E>< zSoAV9TV6>{RgGlgGM@e<zE!M_W9nx|H6h;g6txc$9!ob^ACO%)(YD)3<mCI5G#!() zn=Uf@p3Zi>JBg#soU`fm<83a1mrPCucDZvDMCPb$zZVnt%`B?D%sqY5yTIuyXL;tb z7b}Fmwcy}dKI8Nn|Ak!zoCj_`syOq1zW-#N7_O8S<!7H&KbvwFy{PH1QIy$y)xfza zfxErR(OzFrcoNIDkhhaqH5(-r<D-_S9G*Pyztr)0KV}IyE$>kLXv)LE{-N)T3+uMI z%LDB<t?a+Pb=#Why#4ZJyJt@MeRkQSWRG+8S5Nlkn|R#U;i?b+86+fdoT<!P)1jAZ z+Fj0LOPG{i|J_<!`L}52o`$`7oIBYa?v+hEy>*`d)+s`<XM<P%-Oc~}vt$vQ<_e+k zfXunugPi&vZsP1LU_4TJq|d>ip&;?h93eXei|a3ASW~|2KEC9xY(e%}-w@GtmyHD; zS%<ET3O{WoSZdBt%^lWs_S*f=yFY9Ee)eRh%$-9kjyT24lsI@%Z0*-6Z&{NjSQNe7 zDjUD=js2gukNxfce){$FYFTi4{$1Mu*(=ri<JP~+yA~fGf8H@~-PD<^F-xbcdRKbE zc3Dnt*M8e2Cm8lr+dMer+L1G3YiHJ4(U&cy%9mUYh_Khz?%cB{E;(_P)S`fSf2%`Z zs_E#Qd!!U3vn~GZ=jZ3+_t*XXJpcb5QPb?@#e28i<#<rP&i}oXi=u*}dT83G@K2M{ zUMTU%_Vg^+p8Bn;%j<!Ggn?t6Qkuc)Frkcm$;lf}x=l^ESN(qNY<`tB#vXTc6E4-T z%w&^D-Lh>7(~GmYF{YutTQ>QW=>~Og3M+n}=jzRTM<-wX+=R2noh!UN4FnvtqRy); zOBJd3o6O98cP{Cj-`z8_BlD-(wC>Oiz0vv5=c8kWX;V*=-QVXy9Xod>Zcz#ot_|5( z-u5LUt~EiUM2}DW<;NcZIuj1RSGVby<eg|fTQzu-T;5gdD~B&hY^mgn=Fd6&Y}K3E zu3c*XdKKh0D<!5i79TP>IO*6Vp*2iOeuqv^tWTR`9qIerraEoalT$Ct&qh4wxZHYh z{a*J)_YSVMY4~yQw2D&dd5$m6T2Bwp=x5kGvqNKkN9-bPPnJz5es4*5zq67>hk0u9 z((c)FVg#-kv-qX?yl83K;&JYXi_oK$8F|mxgN1ZN=NfQz2Txn-*Xq(bbIFubQRbb+ z5pfa*j5&u|_gHEMGP-6h@V3c!UTQBZxVdw#VFhQ&7e~#<?nXC5Ufvg*RP5K4T3{ad z|5KWDaQlpRY3p5ooq88>)#lfVr^~{p#aC@P%42(kZ|{5k>vLz$eQ<BZ&dBr2wzO|J zG;`0^WjbqPzXz?@^!?f1uerCk@m>qmHl7@QwW;ZmPtXB{uu|St+PZsx=bX5+D*V|+ z=WFLq=5nXzu0OxOR9%esr=4-~{$p2P?sXRwob8e=>0_4RsukpNBS=-Ba~oUtv=96) z4r|@#8=u&{<nEiIoi3H%e^tHRdsvg}MaQ+*dwESJ?yTNomHf@^RL;*S-x5uCOW$Qx zOckBFR+d@zCF8~JvIRRu#bmhr&&ca41;`sIYbM*88cPP7h4z+MmEZsV@9XR9;etiG z<EDCgYu^9+^6%HGwOd1UIZe_UInG#BN}9cT5G5-!f9XUC;o~ckEcs_lQqfT|m-Iik zL8>D__X_{pLofb@b=*Dq^mub2PfpF2<t{A?nses#zLMH5>=KcG<k+f8&%4YGN>(Ae z&P-^I5t_KfMdRV0?)3p0p&cEiPu@<_G~g;!ov0M`-0zsuWj+<9gjF-wHAE-rzH4y* zY?nDB^6c>w>axk3ANv~pT~#8yc=MHl?TeZ!J+CiH=ZxKW-1+Z{#++#l#bphGOzsyy z`PeZUZZ414Oj^7)N%*rrzy6y*>#AgF1+Ohf57ks2;7xl`lCnZ|uH|{Rhz{eDFN-RV zWbX;wBbUgu-SN}Hm-}QrmDaS+i<-mZE?-_7Hs5F}`{M+=1KgFi#%o)jOb9-AMcsA6 z*4|n>zy24;eLnt9?qmFa*NCs?gv$QFNB8~G^DWQZ|Mjf@;0kl|=Rc0AuDhgh@A2wW zff8IDcP`G@7|mXOxb9_}<33MjnZ&B1-h^d)%ah(L4}Sgoa@nTfuXVS!`G(GvxhJWv z=klhN%UU^wcMbC${bmVubD0IomW;|8pH@6fTk=X_&j~Hbtm|`Uu8k_Zz0LO#!`fdD zw;b)xU%ORof_m|H|NS*-jauvitFJ|^7P;$namnW5)UazoUa6Y*j3pS4$gziLDka^m zem~!?_ScV(k5!Ghm3S;=<gX?5q;D=;T-&rst<5@4@$R#C=YIZwl|T3YoVoRaA9PF^ z7JPlj{Bf(3VbD?I9~`S5FSlsBzn}Gxh3xk|Gryi*%ItP8Th}GX>*v?`|6d;d{r=wm z`uJ^8+l3yqtl4g|L2yzZ^TLi2IsJPYzAOvbPBmUmbW2kGX0YnH&JjmTRuT4AMp-5| zlWoO$BF*z}^s>D<*>BBmWvf2H(B&bEu<*nw0;$)&ZaOdQrj@4ImY0;WL(ux@G?}Bl z-5up!&hlI*&R$iw=v^p~cG0G?yTV82c|G6MmMgi@d$T3|oDG!LnBKIx_|3Co!tM^e zsJ@4rJ@>UNzULkIZq_v6bJgL`T|E-t|9-46VP;~mK%sH>^bnz!vd!Wz6#LSv7UxfU z`Ss@`!}HGkvrJbl^0pJK(F_vbuQ1IvhwoiZjlb;rbkTR`XD%vOvg#<)E3-w;{S9Xn zAD#Ft_SvzqH#sb0XU(A-Pd6w|cwyM1J~Mnm{<7cBi)DnvIXWWw&R6d^Ek3>VveEfq zE2++d`PIhKW%ryW&2&*bJ}dtFw>NKnk37zQeEi>zj}JC3t=!%(CN}BLPxnX1-nJd@ zx$$96thQkJ&I7;Sy>n{(63Y~lKJ(?a{reV}mo>*eO#k6$F+C_mM&nF?*#yb!C-M^1 z1(WY}OgXXm{n`6M^FD3-bS`}NGuHdQB6*@oMa7&<D|L)xBc0aguN8juBH2wRsLP1O zMQV|uQ^9hsja?%1!?M%c+4q%e?OS*K_0ytAp1zY8>qEAtPCKI!!<+Y^;HiGxQtQ4) zR+p?@SSpna`*mLOguSi(SDaHlrS@3I?2qq`rM;WAmD_ilzM$8YDQ6aiuGlC&v--X4 zx!c#GKcBw$?OxRPjAd<ceKVF++&X6|#N6o-w1Qi}D&mClf6GJcP7;=0hJ34Yj5K5v z)Qb%|jQH4?rA4ZH`aC!LPQL#|tH)Pii-nXnbIPlD2iwo#a|I4XPTe$3eB&X89Wk>R zpDdFKcbj{NS-oS6=7i?ZkdVj&D-}*vJMZOBjm??E*?&l3N%9#%<vnjA4tm-ct6l04 z+vxmGPo#2>`-EsEi$foEPhY6ceS7A_&lRp>yWgJZm~LoS$6P9S(eIs{(yP+X)q674 z=lp&5@|i|%{)TBKho9N%Y}jJJ$GpVk``;<^)*L#mx<|E7ar3rrww97Fx1S1?+%{GG zaAh;c#z-Fi2`fu4OmsNv;<lu@#Q&qXDrbP>D?X-u0>)2c-xhZ4V|}Nv&6dqMf-_Oq zQXua^<_x*GA8#ZtKS)b=@0ziad-I0&9eyR9kp&wBPN?=RJ?;6VeCa>$c^87ND+wjt zn{no+m-j#4duk2GPkk!fy2rXjHq5au`TXh3uo?+5@#&ZEN$-nLGPgHAd}7X;+f#4o ziGTTfD&p_TLZ`ySM3(rK+{ycQeVBPtBJ@PYZ7J(D23C)k-0KS2?i&%xA;8h%y~Hz- zlV=v^diL#ZpLd9y7UtEu;o)ZYEBxc1D^*>*zM-v054<=x?dj<$QrDvn--_AU;3l{E z^1k=i7Dk;aOVe$t_;-{!y?xzRO}4YWx|<$ekTTx>Y;#u6vD!0JoI4Gg_1=3Nd6)M= z@ZeOIdncnK%|AVObN}RV#tp@%CY-I_Zusbw@M|5ur1RQKC#1_b?l`igJ?KvAYU2%u z&MXt^@HlX{;ohFo<Y(^;n~v`L-jFo^{Oz#QpFbC`Ewy71+@`49YW_R=NMD6=Vg&bl zu8pf!7~Dxbn|N)C`;8s!8(BY#-b^&xpMA;YeaK8(wIl`}lX7`wjuf|fT#ieA1je1{ zX^}hB{^rL@t@n4&^sH&S<fzT@Of9rnYVOVD!b!p6D<|$0-@zT|YuhICpWA}FilvE* z|EZy4&jlm(OwXj)M{d&&ab!z}xn-B!E1GHI;=IG!?cN@f`^)rOXCAiuc%va|%HiCp zVS46g&K_D4)24H1xyv`cSG9|$h43!CS@kA*nvG6*=^AOHZ`%ZCRX!G+?$M;Glqf3p zDUnC^srdSG|0biBJ-c_iE>?JP(CW2~EW7X7xV%T4y&bLGCtOr4;~v(x`}W8j%<Z(4 z&iKm7Cnfams1yT(0)wZEV~FjUqjK{6bybGBM`G{tL>}MvFxHdVTRbuPqWff%r`iWu zo;JMfkDPn3^=4iA?bBzUF3b9}_tBY|c{{KE`7T;ke?-dSAWN&{Dpfx2#gP>Z?+&z{ zkX2X8zbA9|E%RjKn)c||!M8nm$_(09^hvTcE<U*8{dynkWMz}>y{bG1=3WReyR<p$ zkAk4)69q*HxBCqH6;DXcw{i+Jn-${zQTR$*0P~UCJnCf|j<`KPC138Irnmfs|E`6* z+ZVN0y$@O75@kC1n1@roWW(+{i#na2n2mp~t=c;6O7rF;MiLkMb|!z?AUBymbLpn6 z2@e+g?^cp|o|~9fe)x9sy!5=Z-CtEFnE9){%P?5LxF>h^DvQdhuGo${4-6&Djh_jr z8>javX@)zbi>d6LHmSKR7X;s4Srb;Fs4k(=%z5(jn<}1Im0eR`UEO(DV#5t(mP5_+ z?9&S_HX46E5}eYY>6Mc_b4Es`!Gt>^kK>D2AI|u7{Ah^$!j*Hbc?v!Zx}*GlcFKuZ z4~?+NiLVzK*oZVAyrb&uBP$uD8x_K*;p`LhD8Wq2CH0fVHFZ_J1)U;$wtkuUJ5lR` zL9>-oN}KV&ypl-9o|^enT+i>*x*Havn60p2%AH%ApL);CNe%uk|Gu?pNdXVj`&;T4 z=j`5is<kTQgW8s-+diror@k>1P`IY8`$})K@%}k{&wFyW8CLk(@0jiKt6;6;l(stY zGtH?=?7^Hh3r-yQ+$a^Vu&^ersrW*c(BawUZzgp)Fh$hdIT^3S`&~p>wTq!(d&QAY z9qWy1tu^iX&E7YEe;juFLAlJNn75KT4-OPf;69jW(09XTk<;Bdy9FkSu^FDoSMRP@ zS@S?|$Ah<Xd-xb;yK{>iQI@E4%(%z;_D@{E;XUdTZQdGOTyJ&$&IhBePL-u@brQV? z{X%3!H>B6=DS2r$9r`kL!{w<)5his#*&m+BXx`+=-){Y0cAv0c-!ZM|P$%`Ai(=wJ zL1z5hJOUk-80E2FapC5efBebS=L?di{fx}~b#`W9QW%ql<V>T&*f&*?CH?GgpPo?< zRlC}|{mvW*mdqI)i<N=|vZ_C%-oL(1bH<+X9i3C6zWU$a`~P_TpU<B^2j8tLbj}v* zoOrzCtZ?va?+`CdSNHkf%mTi@oigF58H0SlOTPFkmkf<94(t{@q+seeE5^m;3`@#P zw^^bE0lS&rEp$}0nsGG7|M7Hd#x+r=w_W|bGNUngbKG_%Cmq+MITI8*eB8SQHw83) z32c%OoYj11>SC4TK-D7tzvnFKmb+RdKj_-*%2FD`l3i={Va62EGg4M_KW04L%K0sG z-{PQ0Z>AS1ZuTtd$`^gS_g;HRoN2XHnjedp@s+4oVXhkN+X`#U`qd&_WD~Tmc*?x+ z{PaANk<Iwb9Ueb7j)o6=_FiYot9iF&lQz44Grzg(IfWN``-;MN`oG_Jd+KTb?z=Y< z4Aup0iEnzD)gNzjN7()G+)HjdrS9cQ^zu!X(Oq(P=gz)6Y0>?MCT=TKSDO3h_QzSL z|KwG^nEBGC{FH-1?}3$TgkLR^>)Eq9<B!|Iv&Pq^ZaVDQzJ7Y1@N^3=jXSMkvIjRP zP0}q)+wYnsGb`vq&?Vk)C6iKHR1&Nd*_&rJ?&{`NVl8{_l;ou{>-fCZTYnz7F5DiW z(H`(wy87PUjN-o~8(0);lf8d8`?Y0Q@K2BOI{xm#MbB`yLpeqFFX?E!d%7j}kU|yP z&gjj5Pl?^0scJg0<Dp|=+s?d;Vg)mz&+Utt`Th0k*-W-w@i#+Kl$F8^LW`2ZKCQ^T zWLnd{O}gXx;;(|jk0#o<Yu~Bt;9>9U<9AA)$6h^q*2$e5Oa(@|I!iM+J4BX8&tgqD z?31+YLBLs$i5JS*-yXRe=^J`)fBnDq`akdd>#P31yu5qc?BCs6?K1vW?ufhA<T`WF zp>CbedF``*ZBdQNQJnB~-bpss_iaiWcck05tQ6QXFMLbTlf}=BY{j`R-RNOVN_3z8 zqD$OzZq^RXk{xyy1!3MnKJPSz3WPho-rZW`;gj)h?&-dSvoj`l2b}V1K3&>8acT0w zu1_~l7#Aq}yDG;$OsM2gv?_0xOStm)@?nvC-+I1Wel%0Kdr|Zeh1p*VpPZ6Cdg!M2 zjq3R(Y{JF+kDOfgeP59OOqD-@bJIlHG_oCBleypDaXjnxWg|1+wHp=3>N9zY?qAWk zccF65w7~6p#!r$L*6&ucezn#-%y3p>EHi)Y<jZBRug*THu5_qo^X`<Je#R>*O}_u? zwW#cElFBQLZ~wA%%2hqf=aqTp0W+MhRqW<EZ+PmXijwNVkJGa6K4R=Y(OntVr+sAN z-s5)54cfhqcHGG<@x0%0AzI{UyKKRq`Sv9{4ZinGbgJHbIo)kf+X+=>+clC7K`c@~ zw<w+Cm#j8l@+|+2`Jb|t-*Yoh7Kr<Mob~!yq3!Yh?Uk?Yn|{h`GIo17Zn=I!a#2s; zhD~0YjaN%59#*N9Y5Lr`YxTQ2v0n4vr%y?}7kM`ra6Z=vT3pT|I!(xYo%GxA;_BL) z+kAgS-l%vG<)yjRcKV}Db3<)5&57tLD9mSONjPHs(c{c?#m&tgRrzOnoagh2?T!1M zd)rI%_RG1eKBe;4pDIjMUU+o(?%;a|*&H+;vu>FdA?u|X)fJ-n>A~JMi-V2~(RNom zG@2_7KIJ|C{4@UF)A)Tgl|MhW&yWB9ZTtRz3TrQ%zPIjeRqh#|kUPFD*=rx_ab;$> zsQSKq*>y9vuj!QXG-Hmsd)4pv###%Cuk1LS?7!v6i6DzNi?Vo(uFFNfZSk0N+HaQS z!D^QY!J($>wu;$qzt)m<zgqLtpD*w3e*XOP56_2fwi`1vISpPbSZvEJUUW!n5ksW$ zvW(ByWarA<^X(21OUhci_1cpqXBI8p;d+vLvD^)&t6D)xySP3V=rmeAx|o`{_UO{v z_jdO@UDNHcQYYr|?%bk~OEcOt1jA0=x_-u?`>*mB(<kr3V}y;vL>^pV>^!k;Zg<w7 zua{q*JP;qh{^jpA>7nJ{m3|98_wZTiCaAQuDC2-blJN<*(`r`6`K=xy?mMRW`?q#% zSaF1X`yWATmz4av!!`b=c;1?=I;?o<L{hYu+@B+@eY}ee_G+3GEH5xfuUl}Y%j^1* z$&pd3K1Cf9^t|y$c?l~6_oFh|^19`Xyxo6x+&-7p<Je#6wuP&Gq5}8!8G!{Maaw0O z%wFDj|1f2W(Z`zd+aB(XzHNec3s2e_r_G48;$bNh>WQ1c-5{%b>DAUQ%gV(Y&N|JE z-6HnBU~^?kU{Ftn+(RKQaf3{S2#37JG|uOI9aS1hcQ~h<RFvUMS7X~H$!VB*eCqD5 zXA5R{wuE+0@pYM7B{91-OXZr|toe^JJf2NylyI1NfLW}u`DI?5_k=eE>K6}OZ|PNJ zNc?1XWrY>%rNE;7GY>L+GQT=QEx+J-+RETVOJr;t6sAsVeDg^oYbV1oA2GSMT;toE z(l2J#sDJvlY4!&86^d$=ESJtmdZn%B;W;Rxr=+N$<m=<wQnb)ukz2ttuf3fjsWV%q z2)fo@&OLF%&u5*BJ)ip)mT*3eS-Z<+CdNvg<>(LT2$()&ceripasNx(x985DwrKX$ zS1v(IvNVma*U9|lV|F-p#WCrw<y^n|f1l_7e<}Ze=UcxoA3v{O|FNyz<Dinq-YY8c zTdr*j>hH8IP(Nq0$Edt4>U(I$gZ#`Vo7fL&^So3``n}9W;s*EkoAsLw79D*ixZc2E z)yC?rd%s`)vb5De{oDVPIzwT%xR%M&o#(eXUf%w(adt;n!;QHoqh?oh&pbJ)+ET~i z6nDrRdH%MYPbZ%}rC<Fw^TcT;k4^(KJ^|OYGJ8xCYgb=Z%JvjoU#~SuO)AZ8+WFOs zqg+zA?`yb!qg^7g)$^S6jAO4W_o$|sJkV))WPVq^sYNX7{F^`LotK=g<}q0+<kHxB zP?_nKUr}rH>|4p%g+0mBr|fvjx?l2Kfw=HDvDH<wc|RML3mrXiDxb@x@U!_lVZXV5 ze+VibKc9Eulk@f0d-ko8Tx{&=tZZ}3I7zDZMb<I31CqDugk$U-CY7%{we;PQUBA<8 zRCs-Yw(Z#UOrkQQ>~YUjpIH(TQu-_x6CV@{D$mpW=Jc%GcItf<m;Vcw?7E$=^rim! z^<PTf3BP8Teo|#M`h4%xlZIEfIv1$vbOoJTK6wMD<WFPcvV!cj?~lxzd@Nv|nYya{ zDlwPrXpfWDk?#3=SuRXLLCg<p*f@XQyVEIh&y_29^{Rb3PtC--g1pXU-kHv;zvr7W zk3YYk%azJtxk?RV$BCZTe&^NBTfFxDU7qW!k2fz`wfyqRoUecWEYC^^yXI@M%tqv+ z5yP1y$Mnn1i{FcFEM}ND|Nj5W_J1$$`+o25=k@E;_PyVI^O1#0_uu6E<$^ce_I;}r zPJVcMA7{wkyC2>y)w{pTH@&#xTfqeF2KQ@cI%e`s-M_0kJJ)EdGs}-ppC)bO3H4uI zHEqRYe-BpIcPs8b+_(Lh&^uYSInt4<=7d(gJ{Tc&m4i9yo~^lD*du0srzMNh<TxE! z_&@yjnY<%=z3aSlOJ4lkaH&1QA+$Sh)l?NGVUwInLr%8WDJy0zo}!!d#m1&mj4hz^ zg1mR-8Xh+D>ScnQ?5xUX>b2hJOuCyOurQj*nq9wZ(T39#+}3Z^+xzG@&*ad{CXa;r z4c3@;tTUg_(%i7@*xlU~|M~*v8Trlcub#0=XZ3zxt=qC8RWIKceq-uiTe!2`vT0xD zD$9cFH+I+_>;3!VhREA*4hxdk6|e4jU@A3P!}QgY#ETzZZl2Ti(UkSkyD65(ggLxe zpL04Um2cpC-VtC>#NN70gE>LDN$Y`gvfc?3laNJL3JH<kY<s`=rc1tFzQ3oswY6t~ zi$eFyrjG%38ket_xO-dvaCy^lBT?{UN3l}*qzFlsIOTiyUWFYxmw)@%arY0u7o4-- zceqwNc7;XTzDdhgw)9<;-)NvMF7|4b(2FXgh36~|TOa;;YvzG8*|`r79bt9q@e{kE zP!Td;=-s@F(`WZx5lGoqR{CB|I@nlaVw=6=i!Dx9PgwTkEfzdj&eAUNc3E_d_1yE% zFTV`&T6uftltY$hCv`q}yin%l-YEN2ZSD=z9?q%GUtOBGZc>_B+Nsvav=484yk_z@ z%#2<C`}+Fz>-EDKo`3$lyIg+WynS}|_VIetId)50X*(aE#VG5%;KI~9dSVf0H@|j# zS$LxG{cO*i`FB!^TRx<1DQr=F(D-t~=|kPeEels1xOhB8&nW)LnG-B`6U?UBZ|ggz z#;i7NiPD#M37dj_1EfzRK6xYD=rDy@j(zgsyT>f89a*PZD9<zQvUBh{eQ<8Y?QMa( z)?RNvd&_4Dx38z1g3rpXG>#b@>?(8a$O_Hez?x939*}4^*DtT6$GbD>zS55nm9u}D z4`_6FfBACE*T`>&#k4&J&wUCnXk1_XTJ!Rcn&prEU5ZYzmG;b8@ObA8AGWxt?#o*? zgzTEra(Txjxuzq(;~pvTKE9zTX13DL`PbrI5_;`Q^?xrfeY!O$e_2SY+#2!EX>szG zO0Np*{Cse+K<0nWlV(lh4z7hqx+_`tNMBoFB)ckNbJ_D3dsR1nTp$!>cT1*vTkxyP zI+MgpCHwC_aLQO_$-9=<KSk*B1qnUli$6DSxF>qXMC$OQ6u*>nWhQFLsaGRbCs*>S zmn;#gY|2S}6*w)y=HUA`R{eH6kDt|<t{)q%wtxM_J-1)pzm;+S$EKzmZw0nY)-cTp znSMy7^R}DI@?ATt`(H*G7JUz9PMF?(*k@LNU(Qt5DI!u?-O81$E`2Jd$26DDZtN{% z+iSJ*+9KbSWUU8YUQdoZowG^1PlUg`yp%sFjORd#qE_a~iKUuL^E733mY(=#a_K;7 zoJWJ{k|k+r(l*X37)36sY=}_W?0lVJ-6B;{t~4D%mm;3Yn>mWr$|i6IhdAy1{v`BT z)vbB+?$3>nJGb@PwH#Ib8Kr_@y0^p5KcC#OW!rA)4{Wm=CQtP*ubnzOtL^E=hXn;I z9iJ2wtu(qF7Wng-my6GnBlC8OB|G-`y*zT^h}zxR_O;(jKnwg=2X(0Yczj0x`R7O% zuc=yR4xKW6#V|{<^qgOBPsE%VkzHOU5ohjN?<!}06H*$s=(Ui<<m)~`=|X87+FIg2 zHXO5Vn6n}2{`$w(Etb<mwB?sG&T}?WDol7Er;+riB_h;Y!)*KK%`*$vUzyc@bk&NC zwLVE|jO&@U)@5+Wrt}4wNco(M7FR7OpUoi@crnN+Qfx)2HJ^~o`g+qFy{8_lMJGQA z=+gg_E)czLzDMqv4O@;G$xExAwOg3pUDx#Z{iIcCm-V%7U7WUMcWvQG#f3g;->1&% z4>+p-`)1Ob&--eWm-w|jV4KypTlMhHYqQqpzW8U%6!N)OQDC})z|DeJXS-CF{!F$q zU!yAX%BZqJ=sD}kP~#KVALi{fkGLc8ke5FvAVK7^yZ5_ix{Kaa$i%JHHCW(rG&$;1 zmC>5ye=pK(xtY|iRqUH8d1k7ot4UM6V<JCq+lC$1Gbc*z*{D6+F}6iXs9Q!LIoW*r zhD+SsCr(H({rk(5J@w*WGuPA=iBHXgFW1Y9{?$EsH78Rq`>CN^bheu6IwhyQM%I<( z?_9OK?57Hce)??Ocyi8(yR(+mg}ZPCs<@oy2;wul>(t#~ynCjh^q#=Z9~vDSjxCsz zdiROxxjSc+RKHBBoOkNo)sG+AkEx`nZ~S?3!WlztK0ARUXZOx9Emxl+xU+mhotv=f zNA|NbBA&;Wmq(^tb}rIk);z$ha3=Y1z|<<Mxpp-_KKv^B`{m{J(@!5IJZk7HdcXHt zmDSvH&p+#C*VvxB5HKw`;qSX|JFV4DpY5FSUX$&eUdfz^t(A(w&HRtQEnHt*zBy*e zqg8Esx6j<#x4riL*|R-7>sGeD$ZI{}Yc*NwlVYEHm)d;2H@YTlnXM-hukHSNubHXz zo|o3W+8@&vFP$-M#f=Axg?jsfy3Xl(C)zONW?rptKXve~<AROHxr4tS%u*DX>A~XK zs?#_5-hs?>#osSjO%3|>L-f9V)Wqyp!QWJv|2`=&Z`$D1>oxI7<DnX5>zHucG`@YY zA}r=rVmhC$KmDeW+CA@2mIv>m7_nBB35!ju(p`6){vN3~C!2BCERAat3QK~|9=Cd@ zt;Nyp%6{*?Qb6Cbz31m#{XK2DLUx*z;i2ruc}a&WGFPm-`sD0y+Xs0(i$op%pQvV% zd2y}$vzwzthT|p1PS0gco2s`999Af0u~}a)vpZ6!T8brcP2}_K-M=Ni>z(b@)O~82 zdg0KY)q-&otrkf5OEuoKj@jEGF)^bpUcPs(V${jC|I^BMNzVGi=yc<3-`D#Y$^X`6 z*48-`R`g7prSv6fhvLsJj*U!*ZuIb6n!<g=?Cy%Tr<*o%8M-Wae?8B7x23`&2Z6o` zm247w1*Ho<>=3_uat@d3!ksQob605?AC#FS7IjW;>ysKa)^|E3`&X|wnE2!By6YK2 zn;Ifrn|2safB(Sto3li3sISShhlkdrJ}G!5JNe$->hJfItF9!^to!*tv-<Yih$7`| zeY=J;TJ!ilzpatH{k=Ya^R*jwrfc&ig>t&I)W2a63RQ{L%{*hOywYEOQfTB%2BoC; z>HF_CT#)&taPRxy=jZJ+A3nZU|MThe@87>yTQ6HxeS6#Kr=LDQKR<oC_>{Kbyzej7 z|8{;Y3RSV0B{^xS#pdHLeEzn@>|5c-W-qj(x#i}}Deiqd^ZYgkq%N^qb5JjT{r243 z>#n~p+&^oko31Ns>EDLAhjiM`d|Ygvs;Ib8viR9y(cBkTdqVX)_I{to+WWy+C~Agt zbHvSN9*@IcOZI2Y-M*KB_m;Jny_Kf!yLU%cMHSX*O*uUEW>a!`Qr^L=5^Hf6-_u<) zts~clhAQnaHSU&qogr&BV_%-fq`PuyP68J^qD8n8^|&TirYK3po-Pfue{I{qTRQii zt;v@5%H$i~hvtT@dNrl6Y_r4MEz9mzoH4s5eE;jlNzxCC<!eGdf1M$_*+QOqkAmC8 zV!aDDL>^zP{(ix?c0$bD`nC71CmmFOU3shY*yUS_58dBS?66-aC%Eu*n{Ky8Tk6{j z^KQMoH}}Nh-aYM+0UYgFJMT+H1W9owm~1ZCY#?{^nER@tQztSt4CU|t{B?3wh}$eC z|Mbac1*L)oB!guqt4^D={05V{5bw>(_e$$xeLR{x)vvOOHn4IZzU;ev<@C0S_nEF$ zZ~XuL-TO-ZCwF|MXkEWy>>caiR|d{a5kD82>hM?_%%0-ql4a_ZUKrH&y5W(kl8v>Q zock)7R&zhQhX-o7`O_}#-0|SWrw8Scefd9cRJ2sQE1q(1<xH<x`*uCe*&+A&+>@kQ z0qew@n>un^gRJ`9U*GwV<QOv9U`^K<r$tB7yZeirlJ}Os-cf9|sQ%se>i4qGHwB&g zTBW=6-%ovejVE8fZr%E?tlB<wh0FbYwZDIUe*Uzm^7q@)FB6|6I~-enY|0#`)onK~ zFP&kZ*r#In>Bx7v;|I^A&WT>mP-Jv+ga3~9>ORZLhnkCLtt?$V>(x}(+uLFi7ZsfE z$rBZ{yrt_hdFSjMacYNp#9XgN^0a<_`=a`3lqmn6<v+}}`!CD%^DYyg+dkte7u#Av zgUg2=TE0k7edwxg(e!bKD_2a>XU}4xE{ne8Bd4_cUuh{tWxsa&Bq-ex&1!NzsB7|} zB^(F8ulX}W>(R?DuE~ZojX&M^vsk})-k13kN?l51{w6QD>)dnTQpJ&nqAOCh4zs)Y zIQgAlDI2+P5@Ym-DbAAe`_j}cALm@!IIqw?*-U=^!-euK;m!w2r}c~Qr|(vuczu^b zLYJY<Kf{El=by$tDi>S%<jmT+YzO<TW^uZIy_cwZrccm0s%PmkXW_hys;*XB!v4Gq zw0K<R-mt`G&4hkwPtDefjNEA-)i)OKsm)k^(D1~XsXwP3=jJm~EYlL{2;-YK!T2}N zwLh#3zcL%Xf9d?QuKsU7oAIB!W-l+-&I@0;wfSmGcah>uk;)zBDG|)Ao>rwox~csS z3^@03&osDNQMkAwP^h$<BTuDF#&KG)x|F2Y!6%oDc11G#Pn)J8<T~RjWBQhLN^ex0 zMB;=_Ecfu9X_>ob#v|UdZT&LG@{;Yk3z_Fkeeu#kib2xqj^&lPa}RNZXnlT>D0e|X z{rf~6ryWZK<E=Q~$hbMMR0vcWKUnl+)7$b_YfINu&A4CPfBS9O{`-5szTWr$seb*> z%klp{Ew}&wK6Uk)PxJr(oPWG9C;I01znk7)e_eY2`#tN8)g}D;p|?I>2$q`ODAAKV z|3-14(DDo1+pqnak^K9~+9Qke%TKI6>*JbMRjX&~qjYpn<pimj6DB(fSKIH&`&#sO z+uQIx8&0SG|M=Klu<GZx$H&jx|NrrE?=)G3$ETzWlhz#;PCnstD0F+}grl!jJ}VRl zZhrCh-My(zt(&d*v&1qA3?<?ObNrZ#PdquZ(7Wp)i)ZhTu%hkvHW$81QQq9)xns)N z^R<3=nfmlX6@?C7l>5lJ#3kj}p+!;IHyMxYl>L6~cH&;v(Bjame-D)!Z$A9^->)`i z$D8^=!O1t9ZJau_CO8~^kT3S;?ZXb+x9sy2c`cJZujyhC(OO#MxtL$9U@2R_wBW{R zi&)of4@%i4@XS+HNw4&<{@c5Z$(I(blIr{M=w9{v$R$CK#BUU=ojc{cN}R80DckCE zBJUaY#<ds-lqQ#dzc){peM$4~>9WZ$)Qjey-qUO2zwl}=yKSu>n{SZxhZUNd9CM<% z#YIi+cj;UBEeU_9v(;tOoGoDqudB?n@15QAP(AsP+eKxa8=7l`H|`c`^FDp(@UF_w z*8=uiDIfE8IU=lfuX$16w-%$z)0|yATf}b}^t!BgoZ)g}heO_qvrnc77B8C=#UZ<8 zZh`%~xreH6v|f!gn;xJPw#90BNdp&qtHnHZv7`U_J{?{6z))HH(91ci?W%74?eB=0 z#_MBuSGoD?<o)s{o$Ml8?zH^;G3DOwlo}V8DGBPUlqM-ePTLyqAL20~O;ha9k~2|T zzU>M%{(SbE>|WorZP$)Z(QAvDaYxqlwuQ&E%W?~pl$wiPo@wp4^!3Q6i@{TW{neC> zQn2`Q^ZKNO%6S$wNgdPYObPViS(%r%Tg5KMEwAgg!a9qd=RNN(SRHf!a=uVz|Gt0U ze*G%DV{KHDwKjUC{r>v@`~UU-|GeYw_g#DU{%>PEzoz%XnV3osfA$rh*$(|rwbIzU zBI4PWwdo&L+SUI$+_~h{+4n{4*99fpU9ME`<2n6upDRmiWB+EYr$w^*%LAAu9jN)+ znI|Qcxj=unH^;{1NmAY2t0rt)pjoKWrPSoamHRwI+siE|z~OS@Uh|xa&~&HsoU5lk zzxRI6M$5t<k2~7V$41Oys^<PM!};Or!)XG-7mdE?SLVM@b-$eNW%AtJ@>TLYzSCR( z%{Y14f6*QF`sgRkEms=Tzt6VTxl;V#@M?~hX<=q+QtIcD!<POz>0zOCDxmaSQl9KB zUjAzJ`HGyiyiU~_t}M1kC2T{z`(JWxy21S8i){Zvofa7pb&u3vF?Vm(a0{LPc5u(x zJ-@l~<fd6g2F;Y4$^Xyfpw$0q$Ag}W^!uDXu`y-G^L^c$H3HR-&pl)CX;$y)r^T+P zU+B!-+tc1QZKff6Yw<d^#|Qr`IWBSG^qE`d4lDJXoDtQ_T_{(WrmdvJ#e3r^&+mv+ zo36h2%I;h7-%IF%{Y055qH)`s7k5t)5HDOX|M1L+R<9((pEe0>t2??L^SpX;P}S@E z4UML|9g(x|cs`X|fAGm&ro3b?^QZINFO(ehbn9KUYSJl>=%+4opSh_r@9{o8L5#n| zXZwXyUnWbI=zlR3`c^YZ+2T)fh0VkgX>P}iG|z{}vYyP;eB-Dpe64Bs<eN9%%q>{s z;{AF1_3QipzRl0ifB!J%b)Mk6f3Mfq3s3z2qyPVnZEyAKf1cK_|E*ng{{D1*pMM60 z7Z1&w`n=im+TVrqE$92NoLuzOXl<js_dm-wg7?lms>^<RA|PLav&7}%?#U*`*+1^R zzyDQ+)o|?&oi|@Dzw9rq-ye7UOlri<y}N&Z-Bj$6w3YLDt)Srh*sH%98s^M$ZVlhW zdDvjN;KN(*-@BV}PFx_@G{0m|_#N0<fWs!HI(s%qzld46RD)}ZOO%-8!AGlJxfCq> zx}~R+CA!6BUgBBh6Ek|9Hr#%A@7bcYTYvxM+jN&lX5RdxHcB>gJsL9XROj|TpHwV; zptIm*9G}g+-O<I5yBX59b&)vw}0Rn51hx7Qfm&T5{RYGJN*Nao!67UB7PyW7R* z_^(#EQ<<Ty5^!&Kxks-3uTzOX`#-MO<!n~-Oy?ql&WR&-^Y_W}Z~vLLJ$L@^$^1`P zo}^CTvwgE(`Ap`!bnipqlY<XUGI{YQ^Gzq$Q-<&<CyW;@p6$;4p6ADRP0>vsIHbxS zcItdA?yk;BTUUGN;Q8WX#}$oU+jlMhrD<+6^@_7pOODNBpO_UL9?Kq8vhitZUH@tG zY37=ObDcAumIVFle_Ixxdic`))3<-8v|a!0>($HQwm9O5?9|c;3{&PAt(MW4z_R+4 zo14d9Ua|E~K{HHegoH*<T<lem%{w!ZL!#wH(S7};Q=-1_WO2|oUbfg%Eh+M!y{c1s z#{2gLx349=%T)SN5?JuYb@`E#$}LU?x1@y}Pl*R_*&sAA_{%eAUblih$*xvaX_3N# z+YL^KEa+i<^|x&I-PwlwuV4ROdw-^6+>dKfD>vmzui>8Y^KRbu#}>zIl549u1!W)K z{BgoKrnzO=xwjU5fzdZ+e4g6QyWXKqKzX%l{-#|0$JZBHbVOzAhHmF#JlffNB04x= zp4{<`?{`m=T*-V*P{^m~SfgiF!K|u>p?x1;u9&tq&ZXt<F<%Q!tyj+C2hXeuUFybJ zYFe%~Bd2mrt#iTYMbDS>=iSz@YVEyKb?!jI`ma|6H8|T%&uc_q>tvN<_>p(OYIcW* z?kbDJ6Ibmv->mQ{=tFyG+tcJG{*Nw;&$*p1SbNsaS8lrn_tusT9^#wty({)UZOb`z zyVkZFBA5G4Xi1t)ee<GPLekiK>dQrk-?l_;;O#x>)ZWz^<@c^(d2;F1V&|zA-`iIP zF~(Y1E)e5ZdHC|AtA@>jDCP*$uYU~>oK^RG=E62n*V&>Y@$$D<iDrwGyaSh18uTA% z7Ga;$dgbsub1NSwpEoBg3cu&MpL)TP%^h^~<lf0UEBTH2X8gZ!MYVrt-<e-Qy>lI{ zrW^VEKjeMr{vj7B&rqG41}X6Y)*Ja`{hyR1gs9FIx$Lx5=+e4S!(E4$2}C}6q+St} zA@q8d*G7qXy>AvDQP(<K|MB(Z-nZYi_o$~<=T$t@J>#tKpm151ilEUpvBa`ZlTzhV z@A0MdDN3!8kuEHJzcgn_(3WZY#B1+Q?SE{+XHeX$df@-w7(J_f&z3PwotR~t95FdJ z!eC|VvxEa1YL;Bo5jUF`rQ{Z(aodQaChGj`;CPwVlR7Ks9XS8U=#dN0)}|{)nWy8H zw(o9@tT=8dxZGancuv~)#fuMl`(&(Lbt~%k`~UxL-@bje*X7C6r>x6AExtQpd!3AX z_V?Rw+pf*2j-T@A%I>*(v6s{t`L<2=T$Ge{MzVcYU-R8X){=8?hRr+lH|AWM)sH3O zR)Tl$@hdrPJub7sXV0EJIni@<UrY>k^lOZ%KBM3N_`;zVm+$47D>>baoe|-*WC^!| zk-(A28%m3$i!HiOJS|eZcjDKEb{^@df`Bh_X^KY{ZONT&wR+WeuSA!5$11z#d~Urk z<0!Xbl337%BS&WnreBtN*1eAJ_)e=U=|KvLNBE8}iKu<>yXV2PXKrWW=6HQwY+54I zxpQmT7PiAlD@%3tnPNRBGFB~GV!ga=rsM6OEnI1DU-FpWNESDI9GLicliP*gzpX!1 zlvb2(c<!3N`iQ*J%FR1>y|KRF?{vq++(}Y!Us_#X__RQeTN7@mAJWXVU!;9U{o366 z&cc63JnVikHv3QOa&ef_Ink_rk7>HplB<aZ?4MsGUpjHvX{XMzZ4EhLN8j66&0t@4 z{GFSiSgeNA5~22#d1)2u`IZY+CKo&ucoJmkEcs&dbUzoTRi(O%Rl76i-Mtd&|9JH^ zrey{J@`5J(i*%eM4Q2+-4nCmj)Ea8KYLnPBs}+01#B^L+7EZVK<~bHP`T8xva|g~8 zpRa%XKS1?+s`8iane!(LTvoT*cmFQy>B2qPcUyF~xaTYpJLuJwA>a1U$8$x7++Itk z4y}!wxw?0ia$Yl7&^|MgZ(%~1R#bP`XFiFk9T^XI#k&hGdu_5~3a^w{U~8oB5|6+> z<I@t$KLuxOpYW?fPbfuxV~*oDi-VC}Hrx2GhjeV<U}M=IFgg9Jm}0@p%RK8;LeHjZ zF+CMICEoE;kp1$Ry5DcN@BjC8`tP-@m-}CPzh^&Xu}0y>w_6GR>qBqdYU$*dD4=!v zjFHQvT}4hM+p0eCv&TQS=)2Z;@z$(`sb`c{^Cr&`N=mfs;|f}uv-Mr{T344W-PHTn zQn$Q`UOBZ}>gesiX(_+=IcwXquQ;Qkxai0l57&N<hiAe#xj(7J2qdl0iaE1pr)l{| zMqd8U@ARH1I;m|<V-;Rn@nyrii^@)E0w%2PDSlg2V#Tj-n`}IHv0lq63)e3St*Xs) zk201?{o$$DdH1g6WTyoJ1zg3i{x*~pM}0gNAhv$9QF>CPnwHIqtn*2=tMpzPp1u0H zN9;{va@VtxQ!k$XH4dF((YtUnQ%YVRo1A!wylrQyclXp#Ge7U=ZRXmYpRaDz(>Xh% z#p?S!1&6wZ<saA$o_X4q*2ifi7xGqBZ94v_<A@z!)W;3p#`|v<pB7QFT4=mPTGGcv zCqTZ;TIth^v}bp1th(G{mN6~uKH@QtCH}BPmW9!`De}tIt%us)xyZ>mObz}xJ*wSs zZtwp6p>uW`_3yc0`F}G9=QIyraXDq5td1FHoM)W5D5tyToSQPIQg#U^mu0c{5B^u$ z`)_gVuhRcyAEb~bckgdSxVfO=$~fCSJ34l|<s3T26K=XW>Y|iRu)mCs(9UyQ*BSD6 zU+ImL+Pv9AT(5kkwAhB9EjhPSKU%zIe(h2COa7sej<fHP$S1aoisVgB9hO||rJ)+Q zU~x=H=q$s7tG}5uy{ovOmm%r(J<{hux5o1R<8wA7CVUSSO?%2Q<3rf?ob0!C+vV)O z&%5{g_S?H>-mTw%cDd9;i})wE=N8;(`O~|bmm_(LKzi%;z6<Iym7fBt-hclc{r+B5 zbKexV<`9qN?1c}f{d`)K$T&mGW5+e4!>pmD_qU&Zx+zxAVMk*A?QOaD%LScw_&?*0 z)9c<Qa(cq10Dq@QeXTRCtXB+gxn(u(=KQH++j;6lpSsc|mSnHbWv>hbnK(Zx{%B0$ zJXY%E_kYIj<w^=hzpg5uXMg!XuB}9;$#}kQytL>0K3*SDtMn>AA-$(XJ7ta==4$=W zc_wGpUhq2O+aAV0lALolJ9PU0oH_05-f4#VN33<X3J99TcK9yqOO{(QZ-Juog+%{7 zpLTZYJ)FYHF?aPh_cA4h>BZa9*RH=k!{+$OV_H|3%I3Uyqj9WfjkJFM4fRi|6NQY8 zlon?<cW9jsf8-!Hb9eH>vwSbzJxl~!%ilkH_aNs=v0F92(YH04ov{iryh<fn>OanE z-k5mUl<$L!aZKI9<aIHn@|~yWH=XrcV6(a7k<89%r=M3XlJXIAOcR;w+{stkwN~Mc zuhYWz*kgNx@Am!N-s35E^!o3s_S=pB)?RP?P~}|rHTJymo@?*q6oW23e<!!fMY@=q zGf}nZLV2sG#bu6iqZPr2BbT@&cFAoLeLrWV@)ECAQQfSPf;B})WL&>5)eT5bi@5id zfseKSLE4w@IYx#3Vo^JV)x%~?)6u)Sl3!-w`lTIe&wei4*}p(A|HX;Lrk2r<m)pO5 z_-Uh8snPk051-GhRZ8=}7Ui;1(0H-%j$G;P88`pdy?<EoSSjh+v-48C$FBbUrm$0{ zLVTh7-y6HEg#_DmE}E@cb$i>)$hDWM_ur4s=H+Z~{;Bp(_VxZ%n;i1hj@UIlY7NcO zZOGWnv-9P)vtPn}R2w@Li+K3t#V?;xo^o-k-J7(&mQcNZW|{KOa*k>#N+DY_9&U6C z*72$mw0yVy&&QtGt(TLxYw*|xa;S&Da9Oozs_mK0tE5yU&%Qpl#AlJx94ql<0@9pi zGrz{YzQc27&ov|YgoJe){;v3SYF*8(4?lRCmiNpQjsD5`{I9&<{8om=Rmo|(nvL70 zoIcG`_sn@B)9T4TcXH^bFTQ=YhBbE4RPlq{+ixi+-T&^c|G{I8%<}KcuV-%Sd7Y;5 z{KnRKN?#VZ6+ZbjFYnikV=F5{rmZ<}n`5?@g;G{>bL7?>?)QhE#cj^Yo?qyyZ8}^1 z2xshuB)NyYpCkHh+`3tKL?^vEVesDN%I}SA-0K&rO3tp6J15}Wd+fdQPXC$u63S`( z?x!WV9;rt!5#A`GDs<T3l3~Kt3-8hnt(kM0`$C-?i_pCj!M5u=^<B=E=6qY9Vfz2U zyRYT97s~&yd-*nPt#NiZ@BPa4tE8AS-?y0c8l1kHr^8ySv5-kVCD3sH&bFC5q&-Es z1+|uz)LnOaJTvq3XPyF2zK07IbEiKvQi_U<_^czS6XIUTS1Wi+xuxO88H4B+EeFXW z&8_cBZ+mO5adO%EP9bdhpOZJw?vmEsH@`(R`6~CRYm+&o%ReO~K9%cr-71o9-*>HA zB~+_rX-Cn;6<&WU_=TUI-5EN~w_^R%UDv0_-sir3w?(_Xpksnjp~XYSsX-bxHnBYs zS&>&bZ0u5wa<Nv<a1mL1<j|7Cho_wm-Ystv@w~u2;qu+@wd>|-SlqjR|NVFCiMo!* z#atFGit0*PEg-x==jEww@vEwjdp<4OEeqO^CU0M#H#=q>Xwv9igy`#iZ?AjbHK<;G zpd;d9wQ;K6nsrAU_sWZ$k_o-Cd!-TQ>}cyVi{)>53!dOgP<yN}`+4Er-Q~OG1;bjp zy9!>`?GX6E@=(sUNylZzRs$D{FqTQ$nRoA6by~HyPF^rkU-070D)S{zS88Ru?#p%g zP@TlM#?<TYLXnFdGWXA|Se$#ip=j>!N534dB^t-FHfr2R=$<pJ?T_2{{vX<DeedML zB9=BR(0F$-dhvHPrP(<FO}8%QteE?Jea8mX1${#69<_wDySJa8#=F;s*Wvs0fO_@W zOZXQSJ9u!PbQRlvtU21oPfu@YD@Wko#FV?c)kBOgy|ptum7W}+bm;fNhcbOB3sx#k zQ=0#%>rm$3fEk>p1zdJoNGlh4SXg*8@0fOT%Y!+EbEa;L=C|*NahQ<FE+S_zH^R$Z zwsDJ2t4PE448Oh6E0u(lE`Mx0r^}sxc`578&j!})XIUq8L>7rSpILM6fVgA8qJxJQ zsX47tn!3~_qF8A45}zeLws(3(Vvjm^2nJ?|I5|2!JaHg;?c@1fD)O1upR6~s^>5jq zzUWlv9`z!7yQ?Y3KCjcv_6(?cA8>8PLe{rh*Z(+r^&CsJt3G6T(N+G8|D|=}UV_@5 z0@AxnE}phX-?~+#YQ@QE|2QWLtgUePo8kILBRqOHZ}!c97aJQ~<=G<U%)J{cm&_s> z)pq&%q?<B_j<%%9yl}|pa4T=NXg$F?+gaS=L&1W5aqI8ztKA*9{zA!$RiB(cr++oG zov5=R>kI3&Z&%*UzyBk_GC_XJX1}6;VlodGE>>Lh*kW65v&I+As4_jl%>jC@-)oOc ze|(X4;cU6_+iMGqTrZWlh)ld;_T^F4dy##)(bw+re0M4@5AEZ5>BVuhK_k$HYvO^p z#7|qFt1X@{mX^INirxBDRe?z0Nsc#>x?fH9Zr~A{cA(})?z7l03ZBNdb!w+&_sQP& zw#n39_R#!g2eWgt^y2dQ_tsCYSm*W6^L~zNzRtSYOS)=qb-6q>u~pph*QI6mTDeV6 zx36)0_{rpOb<^ycm=n*^H(CWW+nqG2$of_{Wogfy@H<?Ndus9pSbtCQF|py?)nq3i z`2CBt{OafDm%jB+tbTn#Fsn^)hJpQ(t^cAoTQb(#ZZ2!DsP}QWt1;(%A?NzT7e6|` zNKUO3oAODZyi`rg=9t-9ra38B^@2@Keo$LJN51j0r;y*fbFnc@)pq{8#%6by+^Z{* z{cwH3<p2No?bBkPU$*<|v<sKdTlBnM_5Pi;42RVm)ib@Rj|~=Fn;9H)+{sey`=kZJ zN0l^e7R_(%-r&k7{z+%1e7a5UMQxwhYux6ZR?lT8aDAPau6p1F$4T~06RnN+@83WF zx|2|%f|9Gh%HktGw`{p~iQ)KDll?XsM?TvhTu`b!r}Fu=({lH$wun#v`}FD4Hs19i zf{iO?-TAF_?_tm+d0|1T$cl>73|zC8*ZfRzT(Y5!O+`oE@2V$P>kSrpRjbU~)4YUD z6tman=jR(AdtdUhD<S*Hjh96?<KyD?)&H;C8)wV+X5#Temm`1cj@NK_)+ueeZWY_` z{kwGh_iIrtqGI8*f;wVmO=pg3Vc#6_Y?0&NV~f4n-k#hddRXt|nWcx+oEiPYXH;*$ zcVVt(*UJSnW~Rr#uv82S^$z^{CjWr(f#mb&MJF6!+-i7dYSd}>^8X<pw_YnaabPFo z@B3St&eZATP3wQu@zSS0tI)Vuw^XcV^~e7fw`5NHc3Bxu{_^wZIVY7ilb<g+T6y#9 z-tU?@F?mK~asE7s1#9fs^Dj4k_;D&#@>8wn3E{d=du?<7_;Ya8xkSu8wC;G~lk~>D z=|A31p7z(qbMtO)SAoR=%`EphFTD%A*Xy`daAM``Gi#@~>{=+!>7KA-<L#N@yPp`Y z6}GT2Rku>$KY1o1TvONfA@g=+@BA{^nv$Xd9wy#PZy2qwESGUT=ea>x+k1X)ed2t< zhS#gqJ-)cL7Mv=aK6wJWW_^lz{jW%y+_(EL@A|Xb`bGHeH<Q|*&%K=JcDKX&ZeMw^ z`iIFgW_C?3d+&N>uJYe`hZf%`aeKFWv(u~aj~fHF1ipTdHKp?M{P6e9Ke8+@zVOtL z2rn@`AU5sl=N;#^PdIfgs+plNG3DFl`15{>J9$1{u=5n?KfJ);^0DG={NhOmSk#3W zUvkaUGb-l(E|+#~_RPraH21^2%a`sD3_Sj5Mx?8kT;@xkhy7DLSE_%C5tHFn>rzmS zWiNfs-eW%}J8a4E(#t}EwHM4SK0ggUW+Yn|e2Hns&6LpdT>1CQbZVxb{`dCw_V@Sq z=igTIda^mIGk3j&;MTHqJ=sfNJAzn*ilmo@ela+?ZDmiu-idz>6mTtR(^dPW^L3iC z=%J*LgC`7Clu|D$&7IS*kwg7ZSw`Z!q=n0rnx1Oe*xX=@;{M?^!*$E5CIR2HYr1DT zO}sR1ytbIQ^*>OV(=Mj>S<2LJ@8gz4i%^4X&Dp;<o{FFT-?nv!8UOEW#zMK%0vR!8 zX-S@jifx`RR_Q05PB{B6jOUfI-<!{gJMZ70{^`r)sjc$imo(j`8#}&Wk$C!Uw+8cL z<Bmr<8S}dKs8^n_+IB>!I!~qXhb~vTmFtr1x~2>1f|L49mOeG-EB*52g!6s<M9C^Y zHeuGb$&rlqc@=^me)7H%oTL|E+N<Zf!}D0xA35>wmzT!61kL;`5j0`lCDnfl+fB`7 zU+1dq+~Sbhd`z0HR;Whpc$=|g<#DzXS2SC6lzj^N4y+ZDSD0~wDKO0LY?A%EviPmG z{~tWtzQt|6-rWB9CH$K|a6HmT-ZN*$?t3#Yw!RL~6#4#+$-OM~XkavBfm&I5{2hst zMQ-MoW))7F(NgMrtm`<}`^Q@+^ygQwuCQliwb@!8tj?J~!ClkU$u;HvzJ(?8|Gi*z zH7)z{pXpoqjEmcBb_TzntH~1<q!w!W`P!P9=AZAK(AjnS?_UP()mzirA6DM@K6lBT zTfDZ;GtTNyKmGf6b$8yB1>VaZ-BZ5tccJ&p0^4UVd1v+Btek#knPhK}tg)Y4<D<ll z8nSHrvg2~6$aW~qID5%dr$l?IhJxvzkB^U^-p>8)blL8yLF=xAO0(PBr@#IhHRIRc zAODJGHqBKEZ8K@MRcVWH>TEs}^?q)9v|op3=Bj@oR~DDQep~mx%t4z&*sAWt1gX-{ zsZExW0$=C0rkFImKi=D%cf_^yGLxIsw>rVb=_i{yBTg@idR;cNP@p4MN;^L&>X_0w z<?3DbbA#Adoh@vba8#Y4`;gbGS$}rEuB$8%Jj2_tNrT;v*S&OF(%Zh&NcV$M&jcHE zy#nl*B=?D%)W4T`^B{an*?if@9qcSWC+~WntmOVd{*d+B$sNK|KZ!glTvqwx_%u6* zeCI26*5;25EKW=iQCTwavub_UoU>n;|GDgu7u>tG^}o^ni>VVYvETgAc)`bCLjPp@ zl;#eJa*JTMuYOu5Ckwq@%#xOO{)FO8*_@i1z27Ao511tV{J^^D(($RmE{svK_BUHx zW^@UhObFC8c3aRed8c5sz)a!Q*&D>)A3LNW*U_pJ%;xdKr*ML*RN|?udD5l-i(Y>! z|90+b__if{zGpbZ)tkRe(KvKc^HGA5ylBZaH<zP3g*OWrWT*1&|MXG(!5j|{r5QUm zPye9jd0r!Zt=P9K-(m|V%5N{X_mBH>r8H80$<Kb_Cly(y-jQedC!XAR(^qMkU(fH( zLvPRAw+gzV8&fiQ?<9>$>#M)t+hhH!JLlP5t6AaKY>!<O-8}jF_us#N|IXk4_uIE` zZZ5y~#p?aucD2sLre%W5qt6a=TdXRcm5VN4z){&zIJ0++W`up{>@%-7gwN>_n_@kG z?ZTFnSzqsE>w4$Ro;Im?_u7z(qu*-pe`7kRDEM*PRp0Nm`{VTO>;LVED}VF!`B(W* zzwX%0obc`WyIC6<JTEY?PVU&UVAZi**B@r=xu3uHuA|n$xK92R-|J-DEBv_^a7pM1 zs`&}sTYETH=-J)FA<nZ`ef#jxFg2$~w$|e9s;@$vyoT!iSH5gIQFx>C!4;#FNk{f^ zd7tm$SZj5BV}<hO#-Aop$L5P%TprT+aQ<(Zc_!cAWEw~`1x2Q;vpaa<hR$-|ihVpX zCD%69eXX6}cpy1ek8}RSoezJmm~-y##J`&I?-;YXUI(Y>baV2?PY~=6-rK(Tt#N3# zUvAYuq0mzMK*#ep{(Vplt$C}s`1YCC+h$p7O%_;qZnDk7rrRg|Oa4EMkPNe(zg8!* zw_uA*`MyPowKe@akLbQl?f!Bw@o;s-({tj6+&!MFK5^u{wTSbm@Ru&1aNKs0!HG*E zZ>Dw`1b0;JC^|Q5+1hV+QXajZUt!m5QFpWV&)@n#RoOAiRw=HYBdY7`9w~jX(`HeC zNt)i$l`=}MI|LlB#%o%!TWhzsa=a+myy&^`oo6D<X1@DElI^0Ep4&Y5c%vine+!3A z?tA`z-`D;YhB7x41<t(;x$C7F)xB!h+`01dFBfdSYOssf)5fyz@i)Fr({rZ(efn!J z*F=X6&)z+06I|Y+aPw5r|Bi%-o2H92?UFxUxce@{v5?Re;rH&}zioTd@66MXcRH4< zo!*rEOOBW(A@cC<M6abfjWb`oJe!{CHskTn<h#Eu7CcZqeyn)^{pU<qqN?UEPph5F z@X+6Y<xt4`r_WE%5p-fL-Wjv6_IKOmptYixOJi;;DIH2H+b^HD?9}aTiqcZopV#eo zWhuK5)G||d&G$N)@3-GxyA|6S61gNpQ-~$x_UqTHzcSDN`gGHErKKH4JPddDv{z>} zGJp1)@%-FP(O!NLSudsP`ug+L%}3_s^z^xE8F#PBdMc#U^sMcYmbS%qdCkn*2k!B# z;e2AB-S;l$#Jzj>=4nk@85N^_DD`2VzDJRnGk;ir?2$;zi9aXrtiGF+zVCe0y|WEk zvI+-wK0Imga8CQh7n|FHEmt})Y_;E+nO<F7I=l9a?ytvOUmc&;83@fe{wRX0@8YWi z6Z7(TgacdLC&;Xnmb;NKiPv{|gh>03oN`yE&yWAaGQ2zPqpenV>*DprS{3t*<6dcg z7Hf2TvT+Ab@-+VJz#V>%rgIs&pIDP|w#qm;Y|*hLE>5S`sQImlUUA|?m&=cDlZ@x+ z?)p4q?;O_?%vm$k*?zqbshGcH{{Pd<_WJice{5#?UC~(h<zD&N?e}(P3ELMN_BfrZ zK4BcI+8S>cVe|Y#g=x2s{P*Q|{4Z|q=UINjBxb$ny>O+~%bi`+<~c`lOk%ZNqsGBl z@cqDzvpQ$aMrXhM`}eO!-}dX$ZrKO7<cAv;f1Y<U=g<-^*_JtWmNwg0?Yi1Kv;X#o zT|50Z#<=VOgDus~3+xXcIQMv-oi6+4(w%ZomW!EKN1eXNc-H@{a!k+rxwj5|QC|Gr zdVc%0n!rn^Y;^smrcKy-ZJGVUr%zwK+kX44rxMG%GhqvuzTV6}UUK15RnO-M+@Jrx z{rmUr+wI@4ckGDS-f`o*mQuuq1)tvTo%~5BtB|!J?Oj>VrIt{$iHDx_<)vFV8aTy7 zXf&-!pJLf2x%k?}oD-)f)UD{S@Z2uA%#f*wS$=~0QsbJw!=LWW^FQ^rtl6+o>Q>m~ zAHf`K#<S(QlV?rwXI4~7o|fk3QovbqmT41jhUcdQmd*UUQ(N74cw36jaD3j8sJA>j zR`vCP_b*Q#YEz$Cvo|I2cx1HBnUlv0?EddqTraY`rlszqmC-MQq?mt!Veh^zZ~J(> z{E2@i55I1(5m%F8jo%Whn>UVqVLoK>tdPBrLsIkQjSn?Fw>9ndU2Z)zXa3#8Khw@t z1#7?CXp%XzV^hDW&Dk`!ZnL^u+UhOAqODxXq3TIeKGvP9I{u_2YObD;WcBD~a@4hX zvt~XyU-zN@X8%9_)!|A>5xeBgjy_6EO0MVQdVl1Z+uqFS)xo+;#f~<oI8Jes*5fpL zRJcacMoVP-8%DLQ%Bn{$zdfO&5N{B?;b*7chP7`RnSXHHOh{DIJDpJD@xNN@`z14l zo|${P3^{}O_3u_2Ps<5T@KKNP(o}r1cmMwTaq;o_+h=bV{C<?_oAv^U+uJ4@IQjD1 z_g#0%ZCy5dZO-luW|{YPO8<N~TTI#P^Y-ue6JDsPeNMi8x_|!tKDG{nzdz5{pIh#I zLg}Qg2;;??wO5tz+|j&t<9F<~v~vD;NBrj6?74r&HFbH2NZKtuan(iJ6s9=ssM6d0 z%0ZLUd7c-Gm0A1ln;AyzQ%)Tcd=qr4Y~`Vv>RRi2_ZP{2d3$^Bg{MV7KcAm}@Avxp zzwv*+{mcLVEq_nEipN}s1J5UB+={Z!GuMcpv2&|+(ZlNZ`~Uvpw&O^9bzJW5m*?l_ z-`_veB2;(d)Uy1)d5LGMHr73TwP>B;cGy~ghl@g{WD71cy8V9d@4_!@12kJ%6d1!C zm#pD5Og|StW9BLsmd+I+59SG1tBGG-RGPkuEm2mmu;g&a4P}dKp+Przo$gjx?3S2W z`F>mO?QL&wZ&N<Y&@yqOYidW*FS%oTHh*VUUmmo@Ypz_D`Sy*rG2gj`PCpCs_j#wc zRKnE!N$qB%$%fYa{F1D#+YQeob5>3$+^z1j*uCHf$K{Vk>8AuYKZ+_}Cg{xHsB?>L z-c3(qm$bQFDo+k_%n#;SV{FxM#BP$_&ECUv)fodiJYMd!fAcP{cGAlCcf(7bXINh9 zsF1G9doNM$^=|^7?$emFVfkl{xEdCBGyAL%-1YKI>kV%0lH`U)j=+uy(KpV-7;edO z>6&z}%30@Ak*c%Hh1p_DJwMK^l-+C=eltydnbLA|4lchWalXJdHJSOEb|N>{+)cR^ z+|i;`xM>mNu~~<@CG;L<Np4n{v|L9hOlH&B&hzR@#v0RCZ1vC8t>2#f(@^hm<dw%O zFZMs*e^@?4ak<+Tj?@S1gKqUrpPpxuT+FGslF3GMb@2&~Sr*G%II5pa*z;n(&^;Tu z57V>VKYrveOIEv9c9ttY_O8wH7W0pnwHL22&i;Pv$y(ENlOudjgdR*Rv&b_#(C@9O zHMQlu<Vnlw8_V)$YxaiCo)*WU^sQsDseNBhh}&wF*n5BPRj=Rr@5jf-U%zhc)h~K= zQGI@@pw1fiH#0Uj++1a3yfk&&d+yATW#w-Vnwn-G%xUG7EDQ+oE$YfLVtn;OYv~FP z**d!)Z$GSeTCvqZ_Hy<9xbHu!8x;>rsxH1gb<!&57R5WSU%$S6`*xwsR<T>(?<nxr z&&*z1vR7z#b$kCK8MUcQ)xVDvUthHJf$h(LqV9qT?CodG?S6N07@VK6Fes?YY4NV7 zO)L0wDyCk!yF0R|t)s@La9Ur<J>AXz9lOe&a0~VHZw_Bma?H18?UnD2xxEir_@4>C z+v?XD_WwnRsZA=++0A!P?Q>*Lx_05h)-_(W@+EqIn=(u<ea$J``I&R6{+;}t#q&2F zo56IcW5&$b3z`Mi+8qo<3V#o7_^uOf)bZlp?J2W$UTW|&Nyf41O>Q(-UYgnR{3+9p zbK)n?33Nyv)j7E4P1~vR2O&CV&Putzzc$fLTiO2jOPyu&r#<WET;TLPUv|NwDmRH| zua}=ZQyt}T-R!Vcd)GwuwM!0i_&ng(Fp@Tyv}Do;6SaSPWfm;2{>{Hl`+q{<kB=*V zX8CkX51hbjD<rS_nz5*?dGg8Kt}h?H331io_<1xvIw;NS>>QPcD>6>YtKPmXmwJ$Y z{hPY|>kn=C>9qFl^8C!IHWwC^<^A#hJQmEDZEn1M@z!ha_AcCW;8H;Pd%1&YhGEXi z=S*%1D~Sq*8vSdF;uhO+C?qtZee(`?mP?HRPkgN{PpC;e-?L}Wf{?v;8FoMPx3=V0 z5}7HzM<`X>GJIXd3_0%2_MbY=&v!dG?^cVztn1yKUc1ybZ7$y%xBmL-X+?YEwnt@O z-FxNU?yqrOK67S#7hdc6<oavV&mZ=5#vQYI@$%~H@*a+juD+9RzWL?k{PEwvb+hws z6tr$NxH9ARHqnP`{5rPh&c1J29C4EWb;eIN<J{ZF9G~o!=RKs9aO(5BSAt0?T91zW zS}=F^&y5u!UZv%MrOV|!4H%;G=RQ1}<s3R)pvO$z@UO)Ox2&}f7$2D!*socB;*n+e z?CV)Avwn#vJz6$H_vv!$^x6dh7H#tu7)fhg{;B=!-}W<?!kC%rPc8EKI{E8M^AkDi zAAHrby~{26*0xNu(d3DDh=GPUv&36Jkw&w*XTLHg_Ev<tTc>qp>fLXCx%Gt0`N*^_ zey8)yk1A+IJWSP5-je0_H6^8cg76yOA15_}?p9}~^)Bw6;!x&x%1@!@?d8VQRW}V) zx<7y8@?$k!%`xB3Z-tNGs_jO+^HkQK{x-SB$mEM_NW@H4uagHC_OQHhec${>=b^%( zC+|;lov|-o@ZWFZ_p8f(T-{z%CI9cApQPYY4jDx^MMuepj(KvnRo$0PSnoW@_SWxR z>-2yBT;hv+o@^BO*wNAVui}K#%}HOj*)%0=;?y}m+47FC@bNuLu5IE!erm0E%Hp40 zdD-R4-Kydvf@hL*G?)6!?<&7jdUE@l#@n49RTbNdm&gm=<y&!&!-{QfU*3+bI;k#O zc9aG!s@}bK-@jk~{`E!g-&&pR_T+}yl%-Q!E_zJZeY-%$XzpR=XtsY#jF#1E8BfhR z@YqoHzeb>R(5DNES7auc%nv?ayZ-mS>~n8jTE4A~`4;81Gw=8J_xI1<E|iI0d3)Pc z->n8k(q4iWcBTKgImK^F*`EFT_wL_!_kDTbuYZ4kpPzsKd+l+_&qX^O3MzKKnLd5` z->0+UdJLDZxgDluG5>-LW2f}fpzD|OS^_It1hs=%Vz@-&8=nMwUy5~+k#0_#n3JX= zcCVT9HGAO?1!p7fFBW2Q$&;mLcb)n8N+)GGUzzE>hw|RGvfN!Woy_GL=O^afty*#= z^_1JDvNyGP3I4ApEnjSV4>bHZ&sHy*ZTsh^it6tdPhmL!c=?LuYaXvX|FWn~ukA~& zy>NrWwb~PHU;8ibetxp#ny?~E@@!#KmX~MpjvEQ{K8=X*J2FS|qPpkzImgcWY}nYt za{kytJBzm^VZD<a3myy2l(asiX4`W|L#N98{0bhnZMjdD^yiesACA55AHepd^Kb{Z zyMWz-!pugSnFr7HE%R97Qs#Gm{s+(3j#V2cFU;4<jB{DSQFq}&c=5lo1@6}}F4dn2 z{BXQhr~XdVKlf7y*L(;mdSbJPulK^*Epm%a)D*veawx}1Yo(o$&0nJv+>axU$ln*3 z+~o6dV#bDf8Lv{Ui`j0yG;>a`-{i3@=j60$FS!KoediK3uQ~o9MDee~jw?~?t(k6H z^j}>W(Y=7vQ%UgFy6^_!>%9DnJ&IqYt(|FY=*_@;N3?1BZ`<7w78lw<E#>L|zh2+| z+jq&8pf%sG-2(NV);X~RDLKr~yV!L0<Q<{=;>9IjT&@Y|oluL_wps45DU0XEms2G( z)OSlJv2t{GTv>JfHE0wvUtfQzNW{Lk85`gC99e%s!CCtA?XO*L51vtK{8f3Sw)VGZ z*V)rgH|0iWAOHRPxBmV=pZ@>3{y#VE{=WG5xVQte&9cA${#&*8P$^5#>C>l6ADp_C zaWGTYI?y+F;(Xh;rEA?QSpV%2W97cRM*jH0iG|6|oy$M7Onbregxym|^Iox0%e;NF z<(m!7&MJx=Nzgujr{S~lr-q8<SqJA%<6S+G<Ndp5P1BdGnmsM@mEw6uR;AA^1($T* zUo(r{mtf~=t3Cb6;tz>u8H&Ci44bT}J9F*z<FB;tC+p;%zZ#Y^Q{%Rz+xLajPqJ4E z&N}q1O3aIC%>`relDlt9JXlp!EuKk;3R&Kc`q4K#_89Yt%M8VJ%PuMwJy8g0yj*Or z+A%Az?ZuxtlX{kOG4JYEY&&&Fo~!)5$gw=W!;`+|c=;c+sun0Ki97x4=Nzr``-IsQ z>I9E8sp!w<`1-LarL5z|^BvEVCAXx-&p&CW?q{pvbiue!z~{H|f)Gb0S1+cePNDxi z)_;mGd{AroJlgoK+>au!c=d(Tl?u2wOm1aw73gN+mYSU?c<f2b{}N@xzNYAzGm~F3 z%rT5JJjCGtWNyHxl;-^(ZY-W7*>sYpxbo5!zoXCG4?NiQzxrBM((`1uDDR6=UX6OW z9IToDDkRVTI`jOptnLw=EgJ4>Z!`9OzqV%S7c2ItD81x^Sugk#?RVULpONeppxM;> z?d{jEJMMqJq<J-9_SDx6)4L}7-k)S`)XDdHg^r``tGtdAmYjlqZtv2JzPvLIPmK8x z+++8<ap{!l@2^Ll3ez^*zc;3>#G2FiLd3PGb=P0_%iCA&e!lJCL_3zyl9Kd7V|9}N zUAH6G&ZWwl)pUtJ5u3WG^nQRoyQg92!pv1c&vPGq-}Y<A^6S1WYbIB7xCaU<ZDD)! zQSGEHPtffcsV8SrByWEUSX#d$-2Q>VysQPKQD%-+N==D!-}3Jmzni(tcKz)yj-Q;A zm6FP(9A!A0Dvi!`cIc*T^4I=-_4VC9EGIlU1f$Ii{%}SbW$FjNc-UY2>E}9WrhLn3 zW>H6e#s@ck^4LA?%*UBKL(c5^l$+R}rgqBaHcvXo`<+i%0#95zEo*$j=FSt5)Kz{q z=f3mpI%V>?!HVOf_(zUMTkd>NGGB4$Pg4)0{U?LX3l82r7H{ky$P$=X$a+Hh#HlL> z7l}G>izlr;w=jrrnSpsq4WHP@DMziOihdN&jk?Kx_N{yU=Qnb_)e;MW)Mg4FIP&`9 zgh$?LFSK~S{`pbXuWvS^K1t!b|7oNDKiZ;-<m7xRGdfz9KlOd?r1-FlK}FJRH*1yB zMz>2kTn|cHIE)nMO5Y1H?w@`Bj&<b%Lk5c!xmeY@=YQAF%B<OvpYMI=*d*aC@#`xL z`sPgMc=C02-=Vyd{{0-w9-Um2+VQxcX#f59H$L2vy=L)DPwDo#7tb9wCtQnueZ26` zr|tW{-J8fJerWyr_dlY_Sk0|%&0qZGx#%dj=&tQ9^Z1|pFW%i*njRfq|BUBPM<ajO z)d^R>Z)VftJaFyzzWp`3dn_02T)k?MNOkpJ(PalX^4BVUTo<NW<;foz=rTE8Z~89H zWwPIY-@W@FX#Li@-{0Q)*Z&e0jEye~-FyH2(kZ7?Z-3v*x6@|R^JCe1L0hEf@LaQ2 zzCX2N$q}jb#X+CEQoHWSR?aS-6qr4C(bS8-Pwmyc>gyu*rtbr%@->+~o6b!!ll%4N z>$-W__k)9NzbjUC<VJNZpW*U2bhmxzRt6vcCoc;;)B0qWsFuCTY_B{VtYvgm=kxN1 z?rRNREMLE5(l@*R|E!Gu%#}R(M)lFfhM6hb+%`+Z-rXX1nO*jZ{N`ObT<ae-N7o3o z7EPFDB6iw#V(pFtC2PavH=Zjz6?AUSyW;!}hO-?7IqRMotn<6p#j{1~+gm-o<w`j_ zPTT4j{10lnQp9ss&^|?DL!^uAO8Iz~GmE!<Hu*n~FLv%H_H?PI(-&wTkn!9oG5?&q zgL_d-<(D&ET!%GQyF7Y+)LiOqk|3vsO=ROXK~A6b`|ot^lUP;DXZp9w;`{G^d(?eT zy_YsoUi4(`;p8PUeoZ0j(<E2uy70$LJs$p9;O)nw&-SQHus!(5t^8<C#k>VQhn7c3 zl!w>|UQjpvlc{z3%;{$jqqe;~R(&GG<;6A+&D7aDQ`3JWF{HL^esW1{uJ$tBo6Rp3 z%<Ai<=E=M7zMHrGcCW>^+V+!D9J_OGH{_O-ThG#ex4rDkW`FND&Mx7rzkRr8yeZEh zepjKFn5jv2pNYr3wKYMJcd9q}Ij{fy@9*#L)2EB;*+iW8RTG|6d*ers2H!6E+iBOL zvZvR&$EqqOthwSFS~|_BBS%(-;qT@7|CX$}KK*ae&W?a=->HgRvbHDl9-djaDvEWJ zrq0s6!vADGZ!29I$1!=QL;K8N4QZLivr_hxTK#M1awJsb84HTpg(Q`wEKJd2YR{Ny z^v-AF^34~`e^q<ms@QJ%Zr0uKa{IpDHzz-E^?I-|ZT3R#b*s+Ysy2STs&22?#HM#_ zlkGnw-wpeJM|h2p{G%F4t22oU>K^1TdUNiZo2Jq(kDB16mRDzF=eA#4%~$sGm&ZA~ zvkAfT?(GY;|75dkcBqHSk!-;kK2KeH9_h$k*lm(>`!c)ig=$unGj&x>!OKk287<aJ z2evrhw{K@v-g)ErG1a^M?BTmlED1Zb(9f<Xg2n%a)b?!uliOFP8%{U%zFV=waVl5b zRg0X9UmW?azu6(>Z2a)F$hVWv^3$U9ou@P_2a1NJz5SvR;&|A{hUbW{n$jzcX#r9H zinUIy|F*n8<E(%AzU2Xr{HqP*f6F`-`4l*TgH>B%<;A9BWgV<XefM_E$>2<J{G9S& zqG~3CPu}cjVd`8DO}Z_=8$Z2t&@8j!(gn%K3%&Wix#_9zSMTZQoRIWR*}t33-C|?t zsT&VLQw^_kbeo>Z_-ws4efsp;`-c5_cPC8gjm}Q{eN3aQdjI}=@7%K^c7BUmy=u2I z(-oadQ37l4{{CBM&YjYJ@BR1Re<M_9r7b&hfBp2=VcVn5t}(B#uFn46eCOM)P~E*Z zEsC6;h+V9np*daa-qF1!3ZIrOGYw^axJl#hr|7ja%ik?7w^y+|Y#*mL{q*V6skgf# zl|M(F+J3q`$-eLL`u~6b8+|U_-}7AMvEa6#?VApNPflC1D|Y+eU5l&Krhd4wZPQz8 z_L-4uqfYgoembd1*|l8l&fmH{-0xE>(mqR^yEj|0w``ft%#UGNt86rql@?@su;yET z(7Jo*&x4EwCsG$Ci9LIxqj(`AXhU~*g+Tl6RxcLK{RhGXue@bQ@^^Su*rv|Ei&19B zg&4kaWAPV%4ReeSr=;X4nsm#ZT_%6tfo;yYoELA>6>t1@bZH0{zqm;C%<TIvDcZMe z^M7CabxWYRXluKB_TF;ob>2ywiRlZ>S~X2|)|zt#uAFYm%I9-u_Vr$S+id%VLCfMF z?aJR7$L=bocF;vSJ4sU}?43eVfwgezBSl9iuEbiQ+n3IYiimx-nty5Pnl~3ZrO%|~ zR2P^BeYcZlJLq{qO-Z(UU-c@1V#{k%77jHfoGR{pl)E-6^n(`2eLr&Wo4&bbs7 z&mCOc%)e~zoY^It=9Xv3d8}^N=Ja_XN|6HVS4_Pl+^GL5YMPa3<g6nHR&1Km_34(3 z7{`P*me_3hSE={5PS}xgF{mp~skJR`_KqTpU=87w3hetTg;(lW&QVQEFEUb^dN1ik zp3>YYE-tT9W!HTa`u^20gu`jo{plHXJEY%k7Q9zkUGpQ{(d8*;)ghU@M#dEa^)gHC z9`$J`9r+o&<)HJOW1Ei8(vOJP9vb$~u;#TU->X8gsjBCeTwlLHV2yQ}_Lf=MYlF62 zTU8o-woP<vkL?200|rV4+S$`CFI(g#nZKmqa(nXL^Aj5?t^3OM-&aig*m3Xf8^_u0 z_b0`fPrMej!`HX|{kwM-1%{gg1U!ABr>1*mbvCtV?mHL%@LjvC&7a~gGaC1CZC`dU z@BZtjMF)TIp5ql^WayGRo|ra0xBU-`v5iQ|-ttAcap@6Xmv?QQa%hk4uE<#hffo!8 zw`p{qdu*fhdWLtFm6(sxGK&{(VpS?JJu?H|*Dfhxlk#U?CG=1(?TOCm+|0enZw@X} zv`G!+SHHl1YW1fJ?<R7vF1-3>B}+-E-Q3sbE}yM2+cL3bUH0EC_Y6EYm1!MiZ&r&q z=a>2FOPjcpOGJSo`>uO)#U)SIcwM`B&w1CIiZX^HinC=@AGwN5j$3y|%I4?HjUn?D zm;370wAD{!Pdl9a<NP`K>$_(hnE2)P+S4-o<_3OF-xR?!D=Dh(dB?f)KA$6QE=*s4 zK1cVjzf|rkBe7qbk9;|wcudRrXNxi4AzO*vQWf_l>JGI|-`KbDm%??8J9`o>+&r}V zSLAePK6RFS@=h@%wko^%od3piRr9(%=A5f=%XhLkl`gldXZz!MD$`y$J-O29l{O*s zlclAd`QyLBi+8V|HSK@0@tzHw*)#Z6__PyFIaa?u!uar&OA_1TE6<F}+7G@w-s`eu zi%7~bjrFmPD!ymUPB$mN>3$UvdTyiqMa$>%uXT2%|B#<7(HUR3ci)ttQ(=z1QEU0K z1JwKH*Wa-g_<7-5g3MFFCq7Qo<}xb1zVYeT!@GU=s<YkSpE#OaUSC@){X5b;KRE5? zMXyCqjJ99vd;GSndUwpafW<Q+`K|Vbol<$_A|}9bgdz6Qm%?gurKaPrSME14H(t}c z^;)jB$KuvU4x!7wvG~7HnXq@yo<G0$|Np%&f5(g)|6OFedLCQU{r!6Ve%){0nkW1J z<k$cE_xHDX9b<>LitJed(~O5fT;i>(bQeu|y2kkAML{*5r@<Z>VthAGTPu3LK4UR^ zZ;6(^M&psYXBW*5ICSCQhVu7QCdd7lAk=KATA5K{wAuB`y-<H~7on!VlK*z+m2UoR zw(yMb`z@z_J%9XRN#u-OY(|}iiw^JQ;q|_oy6ox0$x_|bv(F!5abA40_2s(>A0*Vw zwM)3<zo!)UGxJ`K(KEhKlD7VPW&F-w?}PkNob_Ak`lnXCDLa3RSxQSqJt--oPPa+5 zwDt0LU+;feUN0{HpSEhkBX5NdIn1{<Sgw7uMRGH1y0o{=*6V2<#~-D23-%iPc{4Mi zE=B*k?g{tZcT_akl1$j^7O&o0^TO;Rqu&cjhjmLOd<^C?Ui3G}``lI$_3XlB-v1d} zo|{&MYpTqd8?a%iQ-{X#*6jV}$$Oksv;>(_-97Hyn0nFvm+b#L@85g=pL6rU>ez3W zd5sqC`|L4m(=&lN6VFd$trB?<v$0(y>h_8Lll!?{eU<(gPQLJH;aZvHtgafH7f-X! zStI-H<wA?LugA}%M4t7wyeMR(_J2a!id77|TeUQ8l(=l$`ItBMGek^Vv?}z-%sZbi zo@6h5xZNwDMf~FFxS2Co%-njfKkwSR@@(EulMTWZP5j<}|7}q{k8$48DX&j2HD6rz zU;+mdhw=Br3NMdnnVGDfe<S9@0gdK4Qx%uWcO0<0Z{%liKQ69ID`eKgT~kj@4?f0O z_$*T-vHc0V{oB8PzyAIE_j-K2sG#nq_rFhA=elK{VcXW*udrxU(5eH|HJQzQ)ReYl z2KKGu5}e1fxn+~Wuj95(lXz8Mv*;)>)kXN9=}C9nJUjBUL3rCI-q~F%wfI|G4Q?}( z&z2ON>~nhC53RBVXM)dsI=9$MZO>(=N8w54;Yor=^&DqzJ2Y8li=Ewv)k|B<Qp<E! z#q5xsz!dCPtkj!#aCv3@*Ql9WIg~%0ni}$9<Kq&>oC>d#%@MuIOV04}>$bY6K0af- zCU#9h(?o%@0&V+V=w#eE)28t)a9ZH;m8nm5&0BN&U}jUP&hm`zYl$YtxnGPg+iYK# zaM(e7`Gg|9bne|Xy1V5aul5_n3rfZXb?gn^p`Cug=GiHc6x)__8Xqr9O;ntD_j0j} z%(Pz&X@RL$r)!tJ*n7J3=hKy+xWyh>ZoA;|ox|VhS;b$yInAf$+!C6+i|5n1oSBmf zs(6+a%~Nf<%Q(l|a-Fdz=c>J5d|n;-dqHQbyZLUL77n&cX(#u8*#GZx(b;+x`@8l{ z)0f*Xh}o{~r^X<?NaNtW=B2X9Y$j`(dsYYu2C1^IQs&(`*``^NTbIv!)`VRgNeS;; zJuEs}o9^g5j<wIqm*cybte2Fw@4(&D8omJ@7du|v`}XP6r=~d{->4<<FDoojeU!F9 z)tBj-&tkTUs3kjgZ+|9mIrwPzi?qC6nX`For*>xC|6cn(|7o8t@4e>VfBRBPRyp-O zUa;pxoy_sK|LhiCdM8r&+>GUHYsl)#zhD1FpNg?uc0405fATid*aLHRZt8SdDIxi- zFWB<)i&|c(qdkre)xxVz2X*bfoA>_z*ZBXe3pF?H-?Qh>kB^U^pMRgx9=ASRslFBj zZ2JyJv!8UGdiKN_z9-eWmOi;}&jp_LSp7k<y||q7{p`n^AJ4nhWAfi3vZXwG<>a*a z=395~7C(B6-D`_}+lz*atrkwNZf4x|UN_^=mXe=mdMpoKdlC8c-Sk+a_*bVVB<9UL z{bHuQgISf(O{WG=waI^`c}m!sX4ig8%aq(Yt1aWA(zRNd6Am7hcVyH1HdpU#VHcb@ z<IKeqm+tkiJR&0ae}R!~x^n6SamSJ+F}I8)r!=`HhX_49cPQfjbEiFLqR!dJSgJ8G zs;s~9!bjbqpYhaNh3c;M*q!<+CqBuo*|c$P<(94Q_p1D`;rEqGh>d*DH!t5HRX{B* z+)r<Ugu(ZOX%d-?^V$t&pDpNfyfTF|w4Wnz?%nk{k)I<aQ-76giVnE_(ueDCOU7EG z`Okf)-L*Jj6TU#T`$NX#NDFpD%XTlZ(qumozbi^i*F(7!8v<`kjB=AXWAWQyBDbhe z+|J0I+dtSp)B7R2>s0ug4*NVy`{-H1ELW@5g<c=NFL_8Vxo*x~ONFZ?hmzaG?bVzU zEzNx^&R@8ibR$X2<~)bbYNKjhf%%^mk3V{`T&U=Sj?0oBzq?$$M^^Cs-5b<ZU0nY9 zK(zRaW6FEgbTS^yTiL0c!#LN+zIDNoXMPg*JXJ1jb}8_@wz*@*(dwPTj_Xc#PYvjM zyyO1+{QUgrl^<*>%-<h#3EdvVHOp^rGLuAezKFiQ{@JQ6hd<9bx7h!M0Pm`-yRY6{ zI451;rMhvylh_owgSVw`%~&d8qO!a~_O9O<j{e6#Zr}g+?ccw?UqY+R0t$Xu+t>d) zvh3f#f1rWP+}o!n&E-9-wPX6@g|GH5UY&F3aFAG?MEU8o9nC#GV!W&ytIf-2FP>sE zQK82oRPoupyS<w2m0L{KHv~9ld$?=~kuNjx7yi}2+Q{PT#$gz*yx+F&zv2|t!e^d- z+jg8S`2S1e_3BmI7O1}$sk_2-+$gZ^2*3Q_KMw46zk42h?D(TmT~sO8nww^J)VFe% zeDn@u;lK4q=DseH_MEizuh2x!hDoc^%gc`E-24A_SM@G0rOq=v``_??@8D?&2`xQ8 zW9^!?XIFVG@=y?zdsla^e8!wCJ;93{=R_73I=`CEE&t)nNpbGIrR?%eo+jbajH?oZ z8<xNEHn($Ek9?b^b(tZm&*ZC~^U1H5ue_04JhetZNuXZj{ZSqD=NlO^``FD3jJ|m8 zspWH=x!G2>lf}c$v99w%PC=2+Qdx$qK6_c7^ELC|SPQZx6mL^ta}<!BHz}mLAmNOn zK~0RG=Bs0snVEcZzQ~<EtYo=p=I)o*Cif}_s(RZkXl3qIEV$T~FoPk;*<69^`=<y^ zYXxSFOZE3lzdvtodA9cKd$GXs@1LIj@^#jz<T$+W$tgb<kEK&sCtlpNw^xvDmY|kJ zwt2&;nRhZi$2&|*(k*Ac{%^^pm#^PvKU}UeX}RE$J@+mjpD|T(gArSaVp;t4DN#KM zvRyIj=2@8(UF@3gCF66~<+@4G`Lkh+#coMzf}g(xOACgUEESsE;=EK=>f&wZV*l4h zE~>xx$sZTAzy7yQ{!M=ktHaefm9bt|Pai#FX6>VL$1HyT-Z#e|mW#+rwnWaHlx1sH zkQi<eHUHzZjX!u!`s_I&7-_)w!a&4*emM7~Ypt-g0NU<beAjNhcKdJL{qM1BJN<Sh z&Cq@MwruxZz5gHO|9^aYd;4PxiQL%hM^-Esp6O=z;#i7xpYxKXZIfrtoE*N3wdT`< zNiGMy&h)hYmRow;Y0<63wY94+hFo2;l50m>;p4<dFV&+}iaO8w+_8DC|18DOl1ZIi zT#z@s;+A5Kj?S|?GIJZAZSE*M;W@9#huv6pcGRoYJBr>V`EPby6<8&}GyUP=%gszj zq)y6xt&!cOT&D8(*@KJ1H>R_0U3zBLgJ7-W33d@%ykDA~jEp?K`^=_G!k1ZNnX2S2 z&nuO?az*FJOyfP-arJ($`QNhtS|Cy8aL?k#@t0|vr!=z_RV_&IGEje5{KKO>Vi~K_ zr_>^$Y>6*F+NC0IoNa%TmbD~-r`MTz!mD{l0)FmHcz3SGulG!)p%VX8m53Jxmz|tF zS`I8^s^;RF^LE~i?WaGU<y9~468dw~mZ@{<!h-5lA!bGa1x+E#MLQc>qq!4rtYnYj zJzsI}&9AfnZz_Gae;V}v%HHYuQ3^fW+YhasqH4Tvu1x1kmp#q%OFizM;0f3y@M?2o zTGY~GH&Zy=SUehMS}f+bddc@&<7MOp3pP7-<L&x~<%4;jANV4YzW#Mo*4t>w6<>Yg zz8PlDwZ6Pg=fvL)tEF#QKCdyUnWJuzbf&R$WBc(g4Po8WkKVEHIIP{8d%wQs|G#g) z?nP-Id9>Dg-MMW>6J%_qmQ66(6mn;3P>IlQ-l=J8ZDc}>t8ULaGE2Abgr$@I6@kr7 z-Q1@Z-rm-#`loF7m8iw0J&_sNZ!@?UuK(HUwp#qn|I)SkVDL`wc<r8G=B#HHNn9uH z-ro53_rBck*KU2?#Wr)7f@Q`N^*8U|2PCcU<epxtxo=9)jLvV5JLYe{W@VIpOjv1c zrwNO5$udu~Oy$>CZ*Zr0tjSW*KbDv2^!nK6neU7ER@%kuwnRKWIjgOsH1X~Jgi`|b zXWBnM*Xcg)SyvL0miV%}Zr6-LkI78lwrNxU{=TT$|G8${;pMCb!h8HOe!qDnUp}jc zKPX4*c;Sk!nW5`EuPzKuv^#iJ&aL(NspBc9#Kq0q?WQ?=o+xl#I4~si;Gv*tGqdMQ z^;U1;<q36Em#Xi$Ewlb}i~sL09W~43=H&<HtSwNR(Cc`pvaKZ0$^Gf`MD`XbCr)eE z(0RA~=krgSlfvjKE9o?E-KxdMBX1cTny<keFgwZQ*~vy}8<r_nE2Mqj&-$Jn+jPVE zp6FeM2@Qrp682onWWGm6onN`5^vC}%ugmwmdb;h;(XN+5JJzJ7y_Hz5ETBI%>m$=K zZrzp;M#~M$68}qhPUx8XNa~3@BfGhC08_^Xxe|9nXYL)rTmGcK?F~r0{Ey|y?S!37 z8yPn8*Ro%=a(kH7)yyutqsTN=_0q*ZxmD-Ch!re5Roc1z&%XSRkHrpc4M{6AzIrUx z@`**1uwa2Y-_6!-&lnC&<+?IM=WhRB3qEt9VAJ63X}8u09^5n~b?2VFcjNEZ|M|PV z{`c4G?>j1X@4FH;ee1pV->+W}7u|g~Zz)Uh>1}T_)*fB6d|GQ)yWNJJvRdz?3`@_{ z>}EUo^HJLITI+3hA2R57M06&s{rhj;<3|y5#oWr1o0eWX;T}7^b>ju0eHEFx?pva` z8;t+63Mx%`UbJ(~>t9b#Pyhet{Qs0=yJEKGcK<!KEmv{-%B4jwJM*4-Ycd>l<SvXA zGnl$~XSGjZ>h0~nYpeej?vAbd`E>f}>DtMLg5}mBw|+}2-COti)2AlCmIHiMZ#Lx@ zo_f7;vD~F=8gi_jDfZiZzc_^GvGg5bSl9C|W#R%c`Q*(4vjpb`oIMhLEy_@J7Aps* z_lNavRq669l`$`tm?|apy<mRfQo}#{Lq=O$#)`M@F};!}9ei$=-QR8<vtB=Qt(u0Y zRe3O{#R`LimxBtGqQqAPTyJ$b<duEt-OP4ofqB9#M%yLdIAyL(SY%bT(%{KVv#G(S zx;=aZcK6lZ@6VNwetUWoL&LUfWwPS>dLjm|ryMQ`ulU~oTvX!XM8>(!lLfPn*z|=8 z_FQ1>mTGd$aATSwbpP99hxO$x_jcXP(@0L>k#L&#{=r)FPb=6J%6}iJWPSLC#rcoW zpHgOqsUJd@J?P^!P}??f<H}{r5*}&gJzDodW>K%nx#e?0*WR2FGF`y%$TZn&60x0} zX}8-M0;YSs)bZ#!a-x+>u>I^sPQjk#XC##_8?bnPH*vR^)-luTinaoaLbpPSt<gLI z32(y?W~J{<2gIhH-}FpT*<z`_{`n#{_kxm3lMXDrQJ(zlZNq<;v`@yOPnR>FtTg@L zzTe(dQt+eY%a{))J9kXqy6#<G+}0H$hMSwCPCU9RxWYhOuXV$bE7#8iGWyOvw36>y z?ITMgAyZ>^?HOszB_}f6uV4JL>^{eNMYgQ>2RRF8G4;o`uA2Mtpv&@t)!W@aHm;dt z{b%`XqmpkXf{%{a%w-NM>V41Wa5y5&>tIOqmd6%%EGl00%{9NKvf$XFB9ly^SJSS1 zdH=ir_uqZF(OdE!S6z*IrsX1jb?fino&T+_UdU>@6ezXzTH&uLLDQm`uOC`EKa8<z zY3aP#y_MI0c(c12>pbMFGB5sqI<=Qi->UP+|Dczrr|W|b)%*06yFu3XalBE`h7Ij+ zr7m($YT9<~iWEb|O16C>YKz|f`*u5j|K7U)x&E_O7(6bNc^x>%^4x3h*uJ-=5xUY$ zhCv%E->ofrv-|ja{+OAkE=C!LD<vQH*rmFNLrs0b%fr)Tx-PP<>~cQT%8~3h;oYh` z@|8+cof>)>mYFpwiEjLId+M&o3g^z$HD^u;=s2-(#i}gn=Pxe{v~_s(%QqdLQ?gEE za>GYXtIPFwk|XBkZQWw~V~)n9{Yzs`@y)+>Wm1`F$>f<Ub!T2G5XyJzW9Ik0y5&pI zXa31cZ}`_pB>(!d`G$jc|L51io0Ic>f2=8+nfY6%NkVb^=gc1#Vp}9juf3F-Y4lSh zOHFCwub)>Q9(`$^@2MuhZ?|!e^E>%R{>G~F+qPX^a^;TWRY%teE0-~T{HQ&1%bZA` z$<3N!_a;v;H}jfNY_#mqnFuaHAtTmxw|HgeT)4QR<SJ{F`pyz7(MYB*#`kPlT)ti8 z{rCLfjQ^M3FY!P9&^<Rj^0lsc?weDu78rJBp8T)2s4J$U%W_d;c8i$WboSlKH_oh4 zerQ{qviz#iEt`FEKjysn@VHiM-i9k175SgU=<KZu<$e*Urr%$6tYtBS%ZnEQ2J=?T ztGmnQ#ImjKSI>-795dw1yA`LMzUcF>L&;aDs&m1lF#95lkj374g4@)kbk2Irn!30( z!Dz>i7Xm)#3?9a=zy8s@EVF0lWY*=16XrQ&rUql0s$f~d;GW*IK!b*~SxdcSkM z<5&NXL!s9;=}(X1-JV!khK>pz?d-L$cO5AR4b`9St>NLl^!D4boiQ^auSR8`j=HvM z$M1djucoX`eYj`=tLN|4g<E*f+};$U=e_f8$BVlC|G%!U|9kxYf3eudK>^_x)oyQN zEvkO_X!_~f*3Z}73lUxG>Ciu6kHM~mT5ZoJUzA+EB{o#1#LMyU!ypHiPsP`7M@AYj z#yVP;t|@pl$!W33wsjVYA-3k4in$xuO%ICPEno_mH;HfY+jU!~d3AK3*!aG1JwNZE zIsacu+RmStGtV$A*2n1lxA}`Y+-9+q?0(fyd2Y*@I$<xnty#w`cvcrh=pXBMi~Mko z<=Mt){i(~8Ok|HuJ~iuieaHLaA56P7jq{i-?p&)ieqz76O!+sH@!7cvEkXX7x&5s9 zZP}M2zr6Uo`K!$u6Bn7}Rab(xTDL~+P8Kon__y@@qs1Q&om=m39VIh^!Ob?CNAP>z z8X1qnFCw{@uiANj`=`PO0SUg-8Js&<w>C95FJ3J9tp6~Bn@D(^R!k>{)AuC@kMd3L zed2NR>Yj;W%8bq|-<lrW2<Fo@S$Ns)>a%4}l^Ndb_wV~Rqv&7yqSjMh-aN8rjvTl% zceRG5v+$;ZK7p`9N`kW<Iy`&V=Cfpif|03c;Y5L4W5J-l+O*=hqz!G=S{X|`4;t7< z)`;ZYU&rU08CK`AbAG_zxTDYKPE9jbTcPwR^3tzqOv-OEU;XD&Ee?}Wm|*i)ZC-3( zc44Br(zB4n8BvqfF70i8w~kGVaaPvax3_C=_a*l~W?M9E!sMB6e;4k*FKBq>zlTAX z<LRgh#Wy#?7**Aozc}%6Wh~;$XmH?J8e~1iEAskQ1()pGK8MY%^j)6E%=q|mc6imQ zT{_+#0oO_cuU@}?U1LJwWQQ*&>{o4Nx^eq;fAV^@C~fyC8#?yv-P@{WEIz;JNNsAQ zSi|~{zv}=0`@8?&H}IipOQ)>Y-~M|4|Mfv!2?nmS4Vk43b(RWUe7Z?T^_r{R&jw3l zBmFeCot-A3oT>S*-b#F4WaMNf<Mt@&)lWaWBQMk|OoSh=D%+LxVe)~w$M?oEu>J0o z*<k2m5H9+<>wjIMbfJxnTJ`+pKO1JSo-TPIb;ifH;NGrY(}x+amzM~#e{fJtd66w& zc~sa!$TI25oIRpv<TO)FpMN@|R(bB_`uV+*%EpNovYvVWxa?E3<Mpq;weH_sTn@Yl zVY5Gau~FvFo40a8Zzp+k^n30|zu7!f<Z(sa-<@luzN$A)m~ry%+^chyY!ol|`7rV_ zFJ1HPz^^Y?B;2?EN>QE{edwQZ`l%Z6vZL;o1g}nBoZgX<@!-<O3xz^i>5)I?%o9wT zZK%W56(yn5*%f>u=-5IoOFp~K!wd5m%^e+|C*_5#abb>~mHqF|yC*MZOqYCB=Om~8 z|MK&v{#il)E^INMdVb~J;;IhbUl*QC-5Qg0DI?5EfkBj0!qa*3@x*zm3GNP0cJwZ= z+R(@}Bhly18<T)y$H@yt{2I&!Cmzo_U*&YedClt?PcrpOV~-tsyu@Qk$LwQAh1H%< z*g4xPp6T&ozSbFg*Pj)<a8BfF$EkCSeWsizu2t-e&i=ivmA^Lj`qR{@9))+KbF^i9 zIv88pU$})>Sz6gmSUROt_u3PSCvV@r{rdKJVUBZ*_$%hjSMRRBX6@+oh+3joQ8L-L zccR&SDVdFoQC@p>vNfZ2wkWO<=;l6RlotD_X@BnRzjY>=v1jK`+U%j&dojExVrJ#- zZ8v7|wBNt~|JU{D)2E-1*&&~wdwZ?t+CTCCf2_Z-;m=e3`*lBmJuTb4^Y`o5-)rw5 zE?2BF2-?DQ{dLvu*mvJ|pZfUs_xJDLzt`UPy>+Z4a@y8wTU!=79kdnO_Ig**!P`%x zw3{;zr1vGSp2~eS)zdah=7Lsxvz3Gc*XG6EZf9@!_?)kpzP<e8JpUJgPNyzU{-f-n zZ`BYv>*CrM&-%oS>Nj~j>ByRXuy>W?%$GgVYz$kU^#++U*a@AMPl?a!xba1@$<#Yx zQ%v;oIm$*thEkdA3oCVxge0}6SS~RQ4-aP8;UDl=XJa1U+^1GW>~6tVcT0u_+N^cF zb?ZnWtBm5(Rwd`>E`@$lhwRRLh^(EK)K%$m<8ubvs*fhY%1R$N*1h=1Gt=dN$Xh>) zn<igQZ|SQ0@BC%n_i2{LEYBK;g!<}i4m_vLsT<UIl9zkZJh4yg>yqb~RlYy+`EJa0 z(aa~aS7+)JmN7G#1f+H_J?j)d+;fGkp5ukXcH^Vd&n*;TP!upqTw^NRxboYB*E4?a zSTwmpZ7REBB=4C$EO9&`bGTPlxiTd<uytvuF0Xj;;N`L(Ukv`Ae%3O7dwJlint92} zk0x0BWSJ~I{b<lc*%LN-r;|7wRNXY0SRB|y4ynIgc(9M7uPyBn-^}zmKF>8`IUiWh z&-eLqXJ_DxX7TxYyDj}f`ro@9KT#Mo@vBJK*9mg{-C0vE&3yG`$&)$HnECi#T`2ri zsO|nzBAX#W?cML5AJab`)LR;|PBuWqK{!cG;mWaNVI7i9XRahMMe2()B&^EVXU$T7 z^Nia$Kattjqy(p)VtaU3@c@hZy4O=@)>l`np1N(NWDu+wlbx8%P!KqkEvGqZXN=y& z^9n*jyT2^wcX{Pe%4tx~QQ)*$y!oGj--$wnN89u7cNmm>I9{mm>wf*;_L+P4#7uXp z|M{&na@q&WJ$v{5{q|S>|Bv7GE3;l$=5Loibm~l=k`l|lb+4~akG|x~*<rLbbn2S; zDc8K!K3|PG=yAk%_U_$XLbE;w?VPr#=l8l>b0j(4He|R7Kesi^-)UjFAW`6H@^ojH zh8D|d9iRU#F`A{#TCVJtmUdz01OvmiAkTh>DS_O@>#y~iWTZX2q;9|R%j}JF{7+g4 zyP7q3tCb{M=^b;Q-Edq%Z`a$pH*IAne=WFZKb6@)Nm%*O!X^$6hX<egbYmyg`Pn%$ zS^aK(_LOy}y+Glwjq|-zEqE7eR&1C!MPNbyA7<y+8^wEyZhA#j6*$cQwM_P#Wb`d* z9T~X?i7oQ;B-5T4ELzxVXMbf{Uf#<2SFYS)6~2GA`WrX%uZr15l^mP*J*v#+WIVKE z{g)%f>;@ZZ{+;F7aqP7~iugHBUH?EKgXO-3&mSH=Uq0*4BkR{c_T;GU{%JdHO`BcY zXGy*pdJcvv#VjUFP7cAn+Qze#r3#-0R_*q`^l|cv6aPO-*p&Z?csuXIY5D&Zi3#q! z51JwkO;l1Iuz4+b<@Wa^vw#YdzTyMM%}35NxCdl~R385rmHhv~Q&m6XWjlN~zhPI7 z70NkN<mYj4+hff*@8@1-?{)^h{l&^YkL6eL6Qh(}t8RUH<9=K$-GgU_WJnUX=(3jw z#kv@7OsG2}p1Yc%C251K^{%2V&8IiT<TD&N_j}*|{rRh+cHYqokBM7!>Bw5ED;h2( z_nl5{Y~A}eX#LdA%c9IZ5gpTlw2BqIHcaxe<_pz5;t=PxaH&hs`E9x1f7{xem?@QL zw@qJpd6ETFv!rj!s$bu}En77`we!C4x;?qK_tpRZ_wV1Y$A8y~L}`~Fh*mxl)wOfW z-yQeg2VR-^vufv^yzNV$y?FWh`ucbOzCIPZHIw1I`+WzOgouuf3|GJ0J{G#m;PEB~ zh8yc{_1zW7i49j;;gitP(Z#D<@vTqzjiUB3NtPRyjslw%nl>A;_Q^=B5aF_&*0{6r zXJJr?OpcR+UG1f$i!(}^&b9Zr`eo~OxK7qN^!woR%};9Axz$RSs|mZN-J2|=GXHRo zTx(o(iW}RxPt)8*gwH+M`9i4baQUj(OS=W57hY~qNnY})VFI7`%@BP~werbZZzl04 zOm@lelUdBM%#Jlawwg_5{@-_YM|^f4n{;uLeAVuXW4qWJ=KR@WTzGb$$vML}i>6+f zwNxg*>CDjyH+===k}k5zRQFt2d{c7wfsi|2-@7mUnpFSpk3isuHz75Br<i;4na><o zbeA<-Eui+$W$V*>B8rc`cW^uwelBuq7Uy}}XTKM^q_7mJ9B~S{#M*H&O2DG=xcxWV zDa-=?yjPti?#S~QryD)p?{NBvJ)_EL8yhDUjfQKzUthF21nqk6=bSFO*n`21RliY+ zIk@-wMdefz>vBU=;b*t*@0qh}#j4XY&q%KS&vQoh#XG(H#er$dEX?I&@0KvkZS4wr z_vgS8zHezh(Vu5e(Ywc*GtK8*WrT=D*N1A>IXWu0F6{q*s3(K5rQ|!0b!sm^kKoj; zVR~|t0vmt-mHR6ucqh+1MkA#wdF8c*!8glyN-16Tdd%)Q$7^k%R+XLP%;gHMKFptk zXSp1|CT*m%R3+(#zvbb818sc4E{D3dzn5m%vw#2Y-=(p~^E-ZhdA)xBzJ2@l<$s?( z-6Q_fh4t5hjP7=7oO-_NTD1AQxskjNIx1qP*GzRt_VJCqbl}X=pyz#0e+GGR{#_|& z=znkV#)#LG*3aht<}Lr%<+zOT=N%$9Gri4I7?w|v?B;NIF}b#FdS$-XvcQNR=NH_+ zQBu;vkkI#dW6yho@3Xdj=U;nvn*Or%r>EV`-@WngH9dcM#pdr32EpmB{N?L6*hD^< ze@S{?QJ_-WJ=eD}#(hE==}Y4Mm&!-%{xPA?f9cnMq8}Y=ZD*S<_hJ1IlAU~iO{>KT z@0STD4;3GDmOL)2*!zAy!_${jUus=5($xEy6YYKKDaQpz$BSp2!lqApt#(hJooB@| z1~)zqzX#1+x9{u7u%34`_Nk4zaD2(C>9=>B^*{HeaI#w|3-jTJ_I_zh&*m<^|6BJ* zaPm@iiHp}H|Mj$-i}~2n6vf3Q$e3GjgYk7ova^$nsgPvn!@@MPtb%PNY_g%u#(RIA z7ujGRFKhp$YH{S><R@u~FYHttSkzS<3{peb4Mm*KXRL_Qf3|LsFF$jMi&jmfn1b2y zj4s(E`PDBJHl+$`d7cmm-gub*^@DXYRDMTH;*ZQ-IU_;D<q~6t852j7?ZnlLPPf7r zYF|COXNv0UIV%nr9$OeAalol7EiYShsm{_VX?jX;1C-)ku?l{#t-il~>#qgplqVkB zcEX2|-?UU=oug{N)!O^6=BCaW`qR7WD!-N+?_E>6Gp7IXkGEfcf0y5%_j|RqlBoI$ zj)>{ox0?%Ud%S4jO4%{x>4w8TvMaA7t%%+&EI8wy-s_+W%{_*U4D79pcQ`(7x^gPL zrY!r{<GXjY_2ctmMV5zkcz5vl&iwiG>9I2h<C#C4aK7>V@Amum7W>5MP2V(adcOYG zLlGOo?wPq?+Vx@jr>E1`>&Ne}tF7F*PTWmE(D72fzWA2)ubs~Pd3t)fLhsJk7fT{H z79Bj@dh@H;#gKouzt;-{lpb4G72&nkdu0Ldr{ycJJJ~*B>&SLJwr%^hd+}%Ui&mCu z?lA3t6XYiU%0>9--3gY<;tw8kbypE7Ha(MLWa{GTVy@!Aq#&I8-Q#dFLver-3;&P3 zk<afaM4jnjV86F$it2%z7ZY~!K6GOiDB}th5nQ))S<;E94$Y1UOb2eOziJg<;=<5h z8^1!RNPj_^mc$Y!wZiT>K`L=Gzr~hre|)2*FSyakCt?Pt;Ns7Ho4+_RWFBMKGexAt zL8avKMG@QWRU8Iy+N7AD@8AyF-&w{S#h$?%kmAGA$Z+>j5oh{^a-&1Pn)VwccLvrR zD^@;Q#458jd`I62&Kdd!I~KOaeCpwMa?;t@b3#?yV%F{`pJg$3V>kq^D2VCbdL;UQ zsbk}d32AB99vxvk&GIec)3;b<p$4f8?upHzdI=I)@h{JA-@RKd{rTOKxvUQ}bf2hr zKfGA1tkjq$m*OJLHsgQ~;~ATzC07^(PYQHi;cXN=$m7z|ut7m+=2ksDr}qv2&MfNq z9UY;vbF<1y7jO57G|hl3($2*h4m>*@Q*2kVq~Eya>?draa@Cf_-gjjs+drEXZ#?%a z&t2T_DYvNX&lg!<Hw}>ub{S>t&hHPaZs71JC{bWgm)Z4aL%h({9lV)rx(^gmo=a># zpT(A+v|#O`2Vc*GzWpfn&18OMPOSaT4a#=vo6jsdaw75fjeBm(1uyf5ii#>lT{qfv zdUxsfhwp4SWlarjEcri5{GA>Y^4+3)#?PY2V-b7uFG>Zjy6t#2(;(}rY;cy3$m7c# z=AM-*8>H8~wh~BMZoY2H#Cnr;T@OEGzyBWfx^(3Zy^s2we;Pi2jhwc0-D`m`9@W4* zmT9NM=XW~xxb3g`DRg+^>)gMeo~rKJ6)<h~&FT93(@+0;d;9veD9zN^=^XwY7V6=u zZK;t3nv4RPOBd`s5qN6pwOh{Rtp>Bcb}gCfpE&VvLfQkV%i#{n-%DflOEcGYb}ck4 zo*;NehpX9IXlC$<t41?2S*ESJt@7y%JF~8x-OpEM8#CK1ONBT38p<zT$hXh(pv=LU zuMB5g_+Dl#_hQc1gCf<k`foh^`uC~N4_fw)w_#yg&pWMoDdD`89ySJd`NWwj*xM{m zzKAKb-PSYzmDc&%gNL7QJfCpJz5Tn-<i^P>jC%EIYyR(j{Yw7*MO{}O`9v3~rJN5P z?<TxsIe*r1Pmkg5!*41cv_zdziaun#-7mzc*V3%(?^>R7vsRR{&*O}6dSi4w^@MwD z`nfwNZgj_-d?9&PHdfA4wei$e3q@~Di_F5g8w}3nAE_uxQ@Z=+u=1S1+sQm1o?L&V zsOriymB%q4b{E_8#G-$Rau-q)fBd$+^L|Uby>j9|KejjfKdhdy?8PP1>l;6|HAp_& zX31}D$~&Q>wWe8e0)uQUbAep=x{1B!3>TDgXY3FxTzT3-`{~?Q&XYd<Fe#PqKhIaF z;$LiF*HiL*!`>Yh$L~G*DC&~trdH6kp@@0?R-@3+yJmudX;Ig=Zn9UXJmaF&zFEGe zOzFbBP5U?!W5dhueBZnEZ{7a)$K4v1PD#AWJSD)>aB)_QkL-o)NJfqa9j3Mxon13) z|Nh$gTsooWM9|vHi9L(gO8)j^*cZ2dO3=IS)<RQGEuFG``*uT@y*k~>Y<#}eQNKFc zdp~d4s`mTgr1>ABUjP65{r}=sshu1*Q)9CggRbs4{r~p<|GzgaS)F+QyJ7UbKIU1< zhc-<+{dH5Eo?P6&w?bzFn67rX@(YSuWUUR{X_E58@T{AHQp?dZeZJpn*UO6JrD;7X zOzc1Hddl*SPX`A#f7h~wUnlO^xnP&uN@>1Y<5HHEnu&K=1adc6DhVBNKb0)q#B}w9 zp~mKUmv?8$nCwtg4-`Jx>9N~Nu;k5hMuw%4^N(H?5I(xMd%Ba$REb}k&YqR&*>SAx z%o6#P9j7<7uvMrv*53F(mw9Vr+l+_RGk0CBR-QM>L)qA<cD^jHY?JByM>%$;*X?r? z=NK>?+q_!wSl;4WU$g&NGRb7}aL7cT)cEjG@4NC!_49l$W@%cv?7o`(=Sav_(*Wi# z4QUE#o*m5sB1M9;yDqLMJLxHz74)jo@T8l+V~SjW(xt%MDO+_?jOC6nN9a!%5w=-o z6;kJxel*%LX3s>?s(*5YN{98PKG0jxx~H%IwO`hmnOX({q6#eTuPaX<zB>8g9ObKT z-`v||^{YMb&wS00`ehpb7Vde<zqU^GMD-KPH^s)`jS&i+J0*8Y?@*l4S@~*FMNRBi z4flz*hV!DEC)Y_|n`h_jVfM^LwL)x(uhxq#9P@U6srg~I{^#etX+0;}?_WE^w8G+= zrDCJzOws3hh6aa%ykae8ILX)M#J*zVOVcY{WF=AY;OwV{WF?h6-n!o(AJ^5JZw^|l zAZvN3*RCk>T0^4S>gfmF&a5dDa#?J~@ASoB*O~3xJ78-8cK&`^<ozM-QkQL=ckGI5 zQfm9Rm%AQ${dJd)>MuDhncna>Z@1-2pZ9vA;^M2Slr7YKAWD0O{^_E<v7H<<lf<GV znni^qo>r`PuekR@T=HbV*`r6V-sqVyfqUPcnD4eb&GH`2O?|WKnVwggR<8NvAg;h| z3W5b558Q7jZQpg}l*<{JwP_WN-kJ<k{;rNb_)x0A*mt*(g5iQfod;Qp%`-l>xNT^h zV~|l$dcep2JKuhOF}`Jw%z5Q2vSuAyyKeD>-RBNnb#yM5NZ1rn!C2WcQDM@Y!+YCp zB|DjJUuaT#lEr({Io(+1MQg_#t<AP`CdsPad2pxt;0f1e%d%I=VwS1Jt0y)wFhtCd z={P(0u__;D^qvyKemnCHKEAfe<~1gjhszDCf3RJ%tgnADb$RzE&2NmX&jm})8Ge1= zSjKUq<ozwHr5k1+mt)&=_?@lWg5qOYMg9e|OcDyqr$4)QnoUZmB-Z<oc?O5zn~M{D zL>M+}@;*LTDW<nZ!uofL=9;Bvc)!n>?|C`+@I~GgkJSWEUGwAL5MjYyS&`QAEJb2* z;Ss~9ZVXE7<%f=x@ErTaytgW9VQZGi@BjZ3C5!)XUjI_={cLjV`^Wb``9u{4I)oG# zU$rQ4N%HMskl_;EoRF<3{MqSD-x94pk#Y&8Z3bq7epeSht~}V*#q#mZ;ax93-E=az z?R0l9&kfmP_bES@m%QySmYDHu&JAB_LmT;9PftG;is>oXqkH-gYv+kupEIUUY=}58 zZ$jYY8$2_z4_%byoHOxVzWtU+o3m-ld}X$T^j&K0uv&2JjLVMv-l}(P)~l)}DA)h} zr~FIe$)iQ>FZR7p3%l<9FzUK$SUKA}ju>HyFs<WiJPgy83g}KXp3le;o&CEm|99-| zjq9#Y;s0WM`^=mdn_>>`kv%SUdzo76gqa(Usn$zMMHQ&GY?rr>`C7I+^x5lOa>oyL zOqC4x$?SC9k#}U{p|@qqi*j!tu(6Ro6SI?{Yv#7H4jC=?{k_*Jg1MEA<JX5L6>u&( zdu^+w+=lHHt!JHfEt4yK5p%0sa{*h@<efraDjBQ-xNI+8y}}~!I+eFD%`52B9*xJY zhxtTL%dmZ{bG9$_blDte6)X7p^6X;;xq-otpItex<8I(oX5jTeX6e7OCvO#IX{gLP z{iu1#-Fv}R1<@SQk94J5*FIicz;)z>X5r+%wyKStq9RYUoP;IjL|)n$z9}bnu^Nxz z-_EYS{j=IV@_D3>-+80?N5`*TrZ$WJxMcR8LXMV<b@}`MXjW-DHCxGEwK|}GPt8H+ zMM;xTyD3v}dP~O~pEC38i_;W0H7{>ED!W;)?E40<D+?^xIz2?s_7vLf_A_19=_Gj| zL&jc4@ppme3eU@B9(Tl-Pkg*GxnDHMer3{?wH+M+#@qBC=6<v{|IG8;wZOdiofvcf zg_e15u4F%bvT)AVY4*mPf7WnTe_B3Y{K&eye=i9AYdrDvvQYFE&IQ3de_ee|*J&(Z zYm_cxHfMG(c2Y7ZDdTVKvYKSPP}9h0*Uz0f+jpcXD+o=$^x4HHiYGotXX4*42W?c_ zmoBi8TvhUKO5swu^S^8&+K$T{nt5^hD)rC;mn|HM9e17AR2HSX&3rxgS?a3^p{&Kz z%R0Qww^ZKR5_2{sK%~QCYv+lJ-+s(lu*>6izwZ-`)SYqbN@E!uW^LW}wwk%2bg$6G zZSphMwW=@DoMhVWVw}`=D8FEDobyJ@PZ>hn+Y}oDCQsw8KXB;8_16uRdAoSK<4zS< ziON6RrP!Ra_UK&MGt-yG=uPKd@4fQ06pL8#<QFryy_LP_z3}wYP3x}OHZ1Bou{0p{ z-LeqwZ@iX9LJPZ37c$Ja+!Qg<A|X82{#~xUz}=kE4XxcXXG$51AL5u8aCQ6l@1?QV zQyCLNP1}VwTBopb9&icq$=ns?dQ(|f?zpPumx}@n0<EvblJ@d%=o7zb`|t}x*osHZ zh0&k47{3-=z^U5VV(iCJG)MEtMQMTlSH%y!^(HU~Oqj!c>w@m#!$Nv{%2)nY-E>*5 z!Q%;wPs-g3ZtreAS#ti!if14HNbyz8|KQviX*oH{UpR5sOTSYq<}Tj$j#Wzb2FC=e z`nWZRbEdx!?2rm+ELg!}d+^VceINMQinpEE7+AhpEOMUJzWtlcd>+i;Oym-2$?oxp zma^v(5}11C+KFYlrGGvi>f!u+q2}D<m>Q3&PC4Imu9<%r7xk1F98a9hs-m)h{mILS z8~wWPS9E<YtueV);FQadxS=ooi^kjwyBOt~w#f5j-KelVCTx@4yxZezzc17N_|JB0 zqc4a52wyRK=}AXEHnGL-rwy9<Hf&gCIIV1Xl(Iep@8TQQOgpS*DJ#!X?&aLN>X&EY zjOnX2b7y9(`nE)FUg`ObPIIMqFMKY!>w|qv-8cPt%S>N5spxq`e5>V8wJfUoXQd_Z z{Q8FT{I|B{-sL+l-)pzFbLKUtiEUN;?|Ul>X6!pHH;*N1+NO2cv3hH_Ui<R5_V%{s znbTLDKD2e6@$vqZ1~VrooLsZ7abus(miu+TbB}Po{cX3VRLOnq)~!!Cly^oY$Nze! z9IjKy-m^bD_WBR)N4`2s=X^M$*8c7z=gzg>d-t*=NC}3zx+>j2cXzte#6Jd6EqTuy zN@Mk>FV#Eaqgm>fbGvYhE{_nSk(qF)Ly?L)Tj<{V_d~XxEZnLcyG}7mP|$aI#ir_@ ziKkC&J!0o>BX>yR+yYfe%MGg;^PS6C84LMS4n0}k_u9wKsVK*V#pKf|;cuZU(i%Q& zC~j(>^5mko!E?jPs)*ukjJ78yGvv5jOYA#ds&nJm^+dl(fgw+74qZKydcr+ZOZVd$ zcLoRlMX#4$KQ1aP|JJtU@~*rErswx4o=~lSv*^sRBRNVlY`Ef{1>E_0ou@-#-RJsE zd~YtCn<CHp-lWm?*Q{Unmx$dK$$lQ+yF-LcE=SF`@Z`;(k!MyYXI1(9oUyRKVBzG> zvduRh1<trXQ>H=C=+^W{wS^UDzHUi8_@?v)=fN50Qa-#}JL`<Wf^`p`e_5mbZ=TsN z1Jxz7H6}P)?&W)FWy(?^G>_-~V&~;&4Md&Pw3Kyg=h<K0^0bw2$-lWFEz5JSoaef| zocYZCl}-O!GL9yHk+$*4O>4WP7_IbZl6JtMUF%*gb7w9)!n8EtxLJx<iOPdsf0i!+ z=Cd9j>TP)D`M^hXmc7K`Y3DX-%=>of{}jvmU8{p)Yz}WQUf_BAcG#&&X>9$n2ewqa zn6&e!ooL5|ibHPdEjhIn9j|wF?K-jXy|tk7s|ni+It|)q6gVlI`c|8+_4ZQ73k$1q zUPc+`?i*37r%RpN$q;oc&ex@`rruRynb5J7k24AnORvrm<b07UezCFqOx%Li)sGZd zysda@0!_2mX2*79+>SoObFn6V`i~Q`#}{4;xm~vZ{`>FO_>3o?`Z%}6%Q$ZDjL>6g zi}Vcdu!Uw``*1>DKv4Vn<x5eAU)^oU_`Od)x7<J}%3{uDJ*Bn-s{W7CytHz5mHqY8 zzg_EoXkiLR%7oCksY%6awO-{FZcurktQOIE#8ruFS;h=+{~MxGH$IgZpEcmW{8G7g z(v~yov!mu2*~nVi%zXPOF5~X4*UK6tHrPr<ALv}Cuu3boc)nTUqIIihXv{S<=`afR zy8h^xOamMDqn@xCeCtm-JUe3Gb5m%^O*?+cqY~#VN<X+;-4Y35lD%-nwoSbw<<C`{ zoSHsGl>^J0zK6t|Jz^p{^<z?!-lwWg*6@jOW;svp&(vJex;M+{nByM5!c2Z?#WqF; z?zF{IK1UgM%UlWk6ufMD`#n!N4ddU{0>&0w?%kRC;d$s{f#~nA{JImJZ0>KZ^X^#x zvqqZZKg%JbOV09nJPyn;lg=|63hsXReu~nZONwnR|CFWQ@YfdASFHMP{!(|Td*^aF z*<_WqX_p?|n5uW%==Z^`Q&LS!L`@6UO`X{(UYebzbSp%*vm;ygMEX{S>3x}9)wOp@ za$1%=|69nk(jYm)_oCu~|8}A7E<EuCZ~BuM=0+}K+1bvuzm;)?wnXIV^)cQhfkhdU z@A5xxIvuoV&Wa4xI4|CU1BEgdXR%a1dHXhZEw^#FmJiR7RlBzO&SqdVbSvxMRrvAi zp|u-l{7!UfVD(IV;L!i=+uz@>U%y`6A+pZz&+Gp1AOHUS`qg#9P&j*$(j}&eU-vq5 zhc<^x>O9^4-u|6?_3dvNM=#w7nEv&tmrMS8`?&Y{JQ3NfSGWT7pWgVMd*5f_luuuO zEqbMtH08b1QziG^I<NKj|7mjY*t#`&_vzRD<=5Hn@B6#H{&%ZD>TY>8`?^0Fo35Wa zzHjf|zYa&%-(PpV)N<Qafu^h1Li&!aEY8V)e<@{m%(T}}g9KJ3aSPqPXf@-15GSL< z9?myeP8p|9-Kwdsp8j{oHKS`n%b1)xSVF>+*zVkazwN_x{rHXte{0Q!zuywQ*DcvG zL9?S-?mNo@0n48pMJemfI2?JkV%4%|?>tn}mQGpa<sx-<!lH@$yuNsg%&+R3D<U8w z(=<1ACl4D_s;Oy-N0Pw~$$-wn`g`-e(tkSLuRi|LzeC2)OQ<w7nCFJkB9||-w`fc~ zX7GdO#FDJVk9+n?M;=(_{;S_zE&D;S_sYqg3KQ!Y!VWPyob)@ji^*+e#D*DWsx0f% zcN+!SBm_Qb&bX9ZdqQyTg$?E%F9h2}&0FuCG-UEqcy?v?%yvmpzo{`2R{ax9gp1u2 zjvigyxHIFD#3HURmF3r@W<+l`*t9eAll{*(ns*QCJe8BXAM|m<;kMYhGEvG73Toxd z!o9xgD;BcX-*H&XrXDcmxd9iGd$7v!2S<BWe~Y+yv^hZ8@4Tx(pzob6p0j>PxJkqv zVObV=XmY!_F0<iTmsQ5O%9GzX^<Q#7`{bfSS`)hlldy$Q#ji|JffIrgPC7b%YHYm| z*mqINPGs%o$%+g5JH>)qohxKgf9+rLQz!7PQS~8}Sxt&oot^#u7rWEg+CnmQ{)f(X ze2})*|H)w+1F79U>2H~P*_)18aL8R=TfnsDhr9Fn<-xxfK0773EBM`crE4y=QTKkm zsB7zeb7TYChs%8&+J>8J?|-W;HcxxxbUJ8ys;A6SOCf>eo{}8`T8m~*E7}_;SYa)d znD{K}dhXO26K4D>yRW3^!PJ(kprrNh+qY+Zua*f3WlrBA=HvYHk8|3_^WCTK)yZgH zKCwh!c~P$Qt%YqDP1aj_I+q=e*r_NwomntGE^q4T3e7{u-B`3Xs#qu_PI@>wk2mxF z`}O(vx4+$M&>CRObk?<haqgaCAF1zu=RNmU-6Zv_v39>XyE&slt~<wzP|h_D&tA=~ zJ9WFt@$+K=<K6e)Pt-ng=H-fF_J&;|UZ>~wOV<Xq#0Vr+<SmcY*}T%yrT(R1ss2*? zX>;vt>@1a|@9?gD&E)i2M5C+m;Q^<^;$OdbTs~p-CFJ&Z^*e3bT4&BIFj@IIqeQN* zC;Q)rpEjzxXQr%=n$F&_g15PsUqRlY?}xPYTZe;6a-0te4Xw6b_<Q_Io@hg(Ks8g` z@hQa`8wG!6da*GGB_I2^`OBO(P3eXImp`epDJ}i>Fjc>KfqcR*LB%QWHD~R1H!1Xc ze&vAf+KObOp2rz%-3$2`78x^DsqH%@IrYJVHoJyt%kI9nn5~n(?M`sr^Nx*kc#A*R z_ZGUwte1a#x*+X=t(4e9!}QIs`4ir>-LY=@va->b-R`69!W%Z#<uaCXhD8tj%*q=4 zMO5W)?~7dh>HMs>cB{ngo0cD+uB&#|hpAYSQEB1Tkj{Wfccv-#{t$9~5Rh`*TT7u& zz-(H|Ibi|Dl8<t2kCX45&T%*-cWssb)jS<tw#sk8r;i>FKW;Tu!?5$OP-0Tx?PHcg z&yT*{X4TYfC9HJK&M@QBv4qcW-{#)`{=r!Hw9tezl`7F*7Z<lqi8$)Ago$ls%I&Wf zePt^;^4hm7J3f(Ry~NY4*JefiIh{QH+LsAEdS&H@V+2mGTvmO}=qQtpTi@1ek1f8{ z?$4jv@q|OCG+|b^b=%CV2d)aQQ(Wfq<@ELZhx4oJ>zAKQ-}Sy+xG>izV1~BfF0-54 zbI-4Qd9kj#o^^wMe4hUG*SWFU6T44soGJ5r-~N9U)_sqkKJD5Q;Nmmu#Japit61vN zmVV>^<00yPWb2h*hqhk({#{pN?#7Kf)^!)}i)0Ak>R(=CrxS81X~pH2YgVzm>3ip- znx0yla<_lyrk2%;_6B^;FXY)j&e*}X_Hsai(Sn)@y!|(}DxN*x8@NAV-cg=JmcKj) zPo!kpf4<!Qy2R|;!6WVSj;PrjWjyrdOVxLCVF#|CM){VFXU~~5$tJyCE;)1d-1+vu zcPwxJta<pv$DgZiectrfv#!0P&xe2A+u-Y$>$xu6S!x$Q>+#{f$;LT)ErG$hshh0s z{IyK)>*#sm{%dNI4%4Km@fLR!0_(3X-Q8e(|J>CJr6T)d-jp7=w=%@McGjuB>Z=AH zde?UC-d>g>K0BpABH&XbqshsXX9x9dMXwhg{JOb8l0ot2jKj0Lv)x?S&fVHu^1F4{ z_Xnln4h+vV)fGk8ZeH@VTuZ*@!u~&RzVqBWb$;&L`TmaGw-~Fm!p``tX`HodwKPkv zPKfi96D_UDmeT*+Sg(87sjGN31fLfy{@(H~W$71n(UXfew{tvCP=4>Nf51NTXua8g z>Ap+P`#1m7yf$-(i~VxLM6R&uw>baw+-Z1hA;h*<r+Kr@h3y*|)}LS~5Lwvlk)tWf zaov?aP&D87-u><G*S~k4E*L%iW^cx|?caNM9-FqVQ>lo7S$4%%%ltPr!7Ig##lr<y z8<e#8q9;FH%d^x}I9BiU)1p!pt?tE2o3@mR7;fGMy0+@d*Q%Xz#|yuI{}Ft=FyztS zisEvo`0J^<U#p@!9d0XL64+~Wb?F7RsXt$z{`&g5{`K2cJ9V~-lxO?C`~Lm+-?tWh zua{aGEEYc_5FBn8T38y&q<*foioumBkmJI_)eH~r?bvfa-u20icY?X+&#-)(vD4%4 zSzQK&-0hxuhTr5HWG?AkvT`;`{;i>OV(T@jIUAPDpRsa9L|0TX%hmd?v6APe?^I9D z;Lr6)*=NnFbin6$MvLM8-o#_``wtZ=Ca4(bA4!l~w&;)950h^<rrao%Ic{NP|H5O9 z^Onc+ug<-*R(n2koQ>DfKSkg2BzhatqYnjV{|@=^EX(}F_ldz#6PW!n)hA6lerVBu z&NmwCE=bgbtYEb4e}9vQ;cKB<nVT!$uJ<=nO1^S1RNUWiX-P%NcMd~iW<$o{@Xiee z7uK<szWum{DfYaCTtB<Z5B91y|BV|zs+>9K`7xp8UekijiH7gh0zX#W3i$L$ZQ+F) zKfB|xPt`e?x>;U4Sdo&^c(Ks2{K+G~cU<S5F+I$2Gb;-D^yPi;cDZF%uk4F8|9p2A z{nsfwFY9zudT@;Jj)jW5jw@{uFtAh-TN2d}$Z%wqlmwFqTY(ZAlY3E#NAV$_>EXiG z!p>=zPPyFgZ2CT@+0=9Myd!fyr)Ners3)1N3eVWQAewJi+5XS7W?tSX@*^bFwZybs z|IA0<6&_3G8eR;_e#0E~-?Zh{ghOU(N-Ro~^x`K3UE#U+{`c$G*|*<+zb^m&eSX@q z2M0nXW;vENn1@^q68m1zp<%E|S;2m;|K<t1R@%S$FL-O=gSWBfp}oN~I%G6Ves;8W zG^{#g8|7mh{n5zIuiE<25q?LhMuX40bWR85Pfv~2HlBTYQ%ks`__F_h^Y`D$o4!7N z{~GVetjKIl*1H=`T@BRYr*kcP(U$k1aL4RL#<MyZDm0I{m@+F|xf2?-WZkaTr`+BL zls-x+g{JMho9C^l@wy^)(iF9KdMB@!6%_|x5Ox>XcS>Nl#w6ZnrE5*sDc|0<^8MCp zsXKK}JDpK{ZWz2lC+~>B&DTfL#f4_rmg~PZdZF?;MX0F5>+h1&dRl^o9L&>&-|bq? z`NyNAYrnDFON~n(=V!ft60%7?c3Nx4x4#y=Y{7{Z-)km+<z=|@GBZ}l-cSDOErvWn z=D?T9J}*Q$?4@t_T(LU8Fp&Sll{t+^PXzKZ_C7umGC4xtW)4Ge!oB6+V{NyHH}6QF z67l6V=j6&4LSDaKojEJhD1V8;{;=gtHtF+Q8Z}!?jx`o_uy3|6nsL=GD{THF(fM_y zYNs{x3@jQ~F<$Xq=oKR-xJ%#Ox%k<=17GGS32?hPPd?V!$o_hExCz6%W0L|tSV}40 z<`6R|S5`A>Xp%^I%yaO}v3LINcmDRx{c~CHh5V|7d0AP@RA+R%s`=L|vzqG31+MG0 z)rl2LR&zN#@nDZ8(;|k`o0s4Enkd!%!ja*ua^@`Kp8v;>w{*0pKYAEuR9-#v!gT&{ zh2tkWxs>KsKiD^?m*Hk(zJEx)=EEsf4Z5sPx?@87oWIp7H>Gk$)!Uefxt|HX*lTp; zjJS)Z2HQ$$<JDI0eM7hB?#|Eu{kvBD)k5|+4N3dfz23DgH8Lb8lBHqJgq6$Q=;o}Q z5T{da?rv-z(6rE{Jiz3G^Q_L^*V4*sUT<BQyIU{Yz*k`6?41?@0!rOK6?3h>m37Q` z_clP>Z54N1=c6O*Ukm+Q>boRKmxXuXl%mM%)AhICe!FSiREcR@4K{1KR9xF6;<7Jh zdQ=CeKyro8Nn6IZHys|<8=3H)&-OWS_Q+MI!=0?&3ne(VU)%C_s{YGs6U=gMDKYs? zljvA?#4px4+`Vshu$qEV(v{}o^lMSwk9X*K%X~4kma>#93=k4ho-?g1*mQju=fnwz zWCfR+y_x^<KwrZJiybknvWp}7ve+3E-0MnWHTMXu(^|)HdXvG`Lo6Q8GUj!v`OE)M zKm6Y2Zqavv0$WM8wpEpjW<FUg7iU%TsM3NVYT3IvHT-9MZ`Xv_?$|nsb>V~NEr}Ap zrd(taD*1iP!2NmVyt6Cn=SV9j<)3-9{MyNx4>q$H)}(!u^t8{L)8BHWalr!iuMN-V z1uF_(U)7c8`N~OQLBbjbj+%>?qn%zThF@$yDW+We=B<F?x;M3xmN*wLS$MkFQtFt8 zl|cMI#a!n3%kS)6>g?hm>GUP>4wC}|n~6zL2@|tZkz2u4w-Ao2y$n$*^2}Bt#R_Z% zdWM@lSgnfIFW$KP&E!4y&-H#3cRJ1IcC`O%`?3G1L-LFVjqLnuIF`J%GPvEB_TWHw zqx`*?lSNlL`_9BD^;+~j=;N|(S2w8UzhJK?<i4LtxcFO(rEOoTeJy9*v%SfB$<rVA z^M3t#Vfm5G^-qm2L`G-7fB#;|=-3Q@wyQt)J``BD^Z21P30AwhrrkU0_QgMYt!!@b zj&IWDvz;}cK7HD{QYcJMbmlvEW8?Om*6xGHcRyV4!*6E2<!g71cX2Zw8C|<_OYwdF z_s14zHYpxhz%KCi(zY^<AGdGcE_=hKckPXXlGfKn5857Zu<7Nk^3;mB7UacwFG5q~ z;jNCoymc?qd;+*1K0S0Mew}z4+bNERUOXIWtQU80@;g}6CpmALf~%myw|A0fS57(o zw5emA?i~J$PZKn6N*wH%-sR0BB<fNo82o}sfyLd4&8f7QJ=FUXo5K!MkJ`9$+24M1 zxuw#dF5&Vkbk{U(_fwkq!urVH&x@_kes-T+Qp9ZaP0;S!7sEqeGtI0e+#FSA?4A>p zac0e<a=Tk6ca~Q?J*iOgN_<&qLf!nE@0M&i{g>ykwIb*9zoN?)F0FUSe{$~X278g8 z(ywOPw%D+5@oTLSF>so)+|d8shiO$@KGo50-bF0iC@?qUsYb=Zrek~R0;jRmM{xA+ z3^{av#RTaBo1FohT0`HzJ|$u@cai;jbM-#XKkfb{=T<yBa>2N8(R-=gpV;o)<=}Kb z_C7g0{hJ|U*0rNG7EZcZaa+oF${c!>{GMBpJ+FcF#G$kD;x~=OUIr#No>x3sFOu?o z;nm+a14`5+YNEc)^K$!mW!0?2H2&Lj-gYqDNZu!K=FHJv2`)wU$(<X@4+=8B5l~@L zc{C?JI{&~$Wxuk2CB5H^MD|p!7Wcd0fBRv7<gw4I%G!L5g@omoP0q=wa<nvX{=C-2 zDb&<0`d!`LIAggp=i9$}TAz~rZ^0y)vMY(7@rJ|kAc_BXuG*~2zyA8`rhBt0QWhs# zy14KjOL+D2^6d3);o37^YTReu-R~ms&brz8Y2E(&|3AvrZ<`{s`lwaa?QPd?z5e^R z?#;dFb6CBf{Ajz_+j`e_(rq!8a<f3aioLPdwl*DKBDnmjn*Qma)z_o0FWuqpx2^br z?45%tk=fY`)EajwIX#>3;bK6X%Hq>Li>|H~73@FjcE~yL(YvzuPDVywueEs3lQ#<t zk+c7Mr99bgS<UNRn~pxUvbS0LmOF06Z~f!RXQpV~=SsIqE@{75b?#vA-JdMM2bp<f ztHmEIDf!~eaBs)1-uq@;PZH+a$;|Ru_@w9k@@r3HcG^aqKJ74X-eNx!bE~`WIyS#s zxSDO=gO~qGmegsTZ`Qo`?abrWEtb|yzYI<qUa(|d5^VmwLng_DK_h0~@@1BRbMt@M z<QdP8sXW~0F*)RR?UC!Q!5-gqtj<>Z%o5Rc3QWF#!!pIvN{wxU=Vzm}Y0sOce_uYi zyV}n3@l6BcZ<=5BB=0-k{_bMY_np6Lml&MA%Jj_g{f^ZMF(s$2Or7yO*1eN+PSAnQ zX&pOQmP|ES{-Zd#;lIzCpYorU*^BMGAKo(UE?)tYi}Gfta~-~|I^T;sTr6b_#9dU@ z_%WRE=s420;>ykNBeJ_oc2u%Dl{c;H=5^Fnn!)?lxJ=s7<=Kv($LB2BDL?-_-<&6# z{U^Nm*~yc!r13bPn%RLfk|pod+AWNowc5}7w{E-ZDrwN<>~coddnM=7TibRV;%Dq; z7IH7$xR-NL+UkXALejIMrf;3Xy27H!#lK^PWJOCylH-x6Nsjw;rpMmec)IM(+O1Qk zaja5JV%XsR*5OL0;er)gy}0FE4zG)-uCBhk`0uaR-)r~B>rD^x5@9y3uB=>n{r&4* zdG5FS_fBy-eJd*YNwu|0s6&$YUW?3ES3GN@vsb>p<i0BPe))z4Cv~QuUMjXK;>;P} z+l?_BjCN*Qf2*Aw^?Fm-^}A0tT${wfe9Ys-f<-$QKVrHud3PYESV{fPb>0i(>;E4A z{ntJA#Uasy`qQ8O{kwPTwl&xP+>|ut77&=IH+{O>%(gSIwE#gWyX9{e?%6ZN?otW= zqfIlt4j3rw9GRINJ86g5jgz(an=KhyT0*=Yw8wsFIIQ>N^d<%Nz%vJDcLnyp<PJ-p zu~j*Ez3@H>!Pl+dYsD?k*xcFoENMYu!S0<}JKQFpTq-8WSdiPkE%`y?%)%dMJ0%zJ zMKyivj`}|JyOm=L!<QMk+y_o5|4}Tn|2f}jE=R(HkPBx|S#ZgFRqM@Ld|1KdiU*%d z-^%F2Jr?dR4r#CMc}aVw-E2GdOyrzHAaC|rgSGY(%<dXL%?en5SLR?RBWH}Vo5W|i z7s*v8BLsABy-{##J*yCu-}C9YddEZ4-BQ9%3lAJtI%>u1aA)t%Sy9@JPmgfDTl==7 zB{6RHmg)X~wi!-HiJEA0$b#|lw3?2WPTjj_dcP0kyvP{5)JCNKonfZox;g3Ug2lYS zy|brB3CS?=PGsn;RCHQ0NoLxP7X~w!#jdD1@aXlWJvpHm>X4*!#7A4vdV}@T@Xxm% zPfah>vG`cBt$2FvJn>mB{_{-_q;0*Zlla5piL}au`MnI?N1HC4J#aPj=-DeyiCr8V zTzv~(ylKv~H7K_~Shdi2(pm1q7t4;SKe#-Fx%l^=)xO^k{+zzpHdc7ko5uQE&uwc` z>oZEzPu_g7s4w={iH@|+D-t!wYc$L5a_*BprDsz(<%;TE=YQhw*EN(`Ha`zgU#=?f zuRW+?tC6YJnpJs6#3oMh4RtMAV|-p?MrBg>vF``oNqyda?MiKZ^>4vHX9{@x!k5*p z-+C>#+WuX1Y(+x*fBD?^*WMoM&3So@_k_yzNpDu&eg5bF{j2NKd-jFwOo_gvG?UZi zNF@gYXWWuc_iT5~i`lkCPer(~W5(y%OMfZ#baa+Gt?3ND-7ckkyo2plPKdW=;{&Nz zmG78TOS$*@H1EFtD8a*__y1M-()rJBRNN`vWuVSsuUnQ7Ic-(7=F_5|b#eC}eO+(6 zW#N=0j?P)H7yOst^LaE;c}9o969wDaZ43WTRPw7nU_5u%*>$#o|4wM}_#Cv@)0UgP z>+rU$s{9$7-L9FxfB)datl6tJeg0v{*ZFM9UE@1Uo2B!=rETG!aQ3(5JRy%CHy{3T zu;wcK_hR11f@zme<jOzln_*Jc7N)Z4V21RfX+3-YC>-h$c>eJ{|2Hm&9Y@plpYmDK zQk|mr=f$-<_xD*|$~|Fr{7;%)gd5X=i?$WYe%&0q7>`HrSWi3Jx6XUQ!ixvKIL`e( z<-6tVNsogbiCJdI+LrmxSoHhJ$3lLNZxz|9Zz7eQT|~}^ygqe%<L5bdCmc5B{d;QZ z)y6pi4Sbaf#+y?n>KtiE@=Z8VpuYCIeCeP6=3i#oiy!rPJMCma|JL&*r_+*^nN<w3 z8JDU&Y3oaIJCY}6aQWHMFV+Qu54sbR!}IO`rSR|W5}!Q5l0QGn!d~Li*|z+%@<RI) zR%LxQKbp+)@Nt_&*ftHDDJol@eGEBLp~w|?`eUH!<_T%rD#O2*UX2PiV(9wwB*3+8 z18Wb@sw_ihm$s}|3rtN~&UvUjxZ?Ek%2}SU?|ZKWHT}<A;@I8Zs3V`C=91$1_Q@qF zBjLR<3=3vx{a7c;yU;8le%060)Ae0S_Qq|0yUU}i_V2EB+2<G(T-R^kdu>+B^(n>E zJ{Qee*!|Wo;A_$DqZ^f!EYl-fCN{0TUmM$a(!h94DgW)04UN6#eVa@!Dq9J&FP?An z<Ph({Dl7fpeYdy0{jK{v)WyP+DZD*t7kgl1@Si!iu0B)pnDed3xolwz3*XjP>v(f@ zE<e|s<&*fV?|1*iO}p6lJ0Cl5vqP)*TH5A=dAAG|{5Ke~GDz?ER`;>|!tZZ;LpMD< zEIl=WXZynjk?;K5l*=AiD8+66o4V`7;VZQ^%B$?`&YzL-@ZX$e*Amrt`HK(Ba+&$o zE(`qU@Yttl2TBMDmf9-vE|4m2xchseZ=BR2YpZoX9S&I5rgrHqtek34BIA3pt%v91 znxm%!+CIv>l{{zZv?H_YDbE87sTq?)SCpC?hvZ6UbV&rR-gP}|vrS6d>>01t7|MNT zJDGbj>+IJRTdys;y2|ayL7Ng;*6LY?$E$?yB&T0#t&3eEeEtxFtZ*PV^QMglkG?40 zxUzM&WxGWq2Wwy0rT`}q7bl_j@88{x{ulA&P2STswtw^e%HGaeFYgsw7vifT<zsBl z^n63i0%fZSiWU=^B`3_b652V5*;-j5y5Qi(`ZtT81x9yR-gKVy{(q!l{k-$Xq?rq9 zo_e&_u2}zhi*R#UmBHQH_S=IOyWjlUP}Dm~?X=XJ#~brx=AYXbeDHwbRt}XCn+@Wp z4|P;uT^PWh*n0KVQW5P?#+jNTKk`Di9xk0=pq0I-MJAHfv-0^t1vf)yIlEtq-xytj z$~z^eKRKbkde`>m2^SAYnRsWPtJMCzuX%TTzWncf@iUDlcT9<WdpE?`;%d}P1@B9n zE$7`e=!i)R>s~ZF>gLum-J2I2w{W~(Fn@)Ziod3!V{*-p!cT4<(fi*zu{T*PDD3Xf zFx?l%%;Fh&_x0DP?7utWrl%&RO<J?mMI&zQDp3~|#{f-RgHncwRm`)Rtr!a3idI)^ zswzlDc67=H@Sd31pu)qS)>nPE{phO;=XO^csyir(Jz`6&`m!!jeXYsIT}NGR+fG?= zB9?*kgvSNfgz^oOzP<ar;S?)}R^R)1yU(iJQsqB$X3^ut-oe}&_pWg>E8X%+v$yE& z*tI9F`c{9hz`mO^&7N5}pOKizqkJUq&3WtQ?cFLLU+6B{DBT~l!;~Q;+kX1Td+iB* zZ5bAurZELQZE0TrXma1NSaoqW<`)YcGS7ZDk^dyPUL<sLeY6_`lgXzCUsg0W?#^5o zAvlq9(&9EJ^PJ+`sN*)jKc=s}uzH_v%<Ix+!ac_htugEGwKj=g@IC9f^HNKT-?gcd z;z=(>E?fT9Q_B^WY1gPx_mP}ALue91x=r4$z@nADhxRUf8n-R7-||34{lhoQ<<F@9 z-GAXZ=Q{5_MHz0_<b2*NDCRykb+=oET19cAg_Hzi>ycH?*|$>X&RY60Z$q8P{_s8F zb68K?Z^*OpaeO=Vb&cEMvp3g%_CE00AaMiN@24pa5ljB+_h*YFYHWP>NcP#@zh5@X zvNv|@SlHoKDwDMH_S+z@Kw}m@O_qtmjPK&A->lx=+{C<-gCUS_we+OfdWx2kx|uhX zx5(W|yu5mI$zK&o#*nbJ%0-G*7b<<kbBxVR8f4GJGG_gK9DT0x_O?02Nmja%F4si& z#pf%P7<FG$f4U+-VrP|-lkUsytw*m!g({j%Rf-Jij#qrI63TqUXvN1{lg$}=dTzW) zD4XCQ!km=yaEk29$B&~{&%Jl9g-65X+@@L6Yj2;qd8Z@fZr00V#nTo|EfYScWU0F; zTqA0KZB6X7r<ZT<e&W*-_WEg&^O4fCj!yi-SAIBbW4gTX@X|L+Ioy@GE>tx0WpVJW zx;i0hY5yP150ZK|k3`yR*1vPVb~nK(s@{~3ubO>vw9fhq2bvBixi~JGcut{9y)XG- zTd`cZeAGF`m_}KNj|;<I@8#XY>UtzSGpn(H!~Ynw)UE~h9-Earibp%W->YI4yG)>Q zwk_iWjf&47j@^F!KjUQSA%*WQht2rrKR97xz#7qCWgyu3@()8Udt5rp??&^SavjZ< zLuYTc?DyUENH?qW$|^@r3EuiSx{DXFOMDCX-}ikl=bAIttur|!cU-MDY53;Jmw9#5 zsV}dOD>}csXV0H|Nl$5`-rF@VHF|SPU$x0)<f%9*3MD9sB{)5Z`(R<j>~6D0y5h-2 z`F(a@>eZLbugtgCj6MH+&;Kn;Y$F8aX4!kbetGak?CPrtuePu5U8uMta`u+VyC-Tk zEw)@_sB*-*d7<W)B}c-OPgaMWh&NHO<My8){3QP0`@}al^YoHgtM<#z;V$rV5A&-y z`B>)u>2D6d=SckgvY{{~EtqeOs<FOz+;!9Z?LiSj<}79gg4OXl8yduo*2t~A(B>!Q z_~e?Ut$Mssx0_4Xf|;&1_r6x$-F~ZqZ<R+|N=u{qwJ39AZfT>2#QtSH6T?57e3#Z> zk_-rBXZ<du_sJzA)Ya&tXwNlM<wfQi2J5}gO<K`^F(^slWmZsuGc)UoGb=j<ZKhp) zdo=rCTAzzd;H3*wO7A54TWs<2-5z$9cT$SezPR-bt*)03J@eS3<873n_oCrhN>|#B z@EhBrye767DxR_2zjyD_Efy-pKX*)9yF+v3!Cg8NWsmhm2fD}2x~1vf<Q`$|_IBet z>rUp>2hZ-x9+6?nzIQ~bV0+rPh>ls;13x%P=0D+=zhasH;)c;JhL0CYq_Yo&gg#Bp zy|#1TUCD$Q)6ZY;IR0s$@T-H|*Jc~LC$RV0X{reniU<_lx%6urf75Bt$2w{(?(Rj0 z7=n0vB)0I_GxtVay>aK|yLq?7L_V0P$o!XCqVK|@W>?aFnB7cd?V~uWVxfZv*j}Bv zlir?mdx}-iZkgSyS2J2QF-kB?wFO0A+}hNbJ%LNEZ+hh$k)&G_wT)!+dKaYW)_uz` zVdQOJxK!QT^|@nDY@f^Fpi9OEkA8EsKWxloYOc8db1P5WhXxm+NgFr}b_y;sFy3gv z9ia5+hZ2KB9f#@T;Iz2+bEY3>*ZIL?)vNa=RsH+?sOx`SIhL<^ex5z%#H!ul#cQ`^ zyA~U9Z_#R&mhsZeXR&!N<?U3mtNfkKmO1}c1>F4@Ctr5df6apDMn4zd{~%h?dMh;X z$}0Eca>@r|_7<Ic8)BL+lpyh9=krfx-+O=M-#&D8ORcz|<y^n_@83u3u6lLOF=XXc zCY!LUKC%rRipfFSrP!x!dun89VJ*G<$yxD69nM3SHt2YJy)4_ES?c1`y~VHFBlIA* z%d}})!mJ*PZ=UN&w`DRsKEtr@+lBZQyRvnkYz;HN@xAu{ocmv8Ua*ITdT1^^b90MY z+$5DmMh9jg1($?%_cj?>xbQB^OFPn-aC}OT7w4|K8!~#utc4c!tL-axVwxkXol@>R zEvxQ!msBV>FYC%(mb0AJzRF-&!L{_pwyXKm`wcd9pLl-$>D#ww?{+VeirF8(uYUKQ zSik*sziRAsm6~|sOjXNMlEhqI7w`X}V!A%veUX4*#_r&L0Wl?}m&$@U&$H?u6iR40 zUlvw<ez3y4{(<|y_}%w;nmo&6s?F<6(+@r2p2HvimT?LH565?tKmQ0!mXp*xk{ltM zY#ch*wX8TIqvu-s7vnE{4bp;2CXJWn8D^!Iy9mzpusih3_j$pbW0z+>j41s7p;F`8 z`sEK)7Bhc1A)lVMIjXwoeW8vCGn=_MqebAJ9g0sv4a~z$x_RDm@jiREF5&9JBUQ^i zn`bOP`}Clx?9H|OJ96LDsFvC?eOOfEwuj~59>@0@^DDY{iW(Fw`Z4E(%)^_P7rbG3 z7rmU<qV&l#m4uhaGL(}1&hZ>^;W@!^??|d)Snu{r2Ts1fGWD{==Y1PD&VTdd-|0nD z<@-#oU#^t-@-ZQ2=_;*NfolWb@|?UQ`przpQ0B<`%xM}d7oTKZ@Jctm74tzrE+p&j zYv+F-gze1>>>J(f^Y1=q@m5+DRj{cs!2FZXz6XaDEVgm{-WMKx&Zw;Pvq@$h>%7=G z{Cy`j7|-`x{(0ZjARlgq6+ib~KkLo=MQYb<W8-wQ<GI?wuck6v+?YG{f;5M{;qtm| zNiJ5FQVX`)=(-jtGL?iMH_#LgT(jPPdGOk++t#YSlVjCCy6d8BNa(>DbJc>awfC<U z$*_ce_w_I}Ha6&7oc=z;JWE*i%amz-T59G7-!0ljYj~nNZd`3z7<wx9-Gf4ZuKgkl zq;je!@0pgx5#v>;y*)Nm`p~no-B;I&@s_MN*c`S$_i5Q}`*lx?cE+p^SGu=t*Zb5+ zG4nN7^`=K_Mz1v$+?{<Px@qM#jnf@IGM#CmuMcn7`}4(H4~~bLE2l6lzq4g`wY2f$ zyE5~hz1SVuC%AL>=A_NN!e`t9=A1p>n)p^vYMDt-L+o{S|A%bOF|udY_XRW0xBIzq zWBbQo-qjah1j^|>s8gA_ec9r_W$nA){aE>Cfz#v7*Ut3)dcL^-jmPHpN`6Kq$J=+A z<Ptocy3X1PPFZWWhvQ0_Os$THrH`WNtb1xq>fim8`q-Dw3T^lLIB#2x%dGX+*`qJ! z=7=3T-q5k_?KQ)v<tuJ%IBwb{!6;P1X6U=j`At4w&*C?V+Q(-9yK<Z9ytKmd{}NZs zcBidd=xO(*;c!sT@ul`0IycyACSLgWz9{B@Rr<GhkHCt%4<G(q`}XRUJ*rd1OVUGm zZY0-F?%MlR(d5du#ZC+fCzY2^OnR5{;M|c~^Jl_W(`x2f>7O_#yZF}D%Z|6@Gu9e1 zer?N<5i=0HaC~B;;k=itT;G4#dt-gT)?4?>dUzF>I1=A7{ff%gU3HaX=46#=4egw5 zJ!csAPI=UDWYVWgH#hOh_4o8Hsam5edEn~yELDZMuQ%=4JNJ9->f85%L{{yx=5SzL z!N$-zL1_7wmXftoHieg7pPjjR%Fg0bE$deGgq5#;cJAs~mOpcZQxq1h&J($(=1^`w zciIAnOwHTdnj2>?Z?RnO=vmf&L@0Qlz#-QZ|MPBwMGisC_g9DQ_Ha5h+fpUbrPg}s zqOi06lNv4b73K(dE_O{z^K@x=!tgBY?41L$8=4l+)|6Vov1x;Xa_5rPNjrXr^++;D zPYlvxy|ed9*0DMEvFoq*=gS|RqB+~sYt#GR^7S>mm(tdLmH+>{KlgUWi|O%omG%Ea zR{#6>_1D|m+wa%?cXIh1mn<2v>Z^926367}N&o*Ge}7~`aa{4Qul9DHeyermCiWj% z7j<Sw<66<Ai(VZ$exgb;Y(9G*R^ReGXd!!{UEXxXe~+_OF|XyW*Dp-v5q!7&-I`ac zL<5#z>kU5j@cOch_cE&)7b#5&Ghgds_?XM8g{Qo7x!Sg-i&y5gaXi~-#@y|A#^Db` z(vf2;Zyqu%%2%IdRq@$%NnCW4wpf-$Xt8;ki-Ixp<|yZf^>0pePCRk;s`Vc;ixgvV z>swRawPqae*3x=Ypz?fMt%ahI^Zst-9hJO0`6jT%Zw-%UUtl&-!GZ7M6wPDL#qJ() zeC%Lc&|SfDm1$e^QALjizYDL=9$@mhoS$1^vUL^XsdOgek|Te^j+t$VG-(k`y?%G@ zB88d9mMPSnv|<ps_@da`>6v1D=-uDT*FD|MD6r+ob&K*|NyZzotC_VXC^JuF=2V;! z`L!$W)dI2kaVJ!KCTT1X(GZG`$T|36g}zV5XFi=YD;}Boy~pJ;E1aIK%M5a~6NpHg za_jRm?`dD}<oSfkYERJBS^H30WpBlUC>F6<k)_t_Vo&USAUTV<Ao=-(a~gBEon}m! zbK6LE)`|~bzjpSUpSL^ewS$}G8MpFf<4rFd*9nC$j}-hMEcu!zBFiOK?H%)?z~9Ul z{I7hu5WGfY=WfS0XA*v_TQqA~$|}p}xslU8|BUh4d$ppWTsgh(t?jg+6Pk;n1Oh{f z&h<SwD|e}G<-?U+dw(1_&Btjin7ZX#^Rf3=cW=Kn&!VVfpB8h2mELKg;7yLJWGz-7 zo+mb2TK`?$ZSD(49cDIM*cQvP@Xgm;&+WIPb-(?4Ij1=9XFrSO^COJ&T)4djxHk2> zmRxnd%g~chd&Y^wBQGrUw4AmcPjIr~-S2;Yr|!O+H)oTy(fixm{{DP!?y@h&Tl4Am z`r4f_dhhD?PW^w~(<N_q-QTjmzy5}Kt-S5$Qho7rrMJ?Vn5?T&cc*f+bk4jUlof0D zx2i9{>xqt!-{&g_59~bnY_^BH#@FZDb}p!|3(UPGoU3+c$}~&$+HI51S*@`Ue-_hv zL;q`vyPV`{pO<weR!6>DbjBA*?W*8+k-WxiY+O|1VA^&s(PdlTPPKD=7xY@qYjT}8 zWu7%y`!vDNNJ@EHrMA7&Be^@<&)quJ>Rc~)NKkk39AEhe6_*sldInQxW97cgu<D}> zSI;h=vbjs(qZU_!(~`zp8CMJi9&v2)`~G-7GkZpP;_^`5_k7tV-3!fm9WMlQH?SYN zEO0Tm<Zxj2^J6bQUaec>(0{9gU9Mc?jCO;9#G+YE&ITd^EA?$1qf0_qbQ%6Gu|Lc_ zkLyW!>AUpDr+#w(E7|xp;BDV!ow@gJE!ZFOoNJX4<HW1{bKGCm*N5y@mR=RTGgD;- zvq{etkFGcWbv!1s@l+{>6l_U8D0x!MqM`JxYlA_Q+q|+po9&9v*+}~zl2QB?^7e&d zb*e=BOHJ;=H{a5X9@^w(O<KBp1HYW{r74#->1@<1dXlf>ay{w_kH8EWv$XYZXZ3JQ z%7_&D5_6gH=a!%es!I!Ax>mdtlo9?^u9&3cX4J27pYO4FXGDXTnQWoisvSCw{<GuT zD*|Ifv$+k*!o$Nu7lep>*|b>PA=>O-cU?_P_`>bmx5wM-)&GC``S$JTiW_(TZh4X# z>Gyo<&4Xv}M$A}xH*{mB_eq-~^O&{a9El}&zW@4Ixbtq_eEa!#3vX{b{WNIHtV7$b zzTP?|-!-(e;{Nyi`}>#~J};f}>GyQ|{dIr$z5o5apJ|3&{lA*qua2kw-jQ>EfBpUZ zXs?&sUjN*+-ctDD@wZLSTsEXcPTQjA?R9cu^6le3e3FKnm)v-jJ-Ken`5PThd!7F? z?ECY^)>+Bvy1B^D!tFBCx83|?QN-UT<<>5=u-A5H?Np6+cZEKA;U5mHU;W?oynnf5 z*Wt@=uf;z8yI#KUS<tCMy`!5n!~!`i=I*caxN-2|xx&PRD}jkFZ@qnzcKy9E>-WTK z%dBp%R<D=aZV-3ifszH=#1(=*%2Pb~Z%6I-QP{xTcH+*#15TF9#FkfH<ycm}f>-(> zSJ{^ZnoH9p`eU4rwR?OlwBSj)vZ5g4vcqm+U)eLfx*~QR50)7G<ZGOFgm>|ENx?N0 z^2|>dq^3;1D0BSPcJ@dX=`$Mzjbs&=k`J{$>*G6O$eHj_!TqSN)WsPx7yG)Ne95=G zcw>uB`O)?LVej{F|8L*ydvHsW^(@0x!LFMxi1g0Ql8`&A<94!5;c-WM<bLa?$&HK+ zp>wnuWzNlGWK}S6HZJc~t1WRWKHOb*q?qMV<q@^}@{-AKU-Fl1oc>bre01Z-{8|2% z2Kx-N+$9d%&JsJPKRL7g^(N6+sZ~iG&p{iU^|`j*+V_6lvMAXp5@HXymc5E9Q&pWb zMS7Bn+?N$wS9LAZk3Da2_xn*nj+m=nrKZZ4SsXV#y5hDes&@UVRlSQ(yF4g#>fg1_ zr9)K5?ibU>SJPz#vfj_Uc;xEZ3^r32g@QY)mQBgJTdJ@0>08~eKR^F&(Q`T0bn>R6 z;Hv`HmCe_8t-Kaxua}jkBJ=Rm?|uJ&e*JxYef<AFzijKC=B~fJ?P%S`DWARuv6*k0 z@`!EK_Savdy6X1cv9q&Vw>#MCz1J$XJt32C^KCtHBs+ZZE+(bAnwSm;A!Y`3$3;`7 zKi#s*eCqydhC#~BhIi~cp4alfXP(=7xwXt`f(@JanZMJ1FZ?v$dh^C}TN*4%C%)b> zzjwD_(W@ERU7m+8sP6Mgket4M-FpKQ6YEt{N<sxk<bB${TWqQP6EE-m_rfDB7j7q) zhrjlA3-ULrxxJI&KWp${4)eNq-;6k4XtFZ7vFXbsR``BA*zqpz&jg(_{=81rXCK!p zE3qr9w>vR%mAMD&hOUhYJ#Z^eWozVi3Bd!8+QhfL{aKk)QMGULeb>nOLAPcL+`rRV zll5_N!_l=1l|SCn=f3;=zjM#&872ygq<#NZ=1h3x&b8h#SiLn?<iMddUGEweFwb)6 zd)M;rfJd8OL)Y5%qAJRds%o<5Ztm*4^<FmYlS0~_{2v0db{%Gm-}AZRUsuCNO@4k( z0f7^(9TInszHd`s<rQ;wO@*YIS-Gsvm3uc|92DtaSvA45^wN_%#<Fd*H^r-~&yqi+ zGp)7L`%0?azd4z=*LVH+U~|Uqns{Hw@|72V%-EJbNuX~Fdrd-<OzPEAjYEPP`MsUI z<Zp1Nq<OxYcedw2^F_&k(C=@z-7hnCSf+aV>$dB=q=SUmlT_G0D`={yMP0vV$u#3y zZoj~Ki7&?=u3ENW!9ueQ4)Tf;ZY`pMT#jevh<NMV*1lmQFz=B!!<h?b7aVg|J)^Wq zGQ?E-)dHs{GY;Hju$Vi;rFY%!b$lKBV)L)R4qaRK>&rL!`rl7KKmT4DJ8i0eHXnCI zfs69f()-`v-?!77emZ}DefZVV*z?af7p%*he){R_>+Apj-T%L><MhiZpQ}I@%f;T^ zax1Lni14wJcV)Y4Yic^4+~%7;`|h{*Q|gMn=G)aq-M4$3zh9VBmBFoi%~dbcv@@>{ zd1w}%>s-0AamJI9C>4Drr$Y=OyeG1btXrj3(s%vhujpnYmck8htsf+a+bk7!;Ww|^ z{h&cXm^bE!hE`hGYQf6G;@>?!X`JNfd35I785bstNpBZi6ybmBcv^h!<Iwaoq2`k> zHt3)C`dis@Z~650v`c~lKO}4tZhx_7`E<AVkO1eIEB)zvGL14n{9v3gr|*_jTGYIG z@oWvg<tF;?#CA5MB_3HBS9c;IhgnOW>+HTHBXj1pp;xy=g<fR}yM2Dy)iv9e$S>OV z(!f0YfWgt-ySH_AS}UAm|0Ov6hMl;X;K~iwe`_nu+?kw}UM7ESuzpbDX?t(MqN}r; z3(mB!wzddkvGX|=yvf}lW=}8wu7ARkvZ4z6B3B=Kv+AhlN;PJOq6HJK9I53|-|T4r z@crhue?#Z)k}mq@CHcST*7KY7OAj~a)#n;ro@a2+T1$9|fzU!Wp4-P1R9#}qE4_<v zD$7~#*}X}mDldGq-@+DWrpMnc<eQJJm{Ywmv8KXug{?uQ^S#^s3oEyMcyOcK+#!8o zm{F!nv25wayFreJqw?|^*fJ#k_{s98bO(e78}m<b-oAiMYdbGb@}WqtmD2B7SPryU z>bobu^|}}yJp013DMA-Foa!?x5$oILy?W=)TMehm<EO0t##(>i?!*IoD*gI;42-jb z@6G6_C|)bT$<_U2(Xn|G4nJqk%V68;u(pgj_{RF`M7N?F+um-A&D(x@`}*gnpMLxP z`s@4uA78Kkp{c4;nzY9CY?ja3_19ld*RTKc@woi|$Myf?vSY7*EwN%&3^v-_-{1fL zef>Y@(DTc;Uk07_AG`g~9EJq_w}<p5DMdaix~X@av8wkEY%M_SiTvw9WyZJv|9Sj+ z*PKaD{O8*}-Lhx@e)hjXN>}sGDs6f)N9ehZ_oOL5wmkb>8GG%|0TYfF1u3t4#8<yw zGKXR9cGHVD{R5h;T|Wl=w+l!-p0M+I?%mX$JFb)bF1eS7AK&)#;IwYJ|E2+nlUqfO z3Di|}{IRT9^4~f6&_&xz{TtqHd1zpy?9hEG>uImRF5QjK<CDZUe^uBZW>_rJP`KjQ z{!WEs?Q<`yY|k|6Ezn?Uc(=Q3W!uc7XC!k@FeFTQnHc**MO3L|(Tn^oIi_CAu0G0I zXZp@O&D!PL!d1J4T<kQ0k8F+3oni7`S-$z7baltSM~TIoJF4Hw?z!(cS$(D3cfPHs z8ei~S5l(-uVk4bBtCQo_o%tWP&9)3MDZUfBxSUt1!IAlPS$&5?weu~Hor}0Fw^nGn zZ@I?2kl8|#>(`9358P&6%=+6W-uux$U+3G4b(%F3FMeCR_MpinmpsF=zfDc+j^`>B z-J8LXP%8KNm}bA0>|KUibF~*#rygtCSpICTdmiuX>J1O%rW`Lg5qd#Bd`+|I-yhvG z&z0tV@SXR4X8G>Pk$p1Z^Hlivef_~4`qlGr?esa4%3BXE>dmU_Xuf)9@2h>!S{E$M z>F%hR9;+>=deViVWBctmS%Jox#owaVSPSg9_G*SpijLnioo5pJguAn?EtIs|-p!QC z`FJyDzDoM5O?o@H6^)q7xsLHEC^HBP=pNAvlJq^frYW*z)2_E~S-x0&yv@Do{=Rs< z?XSzUceSg2WO;JrRmJWYJG*ti_wD{&w)gMr`2F=iKRuP-|9@xhY!9)Cd!x>IpW8WQ zQ~3V4?XS<iIRE<XHs(h!OUl02-hXU0v-t6ZT^m0{eP49-V5i5KgxjaS?piwKp8a0k z?0t9h7L-OFIx-{Znd;i*mp{FHyJcOsfl;;Jq#&dHNBbT{*cqm$DcxZVXrFmiV&P-g zxSkk}my&-ZtksL#y<!b6J)4<mKjYwqk4vwWR(|O<6rT8_rEXqch4XfqSAUd+f}e<f zx)%C<W6tckY<JzS8*M#adpc8Q`kT#v+oN6g^{+ML;hI|hf~_gpM|e$p@J-o*>;&68 z1zfLJmY!kGUR$%~?}EO~P10sYGj<ht1Qkj>mw8aS)a>kK0rM$Aul8lGEY!_bUy{kZ zGm^FcMub6k#dR~yshl6L-c}9Y9<|y{{^Xg5KWEP2EOgD7u3q6#v|F3uw~2$D(b_8W zJIR%^=TC}r+_OjC!@22rt@Y~m$^2XXzexyV<XFH|SYmTy@7oKBC5Dj~E$%fxd}Q(C z;$~aE_Y?2@U^YD6Z1LHB&7}4(yXPNV{65R!y8Ew)4nZS1k<Oi)rM%9S#CtDd<l6P; zqm6$>z~x7Jf9++Hj5AB_@6IY$m)y0!lK&ysasA9+7jD}IJV{S@XPl6Fr|_Lv>E@nQ z(yoQO!tTFZ6Q$wAe?m<1U^sIWKf~!wUv6v?nf@sE_MxH!XAE`szdOn!!5JJSzWx=X zl8~Uglwd~k51ap7p4T)K4QH!9JP~GQ+ZVMk+1{&x<%I11MIKwjN;8sq93I`&_i4PA zkj5hIFSR%?;Y_2@>IaNYCdS&^c|YuWZ!Y%h%gf8_Z>NWv`YydO|9;;7zu(rs{?1>1 z=lkF9_v`<EdU|@h_s<=%k8j@2OO2fN{rr9tjf{<4OJCLP&ehaqxV`PVLy@pxW=oN@ zQL0^|VsT>HqJsDz``%xFU1l}E=-iWKr{2GRe!0?9M^km;pVPl@>+i3#TCcsaF<apC zM3<JJq|B~76{VDOGZ+_4@zXHdfBx1tyN%NY866W(adzr&o5|t$M8h_1Bj4>ahr`tB z#J^tSW;<)TH05|>UvX4e%!l9N%h`p0t@-xqkm&3wbAk`EAD0m36S0wXTxDT4{Z1}h zZM;e64GGq$hC3`9<gNs6u5kYSIrZ^#^UVyo{kA6y6J=NF87JjRFPO%2;_mI1&8vQ{ zJK-!7lP1WPnyf9Ox^jn9P;rQRdcXVe8zr|)Q*;=PoK?MgPOOzfN;@ih?N!}F6J!de z-IbE-PoJ&x$YaIEy!o~*n*_rz=1-HIc<a%Bfdey&?+D4Qi+}9P<NWK*oOhG2mYsgV zQ^lP1aiwpFitoxkh7L!i5~uu{b1Iv+CoBot<Kp@+x^S7lZ(RD8JCbwfci;C`+|qO9 zU|l@NLxZa8=~sVbUj4wK?e4&NU@b$$?REY93gwe8wlOq)`Vgz^@@2zTxwT7d*F^LO zHrul~?B1=p_ss{PZ+2EjB9godT|`?7>Ps6-w*2~PU{LZ@XjgmAnSNd6CaDI-)&sW` z73$tJu(8ZDy0<R+X8GOFtwx<oL>{=9JD4x{W~Cl^&#qAEX8!Ht$J--yXWsKW<FPf& zskJBn^zFA(_Wk?$_xIOj8&#vG2~T{oC4cJ*(X}!X)4xd=mozg8E<NM&aO$z!Z^PE^ zkXoW}dGXArQ)C!sZu+n-clqU&rMsfeOqe<Sh<Dcw&v{oreEjqNsr6Iy>shNpS6{Dq zGNVNxg7=Q_q!q8?W?i~Bwe!cXwF$fC+}k(rzWx5cpUTts*Zuu*J-`0n`u{&~&#$lB z9lO1D{qH#Mjoyw&iZvfPdsKhSkGJ>Bf37-z;-~HT_w%<)7q5C%|L14#%*ku6HV6q{ zST;>{@BaD4=eB=+oNImcZ(1m)&z7K@Cok>h;81(|x>SAlB&N-2$1cz6_!hPAeUQ=9 zDG@C*Dn+M>EM`*wazZoss*cQ-Z3lW31r=s44p`i=J)>jeqf(~#JKx=yvx0%a_3<*9 zU7zN8^~_<JGwVU$gdMG?j(wXOutHYnNyAd6iAM_f-hY){I>k*_LS$t_?uW;AyCruf zIkMbUH!(TxXvX>b_6CWs77>e{Wl5_}Sm+vk<wncS<2?=mzfW>=oDiFyBhHwXmCX7* zdB&0sL-XK{tgGtgswHwAXV!K;ekEsU#=dyd{AW^^_gp);qftrG`0Z~~t(KivckLG2 z%=ND4SjPdE2@X^4bWCLUE_+7Ai<dcdbD3m8!{ft^t?&3kzt`SxzFuhV!^FP*EbGN+ zF(IY4YGDp5m3NL=aw&~7dS;2Gol{Z@YQB}_{P=E1&I7LwpGB{fXZN@=7)dd23hh(b zc+fU;%9MF$^B(G&rt?I2XE3zr2ntv%*m-rrQwD<sC#LPI1lCJ)83~lm?=oAzX|uv2 z=Foy*e+A#)*M6zKUv6?<im&{6ns;~Vy^R90XMgptdG}7wz9V_Rbf;a#ce&@QJoJ~Z zIPsEw#fIc8rh+dTHQT){ws9A1_n2|5`b*UkPxd*yD;j^qt%}NgH+8;rVyNuIv|=f) zi+A}KUkkPjdHngvna&B8f}73K-Yxw9=H$ycErn;FMZK!K9no^VlriFfWQU+d%f%-Q zO-kNvOKjWsnl2DLyxg#<L9jYE&f9QPnRVaHt2-{cY?g~pIddvX{KiZET1mCW-%<^$ z4Ho6z7PGo^B1mu|M}N22g)6h&GY_@2pP3aQv}k7S-)|rL>+2$~U;bJ1>u>!3KcAlV z*Z+Hc`uO+mRo9blhk0r4S#$UQ6+L;r4ey`sna5ZV8y>2!%9XUl>RRM<k=lZDmfY7j zUCq6?YjU-a)%@$Ks%}nAmv?a~3+j6Mz0Qoio_bcWS30P|MNRCO+5RU5Ugc}c_NcMP z@yT6j{`~FNyO))g(mVbe1V4WFBX-dZLl66X+_n$C#BoWzk7YUT@%Y_4`<2gE^2+h$ zhkan$T6^z9Be(s(r-u{LdXnVSls-F6R8F>C=96}DtK;$I$Lx=MsXKPI=gSVm3k$_+ zUYt4eh2!em`-Xh8w-p$&wpWS!XS_<D$8Y%cO^~T+#v}s;CzFz_-P<<uzOmt&?Q9Yn zy4rp-zn~%K{gY2Gu-|`ds`v5Tf4KnXoTAz9D(2mZoV%U#yUwZ#=h<ea8ka6_*mb(! z(C*`fl{atvHGb81Yci{@i}VYh_B-G66rS_hpRnjC-=`_f=CPzPsqWE}pR08??XFPx z!F}?D{$mNX^po9wr|)KJRrD{KWcR10?#lC~>uDFtzNhyo#vPi@cDNv6m-(XC2c<tX zzo}y=eOI^A`g&~i%g29h85(!FDV~xkVavQ3wQAJ{0Z)-Vw-Tg3mM}6HCjWTOajSDq zke80-^EsP4t_Yd=-!SX@=MbP_n55;J>_06?s5w@<DO&f0&lDFI4vE^^Tc%ZMZ)g8k zWj^Wigzz&w|DNC38u8(Y&go4p<_o42?Tpbe>aobXFe5Tz#d@c&+x6@Fsx*}*v1XOJ zg!_2japkT1|F~MSYWLgcpMQP)`}%3o?wGu^mLpSo=86PdlHw24ev<aPuDIBZY1!q@ zJ0D-qzn{F-;3VtBV`_J<#(q{hed<q{nz7S!F{Y*KLN)f*|2y($brfesgx93&GS)Sl zW3OHnFi^JAk(3hI;>xsJ*x_oFTBqgN>t`mMFU?6~j=g7jJ}0jF_U01l2loz{ZWL(O z+gP~dg{eX9AL%r?_Lnv~hBDS0%vM)z<FS*Oa`>=0|1u`y;`1I)cB^E!?37?H$lEu= z-0A9@)LC*L?3x>Q=D*$@!nfAN=1O7fVb9kWuUNl*f9XV#VR0z0Rk4rZourbRx2)Nl zuXVUc+$y}K^5~S8-x-OOFO}bQb!?ff5xR9s)K-><Wp5%MJyclKcl20c$8qnCFLSHR z`<46NU416AxNOlG$NbDffraaOD)!Y`F0h`Wd_yO`WA&dkd~-BqWEMDbDX~d1m>jn; z4HL4oP<VVXrYz%*@V@!aFEkfsR0qsB&>s@VQX-e>!QbDuU#mi2=G}J|vC6>b57;l9 zZ-3DAIQy%;*?smxsXY50llBMKkN@~;pj*PfOjeDjDV^OZL-U~~!#3~qLq7$dor(+d zUAXW&f0h<Q;Py_JW9(JZk2EsU9Ufj#Fqvx<@%%xkg^kI_K);?4ALS2Ml1#E!WxW&a zIM~49a$@Vvc*(@bAm`N`SA4ryhWXFDKIiL_vpYRm0!sAPZPV*k{&|&g%a@%2UT5YM zpF6W7_jXy})oa^lG8>&}II<)6_OrZoS2-mQ3a+|(ZhcW!$n+>}w?jWPW?DXfkr^U- zvNcj@`4pvx>#x1k(wcL<HGrf0R~uiS&m4xe(>{H@oq9XlYh~VcKB=<@Z{OJ-RAe}1 zN1OV@%P(0NZchu@D#H8m-15)q<}u$~U1r7e@(Mbc&z6`u@j|Pjr&kNpyhx+Tm2bqg z7wSh|E8QFC8)_-Ux4?)sPb7p}B13m-!R@@Q$1GhvRm4PHQiK&IPJCB>_y+UAg@yhH zcAjOJZDQ{eexXe5BgdWJ=>;WD?xEK2emLqaa#(+K*WcDltC%mpompfgUr-!!!T8t; z<@CQh7aXgsI@0C$kfr0phsi$YjkZbNi#Rt^`o(8|ixd97FB)C$?pcvr=y+k@M8hVI znS0HC_<zsLf5|SETiCexYs#U3sG#*R&o*w97Tl)G#M&9;V{<!yx#HI@n<wvD`%}x4 z6XpLaTX9VDopZfDA@gOF-TRl(?=DVmJasow%DwcY>zq%EZ*LB_a&zTzb=_@YWW0da z(9nd}ujT*7-OZs4g-Q&^&o$1LsaY&@V21OZ@HGKXd**K07OwE+L2i|yje)ymmB+Tg z?el}J;*YI4U2oR(b^QT{`hU;YZjXG}!7<5l%htqVU4{<_<+xwGG7fz9^5DDHwMj9$ zkKZ!N72R4~{PpMg#nI8mU*;IdFYbJ(G0VQJUqJc$3Kre_J74X4pVsEnH%FtDck$8w zZLV@Fqt|k+oAl!E<;pFeqqTmAmFwg$zxwan>0Rr7$L0OrCeB^2z0p&t;Fcuohb<{e zUX!Lx`K-j??YAfQw*0TXtNE{-ozS4V{&kbU4ACCRiL1=Yf9h^{bMDNf>57KBzs065 zSgsf0cc|poj=J}GRSsA7ZNL8g`}S)OpUx@n3(vg1D(vhW$(fstn{R#H6kk((_x$tE zyY}qeySG(fvCh(KRd>rmyE=ZFE}wEK^W>^uU%%Vmu{EB1UG-_a@>Ds7yzRHczSZ96 z)lz=mvfNZ(^ZC>pGL8ou1*gvmieh|Qw!3Bi+p^s;`Qqi%Ta=bmpY@q3E@mcNo}89= z^ZVS6th+OJa(&%X{bXNAcHZ;8_nnG|_Rc#!-`$GeXZMMd%r-g#xy!`%Du1oZo0s#* z|B_04|ItHx%($P|sCnKOmX<qf^WAf@V94`6=ky;Jl=~*WS9$zq$`ipILcf)^dgNEE z3sO!f``7r`HCX%MpBGM(mif<Bjoti2H)Q?WFY3$hHNCqnr|hU$qGWE=&9TZhYsTzF zl8OQo1+MI3f8H^xc2DO?(J37#Jl48hP4Jt$*4}N0NM2<5hu=RVkM~OY-r6Pk+UDQ2 zi@%TE*R;}%I=+;7>!ZUqd)_idyX4#KPrM)Cz$`D=#@5#u!5px<F-zFpv8;%ZjYToh ziA`+D6AzCkZGAuHe7k(l+UfoM1*bD?#bzzOb+^=F@#+2Vx#zz=9nU#KxZ>-NzYo@5 zxGX<!-qYtz<>#O7(r;-#+}W<Uc&E;Bo}Jf=m!(g;Rh()oVm)J4hU%LSwM%n)Hwo87 z<V`>J@_GZGZI^i8@=}c%{&JpH*MtsSU|+uQc~{Gsgv$n9i><wCwswi7eBO}uYTW~_ z1kI1T(j2?CbuO3SN{jRR{q%9${euomFYW5ES}?oOc;@b<rM>Rv>s-(5(cwH$l=tDa z-K9_lZdGp;jXQY{xi(J`X2{*WQp;jPirC9=y>gAL9dF%DGz>i-1u4%^`&4znQC8$a zklzvp2G1a&LKkD}N-cq4O_O4#kmlE=!B;;|npt%2^(L3~Y!CH&lJ+R8EK@yMd6wbk z-NgM<g9I24o{tRjnj|dv_tVRo-FNrZ)$EViw>WgWQbH$VmLa=azTj@2BW^DF`ReUr z-qSW8ajm;Adsb!QVWmw;>gPI6Y<YFSLbl08YG>Q!M3Y@D=gt){_3RM&{@dWh@5IE# zwnyJqoH0)Bx#=7r$S%m$o_XmoSI=4YugN)YF1xPnw(OHU>GE>PKI26*S1{b2@zuaC z=xgGcgPHTqvwrftW$9S{x<lprwJ%n-22IDG&EIg?rJ$>6$7vB|_IyvKe;Zgnciz9d zrAR>ZR@ENATrOq<mTcAqiyH*j<Zp~xwLNm_KQW%bp2n{a!U~!<tUven=I5P%6wKw7 z=32T`?OV;G^lh?xug1Ii70<;?ZT#-;o{}@;I0x^PSGIfmHPUvl`K4v0B>1TuInnc? zsilX7$K`;}38y(c0v(LccN~8l_RV0aeH#mdOW`LsneSI*x7PlYVEHwp&!>FH{GT7> z;&Ok!?%6cm`dj<%lXtD#zw=AqJFWj)+5X<{31+fy#rY!U?ALo%wLML~Q2PYKfxzb* z-alo$!g+Gz`NOv#KCW9Zx$4Pbi#9n$^D9SI7yg`jLDy=F&9+VNb0<IXwLj!}<?gPQ zT|4hgaPuo<Zs<&z#u(7Q;MF$u=hL1n51Y_)aN@b@i)+OUPDD;Beso8{Gb^gBgt3@u zic6^M$@cg699O@aKh0cF({!eJVOd;D$2Qxy)w3_Jl0B$oSnb$i5bfeF%9vBf6S5_0 z#oE;cuk#+sx-=YVlH~YMwtMI9cdEb6<!Zlhki2lmOLu$I&6zW0CVY6iWmcr8OT+Te zbAm5;Cj6WKzie-uy`9~fxQ0zv7oD5)`ToCe@?UFf>!a)bH{0voUyv7-pR(s|bW+r( zqEneCn^qJu&A;!L7|Yb~{d;KW_oD8ylpp()`}J+Al+N;s-CJ|<Ld&G3o{eknus=HT z`0l3CSyQuiDcEuJH=EgoE-RCfNp`k5!|7)z`{~{B-1yL|@p0_@p>C(&%dOJ3)tml3 zuJ!rsrza{GoV-vZ@Z*<6?=qVukNwR~^7DNt+}|$i&{?_okH@?>vbT+OR?h!%Ehk=a zpWd%eRp)FRe&=>9w8{!94c%<Z6{o^jcqV}HWVPI`P~+m&*RC3DH0(U@bMtlM%2#!F z0y@sGKjysd&4v7)Sqri*zy8qGvw|(S<Mm<JtOW~XD#fCGGN!t<=2c%_=3QX=_H6Cp z)ot3#Sx>U1J1A}EVrON$J-21=|21ak4=<np_Te`3|4|lSi+hdlm1_S;GWiu%@@a8r zvhwkLTR#1jdGYUyYv#M%@>iznvzjr#F8Kd;nNaVuySvhD>pmo2^!UzN@r&8ezH^rQ zyRQrGD^2+R^9jrA$~XZz+Z8(>#&YN?e1E-l`_uWh8uvBs6ggz9x;IzAHf`D&lPUL| z6IG2T>tt^0>1aJG8)B0lS?U_Z&Z>6H>+e44igVgZdM`t~Zho&lu*o`#Rq`O`Ve`9B z*tV)HQ_*R0(miR!t^DZa7K3D-<WOz~gXeQnW2Z;tU5`q-pR$Z$&%9|9;{{(&U)K9X z!t+Rmv#i8{P6I)4hk_f~p`lDE5B4m(T;!*-uu|oSic`zGxU~uqf(ajj{VWR=wD14> z_Hy=teYG*$Uon1lPCs?1BJSM#<x?%qCQZHA8mOyue$G-s)d;0pJHukl2kTz%Qu_I| zYpKX)ts{noPHc)NCrzJ|YI$j?`Hr)(=S04AU2gyL@nEKD&OiRbm0z#b`)D2EI9z>a z+QFRJizB&jF@!8muBd&uwb`5LyX$t-^|m%fSL8ph%Lsb$(`J`U`n5X>Rr?<vU9|f3 zJ3gEBtJ)GZtpvUo6q;)MdF`D0OOM}bmf!2Q(VRsg1v_T<_zJtecwuf}deunJd~4L& z-K%z8o#A}c#d1L{PoA94S;nSD#>rh0?x9=tgaSj~w%NPL)II%~X7FYH`8R#P4_{0F zcy#0H=DtnJO)pR1d&=tP{Bn2jltY$w=iaJKHOYO*^I~IamTtMmr)Q^biM6D4wAC6J z7O-0>y2ov@ov-%xqgt7qm0ZEc>82T0liy2ioA3VUM8cJS8lev@(_dtoc=I1Vwl4Le z=HC|;J7@DQ4m{RSmFhC9o^4*)2K@u&j0Upz%Ytq>d_K@pbn0rO%+<!2nRj?f_B~`0 zm~s4Jqc7|Io#&Ys^WCs<n#j;7z~1h5Ww!GUjtb9i4&&8gx7S7Aoc*D*HCf%csUd2W zxa(J)w^Kqwb(hvQ2?jlyv1>|@*WO6o&WE+W9T{4ywk|Sa6x8=DiVM84Fl)J+fU?lr zql=czy?<Y-S3Kdi+4Wtq`U$6h|5RzY{yH?Y^fp7n(<$Mrlz#7<9&|@^>x*Y@AO8KT zvzwp4{q}VI_;uH_4V3Et-oF3%!>)UI+i#z}Iz#h0OWY)bg*%ehF3s5<d-lu%C5DKr zM>Z|#>3F?q#?4RPI%hOUNCr*%dSoW&$?VpkQ-?fTCL1()vqUxRpBwh$_x*kK|M$JG zPO_VS{`4k>6*qYW@B7dE_wVG@Yr%2Xzm!Kkatb*8^zzK}&x-?U#Wx0-T|adu@<EB+ z-u?5Nj@>M2;Nhzd)eh|xKQN_u+7y}2X-8hH$|^lRrP<N_!V1;2XL*+&Dj0NLNoQNo z%xtM-F!}mpfgF)!pUaEgpIy`0+t~bS+6@UOgPmJl3*}XA&0+AncI5lLm?|@?d6sjh zv9<6=$fc;A<vOwR`r52zZ>KPuA2&SsS?@5Pt%vs2cNaYGuX;77`m@wG>8yYsl8Y_4 zy<R3bp1D`k^y-<ey=2afvPJ<px5ij|yKlKSl7$_*6IB@mh5X+6T-?OqrNRHW?ba3b zn`g3Cy8nH*fz!A+R8aBUlavEb94i;jdEfE5{qtVs7ZYZiGYH7&c+Wd!*;{{2F45U# z(K{v=z6G%vY0bAT#;K+$I;E-bPR>xVXi#sq;+^B1etL%V<JHrB)QfUH$v6bHzv60p zq|ossOi=Qy!`-tJI$9>&ywK4(qw}WV9Yw#J(|2!H_*(iRhWplBQ8)LuGrG>sotE^( z=dZ_>MQy?D>F2d~?O&7j(@}BD;@IWK5<Y*_{;Q((XsgDTmGA#dTyIyEyhr<u{U5g< zSJdS87=CD9R+hHgu9<gws^sZEhBG<6HScVeSoB!%<ng2X<*h!NvY$~+xE!@HzenYH z&NElphEJQ8O*!Kupk<*bkSJDGE^PMb@}_xy%Og5huG-imG%unc@?g#FZ5B(WnI2Ev z{(k%GuTnRr8}PM>zOS)ke{IAzyW^bCnHAScW~<BzDti3jqx+V%lY&iyl?9G{3t67` zrue&yijL;TNyX<TMMfMd=3W;S;=8p;H7UQOe-exR-u0G=noBp|ys>7{^Eno$e{SiT zX&CIKX?RVmW@FUrr=RY|-aq$x*SuZn7Y`plaOU+U1=E&j8E3@^*-P`j=?N@6aYFUQ z@(t$>+kO{cJW+Y+zp2ve4>!mOGgNWJs0zG3l*ACW)p4PXT;1nJBT3ftwvVEC=C8Y& zoO<CX-xr_EDhUI*!iTjzmdzZ`e;IAInty$on8zdLNWR*wZ0mgmzx`^=byz>cpqjs- zZ9~FihRXh#`O!h!CIv8Ge&c&BqlF_^`}xPr!ya!BiUqenGh?)2Z^`!yPE1oWaZTf^ zQ7G;@UtRC}K(RPa<bj=XO~%)EZ-V&c*Z-JR+;l@i;_SjF?#C}pkiKPpymz1Nvb+bq zoMrY!N4~}8Fq<q0SYg7tHj>q+uPtHSDTX<%F9bEeYb|)J+QJ|2ul9eg(d(xbpCW?q z^_%3b@;$#e|3{#!%=LB4^J~Nz8W$UXz8?S1ee?D7Ur)KG-TJKk@Nv}3j^-`R$&an& zo=soQz`$|-j;W2Ep7E=FYwK^{mksn%w9A|CHrJI!?8n_iq5PdTu`@2ebzBy8Mmy=q zj8G*n&XE4^-m=Ow-&fsC%6!hybHu~rMP=fWAg^<gp=Y&}=A3`MNynGbVS|q5oUGsb zn790&RlKhB{|^x8C{s`O?Cex{{^wuazPov#iSvE$m*!}yKAU2cK6T=^^eCQ~)yf(Y z8rGYuP8hddQ2e)~!^KF6TPV<PM$ij;8QD7`7iB_TubrWq=ApT<A(+WWb7^YpXDj<Z z_qRzirk=D^UliQE&^<=nZ1ejy^6~rc=80dPdtsXD^Eop*XI{zPqwoDFHL~i5|J(8@ z5yrP?94-9bc=Vphrv^6*?mMiBdxb3bSG{?EyyP)g=0t0j!>fyHzP))@)K<RzZe5C* z^J$&0d9fG27+?5eU-2t(o-ALJ&7X50XY&85Q(yj_ZR6#x_WE}Z3+0Zxv9N}`|MxdD z&dU1E_o$q%S2n-4>K)AAdwb&3m9+=D%jYb}QWj}C(3Y#|q9Ldyq7k8_kaVSRpXo!` zT7WEFMpLCz*?Zo9yt1WR-yz5FSR2pXY(p0lBe$f!n5TN4tsf@16iRWvuYL8j{M9wZ zWxJI{{qL`iw=TK1#O2lAnLmH{J)3ADvC^IK;;aYf?*8C6kq&$pqsy=^Y$219K-Yxw z%Am=&S(*iYKKN7WFx`EY4e!pY-Ba&f4tkJx$D(actj*W?pG72?EIoc#_X)E-b&r4I zKKD*?jeoe}eaWZoo95STQTXz^%JRMCv-&#GcmEdsKir|QY=@kp!Nj1=r4|9f3FqrS zKHNI*e#1{SyZhzO&c{sI^<(-@%bWvi-h~x<nQ}Y*vNaTyyAd0^Beg?r=33uvsZB55 zY4$A54O!57VAB?6B~HPK0o#0*3K&m+^g=^PaGTtxDnTF3wKJ!++&;$juPpBHZ@vjd zk4imnmxW%Pa%mFh0<O>c^Up62-EvP){Pvj%b0ovPSQfLVdaRt1RNCDyCafZu=s)GS ztNOnbiMI!@?3rYJgYRD1LqTW7oMQ_fw76wB`8|0cDzoBe?q!RTu1O1;!&yZ9K8D^2 zbvaOTc27E!d;6y8r=NOlJnSubl-2o1yQrs8K|$}Yy%GK9cVoR*GAJGL@Q^VqKDglp zuMq3jWABXxmi;xcyHoI-*F7Nl!H!7lGW|)Bs*@}w@&%Hbzu3#Q<jv^jR`2~9ux7o} zdh^iZ@;PB|I;NLc3%M_x|K?)(uemcmTyz(8fAaYARr4%c_Ty{%*SghKRj&VgF(bX9 zz0Fc6F{(T2^Usx95!weN&b_HPwWoI_&)$_A?<f@cS${a{D_ybPt<hf3G*Dr--&*zW ztF(3>53uU{_jlXZ>k|@ot+&Y9Z}?l{+{EO$dR+Wf*EgEYtK2VAu-)*)R<^qC6C2F( zKc6h_{G2J~VV#llu5n$ad?0_y)bA1M3jKk+!rx4SnZGA+Z@K+PME4S_SDzTi$>kTK z)W83VdE2-4dB|I)>dHUy-}f77w#Yrpx}d4IcK+{+2QJn>IedBg6{9`ZH#{(@{OcIF zZ2!N-=MUX6;PGi=JLJ}~JK3nU&gkCd7yqiJr%iT$#4%~@*9X(3e>rpR`7NT<lCQSQ zN-4o6P4>>F3vLNpl#X=XTJ)-8LF>$&GsCl6TY|h^Ei+A-#!>yXl`%Fnm@(A-d%zS< z<>xY|XIx0xb^7fxpO-au?N8U;3~&)kEPt+I`1a20-wU=USj-T-?{|7q#_c87r0zy& zx^f5$>;Jrb+tToE7VlzPhBcbkqmp+Y;JJEdb=1mbqIX&vJNz|!7xAt0*^&}9EyP^= z>Xj}{rX_QN;#wFPUTZ#_7a7XwV8Oms>Xqn%sL};z=5(CkJoD#oF6Zg_;ijuPXHCCf z8XUU4_T-i)ruTLSZM*;f$McsZR`bsr3Qlcd$Xj;h(S=!;cot*_X(;TE>e{{PyY*RT z=8_Ay{<wb@uisX>-E<!Rd<|X&SN2ElOS3d*Ts+%TA)DdlEAg{{!DfRR@B2^8f;VIR zF8n?8IxqF!)YV~MI~bj+^H|<<gdW!WtMXeX^{|}9ZHD(BJi2Cn6<2A$m-4Gm@&ES+ zU1s6mZuq**<?i(??=etV(CW!@M)uHkws%?=xsS>T*eb=GY@7RaMcD(n!;=g><$l|! z804;<s*;kGV)yEA-Wj<z^@D{f*%8HIE<y)groDXgG~>Sj<4VbiQ4ji8i>-FwcXkT@ z;nzlN&mNa@|2@1{jMMF4cfDqCi5cUz1Dr}JY$;A`OfKtJ@f}%kK(vFghjYfowi1hy zCWGdAxfW~Nxt_G=UaQrAF03N<&&lS{V*d5B-&P0R_rI3?;(u8k*N+2FW?$>HuX^|J z+-tV~-}?VngjvVP^0g#f3%DV|`NrkHefIrrGVYU-JG<T0R7=nQ|NnH>S)b5}l6-S& z8ScmydQMwap1NtKUZ;|=va-y9gF88@=fz9BeJ#nct7iMk(5MHxy(@&~9T#?q2=7p8 zNjt(BI%{k7d|~FPYI}|Rs_Plmyri0&*iO4ku`GG=VeMPrwgx$#{MN3>n*Xyp{`~rx zeCpPuiGqc$zVgw(e|&r_{-0;>wzsvBKAa)5xW3M7e0)gZ(7#_P&z>(f{d;j&>(YIz zPA%S8UsGGVH%|79(}W8jHd*gpb!yrEx}0|pk1;9zy7A+A`@bI>Z!-VxyH}b0>El6p z|8o+YX?13sbMG7fQ|Q@U^1EZZ@|^vSDq8mSc4ybzKF#5!rV||;TG(z79X#>M&q)6L zANb6bI-H^#PUUSYK6Zqo!-20TDM?W7;+iKN3{wP;96UNTqs_a`-uT|y-upc|&aAw8 zE9zN1pa17BpP1NqLPoc;hxMhMrPC}$(Zay%Qw=NAH#7M(Wc~eenJaxF!^QqP_Qy9B zTVLj#p`7?>1NZ!iLY;>$GDIJja58+gOW0a)$Bhfuvo%`Z9}8*uyih^nY93#TrD*kz z+g~b_imKH$(sOc(9u{m0dfTQcE^d~obMMi%oY~KECx7-cDCJ1ulmD~ps^U+j9m<L; z3hsT>GF+puIe^oB&Ys4TO@iVkYj*^`Sb1*yorT`B!xlI`o3PR&Z9<6CWUb9Yt0yae zYdhpPlRtjH&-KK6%_e$22}1J@?SFV6wXrVTdhhCQ4{Sbg)*G|_<<)Gl+_>rE+q7%D z_e*YgQoZHNEEPLbk;`sN8WtRR|N7?lj5psk>$NX6zS90K-1ziN=CaL#=d7Dm<#zc= zh3UI7T-dW?Q&1y!hS`akW{Y%}`6eYA70oYWo}trdaO?S&=Z)n#v;8*3zwbZ$&~5MM z>&qCHbmm3z*3^HP+_BA9Sw*Qv|L*0U`FG>ipTCw;Z6`OID}Vlm2iF-4ijBiludX!} zop^1@ce&WgB~LQGUw?gdxB0Z=-vX|t-;TTey8rL%&R$mk;LU4yul)4*<B#j-=l|YU zU-#&uN2tA>UESYb6?wNGe-uu6;+EsP!t|C@XF{-O=0=^D>*sbzyPvr@jWxf6C8_WK z$BTE4`si#B<eez=_eTZ8jafU=KMRT(ueuY}Z6*F<<B|8>KR*>6<yKvqylk_PV1?S_ zlyj#|I&CdAuX9LiiT!XFb2EC#zDc)TI`i&)GuCH<s&xr<d>w0!?QXfDym9@aEi*MQ zP5*b^zfOB&X<x^j#ALJJ*r^&ZtV<Z|ZC1)$WzpXJDC#3CYoo5~+T#z4n984-KcBQa zJNjoT<N9O!KXo{M<hvoVP<_Yr`lllG=N?8JJGH3N^uarx_YD=R(wsLsZ0KmH_`3I% z?W<+0mv!z{%CVi;_%d>rLcF}zM2j}dy)OzvBr9*$ep-8CQ<l=<e@kONGgv<KVd9)1 zeB>pY%yGL*>Sb(s&!3#qQFwT83qPa6orQ&7o9v9=Y;Jur_ipujgDo4x8N6k5Cas7$ z6*T=s-mA;+CpbN7O1T!;QlPE9z&vi&$Inu0b;@S#{{DZ$+REdL_B`KtXX(v-f0L{> zn`~|oxqHuAIgn}NlU<Ya_^y<G58&@^%6{xuZqajm*>=gs4zs5LaqfRUo_Z%0;Pz~q zXPVj@S@-8ljFm*xjRM(EEM4vKgd>l?_KTQ6%bq7cFIK-_bj2()H|6+@*6scliMy6x z;ry^nX~Da@`+v=Uvj0bTb<SGO=2-<j&GFaH3a<Nnd)myV`1ttxe?Qe7Za-eU_1njV z^XI?){5jZTJBRb4YY}DUH}{w-{_2og?|Uox_j>vLcJ}s?d1?K}A7AgEFE1~@c5D3q zDzm`Aq%ZgEAI7$9{n(xtI6vgYQ6&%kfC~OEruUxNotvn3=+rjO1#IR<2TshjtmS6E zJJD^Kg7380Y~3>+(b<jxg|q!uDHU=V&e+*`tmxL69U^NZ)ogb%l$i9|*dJ(Lu=?TA zn9>#L%Wr<Ta^zO4fAAkow)mX2)|qDVu~J;}PaM|FGtHdEcfHqCaOUF`&Bsn={Cl!E zaP|hTKh`!^+%vw21@GO+KhIR(LF99u?Z3$yMRB!{dd;T=rMDA+hluU+Wbyt_$# z{Y}sBI@JlBSgw7xsYI*d(h+6W%$f@m7dvU*Fj%8_jX|LOz!Zkyq^OwLx9T6r&aN+I z(>bRh$ND(fAl^^T$gbn)QRM?JhyFy(Y`GeKLGO}rN8}wNfvcK_ZWk|^uvqI{;=PO2 z-yh0)9eScL^TV5$3lF>uKGwP@aN!|My*=GB5x;(wn`$U^thr{n?0BxEarM-n;o=_- zec$6{o7i&PL|FE$ub|nMa_5&Kf3H8BSe!ORMJzexX%}yhhTvqK=W^wq*Cv_ts_xS- zW)t(R-uz)+f~tVH<$^wi{IaH02c^v$eqFk|Jd8~(@ead`_b<~#d__;}65jRV@|_MJ zmjgGd??2Sv{`|A2%H6lGi^JbKY<l>;R(#R?^ZmYN<^TV@e##e=pVEJPo9+Dm<L;+Q zI9xv62?<TKHnul^yI0zB;{OV}xi9wr|GhuHHvQOjwTWBL8c0mMu<X&PZM!%9sj#!R zvlEi2+@@xqv`FaI?QI8d_RjeD*gg4~{kQeg-$oxk{@Hn};KhCW<9@3rDE)i9aDUyO zs=Ob+ehE3eeEt0M<Kz8ruj^;}PEF9;yZyjM24S<rET!AWw|TyK9NWSsJKsEUqWk+# zKY#xG`Ze|6&TYTE`W<JaL<ry8cJ_?jcm1S#o7;~UUe@bwOE+UYB(twWwJpu)#jh`E zVl6e=K522cx7o_^=bk#3V#WDLSYL87_Y7w_U*>(vi{2TSPkPIk&eUlls+!nvXHvQa z)Bf5`Z(Xl)PiL|DdepDkzS&6ln}jO+6w{aG*J}65l?8TP$$M2`yj@f*D#fFl*W%Mn zMZ0<JU*2atUv%_Io+5*X`0mm(Hy5qoV{eu+V>z(UBq-ZWcIt^2hW?Q{9gK$N@ACf5 zy0%BLr_VU)`;|X7PftcK6P;vzX70>6iV5Zu4&TXnpZ4zV-ov{m3qCwOr@W?D)S<z) z`_-*fqaSy_yZE*qpW-i=5N%<nqN0<KSNu&d^Tqm0Yt}ew%$a?y(6+wh_OrjwMA-Zv z-V3{;e1=y>J>|xp)m*{N-GL%Zc{f}_T0`Utf9_tq*j%i;L_#e|kTri#rn1qY)4nqv zCVkM|vQ#EIB`}fAJH|>VFgT6(c1vSA+v;i4m(9BVW8<<qnLU0AtJP%o$lS?)9sZ~C z_q>*(M^i-f4diW~-{kIlaqZ`(Jn=%cnn(5%8Tfjxq^E^tRQ%!HZ1Ukue$$j?pHI~s z^79mPwtphAQa{<GUupZU<i2(9{k|FOR&-y!#M)mz?%p=vR)(;}xynjeyoWDm*R0#k zAJ8Ff`qMS><A<u+yxYN3%U)j-?3?)c`W;K#`RDKE%u^FAH23><GwJfS)GbYBYD%iP zKPv3zUwq9}VYl6V^7CaryK?($%@qyaY+U(DEOy%l^V&@dwtoAQp>*kYaA!yD?QPGG zfBSP|M(l%)GZNg6tYNql5>hJMyK%>NyO@7w=i`bu#7*5&c;QI0(X+&Zq8cB4cBn1W z@asR`9J%hFo4WIw!xfB0<$~S$a=BbKvKrG|KgC>;eYcvaMD%yhM;Y(4ho$nS8Eq*s zn$CCGVP>D2PY6?q((a0)%lQ-My?E8OJ2_|BSzd{N*(&F+yq4IN)Yhk8TDZ?hT5hYP z{DV^$zq<%8vN=2Ba>d65>pc$coAd0%%r{oE>YI1>`(#cyzR#!NM!}MeVoWo7Q{|fl z!{Yqh+*0oDx&4o;`D(<kr>nHGbY(ejZ+a)`U7IN2uxd+!o5`8AD#pRxb659#<+^4Y zX_E3>W6SF|MjHxS7!oJ#mE9(0-uU;;8@G(k6szwIGTi=IMgIy;tF8I1aN*n;J+~Z@ zBjNXEsBUBSYR+*jy!kk|pmCnVKIfE5)qC~QQ3ZRYls@r(xzTs6-bXd-PuR2xYfmXI ze&Ksi*mCN$m*I75i~mdZbv^AoE-rRncH`u{mMx!S53kg@r+jAK>huQ=nu4tQu3CxL zQ}U+lP<^n8Z-<RmvF>q+lQG@v=04F=xTazhCcE~dh;@B!ZSJkI*L!C#-aOkVCHv6Z zg>TpI|MzSD|DX5s9u}R9k5Aic&7RmD%KU1{2jlFumVpiPZ*SZ9-0$_m-e#2t3X8UN zu4)lYubJ`D|IXj9zuxS%m-GGV`NjB((*NJ~^&2H7t~3i>(f8Q3^!BaC7hCq2ZgXF= zwKV(f&k1WMe%I%IFm=)H<pq|3)0eIE_h%HSI?(^o(xCZ9q{S27`1tzHC7dGMu2~Tb z41pgyJme)EZbSv=3YYEsz*D))Zk`Eq;|yI%PD`t_9SM7HnylC*5b);qpFa_wPI694 zk1hOec**gH;Ed;-f9G+Q9qzUaVBfKL!k1qq|AbvcoHy~6e_z3}%hqw)%)KefpWLDz z?<$(DpYZCews+mL`Ew_1H(nuK@<(KqtcPUi@(Mw<q+R#tRhUF-%~^G<MylYk&>Zcf z2ZTAYLjT>q=g8+={(i$d+v#OI-f{m{WHBkJuGiBm+Q7J*&Di%*^v7p%W;VBfrA)mc z{&nSpT@$+BzS>(Lsc>M;ogBBaUkaOk3U_6RpPlU?ymIdSJ37yzH#4wn%}akbM?l0= z{hs3)C&%K>fLj|594@f3o0-0Dp~sI0@|9bzR~h?#Tr2*}eBTV0D_YZ4zE`}T6U^l@ z*+E`-ukReI2{C>1&xY){o$``r-7EW*WlxUGOb-94*<BN(ZCGt|cU@?JSZS-{*6V5O zQl^!@n%J}F<(5f3*Ukk0dnqWw>2=s&U7_Q`Aw^^E<6+(tFI2EO-M?~I@Kl`XkC^p& zwfAMOB+q@|_-Mhk6A@2b@9w)X<*2L37Ui|!F|D(Tg42X{ocpuk`Daa~U0XA!-<jw2 zCXKDhEVFaMglhhqceX9PbxV;iY2(|AN@upc|M#==T1E8+u8<2R;dh>`%Q^Mt2B+Sg z`TVtZ^K&Q9_ZR)>;5^IB_;p_2JGHf*7upVKPAF!~%+#7L*qJ6a+fOtzEnZ28ryx)2 zjDp}xv2#o7OfOsBeCEoqfXD1X<_Ya5Zu2*&8*?{4+z`j=!x(rr_YUvYtcW+UyVB%r z?m4DEmRq~s<48$?@1}XTrP9Qfe7_ZQK5@^^mn#ix*D-!sA^+m>v3G?5eL2~df?0lR z&Q;!5i!PmH(0{t<eC3s8FX}W7tTI%tOaEK{`fQ`~Dr?uKxf9q;>wZmNcCBtpEsOF7 z!<L9o24(_}ets?78L^-;k7xCbCu<C|qr;eeCad3MpV`W)y{B_dg{eR&i;Z4#kjeW! zN;4ITQ?;9Sn;h%&dH&|kb5rv#r3;@V$R1ylxX@xr?jANaj?EL6tl>6j`TFQXhVN;< z7U6Ej-m{&&0-xTkJLI)SYnhU+(rmUfZx<N&O3!97;5OuVY$SMBeCKvn{-cgh*?#SQ z+H_}zJNG{6mCG)&`zuzg)fV*@-FH<^u#)3<XHw>*6A!GVPVc_n?3w@6N`IHbvbm>y z!e<HJTibo()eJq!&OL9^rqAOKl@dB)Frj}H+qaO-YVV$W-XZB<y=}Yax6d{Xt5XcL zg)J@J1D4#L$F32*fca3ur|Yjz=cpHnU6QD(`1L~lzrmW&5a*WuZ7)AR7L=KAy?gge zNzUje3pqY7e)&0Bx_v2U@MRT~L*+%{O54R94;M2xt-bhJveNU)tej}&MX@>WU2fcs zx#F1d==Qe1ukTx?Rc>D<zt%MHmHrpm`1$kKZ!if~Ez3<TzVx_$wbo>}6h<d;#`I~| zR7Bbja!LiMh)vv<dwbhb-3Gncs+;XBBrof#3%uSdv*5I}XIPm8=V8JAfG&OiBfT6N zvyV1Dy2kbQX2Mn(4XuNT%))bbNDH57`TfSC*6lP~o!plEK+nr3pU$^@JSB148(U@j zyc@s1TxHa8+j#KZ&-0G|cOFuSiTm7GSTN^&+i|YWD_>qFJqTy{Eq?ji;Uz{)fys&T z9kzkH{+)iXcE;>}xhbiV?!lK<ch)#;ZRj)+%Jy6L=tT<ey~$4vB7WN}zw-3eBhlKW z51V6HrGsq*{BKq%KXd#Yv!$Szq2Kp(zd(B5{e-nF4=jJQ%0CQYYhQeMi-O0$iEG}t zJ-6IsE-0AyI6G*QJo|d~$%#R$wQjw+yRxx&=3Uo4jk~>s)jUs6>)7c$kK0&nnvwe1 znKGA)o@rQCIRDev-uB%rdi&YQDF;92i{)?s|LMe}L%a91mFG&i6wdl~L&NX=?)di% zVX+fBV%A>VAoeDGM(VOTJuQ!_wP!NB=GOe3lNT=IU9iRJ{<LEaK6M6L>~y=*zD+qC zWT4=)sME~l&=a3xF^=NL-+l#MU3cpI^T|4Ql4o|r#n<ornjq1|^1RE%Xu-LQj)xZc zEDSCU-Eu6m&mm#k+Q8tM4=wtSJ4?Gee4dfKX?f2F1+k3e#>x8=6fUWK`gq~r<BtJ` zn{%skqJ<}3KW)E%*G%CxoZSK<(T|^Rvz_msd&l%l#EhAhpPv^i*DotIWq+Su{=K&T z?eBF*8k`p{xjoIRK(Nwg`|-yczna-4wQuk^FzJG?dC>P~?;aY+99?e}7Bkf${PUim zIVlS&y}wqJ9g;nJxj~+*@Xs+e{jYPcTei)799G<46nf=FOp3AGqGcPdO%bvW+BWG# z#-g9g{3hppQs>gCXe#d4KKAr^kr0P}px>*Bn{tB`SfvZ!K3%YTS9rXvUdIK&)1JCB zi<}>r^C-41@ozb(aXX;+`-4LY%MWB+-mLIcP~oSuhiTH?6Gvt$eY>i2K)UGTpD5k5 z3$9Hod!HXavS&xmqM6Yrl)siRG%L1VW0bfPk$cwg*4?{Lmdum!zL^u>WDyV^$y}P@ zoUWP5KWoAX6V>_MTIrK!TJM-K$!<-Rn~UJ?!1SO+;k!&Kgbn-Vu({oEoV;N}kHCY2 z|4&HdyPawHF6wu0g4tjBlPvex4*aWKxreWNdQzm!{hy1JuS*{{DqHY(8Q=S$hSi_H zPSD$XaryME#}DfEbfuX330-u0678>1{9z4~#wNi%3{z(BRth=2aO#cDP7lUncBQyU znl3snml6xo&Ze8c%Rd?1EZ@&Iqr+y4Yi#51eeWBu*V=6Vb|b0k=9H5sbIg+knM!6T z?EWn=bx!sBcO4Ak4Zp(c_u9?;`7z^VAk+MHok!jsF7udL>d=<Be^2f&$FqMwW^H<Z zZI+#U|Fv6>SKfN@y8F!c{^QLv6Q@OPec~&3DM2iUTYO^u|6gA}R@BtheY<!2L<E0( zP|4;OS$7-MKHZ4wUNFDpS&mV{(i2O4USyi-F~r#xE}yaX@p_|#RLK)}@05oB+3ZsJ zA+uX9enHLu^G|tQSI^SFe)8nXOIyXKE6(xAy^~?2boBK@ZpjudzI&F3?^LV_Qu1A^ zv#Uw*^}5h}t5)Huo`$Is#hWB8jL(@$s~mc_asP$DPkV!m`&xbTu5!G;bMNtk)7v>b zp6MOP?Z16bQs?28M~BY*@v!D<a+~$whIc{5x(ULOU#6UXrJtN{xpvabSNG0!8@6VI z23_CiFP^jD^`%bTyGy2+UU>agODyShjLAoX@0ZzTh3Wm-q@8x{#u-sjFWr{JlD)25 zS8xA*QZId-!%h~1NtT8RI@e;XELZ1?xN~tQOmg4Ioi4wuS@Xz|h3@><bK@c()EgJB zt)99s`flvyrgz-;wr^IH-`RJ6{jYn=UK?g|7Jkp?4XvBLD=0heXJ=fuR=m%(%G4L< z-c@fqAJZEg$dl{+LE>3O`!1c5RXOJyVhkpoXZoese$(#dnVEBqemreAvzc$uGV#>1 zG~cM~+WX2EY{Kua&FyD5mWb)G{QKnH!*_f4%k>{SeA_1}lyCkyzll{^hu+Q6W{`U! z*kjp$=(yP4-$sA#$o)K%bNlhnk2kiR^_k&&rTY5w&4Lqm9@{8AIU~FOx;E3J+{+Kw zd4Bo&^=eCcYFD_Z{K4@1m$SWs6PK@Ykvr7<X3LhW{al^SlMVz$KklB-F~7F#od2w| z3QfWD4j77Ee0lpzzxLe+QE!t>!|Gbj))|WDtWab~ypr8|*tD!rX?D&`8ylJU$Iotu zJd^%1@e-ed@%nc!&N!5asQj?0d^#z4dcJxvpNjdypWCB^54?Ul_ob5f!JE7%N?4K& z<<DzohB9derh7D;iraeTv1;$Tm?T;8^Z8+W3NG$(oY(d>e8Gv5Q>D_T$&!&%&WG%n z$6vRrzDa!h{y5{3)I++<({~27-%Bhmmern_7x0xKwD{2GN=f!OCicpFp1-PR1#*43 zg68E5x@oki&eNM`<aF9TQIcJ-(MHEUzwy{>W{ZdmJ6M^2Jy^UbEr^Hzxm*5RFTLH5 zQXb7e+8i#G@#=|!#xu2->y(r>wAN0^eQLdl=TyJ-o6k48Kg?Oa>ikaK+0#$4i7zo< z)Yasevv2a@<{y2>n3qV&YaO4+kftbk?5Cp}!vm3J?mX%iF()QV$Zk)#^JvrFAIA4I zIy$cgGv1rI^ZVbM^Kvg=fBlp#bSc}?9+!NjGbw4dHd>DM+uA+vcRq29P7Y)~S^xL- z<IkTba~yi-c6Zm$cW-XJ_<8Z)-}mun{v4nGpEu$5w&R~4_uK#b@ymXG|MADi`{fni zSMM!Tud(^^_@l8$k5jD1q@Nl(>L)H8u{XQ_(BJpT8WkzFh4-dhka@E9E#Hjyx091A z8+@8~dw%=;{CtFV)0vv|%zigtv+~mK>(}p3IQQZCwWewE+v23RdT#x0|1Tk}xwh<8 zOYa6(kD2f1Ow0_@o;hI>^OIG#kE>-wPckz;=9=7S#eVS5!KLw?wXHe1FMJMV=vFc( zz7Ta`*W0^r`i^PLKU?`3H4d&`<5ArvX1KD;czfd=Kbaz}J2Q6{7HmH<xu5To!OydO zHi8x3=lX<11)nTGZtx{<nVWm{mq%h^o2q!z9&KP)l=JR!k#U*1v2dPtcjAw)ELStQ zX0BcnG0WiD%BNPdPn!fRe)V0j?{xFL;JHdxjvOqU<!36s^e`;sW17No<W%09mv{av z2^iiet`>j(TI^7rn!(ow#u{_ubN>?dSeqX>`}_Fu^ACGx_7)YDM+ODXoBj7i=gN<V zcP^LHd{zF8JMX9IB+k7#clTz?<mA2JY+6=#$z4<K;ibac8pRzZ%y+{wA4)PBsj(j2 zD<IP1u~k7(cK$4;mD(Khtr9D^gp=ewZ%<pEl#whUxm34cYQ~{R`HGxR8A`ru%Ja_T zIZjk8yVT37!le|<zA<o8ykp)|8+(Hp56gq&ZDyvIFI+fP+G&c{ef2-rTFMXk<Tqda zS<7(fiymkB)a;NO=I@oB`@_}({Qq-kN~QbtKW`l;v~<0_Ec>YB#cTh9Q&XPHhF#w5 zTCm%-R=suawlvenj}QD|EBpL1=4y+&e*9<E>|cQs1?@Xu#Q%S{>Q?phZ9A>mMV-sk zWCdL-1N@qWGG$l<LQB8rGB>zap9}w5vE|3=rMr{l^McqbTw1n1RkL_0U8%ABX@Y?b zV|t^Pu;77ZH{UgI87T*Bb+qNl?voc-CjEEw_sBnf_rl*Nw7q<Aj(K`;sF%8rWx$>G zr}DM)*OsQcSNdu0u5x(7thxN!*DXA&b+o=Uizn3Do}RMvoae&;_o-*rFP`zS$X%I< z>GHRI-?=JduYFe1%#e6KcW1b^hni-iQToJdNqLt#m6y3&C(qZrQD`G}edFWX-%Xn~ z2Mf&VxKbf=VVVW6&7A}7n^oC1?lLxx*87<D#%Dru@&@JiGoM-cotbQqXB7K-g2|hw zZv^bhAG|&~dB?^dK^|}Ae(GBGZ|2aHp6fEf!*l+G;?5^N4}Tt6y3BQbUwnhl%mpG( z8F#E&YsKq+;h~dNZDWmEQP1Uwb<giKh&4^ieRTKYi83Lve#7~i>pk6TPP8(8u4Sw; zZ~hysY;b4Y*?lLI?EB{2XDz#6SeF09`Hqa})#4YwyR_dI#hm6Y`?rok?@yP8@wy-X znwZkJZ@T)mKWCN4CfUQQu1;+W2;|UPcZ#uNhLE|@{G;dZD)U=K8C=V~q!bmK!}B^+ zkn!cVzdPUWZanL=`@7y+&x(@DUtS6&tY`jwe$Ku*@AkI}leBr?51g0xFaQ7N&*i<V z?PlJrDgXZbv!uk7jvgt&M&*Scf-lBQ-Oe`gcw0w-Ia7#->n^hy%{l@eMX&chf6SP( z_AE=fprXPy@s}%~6*r4|%>DQJzP-9j<Xf$_cf3<4GCEl7agg8qpz}paPTb$D<%W-s zym<9DGOWDh)coD4`LVpmew_VVpWs!@H|<^BBK`RA&JH7kj(uxHbiP%p^=-a!>3L18 zOzHQ(Tf?J{><OIxVo3vUz#758<?EI*oH&(m+35Z)rCSg0iC0ur?{c@BE&BO;(>uL; zXQL9^VsyX0c;>QU&j!5(9MY#8Ic(kEW|Z8><h)_KE!J+2w()oNxoehN2Q>=lzLgSl zUwEgkvZ~*~R`2{iwi7GYD4t4rQut8trbgh7;&q{I!rd7Oa%pWnCQ)uC78Y!ucO>WL zWmUGYA6@qC$Q5s)X)jLfesI`ka${{}W%@zyy9PlwHmu-%8kyW)eM9?_-=ceyLKjx{ z2Pq%$m~-*cUEL>#Sk^x<+qb%MfBf5Z|2OPa|2zNSm6)oB`=06YZ&=)LCHtnd(|+b4 zub=fhFKq1>zO*;=OO@_K!A*5*_Gn)`w`7TnoZl{=N_{bj%`!D5*F1c;_f-h76bHZf zdPUf3Img+i=TEOEXFujISDk3G_sfJv^T^k8)Yhz-dF$wsBMnR(8*lYLpWOJbX2#Fw zuT_(Bg^j=7Q<DvJk?VJ#vQFYITlW6W6VJFFJbrw!`u`u5a`iGf+cihtRsWeaca0=# zb?UE^N4|gY;k>b!Suk^vir3zDce{yMOX@aRS55ElXTCT`BSm8U^h~yc$!u{(kAMD| zk?eIhk)`$Rl|tc(A2$C>uQA$s)%LURmwWsVcP#zvwQug*KbiU!yKTNpXCGg1;L`)k zmYelSaYvuk2cGHVxR#u5biI5@ubYlvMxE0Ry+b}mi*8k&tn{e-r(<(GM`7-H!wGHr zOD>%%p2&A?O9=bp|I0q8O*^!d_2c8ZDF@aak-JysIYTc@!m+QTeM_^ut>lcbH!`)` zX1|dvJAS6m_Kj)#X4Mqg?+-T|5L7&FH`(V-je7BcN3&g)`R_d|@Wb+R+?fSSMP?L4 zbvMo`E?u(OQScgr_nlasu*id(44saY^T}me&Hcb}(=+1oUnPt64j(;Y?Mo$Arc9U7 zX-~4B8p|GiWh?8}oin57>~s9>-FP8lUHh_gcQ06fc$zl%M09wimUo3Yr*Y{bHx|`R zhggnmvEM&2O6})I0j*Eb7arW*wf(QKSsLG-=~o}^%?L4C_$26?*z}g^4t@U&two;Z zA9h)>YF6G?fr}M>XKdM+)2w-CZJ+yNSN;vIQ*&fe<toqf#B&LGJ<LwsExIG9bH(99 z=OQBGu6?ilzAyjww%nKJTrckE+z?%H;^=qY?C{i=m*mfH3oKUWFnsS<5dQvK)x{OL zziRT%KUY(lKmXz<E5Yq*f|~9wy{@6#+rRZW#)}9V-gh<6U2FPqQopR;0u!6-&3ld3 zhy>1J=>BIelJhXc=+QZ5rkln|d&-T4A0@;#`AperdT8++&EATtYav0_X;!lRpXLZ` z$l>;}{+6t|c+aZc8FNFP##!&$IAxC6!^gWSH;HX6>$%SI{Pbka%U!#im`YMi&ivEd z#LcsBmx;t?1M^63%cCEna-=@`+}*o7ztGQB=Yz}ntYsOO&-|BorO<NPIfD1d0gc0= zvOe+g)i!sp`gG5fU-U7t_v@>J*WEl753@?|nqXLwb3kdKyMz9HZ|&e!%c9?$Ym|HQ zoMrMB_H_d4J0?wNm{C$;@actUliIeGlQzzjo_ttRQ}@Mh?TSN&4|6B&x^ew_{Lz9? zqc46bQ42adUWvW(WVlw&d0#p4*|L-yEDrbWy9IfT`2QX_Z1cmlt3zH=PxOADw(MX3 zlxs@L$8U!FRVgRF`F&!c?IjD-NlDM$<=f4-zp(RkjmnPhkUZ2^?Dv`B#J9VhCoV)N zGjzDlI6CFX!DUMtjI%$432>E2nT3~Z6h18JYk5%dKgW%ndTE`KWh)N$o4)_+-}-UJ zt4}$PFPuNwc-!fy+^@4KVH`T<>(Bn&eyuSfX~o3MDZLZg92V_YI;QyGRnEi1<*!QR zx6M?o&)&&+)7&7u)alfYwC{gEuYSLK)iD#X*geStE}RXmfhl$}g+5WY_Rbbgu(D}2 z?k;j@&GlA2_;}~c&Y7IqE-WdEAI~kaum5-Fdu(XOi;oo@C;t5^F1xTOq4Ulnkr@7h zaMw$&vQHM>F>CGb<*3Y-oFY2+sk2#@MCm(GYx~W$_sdf|jbx;cFO{4jpcfqbV6Ag| z;P=Yc;@dACJi)a?LS{49quA|*_cf}ydQL7+eY+`X*OJLPSMRo-Kh*k6u4nm*)uv+0 z{i-9+d3wxIT=>W5^8BC^f#2pHjmesSw63j0{>O8rIik@<`BpovkIZ6E={7&@a){~6 z^?5A+wmzJ^@%V%-b0qg<Fyuz6X+7BZl<~q^<3qDgOllO;@G?(Ri)}M|De%meDLX;- z-Reh=Ot&}8F>C+a{O!qU{+WV|z8W9clcqmp;7gI8c8t~K$YI;k``L>(NU8nUA<4Je z_n}yahspYgC(f!yiF)%g<d#jJ+-5m<%OZa54Q2*+te?9r*uXo<F>7+`>vOkQ=3bVZ z;%aC=nX&Ne;d@i22^h?<Xw8-i4?Mog@<E5eZH{+5cc$JwVZAlCz<KUY&V!l94*cr5 zzdJI&)_e7z<)-i7bH}-EJig>nc=C(aF9U9#iTvhJ^7!h>aP3Wp<E_(D#G4B^(^vdb zsm~8AQ<|Puvsz`rfmsW_a?b0jXuTsQbJ_pS-1cIj`Iia<7dfvJ$(kopKX=3L*IVmr zYiHg(em?&E^UohE3~KZZ4;q!!E$mW0eLVBFjl-&AhnmtlM5C_yUETTc`T6-%-`Te< z=c)Sh^>w<AAY;pPi9Ng;Ju`1N<aI0%eja!=<G5oihmu#WvGESU?qjENpG<V?KQkvR z?(VmlTgBuH&!o%C_aBs(o^2VHmd9^v%KPrkJEyl3teth%9GbKs+hVbq>Y{*uzHaYU zCbm2lJ7&|QvU*X>Nu!;?I}6?&chtE*VYbq}xnA$igfiGovi!S3KqA_9S>}qs|0g3H zeV6X}`i`BuwYx!6;QiI$rp^`9e`oPs_GX{_V*d5HM?XyR(Z4<W=~DegypMPIKb<&t znP}WL%j-oRYn9(uTZ9Qsl<pK_e`srW{l~Ly#cKXimP+5%SDs*BsW&%6Q~B-9<EJWD z&UQJpNya!g_Y!ma1=d{d-}BEbGjERU*KAOn!j=}8lNX`*_2>oJOLp@F=lx-pUUr-P zY)R!T7Z1@)p6y&_&u&d^pOsQt@$U0txrkYbx@`xp%&~cBa%AG{b-jtc=an<et9TX5 zCiHwcQm%92e@=V(W8p8iowl3rG4*h$xxU|4WXX23<kb&2_n!6PnEUwc?=8RX>V4Y1 z+5Gg3tFP;HcXIN`g|ymObV(+hwUKywU+s>GlS08I9@Q;NPnGX?x@`6$|H^M|-#P8O z4S5*@epKszj$!;=w6#v)jNr8&XZ*h!NdD@&XB!t3v7$x)+JjXeTr#(KUKZ1SnVWrk z+uyI(<I}2pT3XCDO=;g-s&(MemEbh-M1eDRbAp~9KGVt|J~21jNB3369FazrRTr}T zt)Cq^Wz?j-chz$}FSd_8UcXC~&V|<ASom$pf%>APyJr^d+~cNVG`BooG;_^|$2t`| zR+OkssV&VfoGi69f-BB@bHEe3ex(Id`d77CKB-g>41Kz><cx9PjGd=vD9c`4xnXAR z?Q134&$3=>me)=^e84I>Zc0X99(&}x6sxm5e<cnJgnkYE+8d=VbuFa$3-82>n?DIO z-Yxlcv@1tN=t-RNbv?o4r9vMUAM7^Yp?p{U@n!?#+rOvJe7VJjkLh8=o=_dd!+V8J zP18;Yen0JE03ZL~+c#b%9oKPu-EsD&h~<v(KV}J>Rx=*Ud=lI_WnIpxZh?6%{s$E_ zkIA?!udH+Pu-$+C`&pTQ;?rmSI+|`sa^0xls5y2kX3Cr74YRM=eBb{kX|nHfo)hmi z=YFnJTjW;Wrgz<g@zG7|2RpWZJ}kP@{!F;W?>T4mqUL{knzY^F*@0j^t(MHKC6TW~ z&y@&vy}P-A!y+rgrgUAy?y8br$zyIy_EcKj4fMV3eSR0?jNdCd1ia%XW!M|PakH8D z&arw{hkbe~uV}dV(&z0=0cDE91{{YNq$kggmY=inX}}Q%$E_>*ta&P$xqpAlIhVBT z;@-Sn-y$Ay{JeQ=ZSjv6yC-e!bxM4f6V2^uvwd0a@2TrfDedCqEURX$c)_1k{6%fg z*50Li<NBrxzSp`XclJu$dhrG|-<vtxBg(Rl7_@wBv9p&`c9<&YDCGIfXWD~L4zmoC zLuDD$#W<41Jj(g!#?%Cw%TLMPe%GB>P5SrphpR<Il|ITZvV2u2FvIGb@<~>eDRom< zGxA?`4;C!3FT7FoE6|`=n$d0IjtB4Ve)pIin#QFkznJrzAdATA!#b-KF6}7p*ws2a z|D9*AM9K@zyUJV>d_CW6Z5Poo_~0&l?@I3-+n{S6Qxy$f-IY5p-^p9i$2TSByr}Dx z_kIRHWL1uwKfdgj;QWyHdvDKQwMxg~oQdO%jkWQsz2d_dY+~#qZV9Yq|Cte>!O5g( zwE6Cxpkj#t?-thy!WWN;ocod^HcMBOCx7NbnFk3Gd)AcyaO_^YD*A%qHnH#j_q|W! zo5&#$_vL7k=Fx|**mu-_m935cu)8xvdDk6}j({IKzHAZZ5^;4gFKpfzklt>bcH!NJ zOC|2^R_ul=FZwz8Mx8k!8QUJPAZ_`JzIW9={PuE8iUrIkdY7v=Tu_^(CvuYG)ZF@S zyH#>{1X_9{@74sCxla1yDHEvv@X;|AMfG<qNtY+6ZqS^P`Gar$kDW);uWgb#-)u2s zsh^7FTF;9Y-M!APy=(c>v%UQNp|92JlJBoQ8)ofrKZF0DaNyDRXEuDFbac-g(e(-) z)oVW5d?}Eda!@MxQ2M4bjvv1K(~6bVNVAtaw_&4V$J!Zu1u14#Z54-3_dA@-`P{6P zEqBUF?et{-7O}sPLhM3QKi!<@lec`8k#4}2Ra=>6U2Co6Suj7R?sJ4j+};Mmd(J#% zpC5ET*J(SE@$c2CRcz_uFYjbNSbgbOFmt(q+r!NdK7BBZpJgv*U*P#7DYL%j+A@w! z_qMF!vU`!GT6R+D?&1@&F|Mo5r0v_}&}XG{@rS6p+_}F+T>W-W-_E%sV%XdNb3)wS z_tke8if64nkn>k#`STMm4LrRJT(19Kd*_uif3*F+Lw4F{SBo3z=4_f{7AF$l^}R?& zVwzj8`z-Z~8`j)j`-Az)fyG|~<b@ZjO*^0+wshB;rB@!ZJa<{Vr()ZJlUujkyY4He zGr>n$Mxyz%DF2G>B{7Cm+xvWU<h$9@zD+xC9mHj{P?sej@kvu<r_l7Ti~CQ`Vr@^p zZ=>4KeEHWenTHJ=XYNMdm^rIC@g>g%u_<=fLPalGUsUuza_m!w)x@5hp!F9gZ9kl3 zJ(qj?(x=sDzUX#;S`r#{>GXZagu<ffKixDdDl6mk?nr&=T3CI<+-FhlyR^qAW?U=T z==iZq-6EiQcT=QEeR`|y#Me()W?g+P=6Y`KzJ2?gJ}%p|GVfrNod2w@1Dz^|?b{3N zGFoaTbey&3XIMQ?{;o#FL6OrxjV>JG$e&!L`dsbKh8#P!gNbVl4zDVb`KWVe*5PL} zO-~yz_}X4Lp{?NEI>+vm`%WMKnkRFGLPdU6O_{Sg!B>0l)st8MbKH8%6E>H1{k5LN zxyi@5UQJa9{;zd#a_(w1X7$WJM)EUG>UM7H{l<FT)znh7o>T5^E>q;<b4zvK{}Rl6 zq*K#c(BFT4(N3Y_`=1-^1R9QAdv(hvB>C*oY=N68t9Qxn<Gh<H`HoA(>D!tzn=R+W z`s^1>>}NFhE_#33DzG5VsiL6rRK*Q0CYLL_cfQ@YqU?Q($vW;w-YG#XMGDW-KgY@P zT(euh!on*~=={>BFQ3dgu(%<vd4kjA^Cumh>{y;Myx^E!>95A3t?R~lw8_|B>S@+= z<JPHHOipmQr1VW-nDTc!_eNb~S0Q^BCZ65ta=cqE&5BN$cCxBn=S7pXVRz|dwXB|V z$5f;lKlnL4(Y?palB4{$t%aMt?%RAXAJtjQ13b05uiiWF!LZ_Pkl#M};JWB9eVbo< zt@`+`yi|Frm!IkRdoQ)Ra(^WjF=e^!47j$(vh%}<0^c^#(={goZ)i+*KIqc?OoT6O z^_p|;e|GrIFK<4(f2}~_%?K9F#rxy*)pG6Si=D-6nC&i9HgOz&XBo${{rqP)b8d#j zV>Th?zbb>zd3yAf?N$C*YVuW#FKVK)p7SI_TcN`Z_fB@U&b%7)eE-_F`?mx()CP#R zMC>rty=J^zWLH%CnqRA?B#M`QvUdCy99{YG2CKR5-5E!{Ha#i+6!5=dM&GWRE0>*H zZEhM7r?4Z$Fy1I6y|8!HGu4!eZC*d;{Qi`<(p3NY`&%n+%=&GSVVY$AAa&Z_lg0c+ z;T67?!n;pZ6fiN*laH7EemF9Hn^F6b&pwV#(fwDiZ_B+U)mEI=wEgC8i}a#vUurjf zw6_v`I;X|+i|Xgv82|J$uHkJjKP2ohXlDH0F?G&8KfNOd6CKU@S6n@_*IV(()AuLK zTbXaXE&U=UuekSh-GRolONyE{1)rEdqmt?6yu^zhyTruT-QTj;l;wfX#O3bKWsX<G z26nk*Rpdy?d8#ZIFg(E=HKUIE#N=Ww#YH#HpXF||o;$@hIWFr_=EKn04avpVj?S9s zST<u*ehQx_`;Umz0YWJX>=8$Aaxa?TpqFTxTD<09;)(8GJk`Oy4lZk_^}5cr%1$bL z{h%_M<0o%d#RTm;wZaK9uO}SlIlbcFxgE0$+?A9<i=S)qa{d(cYTtd!hyBpUM!swB zOHwlL`%SP|XT1EU(@()h@wIE#I6w9j5;VG7Yu>TLcw(0^Yq1V<M%NaRlMCE#q%&+} zdeFH3D#zj{WpkdyAN<y%V0*waXYZn%p1vrFH8#9&&L}1DU;bl$Z8G01-MfrarEafm zFnR8><3jSn4Qu<EO=g%r4vC$i#rf<Dn?jF@)3Nd$|15a^hDsaU|93KE-n8>Ebssh- z-Mb}x{QDhe_oL~zGxQVZnPw)|@8v7E`<!t!<y+9^uM-QMGUetkeDKh-%QE%gmCl1R zC9PUIH!?6cD<93-cPHxYif8&+*{$<MbI$*Glb3$*<%FOmPraF@{kxL(b@Hj#@ozSr zkkmN(slsFJ{EnsNE^SOw3=3~epZrQqs=(vL5#^2#r|)`pGI$-DYPi|zEX(z*h{;b9 z)soU1Il6_~O_$$H*?w-HihZH|Y!`JGd#0A+hlalxX1k>}E<N(&DFbKY<4xW?o1U5S zG&=X#`9G*=y`xrLwm@wk-@%KUc3OWsx|HE`hrI89GrzEmIse;kW)(Pjn25{7cJzj5 zoNWz15vN-*_41QPK?PqW?iI4B?ELgu_)N<D%2jckc8|G?HecZ3=_n52Dt^*yE^)zu zz1`=6;gP)>PuJ-QEw_9p^Za1;HtXE?c|Ye^EIGaIUGypLReh=3KUStQ9>02l!&GMP z5viDMg(f!TVn^&*Ox2I~o>E)&{EftkKY!*Px1YbRE%<|Ud5@sgB?hJNM^AS@SDpBE z#oZs}msO1CElqyU@>SjL;)a069=mL&j)U<EjU1*E3$G{rXg-k{Zz1Z+{W|~5l49{7 zE>F2fX=+RRu1&Yv7-sdXHO%I@h_K<~o$D3S4+OlvZ*(^BeaPp&x<DOwt2+`Y;`(29 z?UC8jW+=q-`b1}~f6I$qJg50RB;GB&@tQ;Z`v;yT6IPd}8<M4Yo*ZWBu~@`b>Hq9p z{|Q^py&JbINjhz<#?y9l>J>A-1y9!*RM$^9+A`<doD|6on}wLuW_{tz`<hj9C_6aK zP~!RW2Vo{WGS1s~%ZvOr4ra<Uwfd!dXw$wUB5LP8?BuGL({QK4A?s81vVEU_vYmbv zx^DIqIhBN-3a3e1vyR^mRl51DL8y~$xw88`jg_4FM(JO)dK`B5p7(hCQlyN@vF&vC znhCrd8s+UihZhtp{K#9gNI7huM7hkzw_7hw>R6)`CiU`zPVWrQ=JPuXEaG;j#qp&- zyx*d#5`7@<-*VrSsbcG%z2AGdt^d)~jYX>u*RuEh>tidJb-S(LOUllWz1p7@cOGe* z>uYyEX@mRs%|ZK@nmk}~+iS|XywA>RnR5hxZ^HEmR~4ON4aL^Gb<ej}G$>zND0!rJ z%^|<dJ$-B!ljbFh#Z6?LbTh~z|9#fM-Ev<pa$oj%G3Vhr_QG1n<W<>EW1g`tTj#!9 zNOEVk@ax&-tutrtO|zA7^frzyTdO<i*7e<!d}Jef{byZdjJz@D{PXIYLUYeu2-ek{ z7TDTT?0I-)%#7Do&u3iP^eE+JY|Cu@&vUB|yG)cgfAnnDw2)g5+$|nlGkg+uhDUne z^r{p5QckVSufMo3&GCHpuWkC}xc1X`UnTb4Dk=FY6MX$)Q~S?pTx*XSZ{9HH!PCc= zZCT5f_D}SgIa4r>rRaU*hMTXS8WgQC+U{$z>2zXBXIFQ@xp(t;FK;kaPg>TvB3iMZ z=Vgz9fBMW_bBn$&+dSP?Ch7j0{?EbRwjSW|{@Y_Gam80_Rs5u@yyfLg`kQzn&$JpJ z%v;#4Jm=b7%Qf?-B&*H-=&Cz!Pe_8Kzx{WHQq|A4l^-N#nVnpg#KEYz;QN;TWruvX zbmm=}5}llRL`p-Od*X!j1-uG+6En_V-Zar5;FO8pw@gLL5DjxLv-<O<ANMC_UW)zo z=)1wQ`&ahtR}781F!AHDil<+srretq6aHRQtN&@>0i(FjN0XKM-dReYpL*Hy^P3Ne zzu$NK_h0=+BiXgMtf25n1XJI8$@ZevVGb@L$8V{mtXnUB;9$|2Cp{L&cAtN}N@AwZ z>D8|^Qq5b<j9$GEGO9~H8<S{t?bPHii}<ZSxUUo8)VgVPu`|5yj3&p2d24o;+zC<J zHe0-==<b@or#3uk*!}uo`{%luvGF}IT=#ZtYd={%_YkwEz!5`{^ruCKSOSG*uG=UV zEDupuPM5Bdm)&tNC%(m8-F}i$*ZpO2${!E;r|V3134Q#Q<#OeYRbG#GYQ#K_wPk!| zl(X{O`Fkciw;32GiJz2+(SPZ@@m5Esde6D#Wnn8O#6ITWoqjZT@ot7_UEU)fB^Rz1 z*PdE4qj<i_N}k8hI@jLIe!uyF=G73tS=>#A&fWb>x>hpH-yWa6X`a5=hd(TuSw1^h z&+T0nz^gCE^wgOpV^PeG2}fUiS*NefAjoJQl$d$P<nXmnkJi*Lf1RJ0M_&H?W!+@X zKeG$7FBv^e@cPvIVb0wbFCPCnm#p-A`lbHm^<3LOOH9A}n8iE$^kXCaM9myYn})i{ zvHR9&nkv8Z(A%51^NT|4`?)vSGga5$QBdX(-q_@@C&W*QK~*^}urk%N+v(jOrZ<h# zIcI2=*MFFC%~GH+!oxG|T~y!fx0ZkOOYW^n6VspT*<|Rp$Z}Q}_tNLW-7h-ijc=#R ziC>QR7|1q%m$kp8>xLVtvD?LjwpAo(O%|J><;H22nYQ`|SMXV<tt%Q9D_aZiemwt3 zjNtPJ*XF%@QJelO?$Z-Nmy*J;R|Tpn)y;>hwE`a<VoAGHb8px88R6M18IgaJ?maxb z@Nj?3!NR0neyh*SIANr&zeoEl!<T!@W1l}+dquXbW6N<drrkSr=Xq`WD4~CBvB2IH z8ys>){Z5z8(Qa)EjQ;YnmOX(@^4*$`W@iphk@S8!x4k%K-$H$nTtRu^_t$d1Z~4b* z<@0`9K>N#?oJ>BPzLRd=Q7P6+<K$m|WoP@eC*7-gbmvFk<7`;UZ_Vy#o?=$0^mOOk z3(thsM!(N{xA(mcN8bjIH*+Uf&0XNMJ#q5cMbQUVFr3&g@Qycgi|)I*wHsHb{X8iZ zc;IuMHjmkq?lWs{J9DLY`F^tGJr%tD&Kbex#)-)`@)O$2n0J2Q*mPlvQosw5tDiM^ zRW=K*-uZpX$HL3H!R{e`e$G}7M;PZ81#DFP#`#c^*}o&SI9*Nfhq(4FfvcJK{x6)* zso$ee-Nm7-Gl6MenmXf+xla^*w|~3w<>!QLnHjwji~<Ip8xDOw)xc`T_s3OFMafYn zd*TNdr@oERKGsEZ63#@*@`;5rwr#6_;t}?pd%M&h;XacEr<El??`E*pyx*lQ|HR{N zjHLYI;}2JLSol`wt6g{E2zjWYTKsfROm_WFF448I4z54FMIBA&?T`ⅈ|O<oO;|N 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 literal 0 HcmV?d00001 diff --git a/sigma.js-1.2.0/examples/img/img2.png b/sigma.js-1.2.0/examples/img/img2.png new file mode 100644 index 0000000000000000000000000000000000000000..69ae0594c2c97f91f6413fadc3f904dc9fc2debb GIT binary patch literal 64986 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%0D)7yl_%vE6oxKj3lR%=PCq`nzls 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 HN@xNA6fUq~ literal 0 HcmV?d00001 diff --git a/sigma.js-1.2.0/examples/img/img3.png b/sigma.js-1.2.0/examples/img/img3.png new file mode 100644 index 0000000000000000000000000000000000000000..de4b175f866a76d2def2d71e7372f9ee12bd1bad GIT binary patch literal 37991 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 F1OWN>xL5!H literal 0 HcmV?d00001 diff --git a/sigma.js-1.2.0/examples/img/img4.png b/sigma.js-1.2.0/examples/img/img4.png new file mode 100644 index 0000000000000000000000000000000000000000..42f2784623074b20336a47e3dd00c9c04c1d4c45 GIT binary patch literal 102662 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 O7(8A5T-G@yGywotpC+pS literal 0 HcmV?d00001 diff --git a/sigma.js-1.2.0/examples/lib/jquery-2.1.1.min.js b/sigma.js-1.2.0/examples/lib/jquery-2.1.1.min.js new file mode 100644 index 0000000..e5ace11 --- /dev/null +++ b/sigma.js-1.2.0/examples/lib/jquery-2.1.1.min.js @@ -0,0 +1,4 @@ +/*! jQuery v2.1.1 | (c) 2005, 2014 jQuery Foundation, Inc. | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+-new Date,v=a.document,w=0,x=0,y=gb(),z=gb(),A=gb(),B=function(a,b){return a===b&&(l=!0),0},C="undefined",D=1<<31,E={}.hasOwnProperty,F=[],G=F.pop,H=F.push,I=F.push,J=F.slice,K=F.indexOf||function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]===a)return b;return-1},L="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",N="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",O=N.replace("w","w#"),P="\\["+M+"*("+N+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+O+"))|)"+M+"*\\]",Q=":("+N+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+P+")*)|.*)\\)|)",R=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),S=new RegExp("^"+M+"*,"+M+"*"),T=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),V=new RegExp(Q),W=new RegExp("^"+O+"$"),X={ID:new RegExp("^#("+N+")"),CLASS:new RegExp("^\\.("+N+")"),TAG:new RegExp("^("+N.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+Q),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+L+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ab=/[+~]/,bb=/'|\\/g,cb=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),db=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)};try{I.apply(F=J.call(v.childNodes),v.childNodes),F[v.childNodes.length].nodeType}catch(eb){I={apply:F.length?function(a,b){H.apply(a,J.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fb(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],!a||"string"!=typeof a)return d;if(1!==(k=b.nodeType)&&9!==k)return[];if(p&&!e){if(f=_.exec(a))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return I.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName&&b.getElementsByClassName)return I.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=9===k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(bb,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+qb(o[l]);w=ab.test(a)&&ob(b.parentNode)||b,x=o.join(",")}if(x)try{return I.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function gb(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function hb(a){return a[u]=!0,a}function ib(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function jb(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function kb(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||D)-(~a.sourceIndex||D);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function lb(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function mb(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function nb(a){return hb(function(b){return b=+b,hb(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function ob(a){return a&&typeof a.getElementsByTagName!==C&&a}c=fb.support={},f=fb.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fb.setDocument=function(a){var b,e=a?a.ownerDocument||a:v,g=e.defaultView;return e!==n&&9===e.nodeType&&e.documentElement?(n=e,o=e.documentElement,p=!f(e),g&&g!==g.top&&(g.addEventListener?g.addEventListener("unload",function(){m()},!1):g.attachEvent&&g.attachEvent("onunload",function(){m()})),c.attributes=ib(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ib(function(a){return a.appendChild(e.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(e.getElementsByClassName)&&ib(function(a){return a.innerHTML="<div class='a'></div><div class='a i'></div>",a.firstChild.className="i",2===a.getElementsByClassName("i").length}),c.getById=ib(function(a){return o.appendChild(a).id=u,!e.getElementsByName||!e.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if(typeof b.getElementById!==C&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(cb,db);return function(a){var c=typeof a.getAttributeNode!==C&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return typeof b.getElementsByTagName!==C?b.getElementsByTagName(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return typeof b.getElementsByClassName!==C&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(e.querySelectorAll))&&(ib(function(a){a.innerHTML="<select msallowclip=''><option selected=''></option></select>",a.querySelectorAll("[msallowclip^='']").length&&q.push("[*^$]="+M+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+M+"*(?:value|"+L+")"),a.querySelectorAll(":checked").length||q.push(":checked")}),ib(function(a){var b=e.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+M+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ib(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",Q)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===e||a.ownerDocument===v&&t(v,a)?-1:b===e||b.ownerDocument===v&&t(v,b)?1:k?K.call(k,a)-K.call(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,f=a.parentNode,g=b.parentNode,h=[a],i=[b];if(!f||!g)return a===e?-1:b===e?1:f?-1:g?1:k?K.call(k,a)-K.call(k,b):0;if(f===g)return kb(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?kb(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},e):n},fb.matches=function(a,b){return fb(a,null,null,b)},fb.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fb(b,n,null,[a]).length>0},fb.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fb.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&E.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fb.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fb.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fb.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fb.selectors={cacheLength:50,createPseudo:hb,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(cb,db),a[3]=(a[3]||a[4]||a[5]||"").replace(cb,db),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fb.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fb.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(cb,db).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+M+")"+a+"("+M+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||typeof a.getAttribute!==C&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fb.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fb.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?hb(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=K.call(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:hb(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?hb(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),!c.pop()}}),has:hb(function(a){return function(b){return fb(a,b).length>0}}),contains:hb(function(a){return function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:hb(function(a){return W.test(a||"")||fb.error("unsupported lang: "+a),a=a.replace(cb,db).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:nb(function(){return[0]}),last:nb(function(a,b){return[b-1]}),eq:nb(function(a,b,c){return[0>c?c+b:c]}),even:nb(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:nb(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:nb(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:nb(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=lb(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=mb(b);function pb(){}pb.prototype=d.filters=d.pseudos,d.setFilters=new pb,g=fb.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fb.error(a):z(a,i).slice(0)};function qb(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function rb(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function sb(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function tb(a,b,c){for(var d=0,e=b.length;e>d;d++)fb(a,b[d],c);return c}function ub(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function vb(a,b,c,d,e,f){return d&&!d[u]&&(d=vb(d)),e&&!e[u]&&(e=vb(e,f)),hb(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||tb(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ub(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ub(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?K.call(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ub(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):I.apply(g,r)})}function wb(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=rb(function(a){return a===b},h,!0),l=rb(function(a){return K.call(b,a)>-1},h,!0),m=[function(a,c,d){return!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d))}];f>i;i++)if(c=d.relative[a[i].type])m=[rb(sb(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return vb(i>1&&sb(m),i>1&&qb(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&wb(a.slice(i,e)),f>e&&wb(a=a.slice(e)),f>e&&qb(a))}m.push(c)}return sb(m)}function xb(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=G.call(i));s=ub(s)}I.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&fb.uniqueSort(i)}return k&&(w=v,j=t),r};return c?hb(f):f}return h=fb.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wb(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xb(e,d)),f.selector=a}return f},i=fb.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(cb,db),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(cb,db),ab.test(j[0].type)&&ob(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qb(j),!a)return I.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,ab.test(a)&&ob(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ib(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ib(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||jb("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ib(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||jb("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ib(function(a){return null==a.getAttribute("disabled")})||jb(L,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fb}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+Math.random()}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b) +},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ab=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bb=/<([\w:]+)/,cb=/<|&#?\w+;/,db=/<(?:script|style|link)/i,eb=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/^$|\/(?:java|ecma)script/i,gb=/^true\/(.*)/,hb=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ib={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ib.optgroup=ib.option,ib.tbody=ib.tfoot=ib.colgroup=ib.caption=ib.thead,ib.th=ib.td;function jb(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function kb(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function lb(a){var b=gb.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function mb(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function nb(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function ob(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pb(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=ob(h),f=ob(a),d=0,e=f.length;e>d;d++)pb(f[d],g[d]);if(b)if(c)for(f=f||ob(a),g=g||ob(h),d=0,e=f.length;e>d;d++)nb(f[d],g[d]);else nb(a,h);return g=ob(h,"script"),g.length>0&&mb(g,!i&&ob(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(cb.test(e)){f=f||k.appendChild(b.createElement("div")),g=(bb.exec(e)||["",""])[1].toLowerCase(),h=ib[g]||ib._default,f.innerHTML=h[1]+e.replace(ab,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=ob(k.appendChild(e),"script"),i&&mb(f),c)){j=0;while(e=f[j++])fb.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=jb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(ob(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&mb(ob(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(ob(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!db.test(a)&&!ib[(bb.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ab,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ob(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(ob(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&eb.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(ob(c,"script"),kb),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,ob(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,lb),j=0;g>j;j++)h=f[j],fb.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(hb,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qb,rb={};function sb(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function tb(a){var b=l,c=rb[a];return c||(c=sb(a,b),"none"!==c&&c||(qb=(qb||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qb[0].contentDocument,b.write(),b.close(),c=sb(a,b),qb.detach()),rb[a]=c),c}var ub=/^margin/,vb=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wb=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)};function xb(a,b,c){var d,e,f,g,h=a.style;return c=c||wb(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),vb.test(g)&&ub.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function yb(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var zb=/^(none|table(?!-c[ea]).+)/,Ab=new RegExp("^("+Q+")(.*)$","i"),Bb=new RegExp("^([+-])=("+Q+")","i"),Cb={position:"absolute",visibility:"hidden",display:"block"},Db={letterSpacing:"0",fontWeight:"400"},Eb=["Webkit","O","Moz","ms"];function Fb(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Eb.length;while(e--)if(b=Eb[e]+c,b in a)return b;return d}function Gb(a,b,c){var d=Ab.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Hb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ib(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wb(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xb(a,b,f),(0>e||null==e)&&(e=a.style[b]),vb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Hb(a,b,c||(g?"border":"content"),d,f)+"px"}function Jb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",tb(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fb(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Bb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fb(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xb(a,b,d)),"normal"===e&&b in Db&&(e=Db[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?zb.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Cb,function(){return Ib(a,b,d)}):Ib(a,b,d):void 0},set:function(a,c,d){var e=d&&wb(a);return Gb(a,c,d?Hb(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=yb(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xb,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ub.test(a)||(n.cssHooks[a+b].set=Gb)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wb(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Jb(this,!0)},hide:function(){return Jb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Kb(a,b,c,d,e){return new Kb.prototype.init(a,b,c,d,e)}n.Tween=Kb,Kb.prototype={constructor:Kb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Kb.propHooks[this.prop];return a&&a.get?a.get(this):Kb.propHooks._default.get(this)},run:function(a){var b,c=Kb.propHooks[this.prop];return this.pos=b=this.options.duration?n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Kb.propHooks._default.set(this),this}},Kb.prototype.init.prototype=Kb.prototype,Kb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Kb.propHooks.scrollTop=Kb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Kb.prototype.init,n.fx.step={};var Lb,Mb,Nb=/^(?:toggle|show|hide)$/,Ob=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pb=/queueHooks$/,Qb=[Vb],Rb={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Ob.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Ob.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sb(){return setTimeout(function(){Lb=void 0}),Lb=n.now()}function Tb(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ub(a,b,c){for(var d,e=(Rb[b]||[]).concat(Rb["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Vb(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||tb(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Nb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?tb(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ub(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xb(a,b,c){var d,e,f=0,g=Qb.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=Lb||Sb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:Lb||Sb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wb(k,j.opts.specialEasing);g>f;f++)if(d=Qb[f].call(j,a,k,j.opts))return d;return n.map(k,Ub,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xb,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Rb[c]=Rb[c]||[],Rb[c].unshift(b)},prefilter:function(a,b){b?Qb.unshift(a):Qb.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xb(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Tb(b,!0),a,d,e)}}),n.each({slideDown:Tb("show"),slideUp:Tb("hide"),slideToggle:Tb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(Lb=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),Lb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Mb||(Mb=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Mb),Mb=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Yb,Zb,$b=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Zb:Yb)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b)) +},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Zb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$b[b]||n.find.attr;$b[b]=function(a,b,d){var e,f;return d||(f=$b[b],$b[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$b[b]=f),e}});var _b=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_b.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ac=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ac," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ac," ").indexOf(b)>=0)return!0;return!1}});var bc=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bc,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cc=n.now(),dc=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var ec,fc,gc=/#.*$/,hc=/([?&])_=[^&]*/,ic=/^(.*?):[ \t]*([^\r\n]*)$/gm,jc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,kc=/^(?:GET|HEAD)$/,lc=/^\/\//,mc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,nc={},oc={},pc="*/".concat("*");try{fc=location.href}catch(qc){fc=l.createElement("a"),fc.href="",fc=fc.href}ec=mc.exec(fc.toLowerCase())||[];function rc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function sc(a,b,c,d){var e={},f=a===oc;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function tc(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function uc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function vc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:fc,type:"GET",isLocal:jc.test(ec[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":pc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?tc(tc(a,n.ajaxSettings),b):tc(n.ajaxSettings,a)},ajaxPrefilter:rc(nc),ajaxTransport:rc(oc),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=ic.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||fc)+"").replace(gc,"").replace(lc,ec[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=mc.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===ec[1]&&h[2]===ec[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(ec[3]||("http:"===ec[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),sc(nc,k,b,v),2===t)return v;i=k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!kc.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(dc.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=hc.test(d)?d.replace(hc,"$1_="+cc++):d+(dc.test(d)?"&":"?")+"_="+cc++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+pc+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=sc(oc,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=uc(k,v,f)),u=vc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var wc=/%20/g,xc=/\[\]$/,yc=/\r?\n/g,zc=/^(?:submit|button|image|reset|file)$/i,Ac=/^(?:input|select|textarea|keygen)/i;function Bc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||xc.test(a)?d(a,e):Bc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Bc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Bc(c,a[c],b,e);return d.join("&").replace(wc,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&Ac.test(this.nodeName)&&!zc.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(yc,"\r\n")}}):{name:b.name,value:c.replace(yc,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Cc=0,Dc={},Ec={0:200,1223:204},Fc=n.ajaxSettings.xhr();a.ActiveXObject&&n(a).on("unload",function(){for(var a in Dc)Dc[a]()}),k.cors=!!Fc&&"withCredentials"in Fc,k.ajax=Fc=!!Fc,n.ajaxTransport(function(a){var b;return k.cors||Fc&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Cc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Dc[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Ec[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Dc[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Gc=[],Hc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Gc.pop()||n.expando+"_"+cc++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Hc.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Hc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Hc,"$1"+e):b.jsonp!==!1&&(b.url+=(dc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Gc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Ic=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Ic)return Ic.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Jc=a.document.documentElement;function Kc(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Kc(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Jc;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Jc})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Kc(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=yb(k.pixelPosition,function(a,c){return c?(c=xb(a,b),vb.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Lc=a.jQuery,Mc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Mc),b&&a.jQuery===n&&(a.jQuery=Lc),n},typeof b===U&&(a.jQuery=a.$=n),n}); diff --git a/sigma.js-1.2.0/examples/load-external-gexf.html b/sigma.js-1.2.0/examples/load-external-gexf.html new file mode 100644 index 0000000..7cf8ab5 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-gexf.html @@ -0,0 +1,78 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.gexf/gexf-parser.js"></script> +<script src="../plugins/sigma.parsers.gexf/sigma.parsers.gexf.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * Here is just a basic example on how to properly display a graph + * exported from Gephi in the GEXF format. + * + * The plugin sigma.parsers.gexf can load and parse the GEXF graph file, + * and instantiate sigma when the graph is received. + * + * The object given as the second parameter is the base of the instance + * configuration object. The plugin will just add the "graph" key to it + * before the instanciation. + */ +sigma.parsers.gexf('data/arctic.gexf', { + container: 'graph-container' +}); +</script> diff --git a/sigma.js-1.2.0/examples/load-external-json-Metrik.html b/sigma.js-1.2.0/examples/load-external-json-Metrik.html new file mode 100644 index 0000000..d7829a9 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json-Metrik.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Metrik</title> +</head> <body> + + +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird. + */ +sigma.parsers.json('data/convertcsvcluster.json', { + container: 'graph-container', + settings:{zoomMin:0.0001,zoomMax:1,labelThreshold:8000,minNodeSize:0.1,maxNodeSize:50} +}); +</script> +</html> diff --git a/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie (2).html b/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie (2).html new file mode 100644 index 0000000..9a521bd --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie (2).html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Netzwerk</title> +</head> <body> + + +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird. + */ +sigma.parsers.json('data/convertcsvclusterTweetedWith.json', { + container: 'graph-container', + settings:{drawEdges:false, drawLabels:false} +}); +</script> +</html> diff --git a/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie - Kopie.html b/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie - Kopie.html new file mode 100644 index 0000000..b76edb2 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie - Kopie.html @@ -0,0 +1,146 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Netzwerk</title> +</head> <body> + + +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container" style="position:absolute;left:20px;top:100px; +width:1000px;height:400px; +background-color:#efefef;border:1px solid #ff0000;"></div> +</div> +<script> +/** + * Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird. + */ + + function renderNodes(){ +sigma.parsers.json('data/convertcsvclusterTweetedWith.json', { + container: 'graph-container', + settings:{nodeHoverExtremities: true,zoomMin:1,zoomMax:1} +}); +} +function zaznaczoneRadio(grupa){ + var button + for(var i = 0; i<grupa.length;i++){ + button = grupa[i] + if(button.checked){ + return button + } + } + } + +function renderEdges(){ + sigma.parsers.json('data/convertcsvclusterTweetedWith.json', { + container: 'graph-container', + settings:{drawNodes: false,zoomMin:1,zoomMax:1} + }); +} +function draw(){ + location.reload() + var zaznaczony = zaznaczoneRadio(document.forms.hashtags.elements.grupa1) + zaznaczony = zaznaczony.value + + switch(zaznaczony){ + case "#Trump2016": + renderEdges() + break + case "#Covefe": + location.reload() + renderNodes() + break + case "Iloczyn": + location.reload() + renderEdges() + break + case "Iloraz": + location.reload() + renderEdges() + break + case "Iloraz": + location.reload() + renderEdges() + break + } + } + +</script> + <body> + <div id="radio-container" style="position:absolute;left:20px;top:500px; +width:100px;height:200px; +background-color:#efefef;border:1px solid #ff0000;"> + <form name="hashtags" id="hashtags"> + <input type="radio" value="#Trump2016" name="grupa1" checked="true"> #Trump2016 + <br> + <input type="radio" value="#Covefe" name="grupa1"> #Covefe + <br> + <input type="radio" value="#ImWithYou" name="grupa1"> #ImWithYou + <br> + <input type="radio" value="#Debates2016" name="grupa1"> #Debates2016 + <br> + </form> + <input type="button" value="Draw!" onclick="draw()"> + </div> + </body> + +</html> diff --git a/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie.html b/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie.html new file mode 100644 index 0000000..f409aa4 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json-Netzwerk - Kopie.html @@ -0,0 +1,141 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Netzwerk</title> +</head> <body> + + +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container" style="position:absolute;left:20px;top:100px; +width:1000px;height:400px; +background-color:#efefef;border:1px solid #ff0000;"></div> +</div> +<script> +/** + * Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird. + */ + + +sigma.parsers.json('data/convertcsvclusterTweetedWith.json', { + container: 'graph-container', + settings:{nodeHoverExtremities: true,drawEdges: false,zoomMin:1,zoomMax:1} +}); + +function zaznaczoneRadio(grupa){ + var button + for(var i = 0; i<grupa.length;i++){ + button = grupa[i] + if(button.checked){ + return button + } + } + } + +function renderEdges(){ + sigma.parsers.json('data/convertcsvclusterTweetedWith.json', { + container: 'graph-container', + settings:{drawNodes: false,zoomMin:1,zoomMax:1} + }); +} +function draw(){ + var zaznaczony = zaznaczoneRadio(document.forms.hashtags.elements.grupa1) + zaznaczony = zaznaczony.value + + switch(zaznaczony){ + case "#Trump2016": + renderEdges() + break + case "Roznica": + renderEdges() + break + case "Iloczyn": + renderEdges() + break + case "Iloraz": + renderEdges() + break + case "Iloraz": + renderEdges() + break + } + } + +</script> + <body> + <div id="radio-container" style="position:absolute;left:20px;top:500px; +width:100px;height:200px; +background-color:#efefef;border:1px solid #ff0000;"> + <form name="hashtags" id="hashtags"> + <input type="radio" value="#Trump2016" name="grupa1" checked="true"> #Trump2016 + <br> + <input type="radio" value="#Covefe" name="grupa1"> #Covefe + <br> + <input type="radio" value="#ImWithYou" name="grupa1"> #ImWithYou + <br> + <input type="radio" value="#Debates2016" name="grupa1"> #Debates2016 + <br> + </form> + <input type="button" value="Draw!" onclick="draw()"> + </div> + </body> + +</html> diff --git a/sigma.js-1.2.0/examples/load-external-json-Netzwerk.html b/sigma.js-1.2.0/examples/load-external-json-Netzwerk.html new file mode 100644 index 0000000..faa9e9d --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json-Netzwerk.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Netzwerk</title> +</head> <body> + + +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird. + */ +sigma.parsers.json('data/convertcsvclusterTweetedWith.json', { + container: 'graph-container', + settings:{zoomMin:0.0001,zoomMax:1,labelThreshold:8000,minNodeSize:0.1,maxNodeSize:50,edgeColor:"default",minEdgeSize:0.001,maxEdgeSize:50} +}); +</script> +</html> diff --git a/sigma.js-1.2.0/examples/load-external-json-clusters.html b/sigma.js-1.2.0/examples/load-external-json-clusters.html new file mode 100644 index 0000000..68cb2a7 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json-clusters.html @@ -0,0 +1,79 @@ +<!DOCTYPE html> +<html> +<head> +<meta charset="utf-8"> +<title>Metrik</title> +</head> <body> + + +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * Dieses Skript wurde mit dem Beispiel aus der Sigmajs Biblothek gebaut. Wir können eine json Datei importieren die dann zu einem Graphen wird. + */ +sigma.parsers.json('data/convertcsvcluster.json', { + container: 'graph-container', + settings:{enableHovering: false} +}); +</script> +</html> diff --git a/sigma.js-1.2.0/examples/load-external-json.html b/sigma.js-1.2.0/examples/load-external-json.html new file mode 100644 index 0000000..928ed11 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-external-json.html @@ -0,0 +1,80 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * Here is just a basic example on how to properly display a graph + * exported from Gephi as a JSON file, with the JSON Exporter plugin from + * the Oxford Internet Institute: + * + * > https://marketplace.gephi.org/plugin/json-exporter/ + * + * The plugin sigma.parsers.json can load and parse the JSON graph file, + * and instantiate sigma when the graph is received. + * + * The object given as the second parameter is the base of the instance + * configuration object. The plugin will just add the "graph" key to it + * before the instanciation. + */ +sigma.parsers.json('data/arctic.json', { + container: 'graph-container' +}); +</script> diff --git a/sigma.js-1.2.0/examples/load-neo4j-cypher-query.html b/sigma.js-1.2.0/examples/load-neo4j-cypher-query.html new file mode 100644 index 0000000..fb201f8 --- /dev/null +++ b/sigma.js-1.2.0/examples/load-neo4j-cypher-query.html @@ -0,0 +1,99 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.parsers.json/sigma.parsers.json.js"></script> +<script src="../plugins/sigma.neo4j.cypher/sigma.neo4j.cypher.js"></script> + +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> + +<script type="application/javascript"> + /** + * Here is just a basic example on how to properly display a neo4j cypher query. + * + * The plugin sigma.neo4j.cypher can load a cypher query, parse the JSON response, + * and instantiate sigma when the response is received. + * + * It based on the json parser (that's why its must be loaded). + */ + sigma.neo4j.cypher( + { url: 'http://localhost:7474', user: 'neo4j', password: 'admin' }, + 'MATCH (n) OPTIONAL MATCH (n)-[r]->(m) RETURN n,r,m LIMIT 100', + { container: 'graph-container' } , + function(s) { + console.log('Number of nodes :'+ s.graph.nodes().length); + console.log('Number of edges :'+ s.graph.edges().length); + } + ); + + // Calling neo4j to get all its relationship type + sigma.neo4j.getTypes( + { url: 'http://localhost:7474', user:'neo4j', password:'admin' }, + function(types) { + console.log("Relationship types" + types); + } + ); + + // Calling neo4j to get all its node label + sigma.neo4j.getLabels( + { url: 'http://localhost:7474', user:'neo4j', password:'admin' }, + function(labels) { + console.log("Node labels" + labels); + } + ); +</script> diff --git a/sigma.js-1.2.0/examples/neighborhoods-plugin.html b/sigma.js-1.2.0/examples/neighborhoods-plugin.html new file mode 100644 index 0000000..c50e994 --- /dev/null +++ b/sigma.js-1.2.0/examples/neighborhoods-plugin.html @@ -0,0 +1,153 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.layout.forceAtlas2/worker.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/supervisor.js"></script> +<script src="../plugins/sigma.plugins.neighborhoods/sigma.plugins.neighborhoods.js"></script> +<div id="container"> + <style> + #graph-container { + height: 400px; + background: #000; + } + </style> + <div class="buttons"> + <button id="toggle-layout">Stop layout</button> + <button id="restart-camera">Restart camera</button> + <div id="graph-container"></div> + </div> +</div> +<script> +/** + * This example shows how to explore the neighborhoods inside a graph, + * with a simple example plugin. + * + * Basically, a graph is loaded into a kind of database mockup (the + * sigma.plugins.neighborhoods plugin) that provides a method to retrieve + * the neighborhood (or ego-centered network) of a specified node. Then, + * a sigma instance will display only this graph, instead of the global + * one. + * + * And also, if you are looking for an exemple of graph custom method or + * how to use the graph model outside of sigma, this is the place. + */ +var s = new sigma({ + container: 'graph-container', + settings: { + defaultLabelColor: '#fff', + sideMargin: 2 + } + }), + db = new sigma.plugins.neighborhoods(); + +document.getElementById('toggle-layout').addEventListener('click', function() { + if ((s.supervisor || {}).running) { + s.killForceAtlas2(); + document.getElementById('toggle-layout').innerHTML = 'Start layout'; + } else { + s.startForceAtlas2({worker: true}); + document.getElementById('toggle-layout').innerHTML = 'Stop layout'; + } +}); +document.getElementById('restart-camera').addEventListener('click', function() { + s.camera.goTo({ + x: 0, + y: 0, + angle: 0, + ratio: 1 + }); +}); + +db.load('data/arctic.json', function() { + // Out function to initialize sigma on a new neighborhood: + function refreshGraph(centerNodeId) { + // First, let's stop the ForceAtlas2 algorithm: + s.killForceAtlas2(); + + // Restart the camera: + s.camera.goTo({ + x: 0, + y: 0, + angle: 0, + ratio: 1 + }); + + // Empty the graph: + s.graph.clear(); + + // Read the graph: + s.graph.read(db.neighborhood(centerNodeId)); + + // Randomize the positions of the nodes and initialize their size: + var i, + nodes = s.graph.nodes(), + len = nodes.length; + + for (i = 0; i < len; i++) { + nodes[i].x = Math.cos(Math.PI * 2 * i / len); + nodes[i].y = Math.sin(Math.PI * 2 * i / len); + } + + // Refresh the display: + s.refresh(); + + // Start the ForceAtlas2 algorithm: + s.startForceAtlas2({worker: true}); + document.getElementById('toggle-layout').innerHTML = 'Stop layout'; + } + + // Let's now bind this new function to the "clickNode" event: + s.bind('clickNode', function(event) { + if (!event.data.node.center) + refreshGraph(event.data.node.id); + }); + + // And finally, let's initialize the first graph: + refreshGraph('1'); +}); +</script> diff --git a/sigma.js-1.2.0/examples/noverlap.html b/sigma.js-1.2.0/examples/noverlap.html new file mode 100644 index 0000000..5068f3a --- /dev/null +++ b/sigma.js-1.2.0/examples/noverlap.html @@ -0,0 +1,154 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script src="../plugins/sigma.plugins.animate/sigma.plugins.animate.js"></script> +<script src="../plugins/sigma.layout.noverlap/sigma.layout.noverlap.js"></script> +<script> +/** + * Just a simple example to show how to use the sigma.layout.noverlap + * plugin: + * + * A random graph is generated. Noverlap is then run. + */ +var i, + s, + o, + N = 5000, + E = 500, + C = 5, + d = 0.5, + cs = [], + g = { + nodes: [], + edges: [] + }; + +// Generate the graph: +for (i = 0; i < C; i++) + cs.push({ + id: i, + nodes: [], + color: '#' + ( + Math.floor(Math.random() * 16777215).toString(16) + '000000' + ).substr(0, 6) + }); + +for (i = 0; i < N; i++) { + o = cs[(Math.random() * C) | 0]; + g.nodes.push({ + id: 'n' + i, + label: 'Node' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: o.color + }); + o.nodes.push('n' + i); +} + +for (i = 0; i < E; i++) { + if (Math.random() < 1 - d) + g.edges.push({ + id: 'e' + i, + source: 'n' + ((Math.random() * N) | 0), + target: 'n' + ((Math.random() * N) | 0) + }); + else { + o = cs[(Math.random() * C) | 0] + g.edges.push({ + id: 'e' + i, + source: o.nodes[(Math.random() * o.nodes.length) | 0], + target: o.nodes[(Math.random() * o.nodes.length) | 0] + }); + } +} + +s = new sigma({ + graph: g, + container: 'graph-container', + settings: { + minNodeSize: 4, + maxNodeSize: 2, + minEdgeSize: 1, + maxEdgeSize: 1 + } +}); + +// Configure the noverlap layout: +var noverlapListener = s.configNoverlap({ + nodeMargin: 0.1, + scaleNodes: 1.05, + gridSize: 75, + easing: 'quadraticInOut', // animation transition function + duration: 10000 // animation duration. Long here for the purposes of this example only +}); +// Bind the events: +noverlapListener.bind('start stop interpolate', function(e) { + console.log(e.type); + if(e.type === 'start') { + console.time('noverlap'); + } + if(e.type === 'interpolate') { + console.timeEnd('noverlap'); + } +}); +// Start the layout: +s.startNoverlap(); +</script> diff --git a/sigma.js-1.2.0/examples/parallel-edges.html b/sigma.js-1.2.0/examples/parallel-edges.html new file mode 100644 index 0000000..814d38a --- /dev/null +++ b/sigma.js-1.2.0/examples/parallel-edges.html @@ -0,0 +1,111 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.renderers.parallelEdges/utils.js"></script> +<script src="../plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curve.js"></script> +<script src="../plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curve.js"></script> +<script src="../plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curvedArrow.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This example shows the available edge label renderers for the canvas + * renderer. + */ +var i, + s, + N = 2, + E = 10, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + label: 'Edge ' + i, + source: 'n0', + target: 'n1', + size: Math.random(), + color: '#ccc', + type: 'curvedArrow', + count: i + }); + +// Instantiate sigma: +s = new sigma({ + graph: g, + renderer: { + container: document.getElementById('graph-container'), + type: 'canvas' + } +}); +</script> diff --git a/sigma.js-1.2.0/examples/plugin-customEdgeShapes.html b/sigma.js-1.2.0/examples/plugin-customEdgeShapes.html new file mode 100644 index 0000000..b3b56b2 --- /dev/null +++ b/sigma.js-1.2.0/examples/plugin-customEdgeShapes.html @@ -0,0 +1,142 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dashed.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dotted.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.parallel.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.tapered.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dashed.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dotted.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.parallel.js"></script> +<script src="../plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.tapered.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +// generate a random graph +var i, + s, + img, + N = 10, + E = 50, + g = { + nodes: [], + edges: [] + }, + urls = [ + 'img/img1.png', + 'img/img2.png', + 'img/img3.png', + 'img/img4.png' + ], + colors = [ + '#617db4', + '#668f3c', + '#c6583e', + '#b956af' + ]; + +// Generate a random graph, going through the different edge shapes +for (i = 0; i < N; i++) { + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: colors[Math.floor(Math.random() * colors.length)] + }); +} + +for (i = 0; i < E; i++) { + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + type: [ + 'line', + 'curve', + 'arrow', + 'curvedArrow', + 'dashed', + 'dotted', + 'parallel', + 'tapered' + ][Math.round(Math.random()*8)], + size: Math.random() + }); +} + +s = new sigma({ + graph: g, + renderer: { + // IMPORTANT: + // This works only with the canvas renderer, so the + // renderer type set as "canvas" is necessary here. + container: document.getElementById('graph-container'), + type: 'canvas' + }, + settings: { + minNodeSize: 1, + maxNodeSize: 10, + minEdgeSize: 0.1, + maxEdgeSize: 2, + enableEdgeHovering: true, + edgeHoverSizeRatio: 2 + } +}); +</script> diff --git a/sigma.js-1.2.0/examples/plugin-customShapes.html b/sigma.js-1.2.0/examples/plugin-customShapes.html new file mode 100644 index 0000000..6eb2874 --- /dev/null +++ b/sigma.js-1.2.0/examples/plugin-customShapes.html @@ -0,0 +1,178 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.renderers.customShapes/shape-library.js"></script> +<script src="../plugins/sigma.renderers.customShapes/sigma.renderers.customShapes.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * IMPORTANT: This only works with the canvas renderer. TBD in the future + * will also support the WebGL renderer. + */ +sigma.utils.pkg('sigma.canvas.nodes'); + +// generate a random graph +var i, + s, + img, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }, + urls = [ + 'img/img1.png', + 'img/img2.png', + 'img/img3.png', + 'img/img4.png' + ], + colors = [ + '#617db4', + '#668f3c', + '#c6583e', + '#b956af' + ]; + +// Generate a random graph, going through the different shapes +for (i = 0; i < N; i++) { + var node = { + id: 'n' + i, + label: 'Node ' + i, + // note the ShapeLibrary.enumerate() returns the names of all + // supported renderers + type: ShapeLibrary.enumerate().map(function(s){return s.name;})[Math.round(Math.random()*5)], + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: colors[Math.floor(Math.random() * colors.length)], + borderColor: colors[Math.floor(Math.random()* colors.length)] + }; + + if(Math.random()>0.75 && node.type!='pacman') { // ~0.75 of the (non-pacman)shapes will have an image + node.image = { + url: urls[Math.floor(Math.random() * urls.length)], + // scale/clip are ratio values applied on top of 'size' + scale: 1.3, + clip: 0.85 + } + } + + switch(node.type) { + case "equilateral": + node.equilateral = { + rotate: Math.random()*45, // random rotate up to 45 deg + numPoints: Math.round(5 + Math.random()*3) + } + break; + case "star": + node.star = { + innerRatio: 0.4 + Math.random()*0.2, + numPoints: Math.round(4 + Math.random()*3) + } + if(node.image) { + // note clip/scale are ratio values. So we fit them to the inner ratio of the star shape + node.image.clip = node.star.innerRatio *0.95; + node.image.scale = node.star.innerRatio *1.2; + } + break; + case "square": + case "diamond": + if(node.image) { + // note clip/scale are ratio values. So we fit them to the borders of the square shape + node.image.clip = 0.7; + } + break; + case "circle": + break; + case "cross": + node.cross = { + lineWeight: Math.round(Math.random() * 5) + } + break; + } + g.nodes.push(node); +} + + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random() + }); + +s = new sigma({ + graph: g, + renderer: { + // IMPORTANT: + // This works only with the canvas renderer, so the + // renderer type set as "canvas" is necessary here. + container: document.getElementById('graph-container'), + type: 'canvas' + }, + settings: { + minNodeSize: 8, + maxNodeSize: 16, + } +}); +CustomShapes.init(s); +s.refresh(); +</script> diff --git a/sigma.js-1.2.0/examples/plugin-edgeDots.html b/sigma.js-1.2.0/examples/plugin-edgeDots.html new file mode 100644 index 0000000..399d50e --- /dev/null +++ b/sigma.js-1.2.0/examples/plugin-edgeDots.html @@ -0,0 +1,111 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurve.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> + /** + * This example shows how the edgeDots plugin can be used to display dots + * on the edges near the nodes in the graph. + */ + var i, + s, + N = 2, + E = 1, + g = { + nodes: [], + edges: [] + }; + + // Generate a random graph: + for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + // Some colors to use on the dots + var colors = ["#ff0000", "#00ff00", "#0000ff"]; + for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + label: 'Edge ' + i, + source: 'n0', + target: 'n1', + size: Math.random(), + color: '#ccc', + type: 'curve', + dotOffset:4, + dotSize:1.2, + sourceDotColor:colors[i%colors.length], + targetDotColor:colors[(i+1)%colors.length] + }); + + // Instantiate sigma: + s = new sigma({ + graph: g, + renderer: { + container: document.getElementById('graph-container'), + type: 'canvas' + } + }); +</script> diff --git a/sigma.js-1.2.0/examples/plugin-snapshot.html b/sigma.js-1.2.0/examples/plugin-snapshot.html new file mode 100644 index 0000000..9f188f3 --- /dev/null +++ b/sigma.js-1.2.0/examples/plugin-snapshot.html @@ -0,0 +1,111 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.renderers.snapshot/sigma.renderers.snapshot.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This is a basic example on how to instantiate sigma. A random graph is + * generated and stored in the "graph" variable, and then sigma is instantiated + * directly with the graph. + * + * The simple instance of sigma is enough to make it render the graph on the on + * the screen, since the graph is given directly to the constructor. + */ +var i, + s, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: '#ccc' + }); + +// sigma.renderers.def = sigma.renderers.canvas; + +// Instantiate sigma: +s = new sigma({ + graph: g, + container: 'graph-container' +}); + +setTimeout(function() { + console.log(s.renderers[0].snapshot({format: 'png', background: 'white', filename: 'my-graph.png', labels: false})); +}, 1000); +</script> diff --git a/sigma.js-1.2.0/examples/scrollable-page.html b/sigma.js-1.2.0/examples/scrollable-page.html new file mode 100644 index 0000000..dc90b14 --- /dev/null +++ b/sigma.js-1.2.0/examples/scrollable-page.html @@ -0,0 +1,114 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + body { + margin: 0; + } + #graph-container { + top: 30%; + bottom: 30%; + left: 50px; + right: 50px; + position: absolute; + background: #fff; + } + #container { + position: relative; + top: 0; + left: 0; + right: 0; + height: 300%; + background: #ccc; + } + </style> + <div>Scroll down to see the graph</div> + <div id="graph-container"></div> +</div> +<script> +/** + * This example copies basic.html, but with the sigma container somewhere in a + * page such that the user has to scroll to manipulate it. This example is here + * to facilitate testing sigma integration in real-life web pages. + */ +var i, + s, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: '#ccc' + }); + +// Instantiate sigma: +s = new sigma({ + graph: g, + container: 'graph-container' +}); +</script> diff --git a/sigma.js-1.2.0/examples/share-camera.html b/sigma.js-1.2.0/examples/share-camera.html new file mode 100644 index 0000000..fe592dc --- /dev/null +++ b/sigma.js-1.2.0/examples/share-camera.html @@ -0,0 +1,152 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #webgl { + top: 0; + bottom: 0; + left: 0; + right: 50%; + color: #fff; + background: #000; + position: absolute; + } + + #canvas { + top: 0; + bottom: 0; + left: 50%; + right: 0; + color: #000; + background: #fff; + position: absolute; + } + + .label { + position: absolute; + top: 10px; + left: 10px; + z-index: 1; + font-family: sans-serif; + } + </style> + <div id="webgl"> + <div class="label">WebGL renderer</div> + </div> + <div id="canvas"> + <div class="label">Canvas renderer</div> + </div> +</div> +<script> +/** + * This example spawns two different renderers with the same camera. When + * the users will drag any of the renderers, it will move the other one + * as well. + * + * Also, settings are different fo both renderers. + * + * It might look a bit useless (I prefer overkill...), but it makes + * possible to develop renderers linked by their camera, for example to + * implement a minimap. + */ + +var i, + N = 100, + E = 500, + s = new sigma(), + cam = s.addCamera(); + +// Generate a random graph: +for (i = 0; i < N; i++) + s.graph.addNode({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: 4 + (3 * Math.random()) | 0 + }); + +for (i = 0; i < E; i++) + s.graph.addEdge({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: 1 + Math.random() + }); + +// Initialize two distinct renderers, each with its own settings: +s.addRenderer({ + container: document.getElementById('webgl'), + type: 'webgl', + camera: cam, + settings: { + defaultLabelColor: '#fff', + defaultNodeColor: '#999', + defaultEdgeColor: '#333', + edgeColor: 'default' + } +}); + +s.addRenderer({ + container: document.getElementById('canvas'), + type: 'canvas', + camera: cam, + settings: { + batchEdgesDrawing: true, + hideEdgesOnMove: true, + defaultLabelColor: '#000', + defaultNodeColor: '#666', + defaultEdgeColor: '#999', + edgeColor: 'default' + } +}); + +// Refresh the instance to refresh the new renderers: +s.refresh(); +</script> diff --git a/sigma.js-1.2.0/examples/svg-export.html b/sigma.js-1.2.0/examples/svg-export.html new file mode 100644 index 0000000..b25a007 --- /dev/null +++ b/sigma.js-1.2.0/examples/svg-export.html @@ -0,0 +1,142 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.layout.forceAtlas2/worker.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/supervisor.js"></script> +<script src="../plugins/sigma.exporters.svg/sigma.exporters.svg.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + } + #layout { + top: 10px; + left: 10px; + position: fixed; + } + #export { + top: 40px; + left: 10px; + position: fixed; + } + </style> + <div id="graph-container"></div> + <button id="layout" type="button">Layout</button> + <button id="export" type="export">Export</button> +</div> +<script> +/** + * This is a basic example on how to instantiate sigma. A random graph is + * generated and stored in the "graph" variable, and then sigma is instantiated + * directly with the graph. + * + * The simple instance of sigma is enough to make it render the graph on the on + * the screen, since the graph is given directly to the constructor. + */ +var i, + s, + N = 200, + E = 1000, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: ['#666', '#abc', '#eee', '#ff00aa'][Math.random() * 4 | 0] + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: ['#666', '#abc', '#eee', '#ff00aa'][Math.random() * 4 | 0] + }); + +// Instantiate sigma: +s = new sigma({ + graph: g +}); + +// Adding a canvas renderer +s.addRenderer({ + container: 'graph-container', + type: 'canvas' +}); + +s.refresh(); + +// Listeners +var force = false; +document.getElementById('layout').onclick = function() { + if (!force) + s.startForceAtlas2({slowDown: 10}); + else + s.stopForceAtlas2(); + force = !force; +}; + +document.getElementById('export').onclick = function() { + console.log('exporting...'); + var output = s.toSVG({download: true, filename: 'mygraph.svg', size: 1000}); + // console.log(output); +}; +</script> diff --git a/sigma.js-1.2.0/examples/svg-freestyle-renderer.html b/sigma.js-1.2.0/examples/svg-freestyle-renderer.html new file mode 100644 index 0000000..236337a --- /dev/null +++ b/sigma.js-1.2.0/examples/svg-freestyle-renderer.html @@ -0,0 +1,166 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<script src="../plugins/sigma.plugins.neighborhoods/sigma.plugins.neighborhoods.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/supervisor.js"></script> +<script src="../plugins/sigma.layout.forceAtlas2/worker.js"></script> +<script src="lib/jquery-2.1.1.min.js"></script> +<div id="container"> + <style> + #graph-container { + top: 0; + bottom: 0; + left: 0; + right: 0; + position: absolute; + background-color: #455660; + } + .sigma-edge { + stroke: #14191C; + } + .sigma-node { + fill: green; + stroke: #14191C; + stroke-width: 2px; + } + .sigma-node:hover { + fill: blue; + } + .muted { + fill-opacity: 0.1; + stroke-opacity: 0.1; + } + </style> + <div id="graph-container"></div> +</div> +<script> +/** + * This is a basic example of how one could spawn a freestyle svg renderer + * to achieve his/her goal through css and jQuery to display fancy graphs + * but somewhat less performant. + */ +var i, + s, + N = 100, + E = 500, + g = { + nodes: [], + edges: [] + }; + +// Generate a random graph: +for (i = 0; i < N; i++) + g.nodes.push({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: Math.random(), + color: '#666' + }); + +for (i = 0; i < E; i++) + g.edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: Math.random(), + color: '#ccc' + }); + +// Instantiate sigma: +s = new sigma({ + graph: g, + settings: { + enableHovering: false + } +}); + +s.addRenderer({ + id: 'main', + type: 'svg', + container: document.getElementById('graph-container'), + freeStyle: true +}); + +s.refresh(); + +// Binding silly interactions +function mute(node) { + if (!~node.getAttribute('class').search(/muted/)) + node.setAttributeNS(null, 'class', node.getAttribute('class') + ' muted'); +} + +function unmute(node) { + node.setAttributeNS(null, 'class', node.getAttribute('class').replace(/(\s|^)muted(\s|$)/g, '$2')); +} + +$('.sigma-node').click(function() { + + // Muting + $('.sigma-node, .sigma-edge').each(function() { + mute(this); + }); + + // Unmuting neighbors + var neighbors = s.graph.neighborhood($(this).attr('data-node-id')); + neighbors.nodes.forEach(function(node) { + unmute($('[data-node-id="' + node.id + '"]')[0]); + }); + + neighbors.edges.forEach(function(edge) { + unmute($('[data-edge-id="' + edge.id + '"]')[0]); + }); +}); + +s.bind('clickStage', function() { + $('.sigma-node, .sigma-edge').each(function() { + unmute(this); + }); +}); +</script> diff --git a/sigma.js-1.2.0/examples/svg-renderer.html b/sigma.js-1.2.0/examples/svg-renderer.html new file mode 100644 index 0000000..d055459 --- /dev/null +++ b/sigma.js-1.2.0/examples/svg-renderer.html @@ -0,0 +1,150 @@ +<!-- START SIGMA IMPORTS --> +<script src="../src/sigma.core.js"></script> +<script src="../src/conrad.js"></script> +<script src="../src/utils/sigma.utils.js"></script> +<script src="../src/utils/sigma.polyfills.js"></script> +<script src="../src/sigma.settings.js"></script> +<script src="../src/classes/sigma.classes.dispatcher.js"></script> +<script src="../src/classes/sigma.classes.configurable.js"></script> +<script src="../src/classes/sigma.classes.graph.js"></script> +<script src="../src/classes/sigma.classes.camera.js"></script> +<script src="../src/classes/sigma.classes.quad.js"></script> +<script src="../src/classes/sigma.classes.edgequad.js"></script> +<script src="../src/captors/sigma.captors.mouse.js"></script> +<script src="../src/captors/sigma.captors.touch.js"></script> +<script src="../src/renderers/sigma.renderers.canvas.js"></script> +<script src="../src/renderers/sigma.renderers.webgl.js"></script> +<script src="../src/renderers/sigma.renderers.svg.js"></script> +<script src="../src/renderers/sigma.renderers.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> +<script src="../src/renderers/webgl/sigma.webgl.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edges.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.def.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curve.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.arrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js"></script> +<script src="../src/renderers/canvas/sigma.canvas.extremities.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.utils.js"></script> +<script src="../src/renderers/svg/sigma.svg.nodes.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.edges.curve.js"></script> +<script src="../src/renderers/svg/sigma.svg.labels.def.js"></script> +<script src="../src/renderers/svg/sigma.svg.hovers.def.js"></script> +<script src="../src/middlewares/sigma.middlewares.rescale.js"></script> +<script src="../src/middlewares/sigma.middlewares.copy.js"></script> +<script src="../src/misc/sigma.misc.animation.js"></script> +<script src="../src/misc/sigma.misc.bindEvents.js"></script> +<script src="../src/misc/sigma.misc.bindDOMEvents.js"></script> +<script src="../src/misc/sigma.misc.drawHovers.js"></script> +<!-- END SIGMA IMPORTS --> +<div id="container"> + <style> + #svg { + top: 0; + bottom: 0; + left: 0; + right: 50%; + color: #fff; + background: #000; + position: absolute; + } + + #canvas { + top: 0; + bottom: 0; + left: 50%; + right: 0; + color: #000; + background: #fff; + position: absolute; + } + + .label { + position: absolute; + top: 10px; + left: 10px; + z-index: 1; + font-family: sans-serif; + } + </style> + <div id="svg"> + <div class="label">SVG renderer</div> + </div> + <div id="canvas"> + <div class="label">Canvas renderer</div> + </div> +</div> +<script> +/** + * This is a basic example of how a classic svg renderer renders the exact same way + * than its canvas counterparts. + */ + +var i, + N = 100, + E = 500, + s = new sigma(), + cam = s.addCamera(); + +// Generate a random graph: +for (i = 0; i < N; i++) + s.graph.addNode({ + id: 'n' + i, + label: 'Node ' + i, + x: Math.random(), + y: Math.random(), + size: 4 + (3 * Math.random()) | 0 + }); + +for (i = 0; i < E; i++) + s.graph.addEdge({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: 1 + Math.random() + }); + +// Initialize two distinct renderers, each with its own settings: +s.addRenderer({ + container: document.getElementById('svg'), + type: 'svg', + camera: cam, + settings: { + hideEdgesOnMove: true, + defaultLabelColor: '#fff', + defaultNodeColor: '#999', + defaultEdgeColor: '#333', + edgeColor: 'default' + } +}); + +s.addRenderer({ + container: document.getElementById('canvas'), + type: 'canvas', + camera: cam, + settings: { + batchEdgesDrawing: true, + hideEdgesOnMove: true, + defaultLabelColor: '#000', + defaultNodeColor: '#666', + defaultEdgeColor: '#999', + edgeColor: 'default' + } +}); + +// s.bind(s.events, function(e) { +// console.log(e); +// }); + +// Refresh the instance to refresh the new renderers: +s.refresh(); +</script> diff --git a/sigma.js-1.2.0/package.json b/sigma.js-1.2.0/package.json new file mode 100644 index 0000000..b74c660 --- /dev/null +++ b/sigma.js-1.2.0/package.json @@ -0,0 +1,34 @@ +{ + "name": "sigma", + "version": "1.2.0", + "description": "A JavaScript library dedicated to graph drawing.", + "homepage": "http://sigmajs.org", + "bugs": "http://github.com/jacomyal/sigma.js/issues", + "repository": { + "type": "git", + "url": "http://github.com/jacomyal/sigma.js.git" + }, + "license": "MIT", + "main": "build/sigma.require.js", + "devDependencies": { + "grunt-cli": "^0.1.13", + "grunt": "~0.4.5", + "grunt-contrib-qunit": "~0.5.2", + "grunt-contrib-uglify": "~0.5.1", + "grunt-closure-linter": "~0.1.4", + "grunt-contrib-jshint": "~0.10.0", + "grunt-contrib-concat": "~0.5.0", + "load-grunt-tasks": "~0.6.0", + "grunt-sed": "~0.1.1", + "grunt-zip": "~0.15.0", + "http-server": "~0.9.0", + "grunt-grunt": "^0.2.2", + "uglify-js": "^2.4.15" + }, + "scripts": { + "start": "http-server -p 8000", + "test": "grunt travis", + "build": "grunt build", + "prepublish": "grunt npmPrePublish" + } +} diff --git a/sigma.js-1.2.0/plugins/sigma.exporters.svg/README.md b/sigma.js-1.2.0/plugins/sigma.exporters.svg/README.md new file mode 100644 index 0000000..bc188e6 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.exporters.svg/README.md @@ -0,0 +1,41 @@ +sigma.exporters.svg +======================== + +Plugin by [Guillaume Plique](https://github.com/Yomguithereal). + +--- + +This plugin aims at providing an easy way to export a graph as a SVG file. + +*Basic usage* + +```js +// Retrieving the svg file as a string +var svgString = sigInst.toSVG(); + +// Dowload the svg file +sigInst.toSVG({download: true, filename: 'my-fancy-graph.svg'}); +``` + +*Complex usage* + +```js +sigInst.toSVG({ + labels: true, + classes: false, + data: true, + download: true, + filename: 'hello.svg' +}); +``` + +*Parameters* + +* **size** *?integer* [`1000`]: size of the svg canvas in pixels. +* **height** *?integer* [`1000`]: height of the svg canvas in pixels (useful only if you want a height different from the width). +* **width** *?integer* [`1000`]: width of the svg canvas in pixels (useful only if you want a width different from the height). +* **classes** *?boolean* [`true`]: should the exporter try to optimize the svg document by creating classes? +* **labels** *?boolean* [`false`]: should the labels be included in the svg file? +* **data** *?boolean* [`false`]: should additional data (node ids for instance) be included in the svg file? +* **download** *?boolean* [`false`]: should the exporter make the browser download the svg file? +* **filename** *?string* [`'graph.svg'`]: filename of the file to download. diff --git a/sigma.js-1.2.0/plugins/sigma.exporters.svg/sigma.exporters.svg.js b/sigma.js-1.2.0/plugins/sigma.exporters.svg/sigma.exporters.svg.js new file mode 100644 index 0000000..9963843 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.exporters.svg/sigma.exporters.svg.js @@ -0,0 +1,224 @@ +;(function(undefined) { + 'use strict'; + + /** + * Sigma SVG Exporter + * =================== + * + * This plugin is designed to export a graph to a svg file that can be + * downloaded or just used elsewhere. + * + * Author: Guillaume Plique (Yomguithereal) + * Version: 0.0.1 + */ + + // Terminating if sigma were not to be found + if (typeof sigma === 'undefined') + throw 'sigma.renderers.snapshot: sigma not in scope.'; + + + /** + * Polyfills + */ + var URL = this.URL || this.webkitURL || this; + + + /** + * Utilities + */ + function createBlob(data) { + return new Blob( + [data], + {type: 'image/svg+xml;charset=utf-8'} + ); + } + + function download(string, filename) { + + // Creating blob href + var blob = createBlob(string); + + // Anchor + var o = {}; + o.anchor = document.createElement('a'); + o.anchor.setAttribute('href', URL.createObjectURL(blob)); + o.anchor.setAttribute('download', filename); + + // Click event + var event = document.createEvent('MouseEvent'); + event.initMouseEvent('click', true, false, window, 0, 0, 0 ,0, 0, + false, false, false, false, 0, null); + + URL.revokeObjectURL(blob); + + o.anchor.dispatchEvent(event); + delete o.anchor; + } + + + /** + * Defaults + */ + var DEFAULTS = { + size: '1000', + width: '1000', + height: '1000', + classes: true, + labels: true, + data: false, + download: false, + filename: 'graph.svg' + }; + + var XMLNS = 'http://www.w3.org/2000/svg'; + + + /** + * Subprocesses + */ + function optimize(svg, prefix, params) { + var nodeColorIndex = {}, + edgeColorIndex = {}, + count = 0, + color, + style, + styleText = '', + f, + i, + l; + + // Creating style tag if needed + if (params.classes) { + style = document.createElementNS(XMLNS, 'style'); + svg.insertBefore(style, svg.firstChild); + } + + // Iterating over nodes + var nodes = svg.querySelectorAll('[id="' + prefix + '-group-nodes"] > [class="' + prefix + '-node"]'); + + for (i = 0, l = nodes.length, f = true; i < l; i++) { + color = nodes[i].getAttribute('fill'); + + if (!params.data) + nodes[i].removeAttribute('data-node-id'); + + if (params.classes) { + + if (!(color in nodeColorIndex)) { + nodeColorIndex[color] = (f ? prefix + '-node' : 'c-' + (count++)); + styleText += '.' + nodeColorIndex[color] + '{fill: ' + color + '}'; + } + + if (nodeColorIndex[color] !== prefix + '-node') + nodes[i].setAttribute('class', nodes[i].getAttribute('class') + ' ' + nodeColorIndex[color]); + nodes[i].removeAttribute('fill'); + } + + f = false; + } + + // Iterating over edges + var edges = svg.querySelectorAll('[id="' + prefix + '-group-edges"] > [class="' + prefix + '-edge"]'); + + for (i = 0, l = edges.length, f = true; i < l; i++) { + color = edges[i].getAttribute('stroke'); + + if (!params.data) + edges[i].removeAttribute('data-edge-id'); + + if (params.classes) { + + if (!(color in edgeColorIndex)) { + edgeColorIndex[color] = (f ? prefix + '-edge' : 'c-' + (count++)); + styleText += '.' + edgeColorIndex[color] + '{stroke: ' + color + '}'; + } + + if (edgeColorIndex[color] !== prefix + '-edge') + edges[i].setAttribute('class', edges[i].getAttribute('class') + ' ' + edgeColorIndex[color]); + edges[i].removeAttribute('stroke'); + } + + f = false; + } + + if (params.classes) + style.appendChild(document.createTextNode(styleText)); + } + + + /** + * Extending prototype + */ + sigma.prototype.toSVG = function(params) { + params = params || {}; + + var prefix = this.settings('classPrefix'), + w = params.size || params.width || DEFAULTS.size, + h = params.size || params.height || DEFAULTS.size; + + // Creating a dummy container + var container = document.createElement('div'); + container.setAttribute('width', w); + container.setAttribute('height', h); + container.setAttribute('style', 'position:absolute; top: 0px; left:0px; width: ' + w + 'px; height: ' + h + 'px;'); + + // Creating a camera + var camera = this.addCamera(); + + // Creating a svg renderer + var renderer = this.addRenderer({ + camera: camera, + container: container, + type: 'svg', + forceLabels: !!params.labels + }); + + // Refreshing + renderer.resize(w, h); + this.refresh(); + + // Dropping camera and renderers before something nasty happens + this.killRenderer(renderer); + this.killCamera(camera); + + // Retrieving svg + var svg = container.querySelector('svg'); + svg.removeAttribute('style'); + svg.setAttribute('width', w + 'px'); + svg.setAttribute('height', h + 'px'); + svg.setAttribute('x', '0px'); + svg.setAttribute('y', '0px'); + // svg.setAttribute('viewBox', '0 0 1000 1000'); + + // Dropping labels + if (!params.labels) { + var labelGroup = svg.querySelector('[id="' + prefix + '-group-labels"]'); + svg.removeChild(labelGroup); + } + + // Dropping hovers + var hoverGroup = svg.querySelector('[id="' + prefix + '-group-hovers"]'); + svg.removeChild(hoverGroup); + + // Optims? + params.classes = (params.classes !== false); + if (!params.data || params.classes) + optimize(svg, prefix, params); + + // Retrieving svg string + var svgString = svg.outerHTML; + + // Paranoid cleanup + container = null; + + // Output string + var output = '<?xml version="1.0" encoding="utf-8"?>\n'; + output += '<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\n'; + output += svgString; + + if (params.download) + download(output, params.filename || DEFAULTS.filename); + + return output; + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/Gruntfile.js b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/Gruntfile.js new file mode 100644 index 0000000..28d60be --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/Gruntfile.js @@ -0,0 +1,28 @@ +module.exports = function(grunt) { + + + // Setting grunt base as sigma's root directory + grunt.file.setBase('../../'); + + // Registering needed files + var files = ['supervisor.js', 'worker.js'].map(function(p) { + return __dirname + '/' + p; + }); + + // Project configuration: + grunt.initConfig({ + forceAtlas2: { + prod: { + files: { + 'build/plugins/sigma.layout.forceAtlas2.min.js': files + } + } + } + }); + + // Loading tasks + grunt.loadTasks(__dirname + '/tasks'); + + // By default, we will crush and then minify + grunt.registerTask('default', ['forceAtlas2:prod']); +}; diff --git a/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/README.md b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/README.md new file mode 100644 index 0000000..b865270 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/README.md @@ -0,0 +1,79 @@ +sigma.layout.forceAtlas2 +======================== + +Algorithm by [Mathieu Jacomy](https://github.com/jacomyma). + +Plugin by [Guillaume Plique](https://github.com/Yomguithereal). + +--- + +This plugin implements [ForceAtlas2](http://www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0098679), a force-directed layout algorithm. + +For optimization purposes, the algorithm's computations are delegated to a web worker. + +## Methods + +**sigma.startForceAtlas2** + +Starts or unpauses the layout. It is possible to pass a configuration if this is the first time you start the layout. + +```js +sigmaInstance.startForceAtlas2(config); +``` + +**sigma.stopForceAtlas2** + +Pauses the layout. + +```js +sigmaInstance.stopForceAtlas2(); +``` + +**sigma.configForceAtlas2** + +Changes the layout's configuration. + +```js +sigmaInstance.configForceAtlas2(config); +``` + +**sigma.killForceAtlas2** + +Completely stops the layout and terminates the assiociated worker. You can still restart it later, but a new worker will have to initialize. + +```js +sigmaInstance.killForceAtlas2(); +``` + +**sigma.isForceAtlas2Running** + +Returns whether ForceAtlas2 is running. + +```js +sigmaInstance.isForceAtlas2Running(); +``` + +## Configuration + +*Algorithm configuration* + +* **linLogMode**: *boolean* `false` +* **outboundAttractionDistribution** *boolean* `false` +* **adjustSizes** *boolean* `false` +* **edgeWeightInfluence** *number* `0` +* **scalingRatio** *number* `1` +* **strongGravityMode** *boolean* `false` +* **gravity** *number* `1` +* **barnesHutOptimize** *boolean* `true`: should we use the algorithm's Barnes-Hut to improve repulsion's scalability (`O(n²)` to `O(nlog(n))`)? This is useful for large graph but harmful to small ones. +* **barnesHutTheta** *number* `0.5` +* **slowDown** *number* `1` +* **startingIterations** *integer* `1`: number of iterations to be run before the first render. +* **iterationsPerRender** *integer* `1`: number of iterations to be run before each render. + +*Supervisor configuration* + +* **worker** *boolean* `true`: should the layout use a web worker? +* **workerUrl** *string* : path to the worker file if needed because your browser does not support blob workers. + +## Notes +1. The layout won't stop by itself, so if you want it to stop, you will have to trigger it explicitly. diff --git a/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/supervisor.js b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/supervisor.js new file mode 100644 index 0000000..57f9b94 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/supervisor.js @@ -0,0 +1,340 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + /** + * Sigma ForceAtlas2.5 Supervisor + * =============================== + * + * Author: Guillaume Plique (Yomguithereal) + * Version: 0.1 + */ + var _root = this; + + /** + * Feature detection + * ------------------ + */ + var webWorkers = 'Worker' in _root; + + /** + * Supervisor Object + * ------------------ + */ + function Supervisor(sigInst, options) { + var _this = this, + workerFn = sigInst.getForceAtlas2Worker && + sigInst.getForceAtlas2Worker(); + + options = options || {}; + + // _root URL Polyfill + _root.URL = _root.URL || _root.webkitURL; + + // Properties + this.sigInst = sigInst; + this.graph = this.sigInst.graph; + this.ppn = 10; + this.ppe = 3; + this.config = {}; + this.shouldUseWorker = + options.worker === false ? false : true && webWorkers; + this.workerUrl = options.workerUrl; + + // State + this.started = false; + this.running = false; + + // Web worker or classic DOM events? + if (this.shouldUseWorker) { + if (!this.workerUrl) { + var blob = this.makeBlob(workerFn); + this.worker = new Worker(URL.createObjectURL(blob)); + } + else { + this.worker = new Worker(this.workerUrl); + } + + // Post Message Polyfill + this.worker.postMessage = + this.worker.webkitPostMessage || this.worker.postMessage; + } + else { + + eval(workerFn); + } + + // Worker message receiver + this.msgName = (this.worker) ? 'message' : 'newCoords'; + this.listener = function(e) { + + // Retrieving data + _this.nodesByteArray = new Float32Array(e.data.nodes); + + // If ForceAtlas2 is running, we act accordingly + if (_this.running) { + + // Applying layout + _this.applyLayoutChanges(); + + // Send data back to worker and loop + _this.sendByteArrayToWorker(); + + // Rendering graph + _this.sigInst.refresh(); + } + }; + + (this.worker || document).addEventListener(this.msgName, this.listener); + + // Filling byteArrays + this.graphToByteArrays(); + + // Binding on kill to properly terminate layout when parent is killed + sigInst.bind('kill', function() { + sigInst.killForceAtlas2(); + }); + } + + Supervisor.prototype.makeBlob = function(workerFn) { + var blob; + + try { + blob = new Blob([workerFn], {type: 'application/javascript'}); + } + catch (e) { + _root.BlobBuilder = _root.BlobBuilder || + _root.WebKitBlobBuilder || + _root.MozBlobBuilder; + + blob = new BlobBuilder(); + blob.append(workerFn); + blob = blob.getBlob(); + } + + return blob; + }; + + Supervisor.prototype.graphToByteArrays = function() { + var nodes = this.graph.nodes(), + edges = this.graph.edges(), + nbytes = nodes.length * this.ppn, + ebytes = edges.length * this.ppe, + nIndex = {}, + i, + j, + l; + + // Allocating Byte arrays with correct nb of bytes + this.nodesByteArray = new Float32Array(nbytes); + this.edgesByteArray = new Float32Array(ebytes); + + // Iterate through nodes + for (i = j = 0, l = nodes.length; i < l; i++) { + + // Populating index + nIndex[nodes[i].id] = j; + + // Populating byte array + this.nodesByteArray[j] = nodes[i].x; + this.nodesByteArray[j + 1] = nodes[i].y; + this.nodesByteArray[j + 2] = 0; + this.nodesByteArray[j + 3] = 0; + this.nodesByteArray[j + 4] = 0; + this.nodesByteArray[j + 5] = 0; + this.nodesByteArray[j + 6] = 1 + this.graph.degree(nodes[i].id); + this.nodesByteArray[j + 7] = 1; + this.nodesByteArray[j + 8] = nodes[i].size; + this.nodesByteArray[j + 9] = 0; + j += this.ppn; + } + + // Iterate through edges + for (i = j = 0, l = edges.length; i < l; i++) { + this.edgesByteArray[j] = nIndex[edges[i].source]; + this.edgesByteArray[j + 1] = nIndex[edges[i].target]; + this.edgesByteArray[j + 2] = edges[i].weight || 0; + j += this.ppe; + } + }; + + // TODO: make a better send function + Supervisor.prototype.applyLayoutChanges = function() { + var nodes = this.graph.nodes(), + j = 0, + realIndex; + + // Moving nodes + for (var i = 0, l = this.nodesByteArray.length; i < l; i += this.ppn) { + nodes[j].x = this.nodesByteArray[i]; + nodes[j].y = this.nodesByteArray[i + 1]; + j++; + } + }; + + Supervisor.prototype.sendByteArrayToWorker = function(action) { + var content = { + action: action || 'loop', + nodes: this.nodesByteArray.buffer + }; + + var buffers = [this.nodesByteArray.buffer]; + + if (action === 'start') { + content.config = this.config || {}; + content.edges = this.edgesByteArray.buffer; + buffers.push(this.edgesByteArray.buffer); + } + + if (this.shouldUseWorker) + this.worker.postMessage(content, buffers); + else + _root.postMessage(content, '*'); + }; + + Supervisor.prototype.start = function() { + if (this.running) + return; + + this.running = true; + + // Do not refresh edgequadtree during layout: + var k, + c; + for (k in this.sigInst.cameras) { + c = this.sigInst.cameras[k]; + c.edgequadtree._enabled = false; + } + + if (!this.started) { + + // Sending init message to worker + this.sendByteArrayToWorker('start'); + this.started = true; + } + else { + this.sendByteArrayToWorker(); + } + }; + + Supervisor.prototype.stop = function() { + if (!this.running) + return; + + // Allow to refresh edgequadtree: + var k, + c, + bounds; + for (k in this.sigInst.cameras) { + c = this.sigInst.cameras[k]; + c.edgequadtree._enabled = true; + + // Find graph boundaries: + bounds = sigma.utils.getBoundaries( + this.graph, + c.readPrefix + ); + + // Refresh edgequadtree: + if (c.settings('drawEdges') && c.settings('enableEdgeHovering')) + c.edgequadtree.index(this.sigInst.graph, { + prefix: c.readPrefix, + bounds: { + x: bounds.minX, + y: bounds.minY, + width: bounds.maxX - bounds.minX, + height: bounds.maxY - bounds.minY + } + }); + } + + this.running = false; + }; + + Supervisor.prototype.killWorker = function() { + if (this.worker) { + this.worker.terminate(); + } + else { + _root.postMessage({action: 'kill'}, '*'); + document.removeEventListener(this.msgName, this.listener); + } + }; + + Supervisor.prototype.configure = function(config) { + + // Setting configuration + this.config = config; + + if (!this.started) + return; + + var data = {action: 'config', config: this.config}; + + if (this.shouldUseWorker) + this.worker.postMessage(data); + else + _root.postMessage(data, '*'); + }; + + /** + * Interface + * ---------- + */ + sigma.prototype.startForceAtlas2 = function(config) { + + // Create supervisor if undefined + if (!this.supervisor) + this.supervisor = new Supervisor(this, config); + + // Configuration provided? + if (config) + this.supervisor.configure(config); + + // Start algorithm + this.supervisor.start(); + + return this; + }; + + sigma.prototype.stopForceAtlas2 = function() { + if (!this.supervisor) + return this; + + // Pause algorithm + this.supervisor.stop(); + + return this; + }; + + sigma.prototype.killForceAtlas2 = function() { + if (!this.supervisor) + return this; + + // Stop Algorithm + this.supervisor.stop(); + + // Kill Worker + this.supervisor.killWorker(); + + // Kill supervisor + this.supervisor = null; + + return this; + }; + + sigma.prototype.configForceAtlas2 = function(config) { + if (!this.supervisor) + this.supervisor = new Supervisor(this, config); + + this.supervisor.configure(config); + + return this; + }; + + sigma.prototype.isForceAtlas2Running = function(config) { + return !!this.supervisor && this.supervisor.running; + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/tasks/forceAtlas2.js b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/tasks/forceAtlas2.js new file mode 100644 index 0000000..1bb0062 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/tasks/forceAtlas2.js @@ -0,0 +1,127 @@ +/* + * grunt-forceAtlas2 + * + * This task crush and minify Force Atlas 2 code. + */ +var uglify = require('uglify-js'); + +// Shorteners +function minify(string) { + return uglify.minify(string, {fromString: true}).code; +} + +// Crushing function +function crush(fnString) { + var pattern, + i, + l; + + var np = [ + 'x', + 'y', + 'dx', + 'dy', + 'old_dx', + 'old_dy', + 'mass', + 'convergence', + 'size', + 'fixed' + ]; + + var ep = [ + 'source', + 'target', + 'weight' + ]; + + var rp = [ + 'node', + 'centerX', + 'centerY', + 'size', + 'nextSibling', + 'firstChild', + 'mass', + 'massCenterX', + 'massCenterY' + ]; + + // Replacing matrix accessors by incremented indexes + for (i = 0, l = rp.length; i < l; i++) { + pattern = new RegExp('rp\\(([^,]*), \'' + rp[i] + '\'\\)', 'g'); + fnString = fnString.replace( + pattern, + (i === 0) ? '$1' : '$1 + ' + i + ); + } + + for (i = 0, l = np.length; i < l; i++) { + pattern = new RegExp('np\\(([^,]*), \'' + np[i] + '\'\\)', 'g'); + fnString = fnString.replace( + pattern, + (i === 0) ? '$1' : '$1 + ' + i + ); + } + + for (i = 0, l = ep.length; i < l; i++) { + pattern = new RegExp('ep\\(([^,]*), \'' + ep[i] + '\'\\)', 'g'); + fnString = fnString.replace( + pattern, + (i === 0) ? '$1' : '$1 + ' + i + ); + } + + return fnString; +} + +// Cleaning function +function clean(string) { + return string.replace( + /function crush\(fnString\)/, + 'var crush = null; function no_crush(fnString)' + ); +} + +module.exports = function(grunt) { + + // Force atlas grunt multitask + function multitask() { + + // Merge task-specific and/or target-specific options with these defaults. + var options = this.options({}); + + // Iterate over all specified file groups. + this.files.forEach(function(f) { + // Concat specified files. + var src = f.src.filter(function(filepath) { + // Warn on and remove invalid source files (if nonull was set). + if (!grunt.file.exists(filepath)) { + grunt.log.warn('Source file "' + filepath + '" not found.'); + return false; + } else { + return true; + } + }).map(function(filepath) { + // Read file source. + return grunt.file.read(filepath); + }).join('\n'); + + // Crushing, cleaning and minifying + src = minify(clean(crush(src))); + + // Write the destination file. + grunt.file.write(f.dest, src); + + // Print a success message. + grunt.log.writeln('File "' + f.dest + '" created.'); + }); + } + + // Registering the task + grunt.registerMultiTask( + 'forceAtlas2', + 'A grunt task to crush and minify ForceAtlas2.', + multitask + ); +}; diff --git a/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/worker.js b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/worker.js new file mode 100644 index 0000000..adc0b29 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.forceAtlas2/worker.js @@ -0,0 +1,1129 @@ +;(function(undefined) { + 'use strict'; + + /** + * Sigma ForceAtlas2.5 Webworker + * ============================== + * + * Author: Guillaume Plique (Yomguithereal) + * Algorithm author: Mathieu Jacomy @ Sciences Po Medialab & WebAtlas + * Version: 1.0.3 + */ + + var _root = this, + inWebWorker = !('document' in _root); + + /** + * Worker Function Wrapper + * ------------------------ + * + * The worker has to be wrapped into a single stringified function + * to be passed afterwards as a BLOB object to the supervisor. + */ + var Worker = function(undefined) { + 'use strict'; + + /** + * Worker settings and properties + */ + var W = { + + // Properties + ppn: 10, + ppe: 3, + ppr: 9, + maxForce: 10, + iterations: 0, + converged: false, + + // Possible to change through config + settings: { + linLogMode: false, + outboundAttractionDistribution: false, + adjustSizes: false, + edgeWeightInfluence: 0, + scalingRatio: 1, + strongGravityMode: false, + gravity: 1, + slowDown: 1, + barnesHutOptimize: false, + barnesHutTheta: 0.5, + startingIterations: 1, + iterationsPerRender: 1 + } + }; + + var NodeMatrix, + EdgeMatrix, + RegionMatrix; + + /** + * Helpers + */ + function extend() { + var i, + k, + res = {}, + l = arguments.length; + + for (i = l - 1; i >= 0; i--) + for (k in arguments[i]) + res[k] = arguments[i][k]; + return res; + } + + function __emptyObject(obj) { + var k; + + for (k in obj) + if (!('hasOwnProperty' in obj) || obj.hasOwnProperty(k)) + delete obj[k]; + + return obj; + } + + /** + * Matrices properties accessors + */ + var nodeProperties = { + x: 0, + y: 1, + dx: 2, + dy: 3, + old_dx: 4, + old_dy: 5, + mass: 6, + convergence: 7, + size: 8, + fixed: 9 + }; + + var edgeProperties = { + source: 0, + target: 1, + weight: 2 + }; + + var regionProperties = { + node: 0, + centerX: 1, + centerY: 2, + size: 3, + nextSibling: 4, + firstChild: 5, + mass: 6, + massCenterX: 7, + massCenterY: 8 + }; + + function np(i, p) { + + // DEBUG: safeguards + if ((i % W.ppn) !== 0) + throw 'np: non correct (' + i + ').'; + if (i !== parseInt(i)) + throw 'np: non int.'; + + if (p in nodeProperties) + return i + nodeProperties[p]; + else + throw 'ForceAtlas2.Worker - ' + + 'Inexistant node property given (' + p + ').'; + } + + function ep(i, p) { + + // DEBUG: safeguards + if ((i % W.ppe) !== 0) + throw 'ep: non correct (' + i + ').'; + if (i !== parseInt(i)) + throw 'ep: non int.'; + + if (p in edgeProperties) + return i + edgeProperties[p]; + else + throw 'ForceAtlas2.Worker - ' + + 'Inexistant edge property given (' + p + ').'; + } + + function rp(i, p) { + + // DEBUG: safeguards + if ((i % W.ppr) !== 0) + throw 'rp: non correct (' + i + ').'; + if (i !== parseInt(i)) + throw 'rp: non int.'; + + if (p in regionProperties) + return i + regionProperties[p]; + else + throw 'ForceAtlas2.Worker - ' + + 'Inexistant region property given (' + p + ').'; + } + + // DEBUG + function nan(v) { + if (isNaN(v)) + throw 'NaN alert!'; + } + + + /** + * Algorithm initialization + */ + + function init(nodes, edges, config) { + config = config || {}; + var i, l; + + // Matrices + NodeMatrix = nodes; + EdgeMatrix = edges; + + // Length + W.nodesLength = NodeMatrix.length; + W.edgesLength = EdgeMatrix.length; + + // Merging configuration + configure(config); + } + + function configure(o) { + W.settings = extend(o, W.settings); + } + + /** + * Algorithm pass + */ + + // MATH: get distances stuff and power 2 issues + function pass() { + var a, i, j, l, r, n, n1, n2, e, w, g, k, m; + + var outboundAttCompensation, + coefficient, + xDist, + yDist, + ewc, + mass, + distance, + size, + factor; + + // 1) Initializing layout data + //----------------------------- + + // Resetting positions & computing max values + for (n = 0; n < W.nodesLength; n += W.ppn) { + NodeMatrix[np(n, 'old_dx')] = NodeMatrix[np(n, 'dx')]; + NodeMatrix[np(n, 'old_dy')] = NodeMatrix[np(n, 'dy')]; + NodeMatrix[np(n, 'dx')] = 0; + NodeMatrix[np(n, 'dy')] = 0; + } + + // If outbound attraction distribution, compensate + if (W.settings.outboundAttractionDistribution) { + outboundAttCompensation = 0; + for (n = 0; n < W.nodesLength; n += W.ppn) { + outboundAttCompensation += NodeMatrix[np(n, 'mass')]; + } + + outboundAttCompensation /= W.nodesLength; + } + + + // 1.bis) Barnes-Hut computation + //------------------------------ + + if (W.settings.barnesHutOptimize) { + + var minX = Infinity, + maxX = -Infinity, + minY = Infinity, + maxY = -Infinity, + q, q0, q1, q2, q3; + + // Setting up + // RegionMatrix = new Float32Array(W.nodesLength / W.ppn * 4 * W.ppr); + RegionMatrix = []; + + // Computing min and max values + for (n = 0; n < W.nodesLength; n += W.ppn) { + minX = Math.min(minX, NodeMatrix[np(n, 'x')]); + maxX = Math.max(maxX, NodeMatrix[np(n, 'x')]); + minY = Math.min(minY, NodeMatrix[np(n, 'y')]); + maxY = Math.max(maxY, NodeMatrix[np(n, 'y')]); + } + + // Build the Barnes Hut root region + RegionMatrix[rp(0, 'node')] = -1; + RegionMatrix[rp(0, 'centerX')] = (minX + maxX) / 2; + RegionMatrix[rp(0, 'centerY')] = (minY + maxY) / 2; + RegionMatrix[rp(0, 'size')] = Math.max(maxX - minX, maxY - minY); + RegionMatrix[rp(0, 'nextSibling')] = -1; + RegionMatrix[rp(0, 'firstChild')] = -1; + RegionMatrix[rp(0, 'mass')] = 0; + RegionMatrix[rp(0, 'massCenterX')] = 0; + RegionMatrix[rp(0, 'massCenterY')] = 0; + + // Add each node in the tree + l = 1; + for (n = 0; n < W.nodesLength; n += W.ppn) { + + // Current region, starting with root + r = 0; + + while (true) { + // Are there sub-regions? + + // We look at first child index + if (RegionMatrix[rp(r, 'firstChild')] >= 0) { + + // There are sub-regions + + // We just iterate to find a "leave" of the tree + // that is an empty region or a region with a single node + // (see next case) + + // Find the quadrant of n + if (NodeMatrix[np(n, 'x')] < RegionMatrix[rp(r, 'centerX')]) { + + if (NodeMatrix[np(n, 'y')] < RegionMatrix[rp(r, 'centerY')]) { + + // Top Left quarter + q = RegionMatrix[rp(r, 'firstChild')]; + } + else { + + // Bottom Left quarter + q = RegionMatrix[rp(r, 'firstChild')] + W.ppr; + } + } + else { + if (NodeMatrix[np(n, 'y')] < RegionMatrix[rp(r, 'centerY')]) { + + // Top Right quarter + q = RegionMatrix[rp(r, 'firstChild')] + W.ppr * 2; + } + else { + + // Bottom Right quarter + q = RegionMatrix[rp(r, 'firstChild')] + W.ppr * 3; + } + } + + // Update center of mass and mass (we only do it for non-leave regions) + RegionMatrix[rp(r, 'massCenterX')] = + (RegionMatrix[rp(r, 'massCenterX')] * RegionMatrix[rp(r, 'mass')] + + NodeMatrix[np(n, 'x')] * NodeMatrix[np(n, 'mass')]) / + (RegionMatrix[rp(r, 'mass')] + NodeMatrix[np(n, 'mass')]); + + RegionMatrix[rp(r, 'massCenterY')] = + (RegionMatrix[rp(r, 'massCenterY')] * RegionMatrix[rp(r, 'mass')] + + NodeMatrix[np(n, 'y')] * NodeMatrix[np(n, 'mass')]) / + (RegionMatrix[rp(r, 'mass')] + NodeMatrix[np(n, 'mass')]); + + RegionMatrix[rp(r, 'mass')] += NodeMatrix[np(n, 'mass')]; + + // Iterate on the right quadrant + r = q; + continue; + } + else { + + // There are no sub-regions: we are in a "leave" + + // Is there a node in this leave? + if (RegionMatrix[rp(r, 'node')] < 0) { + + // There is no node in region: + // we record node n and go on + RegionMatrix[rp(r, 'node')] = n; + break; + } + else { + + // There is a node in this region + + // We will need to create sub-regions, stick the two + // nodes (the old one r[0] and the new one n) in two + // subregions. If they fall in the same quadrant, + // we will iterate. + + // Create sub-regions + RegionMatrix[rp(r, 'firstChild')] = l * W.ppr; + w = RegionMatrix[rp(r, 'size')] / 2; // new size (half) + + // NOTE: we use screen coordinates + // from Top Left to Bottom Right + + // Top Left sub-region + g = RegionMatrix[rp(r, 'firstChild')]; + + RegionMatrix[rp(g, 'node')] = -1; + RegionMatrix[rp(g, 'centerX')] = RegionMatrix[rp(r, 'centerX')] - w; + RegionMatrix[rp(g, 'centerY')] = RegionMatrix[rp(r, 'centerY')] - w; + RegionMatrix[rp(g, 'size')] = w; + RegionMatrix[rp(g, 'nextSibling')] = g + W.ppr; + RegionMatrix[rp(g, 'firstChild')] = -1; + RegionMatrix[rp(g, 'mass')] = 0; + RegionMatrix[rp(g, 'massCenterX')] = 0; + RegionMatrix[rp(g, 'massCenterY')] = 0; + + // Bottom Left sub-region + g += W.ppr; + RegionMatrix[rp(g, 'node')] = -1; + RegionMatrix[rp(g, 'centerX')] = RegionMatrix[rp(r, 'centerX')] - w; + RegionMatrix[rp(g, 'centerY')] = RegionMatrix[rp(r, 'centerY')] + w; + RegionMatrix[rp(g, 'size')] = w; + RegionMatrix[rp(g, 'nextSibling')] = g + W.ppr; + RegionMatrix[rp(g, 'firstChild')] = -1; + RegionMatrix[rp(g, 'mass')] = 0; + RegionMatrix[rp(g, 'massCenterX')] = 0; + RegionMatrix[rp(g, 'massCenterY')] = 0; + + // Top Right sub-region + g += W.ppr; + RegionMatrix[rp(g, 'node')] = -1; + RegionMatrix[rp(g, 'centerX')] = RegionMatrix[rp(r, 'centerX')] + w; + RegionMatrix[rp(g, 'centerY')] = RegionMatrix[rp(r, 'centerY')] - w; + RegionMatrix[rp(g, 'size')] = w; + RegionMatrix[rp(g, 'nextSibling')] = g + W.ppr; + RegionMatrix[rp(g, 'firstChild')] = -1; + RegionMatrix[rp(g, 'mass')] = 0; + RegionMatrix[rp(g, 'massCenterX')] = 0; + RegionMatrix[rp(g, 'massCenterY')] = 0; + + // Bottom Right sub-region + g += W.ppr; + RegionMatrix[rp(g, 'node')] = -1; + RegionMatrix[rp(g, 'centerX')] = RegionMatrix[rp(r, 'centerX')] + w; + RegionMatrix[rp(g, 'centerY')] = RegionMatrix[rp(r, 'centerY')] + w; + RegionMatrix[rp(g, 'size')] = w; + RegionMatrix[rp(g, 'nextSibling')] = RegionMatrix[rp(r, 'nextSibling')]; + RegionMatrix[rp(g, 'firstChild')] = -1; + RegionMatrix[rp(g, 'mass')] = 0; + RegionMatrix[rp(g, 'massCenterX')] = 0; + RegionMatrix[rp(g, 'massCenterY')] = 0; + + l += 4; + + // Now the goal is to find two different sub-regions + // for the two nodes: the one previously recorded (r[0]) + // and the one we want to add (n) + + // Find the quadrant of the old node + if (NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'x')] < RegionMatrix[rp(r, 'centerX')]) { + if (NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'y')] < RegionMatrix[rp(r, 'centerY')]) { + + // Top Left quarter + q = RegionMatrix[rp(r, 'firstChild')]; + } + else { + + // Bottom Left quarter + q = RegionMatrix[rp(r, 'firstChild')] + W.ppr; + } + } + else { + if (NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'y')] < RegionMatrix[rp(r, 'centerY')]) { + + // Top Right quarter + q = RegionMatrix[rp(r, 'firstChild')] + W.ppr * 2; + } + else { + + // Bottom Right quarter + q = RegionMatrix[rp(r, 'firstChild')] + W.ppr * 3; + } + } + + // We remove r[0] from the region r, add its mass to r and record it in q + RegionMatrix[rp(r, 'mass')] = NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'mass')]; + RegionMatrix[rp(r, 'massCenterX')] = NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'x')]; + RegionMatrix[rp(r, 'massCenterY')] = NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'y')]; + + RegionMatrix[rp(q, 'node')] = RegionMatrix[rp(r, 'node')]; + RegionMatrix[rp(r, 'node')] = -1; + + // Find the quadrant of n + if (NodeMatrix[np(n, 'x')] < RegionMatrix[rp(r, 'centerX')]) { + if (NodeMatrix[np(n, 'y')] < RegionMatrix[rp(r, 'centerY')]) { + + // Top Left quarter + q2 = RegionMatrix[rp(r, 'firstChild')]; + } + else { + // Bottom Left quarter + q2 = RegionMatrix[rp(r, 'firstChild')] + W.ppr; + } + } + else { + if(NodeMatrix[np(n, 'y')] < RegionMatrix[rp(r, 'centerY')]) { + + // Top Right quarter + q2 = RegionMatrix[rp(r, 'firstChild')] + W.ppr * 2; + } + else { + + // Bottom Right quarter + q2 = RegionMatrix[rp(r, 'firstChild')] + W.ppr * 3; + } + } + + if (q === q2) { + + // If both nodes are in the same quadrant, + // we have to try it again on this quadrant + r = q; + continue; + } + + // If both quadrants are different, we record n + // in its quadrant + RegionMatrix[rp(q2, 'node')] = n; + break; + } + } + } + } + } + + + // 2) Repulsion + //-------------- + // NOTES: adjustSizes = antiCollision & scalingRatio = coefficient + + if (W.settings.barnesHutOptimize) { + coefficient = W.settings.scalingRatio; + + // Applying repulsion through regions + for (n = 0; n < W.nodesLength; n += W.ppn) { + + // Computing leaf quad nodes iteration + + r = 0; // Starting with root region + while (true) { + + if (RegionMatrix[rp(r, 'firstChild')] >= 0) { + + // The region has sub-regions + + // We run the Barnes Hut test to see if we are at the right distance + distance = Math.sqrt( + (Math.pow(NodeMatrix[np(n, 'x')] - RegionMatrix[rp(r, 'massCenterX')], 2)) + + (Math.pow(NodeMatrix[np(n, 'y')] - RegionMatrix[rp(r, 'massCenterY')], 2)) + ); + + if (2 * RegionMatrix[rp(r, 'size')] / distance < W.settings.barnesHutTheta) { + + // We treat the region as a single body, and we repulse + + xDist = NodeMatrix[np(n, 'x')] - RegionMatrix[rp(r, 'massCenterX')]; + yDist = NodeMatrix[np(n, 'y')] - RegionMatrix[rp(r, 'massCenterY')]; + + if (W.settings.adjustSizes) { + + //-- Linear Anti-collision Repulsion + if (distance > 0) { + factor = coefficient * NodeMatrix[np(n, 'mass')] * + RegionMatrix[rp(r, 'mass')] / distance / distance; + + NodeMatrix[np(n, 'dx')] += xDist * factor; + NodeMatrix[np(n, 'dy')] += yDist * factor; + } + else if (distance < 0) { + factor = -coefficient * NodeMatrix[np(n, 'mass')] * + RegionMatrix[rp(r, 'mass')] / distance; + + NodeMatrix[np(n, 'dx')] += xDist * factor; + NodeMatrix[np(n, 'dy')] += yDist * factor; + } + } + else { + + //-- Linear Repulsion + if (distance > 0) { + factor = coefficient * NodeMatrix[np(n, 'mass')] * + RegionMatrix[rp(r, 'mass')] / distance / distance; + + NodeMatrix[np(n, 'dx')] += xDist * factor; + NodeMatrix[np(n, 'dy')] += yDist * factor; + } + } + + // When this is done, we iterate. We have to look at the next sibling. + if (RegionMatrix[rp(r, 'nextSibling')] < 0) + break; // No next sibling: we have finished the tree + r = RegionMatrix[rp(r, 'nextSibling')]; + continue; + + } + else { + + // The region is too close and we have to look at sub-regions + r = RegionMatrix[rp(r, 'firstChild')]; + continue; + } + + } + else { + + // The region has no sub-region + // If there is a node r[0] and it is not n, then repulse + + if (RegionMatrix[rp(r, 'node')] >= 0 && RegionMatrix[rp(r, 'node')] !== n) { + xDist = NodeMatrix[np(n, 'x')] - NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'x')]; + yDist = NodeMatrix[np(n, 'y')] - NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'y')]; + + distance = Math.sqrt(xDist * xDist + yDist * yDist); + + if (W.settings.adjustSizes) { + + //-- Linear Anti-collision Repulsion + if (distance > 0) { + factor = coefficient * NodeMatrix[np(n, 'mass')] * + NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'mass')] / distance / distance; + + NodeMatrix[np(n, 'dx')] += xDist * factor; + NodeMatrix[np(n, 'dy')] += yDist * factor; + } + else if (distance < 0) { + factor = -coefficient * NodeMatrix[np(n, 'mass')] * + NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'mass')] / distance; + + NodeMatrix[np(n, 'dx')] += xDist * factor; + NodeMatrix[np(n, 'dy')] += yDist * factor; + } + } + else { + + //-- Linear Repulsion + if (distance > 0) { + factor = coefficient * NodeMatrix[np(n, 'mass')] * + NodeMatrix[np(RegionMatrix[rp(r, 'node')], 'mass')] / distance / distance; + + NodeMatrix[np(n, 'dx')] += xDist * factor; + NodeMatrix[np(n, 'dy')] += yDist * factor; + } + } + + } + + // When this is done, we iterate. We have to look at the next sibling. + if (RegionMatrix[rp(r, 'nextSibling')] < 0) + break; // No next sibling: we have finished the tree + r = RegionMatrix[rp(r, 'nextSibling')]; + continue; + } + } + } + } + else { + coefficient = W.settings.scalingRatio; + + // Square iteration + for (n1 = 0; n1 < W.nodesLength; n1 += W.ppn) { + for (n2 = 0; n2 < n1; n2 += W.ppn) { + + // Common to both methods + xDist = NodeMatrix[np(n1, 'x')] - NodeMatrix[np(n2, 'x')]; + yDist = NodeMatrix[np(n1, 'y')] - NodeMatrix[np(n2, 'y')]; + + if (W.settings.adjustSizes) { + + //-- Anticollision Linear Repulsion + distance = Math.sqrt(xDist * xDist + yDist * yDist) - + NodeMatrix[np(n1, 'size')] - + NodeMatrix[np(n2, 'size')]; + + if (distance > 0) { + factor = coefficient * + NodeMatrix[np(n1, 'mass')] * + NodeMatrix[np(n2, 'mass')] / + distance / distance; + + // Updating nodes' dx and dy + NodeMatrix[np(n1, 'dx')] += xDist * factor; + NodeMatrix[np(n1, 'dy')] += yDist * factor; + + NodeMatrix[np(n2, 'dx')] += xDist * factor; + NodeMatrix[np(n2, 'dy')] += yDist * factor; + } + else if (distance < 0) { + factor = 100 * coefficient * + NodeMatrix[np(n1, 'mass')] * + NodeMatrix[np(n2, 'mass')]; + + // Updating nodes' dx and dy + NodeMatrix[np(n1, 'dx')] += xDist * factor; + NodeMatrix[np(n1, 'dy')] += yDist * factor; + + NodeMatrix[np(n2, 'dx')] -= xDist * factor; + NodeMatrix[np(n2, 'dy')] -= yDist * factor; + } + } + else { + + //-- Linear Repulsion + distance = Math.sqrt(xDist * xDist + yDist * yDist); + + if (distance > 0) { + factor = coefficient * + NodeMatrix[np(n1, 'mass')] * + NodeMatrix[np(n2, 'mass')] / + distance / distance; + + // Updating nodes' dx and dy + NodeMatrix[np(n1, 'dx')] += xDist * factor; + NodeMatrix[np(n1, 'dy')] += yDist * factor; + + NodeMatrix[np(n2, 'dx')] -= xDist * factor; + NodeMatrix[np(n2, 'dy')] -= yDist * factor; + } + } + } + } + } + + + // 3) Gravity + //------------ + g = W.settings.gravity / W.settings.scalingRatio; + coefficient = W.settings.scalingRatio; + for (n = 0; n < W.nodesLength; n += W.ppn) { + factor = 0; + + // Common to both methods + xDist = NodeMatrix[np(n, 'x')]; + yDist = NodeMatrix[np(n, 'y')]; + distance = Math.sqrt( + Math.pow(xDist, 2) + Math.pow(yDist, 2) + ); + + if (W.settings.strongGravityMode) { + + //-- Strong gravity + if (distance > 0) + factor = coefficient * NodeMatrix[np(n, 'mass')] * g; + } + else { + + //-- Linear Anti-collision Repulsion n + if (distance > 0) + factor = coefficient * NodeMatrix[np(n, 'mass')] * g / distance; + } + + // Updating node's dx and dy + NodeMatrix[np(n, 'dx')] -= xDist * factor; + NodeMatrix[np(n, 'dy')] -= yDist * factor; + } + + + + // 4) Attraction + //--------------- + coefficient = 1 * + (W.settings.outboundAttractionDistribution ? + outboundAttCompensation : + 1); + + // TODO: simplify distance + // TODO: coefficient is always used as -c --> optimize? + for (e = 0; e < W.edgesLength; e += W.ppe) { + n1 = EdgeMatrix[ep(e, 'source')]; + n2 = EdgeMatrix[ep(e, 'target')]; + w = EdgeMatrix[ep(e, 'weight')]; + + // Edge weight influence + ewc = Math.pow(w, W.settings.edgeWeightInfluence); + + // Common measures + xDist = NodeMatrix[np(n1, 'x')] - NodeMatrix[np(n2, 'x')]; + yDist = NodeMatrix[np(n1, 'y')] - NodeMatrix[np(n2, 'y')]; + + // Applying attraction to nodes + if (W.settings.adjustSizes) { + + distance = Math.sqrt( + (Math.pow(xDist, 2) + Math.pow(yDist, 2)) - + NodeMatrix[np(n1, 'size')] - + NodeMatrix[np(n2, 'size')] + ); + + if (W.settings.linLogMode) { + if (W.settings.outboundAttractionDistribution) { + + //-- LinLog Degree Distributed Anti-collision Attraction + if (distance > 0) { + factor = -coefficient * ewc * Math.log(1 + distance) / + distance / + NodeMatrix[np(n1, 'mass')]; + } + } + else { + + //-- LinLog Anti-collision Attraction + if (distance > 0) { + factor = -coefficient * ewc * Math.log(1 + distance) / distance; + } + } + } + else { + if (W.settings.outboundAttractionDistribution) { + + //-- Linear Degree Distributed Anti-collision Attraction + if (distance > 0) { + factor = -coefficient * ewc / NodeMatrix[np(n1, 'mass')]; + } + } + else { + + //-- Linear Anti-collision Attraction + if (distance > 0) { + factor = -coefficient * ewc; + } + } + } + } + else { + + distance = Math.sqrt( + Math.pow(xDist, 2) + Math.pow(yDist, 2) + ); + + if (W.settings.linLogMode) { + if (W.settings.outboundAttractionDistribution) { + + //-- LinLog Degree Distributed Attraction + if (distance > 0) { + factor = -coefficient * ewc * Math.log(1 + distance) / + distance / + NodeMatrix[np(n1, 'mass')]; + } + } + else { + + //-- LinLog Attraction + if (distance > 0) + factor = -coefficient * ewc * Math.log(1 + distance) / distance; + } + } + else { + if (W.settings.outboundAttractionDistribution) { + + //-- Linear Attraction Mass Distributed + // NOTE: Distance is set to 1 to override next condition + distance = 1; + factor = -coefficient * ewc / NodeMatrix[np(n1, 'mass')]; + } + else { + + //-- Linear Attraction + // NOTE: Distance is set to 1 to override next condition + distance = 1; + factor = -coefficient * ewc; + } + } + } + + // Updating nodes' dx and dy + // TODO: if condition or factor = 1? + if (distance > 0) { + + // Updating nodes' dx and dy + NodeMatrix[np(n1, 'dx')] += xDist * factor; + NodeMatrix[np(n1, 'dy')] += yDist * factor; + + NodeMatrix[np(n2, 'dx')] -= xDist * factor; + NodeMatrix[np(n2, 'dy')] -= yDist * factor; + } + } + + + // 5) Apply Forces + //----------------- + var force, + swinging, + traction, + nodespeed; + + // MATH: sqrt and square distances + if (W.settings.adjustSizes) { + + for (n = 0; n < W.nodesLength; n += W.ppn) { + if (!NodeMatrix[np(n, 'fixed')]) { + force = Math.sqrt( + Math.pow(NodeMatrix[np(n, 'dx')], 2) + + Math.pow(NodeMatrix[np(n, 'dy')], 2) + ); + + if (force > W.maxForce) { + NodeMatrix[np(n, 'dx')] = + NodeMatrix[np(n, 'dx')] * W.maxForce / force; + NodeMatrix[np(n, 'dy')] = + NodeMatrix[np(n, 'dy')] * W.maxForce / force; + } + + swinging = NodeMatrix[np(n, 'mass')] * + Math.sqrt( + (NodeMatrix[np(n, 'old_dx')] - NodeMatrix[np(n, 'dx')]) * + (NodeMatrix[np(n, 'old_dx')] - NodeMatrix[np(n, 'dx')]) + + (NodeMatrix[np(n, 'old_dy')] - NodeMatrix[np(n, 'dy')]) * + (NodeMatrix[np(n, 'old_dy')] - NodeMatrix[np(n, 'dy')]) + ); + + traction = Math.sqrt( + (NodeMatrix[np(n, 'old_dx')] + NodeMatrix[np(n, 'dx')]) * + (NodeMatrix[np(n, 'old_dx')] + NodeMatrix[np(n, 'dx')]) + + (NodeMatrix[np(n, 'old_dy')] + NodeMatrix[np(n, 'dy')]) * + (NodeMatrix[np(n, 'old_dy')] + NodeMatrix[np(n, 'dy')]) + ) / 2; + + nodespeed = + 0.1 * Math.log(1 + traction) / (1 + Math.sqrt(swinging)); + + // Updating node's positon + NodeMatrix[np(n, 'x')] = + NodeMatrix[np(n, 'x')] + NodeMatrix[np(n, 'dx')] * + (nodespeed / W.settings.slowDown); + NodeMatrix[np(n, 'y')] = + NodeMatrix[np(n, 'y')] + NodeMatrix[np(n, 'dy')] * + (nodespeed / W.settings.slowDown); + } + } + } + else { + + for (n = 0; n < W.nodesLength; n += W.ppn) { + if (!NodeMatrix[np(n, 'fixed')]) { + + swinging = NodeMatrix[np(n, 'mass')] * + Math.sqrt( + (NodeMatrix[np(n, 'old_dx')] - NodeMatrix[np(n, 'dx')]) * + (NodeMatrix[np(n, 'old_dx')] - NodeMatrix[np(n, 'dx')]) + + (NodeMatrix[np(n, 'old_dy')] - NodeMatrix[np(n, 'dy')]) * + (NodeMatrix[np(n, 'old_dy')] - NodeMatrix[np(n, 'dy')]) + ); + + traction = Math.sqrt( + (NodeMatrix[np(n, 'old_dx')] + NodeMatrix[np(n, 'dx')]) * + (NodeMatrix[np(n, 'old_dx')] + NodeMatrix[np(n, 'dx')]) + + (NodeMatrix[np(n, 'old_dy')] + NodeMatrix[np(n, 'dy')]) * + (NodeMatrix[np(n, 'old_dy')] + NodeMatrix[np(n, 'dy')]) + ) / 2; + + nodespeed = NodeMatrix[np(n, 'convergence')] * + Math.log(1 + traction) / (1 + Math.sqrt(swinging)); + + // Updating node convergence + NodeMatrix[np(n, 'convergence')] = + Math.min(1, Math.sqrt( + nodespeed * + (Math.pow(NodeMatrix[np(n, 'dx')], 2) + + Math.pow(NodeMatrix[np(n, 'dy')], 2)) / + (1 + Math.sqrt(swinging)) + )); + + // Updating node's positon + NodeMatrix[np(n, 'x')] = + NodeMatrix[np(n, 'x')] + NodeMatrix[np(n, 'dx')] * + (nodespeed / W.settings.slowDown); + NodeMatrix[np(n, 'y')] = + NodeMatrix[np(n, 'y')] + NodeMatrix[np(n, 'dy')] * + (nodespeed / W.settings.slowDown); + } + } + } + + // Counting one more iteration + W.iterations++; + } + + /** + * Message reception & sending + */ + + // Sending data back to the supervisor + var sendNewCoords; + + if (typeof window !== 'undefined' && window.document) { + + // From same document as sigma + sendNewCoords = function() { + var e; + + if (document.createEvent) { + e = document.createEvent('Event'); + e.initEvent('newCoords', true, false); + } + else { + e = document.createEventObject(); + e.eventType = 'newCoords'; + } + + e.eventName = 'newCoords'; + e.data = { + nodes: NodeMatrix.buffer + }; + requestAnimationFrame(function() { + document.dispatchEvent(e); + }); + }; + } + else { + + // From a WebWorker + sendNewCoords = function() { + self.postMessage( + {nodes: NodeMatrix.buffer}, + [NodeMatrix.buffer] + ); + }; + } + + // Algorithm run + function run(n) { + for (var i = 0; i < n; i++) + pass(); + sendNewCoords(); + } + + // On supervisor message + var listener = function(e) { + switch (e.data.action) { + case 'start': + init( + new Float32Array(e.data.nodes), + new Float32Array(e.data.edges), + e.data.config + ); + + // First iteration(s) + run(W.settings.startingIterations); + break; + + case 'loop': + NodeMatrix = new Float32Array(e.data.nodes); + run(W.settings.iterationsPerRender); + break; + + case 'config': + + // Merging new settings + configure(e.data.config); + break; + + case 'kill': + + // Deleting context for garbage collection + __emptyObject(W); + NodeMatrix = null; + EdgeMatrix = null; + RegionMatrix = null; + self.removeEventListener('message', listener); + break; + + default: + } + }; + + // Adding event listener + self.addEventListener('message', listener); + }; + + + /** + * Exporting + * ---------- + * + * Crush the worker function and make it accessible by sigma's instances so + * the supervisor can call it. + */ + function crush(fnString) { + var pattern, + i, + l; + + var np = [ + 'x', + 'y', + 'dx', + 'dy', + 'old_dx', + 'old_dy', + 'mass', + 'convergence', + 'size', + 'fixed' + ]; + + var ep = [ + 'source', + 'target', + 'weight' + ]; + + var rp = [ + 'node', + 'centerX', + 'centerY', + 'size', + 'nextSibling', + 'firstChild', + 'mass', + 'massCenterX', + 'massCenterY' + ]; + + // rp + // NOTE: Must go first + for (i = 0, l = rp.length; i < l; i++) { + pattern = new RegExp('rp\\(([^,]*), \'' + rp[i] + '\'\\)', 'g'); + fnString = fnString.replace( + pattern, + (i === 0) ? '$1' : '$1 + ' + i + ); + } + + // np + for (i = 0, l = np.length; i < l; i++) { + pattern = new RegExp('np\\(([^,]*), \'' + np[i] + '\'\\)', 'g'); + fnString = fnString.replace( + pattern, + (i === 0) ? '$1' : '$1 + ' + i + ); + } + + // ep + for (i = 0, l = ep.length; i < l; i++) { + pattern = new RegExp('ep\\(([^,]*), \'' + ep[i] + '\'\\)', 'g'); + fnString = fnString.replace( + pattern, + (i === 0) ? '$1' : '$1 + ' + i + ); + } + + return fnString; + } + + // Exporting + function getWorkerFn() { + var fnString = crush ? crush(Worker.toString()) : Worker.toString(); + return ';(' + fnString + ').call(this);'; + } + + if (inWebWorker) { + + // We are in a webworker, so we launch the Worker function + eval(getWorkerFn()); + } + else { + + // We are requesting the worker from sigma, we retrieve it therefore + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + sigma.prototype.getForceAtlas2Worker = getWorkerFn; + } +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.layout.noverlap/README.md b/sigma.js-1.2.0/plugins/sigma.layout.noverlap/README.md new file mode 100644 index 0000000..7b954aa --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.noverlap/README.md @@ -0,0 +1,87 @@ +sigma.layout.noverlap +======================== + +Plugin developed by [Andrew Pitts](https://github.com/apitts) and published under the [MIT](LICENSE) license. Original algorithm by [Mathieu Jacomy](https://github.com/jacomyma) and ported to sigma.js with permission. + +--- + +This plugin runs an algorithm which distributes nodes in the network, ensuring that they do not overlap and providing a margin where specified. + +## Methods + +**configure** + +Changes the layout's configuration. + +```js +var listener = s.configNoverlap(config); +``` + +**start** + +Starts the layout. It is possible to pass a configuration if this is the first time you start the layout. + +```js +s.startNoverlap(); +``` + +**isRunning** + +Returns whether the layout is running. + +```js +s.isNoverlapRunning(); +``` + +## Configuration + +* **nodes**: *array*: the subset of nodes to apply the layout. + +*Algorithm configuration* + +* **nodeMargin**: *number* `5.0`: The additional minimum space to apply around each and every node. +* **scaleNodes**: *number* `1.2`: A multiplier to apply to nodes such that larger nodes will have more space around them if this multiplier is greater than zero. +* **gridSize**: *integer* `20`: The number of rows and columns to use when dividing the nodes up into cells which the algorithm is applied to. Use more rows and columns for larger graphs for a more efficient algorithm. +* **permittedExpansion** *number* `1.1`: At every step, this is the maximum ratio to apply to the bounding box, i.e. the maximum by which the network is permitted to expand. +* **rendererIndex** *integer* `0`: The index of the renderer to use to compute overlap and collisions of the nodes. +* **speed** *number* `2`: A larger value increases the speed with which the algorithm will convergence at the cost of precision. +* **maxIterations** *number* `500`: The maximum number of iterations to run the algorithm for before stopping it. + +*Easing configuration* + +* **easing** *string*: if specified, ease the transition between nodes positions if background is `true`. The duration is specified by the Sigma settings `animationsTime`. See [sigma.utils.easing](../../src/utils/sigma.utils.js#L723) for available values. +* **duration** *number*: duration of the transition for the easing method. Default value is Sigma setting `animationsTime`. + +## Events + +The plugin dispatches the following events: + +- `start`: on layout start. +- `interpolate`: at the beginning of the layout animation if an *easing* function is specified and the layout is ran on background. +- `stop`: on layout stop, will be dispatched after `interpolate`. + +Example: + +```js + +s = new sigma({ + graph: g, + container: 'graph-container' +}); + +var config = { + nodeMargin: 3.0, + scaleNodes: 1.3 +}; + +// Configure the algorithm +var listener = s.configNoverlap(config); + +// Bind all events: +listener.bind('start stop interpolate', function(event) { + console.log(event.type); +}); + +// Start the algorithm: +s.startNoverlap(); +``` \ No newline at end of file diff --git a/sigma.js-1.2.0/plugins/sigma.layout.noverlap/sigma.layout.noverlap.js b/sigma.js-1.2.0/plugins/sigma.layout.noverlap/sigma.layout.noverlap.js new file mode 100644 index 0000000..6d4b3a4 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.layout.noverlap/sigma.layout.noverlap.js @@ -0,0 +1,408 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw new Error('sigma is not declared'); + + // Initialize package: + sigma.utils.pkg('sigma.layout.noverlap'); + + /** + * Noverlap Layout + * =============================== + * + * Author: @apitts / Andrew Pitts + * Algorithm: @jacomyma / Mathieu Jacomy (originally contributed to Gephi and ported to sigma.js under the MIT license by @andpitts with permission) + * Acknowledgement: @sheyman / Sébastien Heymann (some inspiration has been taken from other MIT licensed layout algorithms authored by @sheyman) + * Version: 0.1 + */ + + var settings = { + speed: 3, + scaleNodes: 1.2, + nodeMargin: 5.0, + gridSize: 20, + permittedExpansion: 1.1, + rendererIndex: 0, + maxIterations: 500 + }; + + var _instance = {}; + + /** + * Event emitter Object + * ------------------ + */ + var _eventEmitter = {}; + + /** + * Noverlap Object + * ------------------ + */ + function Noverlap() { + var self = this; + + this.init = function (sigInst, options) { + options = options || {}; + + // Properties + this.sigInst = sigInst; + this.config = sigma.utils.extend(options, settings); + this.easing = options.easing; + this.duration = options.duration; + + if (options.nodes) { + this.nodes = options.nodes; + delete options.nodes; + } + + if (!sigma.plugins || typeof sigma.plugins.animate === 'undefined') { + throw new Error('sigma.plugins.animate is not declared'); + } + + // State + this.running = false; + }; + + /** + * Single layout iteration. + */ + this.atomicGo = function () { + if (!this.running || this.iterCount < 1) return false; + + var nodes = this.nodes || this.sigInst.graph.nodes(), + nodesCount = nodes.length, + i, + n, + n1, + n2, + xmin = Infinity, + xmax = -Infinity, + ymin = Infinity, + ymax = -Infinity, + xwidth, + yheight, + xcenter, + ycenter, + grid, + row, + col, + minXBox, + maxXBox, + minYBox, + maxYBox, + adjacentNodes, + subRow, + subCol, + nxmin, + nxmax, + nymin, + nymax; + + this.iterCount--; + this.running = false; + + for (i=0; i < nodesCount; i++) { + n = nodes[i]; + n.dn.dx = 0; + n.dn.dy = 0; + + //Find the min and max for both x and y across all nodes + xmin = Math.min(xmin, n.dn_x - (n.dn_size*self.config.scaleNodes + self.config.nodeMargin) ); + xmax = Math.max(xmax, n.dn_x + (n.dn_size*self.config.scaleNodes + self.config.nodeMargin) ); + ymin = Math.min(ymin, n.dn_y - (n.dn_size*self.config.scaleNodes + self.config.nodeMargin) ); + ymax = Math.max(ymax, n.dn_y + (n.dn_size*self.config.scaleNodes + self.config.nodeMargin) ); + + } + + xwidth = xmax - xmin; + yheight = ymax - ymin; + xcenter = (xmin + xmax) / 2; + ycenter = (ymin + ymax) / 2; + xmin = xcenter - self.config.permittedExpansion*xwidth / 2; + xmax = xcenter + self.config.permittedExpansion*xwidth / 2; + ymin = ycenter - self.config.permittedExpansion*yheight / 2; + ymax = ycenter + self.config.permittedExpansion*yheight / 2; + + grid = {}; //An object of objects where grid[row][col] is an array of node ids representing nodes that fall in that grid. Nodes can fall in more than one grid + + for(row = 0; row < self.config.gridSize; row++) { + grid[row] = {}; + for(col = 0; col < self.config.gridSize; col++) { + grid[row][col] = []; + } + } + + //Place nodes in grid + for (i=0; i < nodesCount; i++) { + n = nodes[i]; + + nxmin = n.dn_x - (n.dn_size*self.config.scaleNodes + self.config.nodeMargin); + nxmax = n.dn_x + (n.dn_size*self.config.scaleNodes + self.config.nodeMargin); + nymin = n.dn_y - (n.dn_size*self.config.scaleNodes + self.config.nodeMargin); + nymax = n.dn_y + (n.dn_size*self.config.scaleNodes + self.config.nodeMargin); + + minXBox = Math.floor(self.config.gridSize* (nxmin - xmin) / (xmax - xmin) ); + maxXBox = Math.floor(self.config.gridSize* (nxmax - xmin) / (xmax - xmin) ); + minYBox = Math.floor(self.config.gridSize* (nymin - ymin) / (ymax - ymin) ); + maxYBox = Math.floor(self.config.gridSize* (nymax - ymin) / (ymax - ymin) ); + for(col = minXBox; col <= maxXBox; col++) { + for(row = minYBox; row <= maxYBox; row++) { + grid[row][col].push(n.id); + } + } + } + + + adjacentNodes = {}; //An object that stores the node ids of adjacent nodes (either in same grid box or adjacent grid box) for all nodes + + for(row = 0; row < self.config.gridSize; row++) { + for(col = 0; col < self.config.gridSize; col++) { + grid[row][col].forEach(function(nodeId) { + if(!adjacentNodes[nodeId]) { + adjacentNodes[nodeId] = []; + } + for(subRow = Math.max(0, row - 1); subRow <= Math.min(row + 1, self.config.gridSize - 1); subRow++) { + for(subCol = Math.max(0, col - 1); subCol <= Math.min(col + 1, self.config.gridSize - 1); subCol++) { + grid[subRow][subCol].forEach(function(subNodeId) { + if(subNodeId !== nodeId && adjacentNodes[nodeId].indexOf(subNodeId) === -1) { + adjacentNodes[nodeId].push(subNodeId); + } + }); + } + } + }); + } + } + + //If two nodes overlap then repulse them + for (i=0; i < nodesCount; i++) { + n1 = nodes[i]; + adjacentNodes[n1.id].forEach(function(nodeId) { + var n2 = self.sigInst.graph.nodes(nodeId); + var xDist = n2.dn_x - n1.dn_x; + var yDist = n2.dn_y - n1.dn_y; + var dist = Math.sqrt(xDist*xDist + yDist*yDist); + var collision = (dist < ((n1.dn_size*self.config.scaleNodes + self.config.nodeMargin) + (n2.dn_size*self.config.scaleNodes + self.config.nodeMargin))); + if(collision) { + self.running = true; + if(dist > 0) { + n2.dn.dx += xDist / dist * (1 + n1.dn_size); + n2.dn.dy += yDist / dist * (1 + n1.dn_size); + } else { + n2.dn.dx += xwidth * 0.01 * (0.5 - Math.random()); + n2.dn.dy += yheight * 0.01 * (0.5 - Math.random()); + } + } + }); + } + + for (i=0; i < nodesCount; i++) { + n = nodes[i]; + if(!n.fixed) { + n.dn_x = n.dn_x + n.dn.dx * 0.1 * self.config.speed; + n.dn_y = n.dn_y + n.dn.dy * 0.1 * self.config.speed; + } + } + + if(this.running && this.iterCount < 1) { + this.running = false; + } + + return this.running; + }; + + this.go = function () { + this.iterCount = this.config.maxIterations; + + while (this.running) { + this.atomicGo(); + }; + + this.stop(); + }; + + this.start = function() { + if (this.running) return; + + var nodes = this.sigInst.graph.nodes(); + + var prefix = this.sigInst.renderers[self.config.rendererIndex].options.prefix; + + this.running = true; + + // Init nodes + for (var i = 0; i < nodes.length; i++) { + nodes[i].dn_x = nodes[i][prefix + 'x']; + nodes[i].dn_y = nodes[i][prefix + 'y']; + nodes[i].dn_size = nodes[i][prefix + 'size']; + nodes[i].dn = { + dx: 0, + dy: 0 + }; + } + _eventEmitter[self.sigInst.id].dispatchEvent('start'); + this.go(); + }; + + this.stop = function() { + var nodes = this.sigInst.graph.nodes(); + + this.running = false; + + if (this.easing) { + _eventEmitter[self.sigInst.id].dispatchEvent('interpolate'); + sigma.plugins.animate( + self.sigInst, + { + x: 'dn_x', + y: 'dn_y' + }, + { + easing: self.easing, + onComplete: function() { + self.sigInst.refresh(); + for (var i = 0; i < nodes.length; i++) { + nodes[i].dn = null; + nodes[i].dn_x = null; + nodes[i].dn_y = null; + } + _eventEmitter[self.sigInst.id].dispatchEvent('stop'); + }, + duration: self.duration + } + ); + } + else { + // Apply changes + for (var i = 0; i < nodes.length; i++) { + nodes[i].x = nodes[i].dn_x; + nodes[i].y = nodes[i].dn_y; + } + + this.sigInst.refresh(); + + for (var i = 0; i < nodes.length; i++) { + nodes[i].dn = null; + nodes[i].dn_x = null; + nodes[i].dn_y = null; + } + _eventEmitter[self.sigInst.id].dispatchEvent('stop'); + } + }; + + this.kill = function() { + this.sigInst = null; + this.config = null; + this.easing = null; + }; + }; + + /** + * Interface + * ---------- + */ + + /** + * Configure the layout algorithm. + + * Recognized options: + * ********************** + * Here is the exhaustive list of every accepted parameter in the settings + * object: + * + * {?number} speed A larger value increases the convergence speed at the cost of precision + * {?number} scaleNodes The ratio to scale nodes by - a larger ratio will lead to more space around larger nodes + * {?number} nodeMargin A fixed margin to apply around nodes regardless of size + * {?number} maxIterations The maximum number of iterations to perform before the layout completes. + * {?integer} gridSize The number of rows and columns to use when partioning nodes into a grid for efficient computation + * {?number} permittedExpansion A permitted expansion factor to the overall size of the network applied at each iteration + * {?integer} rendererIndex The index of the renderer to use for node co-ordinates. Defaults to zero. + * {?(function|string)} easing Either the name of an easing in the sigma.utils.easings package or a function. If not specified, the + * quadraticInOut easing from this package will be used instead. + * {?number} duration The duration of the animation. If not specified, the "animationsTime" setting value of the sigma instance will be used instead. + * + * + * @param {object} config The optional configuration object. + * + * @return {sigma.classes.dispatcher} Returns an event emitter. + */ + sigma.prototype.configNoverlap = function(config) { + + var sigInst = this; + + if (!config) throw new Error('Missing argument: "config"'); + + // Create instance if undefined + if (!_instance[sigInst.id]) { + _instance[sigInst.id] = new Noverlap(); + + _eventEmitter[sigInst.id] = {}; + sigma.classes.dispatcher.extend(_eventEmitter[sigInst.id]); + + // Binding on kill to clear the references + sigInst.bind('kill', function() { + _instance[sigInst.id].kill(); + _instance[sigInst.id] = null; + _eventEmitter[sigInst.id] = null; + }); + } + + _instance[sigInst.id].init(sigInst, config); + + return _eventEmitter[sigInst.id]; + }; + + /** + * Start the layout algorithm. It will use the existing configuration if no + * new configuration is passed. + + * Recognized options: + * ********************** + * Here is the exhaustive list of every accepted parameter in the settings + * object + * + * {?number} speed A larger value increases the convergence speed at the cost of precision + * {?number} scaleNodes The ratio to scale nodes by - a larger ratio will lead to more space around larger nodes + * {?number} nodeMargin A fixed margin to apply around nodes regardless of size + * {?number} maxIterations The maximum number of iterations to perform before the layout completes. + * {?integer} gridSize The number of rows and columns to use when partioning nodes into a grid for efficient computation + * {?number} permittedExpansion A permitted expansion factor to the overall size of the network applied at each iteration + * {?integer} rendererIndex The index of the renderer to use for node co-ordinates. Defaults to zero. + * {?(function|string)} easing Either the name of an easing in the sigma.utils.easings package or a function. If not specified, the + * quadraticInOut easing from this package will be used instead. + * {?number} duration The duration of the animation. If not specified, the "animationsTime" setting value of the sigma instance will be used instead. + * + * + * + * @param {object} config The optional configuration object. + * + * @return {sigma.classes.dispatcher} Returns an event emitter. + */ + + sigma.prototype.startNoverlap = function(config) { + + var sigInst = this; + + if (config) { + this.configNoverlap(sigInst, config); + } + + _instance[sigInst.id].start(); + + return _eventEmitter[sigInst.id]; + }; + + /** + * Returns true if the layout has started and is not completed. + * + * @return {boolean} + */ + sigma.prototype.isNoverlapRunning = function() { + + var sigInst = this; + + return !!_instance[sigInst.id] && _instance[sigInst.id].running; + }; + +}).call(this); \ No newline at end of file diff --git a/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/LICENSE b/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/LICENSE new file mode 100644 index 0000000..c9f3b20 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/LICENSE @@ -0,0 +1,553 @@ +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 +Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. +Preamble +The GNU General Public License is a free, copyleft license for +software and other kinds of works. +The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. +When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. +To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. +For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. +Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. +For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. +Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. +Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. +The precise terms and conditions for copying, distribution and +modification follow. +TERMS AND CONDITIONS +0. Definitions. +"This License" refers to version 3 of the GNU General Public License. +"Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. +"The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. +To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. +A "covered work" means either the unmodified Program or a work based +on the Program. +To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. +To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. +An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. +1. Source Code. +The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. +A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. +The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. +The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. +The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. +The Corresponding Source for a work in source code form is that +same work. +2. Basic Permissions. +All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. +You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. +Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. +When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. +You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: +a) The work must carry prominent notices stating that you modified +it, and giving a relevant date. +b) The work must carry prominent notices stating that it is +released under this License and any conditions added under section +7. This requirement modifies the requirement in section 4 to +"keep intact all notices". +c) You must license the entire work, as a whole, under this +License to anyone who comes into possession of a copy. This +License will therefore apply, along with any applicable section 7 +additional terms, to the whole of the work, and all its parts, +regardless of how they are packaged. This License gives no +permission to license the work in any other way, but it does not +invalidate such permission if you have separately received it. +d) If the work has interactive user interfaces, each must display +Appropriate Legal Notices; however, if the Program has interactive +interfaces that do not display Appropriate Legal Notices, your +work need not make them do so. +A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: +a) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by the +Corresponding Source fixed on a durable physical medium +customarily used for software interchange. +b) Convey the object code in, or embodied in, a physical product +(including a physical distribution medium), accompanied by a +written offer, valid for at least three years and valid for as +long as you offer spare parts or customer support for that product +model, to give anyone who possesses the object code either (1) a +copy of the Corresponding Source for all the software in the +product that is covered by this License, on a durable physical +medium customarily used for software interchange, for a price no +more than your reasonable cost of physically performing this +conveying of source, or (2) access to copy the +Corresponding Source from a network server at no charge. +c) Convey individual copies of the object code with a copy of the +written offer to provide the Corresponding Source. This +alternative is allowed only occasionally and noncommercially, and +only if you received the object code with such an offer, in accord +with subsection 6b. +d) Convey the object code by offering access from a designated +place (gratis or for a charge), and offer equivalent access to the +Corresponding Source in the same way through the same place at no +further charge. You need not require recipients to copy the +Corresponding Source along with the object code. If the place to +copy the object code is a network server, the Corresponding Source +may be on a different server (operated by you or a third party) +that supports equivalent copying facilities, provided you maintain +clear directions next to the object code saying where to find the +Corresponding Source. Regardless of what server hosts the +Corresponding Source, you remain obligated to ensure that it is +available for as long as needed to satisfy these requirements. +e) Convey the object code using peer-to-peer transmission, provided +you inform other peers where the object code and Corresponding +Source of the work are being offered to the general public at no +charge under subsection 6d. +A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. +A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. +"Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. +If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). +The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. +Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. +7. Additional Terms. +"Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. +When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. +Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: +a) Disclaiming warranty or limiting liability differently from the +terms of sections 15 and 16 of this License; or +b) Requiring preservation of specified reasonable legal notices or +author attributions in that material or in the Appropriate Legal +Notices displayed by works containing it; or +c) Prohibiting misrepresentation of the origin of that material, or +requiring that modified versions of such material be marked in +reasonable ways as different from the original version; or +d) Limiting the use for publicity purposes of names of licensors or +authors of the material; or +e) Declining to grant rights under trademark law for use of some +trade names, trademarks, or service marks; or +f) Requiring indemnification of licensors and authors of that +material by anyone who conveys the material (or modified versions of +it) with contractual assumptions of liability to the recipient, for +any liability that these contractual assumptions directly impose on +those licensors and authors. +All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. +If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. +Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. +8. Termination. +You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). +However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. +Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. +Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. +An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. +You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. +11. Patents. +A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". +A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. +Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. +In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. +If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. +If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. +A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. +Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. +Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. +If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. +Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. +END OF TERMS AND CONDITIONS +How to Apply These Terms to Your New Programs +If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. +To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. +{one line to give the program's name and a brief idea of what it does.} +Copyright (C) {year} {name of author} +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 3 of the License, or +(at your option) any later version. +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. +You should have received a copy of the GNU General Public License +along with this program. If not, see <http://www.gnu.org/licenses/>. +Also add information on how to contact you by electronic and paper mail. +If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: +{project} Copyright (C) {year} {fullname} +This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. +This is free software, and you are welcome to redistribute it +under certain conditions; type `show c' for details. +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". +You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. +The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. \ No newline at end of file diff --git a/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/README.md b/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/README.md new file mode 100644 index 0000000..f55c70a --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/README.md @@ -0,0 +1,58 @@ +sigma.neo4j.cypher +==================== + +Plugin developed by [Benoît Simard](https://github.com/sim51). + +--- + +This plugin provides a simple function, `sigma.neo4j.cypher()`, that will run a cypher query on a neo4j instance, parse the response, eventually instantiate sigma and fill the graph with the `graph.read()` method. + +Nodes are created with the following structure : + * id -> Neo4j node id + * label -> Neo4j node id + * neo4j_labels -> Labels of Neo4j node + * neo4j_data -> All the properties of the neo4j node + +Edges are created with the following structure : + * id -> Neo4j edge id + * label -> Neo4j edge type + * neo4j_type -> Neo4j edge type + * neo4j_data -> All the properties of Neo4j relationship + +The most basic way to use this helper is to call it with a neo4j server url and a cypher query. It will then instantiate sigma, but after having added the graph into the config object. + +For neo4j < 2.2 +````javascript +sigma.neo4j.cypher( + 'http://localhost:7474', + 'MATCH (n) OPTIONAL MATCH (n)-[r]->(m) RETURN n,r,m LIMIT 100', + { container: 'myContainer' } +); +```` + +For neo4j >= 2.2, you must pass a neo4j user with its password. So instead of the neo4j url, you have to pass a neo4j server object like this : +````javascript +sigma.neo4j.cypher( + { url: 'http://localhost:7474', user:'neo4j', password:'admin' }, + 'MATCH (n) OPTIONAL MATCH (n)-[r]->(m) RETURN n,r,m LIMIT 100', + { container: 'myContainer' } +); +```` + +It is also possible to update an existing instance's graph instead. + +````javascript +sigma.neo4j.cypher( + { url: 'http://localhost:7474', user:'neo4j', password:'admin' }, + 'MATCH (n) OPTIONAL MATCH (n)-[r]->(m) RETURN n,r,m LIMIT 100', + myExistingInstance, + function() { + myExistingInstance.refresh(); + } +); +```` + +There is two additional functions provided by the plugin : + + * ```sigma.neo4j.getTypes({ url: 'http://localhost:7474', user:'neo4j', password:'admin' }, callback)``` : Return all relationship type of the database + * ```sigma.neo4j.getLabels({ url: 'http://localhost:7474', user:'neo4j', password:'admin' }, callback)``` : Return all node label of the database diff --git a/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/sigma.neo4j.cypher.js b/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/sigma.neo4j.cypher.js new file mode 100644 index 0000000..0e23742 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.neo4j.cypher/sigma.neo4j.cypher.js @@ -0,0 +1,218 @@ +;(function (undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Declare neo4j package + sigma.utils.pkg("sigma.neo4j"); + + // Initialize package: + sigma.utils.pkg('sigma.utils'); + + + /** + * This function is an helper for the neo4j communication. + * + * @param {string|object} neo4j The URL of neo4j server or a neo4j server object. + * @param {string} endpoint Endpoint of the neo4j server + * @param {string} method The calling method for the endpoint : 'GET' or 'POST' + * @param {object|string} data Data that will be send to the server + * @param {function} callback The callback function + */ + sigma.neo4j.send = function(neo4j, endpoint, method, data, callback) { + var xhr = sigma.utils.xhr(), + url, user, password; + + // if neo4j arg is not an object + url = neo4j; + if(typeof neo4j === 'object') { + url = neo4j.url; + user = neo4j.user; + password = neo4j.password; + } + + if (!xhr) + throw 'XMLHttpRequest not supported, cannot load the file.'; + + // Construct the endpoint url + url += endpoint; + + xhr.open(method, url, true); + if( user && password) { + xhr.setRequestHeader('Authorization', 'Basic ' + btoa(user + ':' + password)); + } + xhr.setRequestHeader('Accept', 'application/json'); + xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8'); + xhr.onreadystatechange = function () { + if (xhr.readyState === 4) { + // Call the callback if specified: + callback(JSON.parse(xhr.responseText)); + } + }; + xhr.send(data); + }; + + /** + * This function parse a neo4j cypher query result, and transform it into + * a sigma graph object. + * + * @param {object} result The server response of a cypher query. + * + * @return A graph object + */ + sigma.neo4j.cypher_parse = function(result) { + var graph = { nodes: [], edges: [] }, + nodesMap = {}, + edgesMap = {}, + key; + + // Iteration on all result data + result.results[0].data.forEach(function (data) { + + // iteration on graph for all node + data.graph.nodes.forEach(function (node) { + + var sigmaNode = { + id : node.id, + label : node.id, + x : Math.random(), + y : Math.random(), + size : 1, + color : '#000000', + neo4j_labels : node.labels, + neo4j_data : node.properties + }; + + if (sigmaNode.id in nodesMap) { + // do nothing + } else { + nodesMap[sigmaNode.id] = sigmaNode; + } + }); + + // iteration on graph for all node + data.graph.relationships.forEach(function (edge) { + var sigmaEdge = { + id : edge.id, + label : edge.type, + source : edge.startNode, + target : edge.endNode, + color : '#7D7C8E', + neo4j_type : edge.type, + neo4j_data : edge.properties + }; + + if (sigmaEdge.id in edgesMap) { + // do nothing + } else { + edgesMap[sigmaEdge.id] = sigmaEdge; + } + }); + + }); + + // construct sigma nodes + for (key in nodesMap) { + graph.nodes.push(nodesMap[key]); + } + // construct sigma nodes + for (key in edgesMap) { + graph.edges.push(edgesMap[key]); + } + + return graph; + }; + + + /** + * This function execute a cypher and create a new sigma instance or + * updates the graph of a given instance. It is possible to give a callback + * that will be executed at the end of the process. + * + * @param {object|string} neo4j The URL of neo4j server or a neo4j server object. + * @param {string} cypher The cypher query + * @param {?object|?sigma} sig A sigma configuration object or a sigma instance. + * @param {?function} callback Eventually a callback to execute after + * having parsed the file. It will be called + * with the related sigma instance as + * parameter. + */ + sigma.neo4j.cypher = function (neo4j, cypher, sig, callback) { + var endpoint = '/db/data/transaction/commit', + data, cypherCallback; + + // Data that will be send to the server + data = JSON.stringify({ + "statements": [ + { + "statement": cypher, + "resultDataContents": ["graph"], + "includeStats": false + } + ] + }); + + // Callback method after server response + cypherCallback = function (callback) { + + return function (response) { + + var graph = { nodes: [], edges: [] }; + + graph = sigma.neo4j.cypher_parse(response); + + // Update the instance's graph: + if (sig instanceof sigma) { + sig.graph.clear(); + sig.graph.read(graph); + + // ...or instantiate sigma if needed: + } else if (typeof sig === 'object') { + sig = new sigma(sig); + sig.graph.read(graph); + sig.refresh(); + + // ...or it's finally the callback: + } else if (typeof sig === 'function') { + callback = sig; + sig = null; + } + + // Call the callback if specified: + if (callback) + callback(sig || graph); + }; + }; + + // Let's call neo4j + sigma.neo4j.send(neo4j, endpoint, 'POST', data, cypherCallback(callback)); + }; + + /** + * This function call neo4j to get all labels of the graph. + * + * @param {string} neo4j The URL of neo4j server or an object with the url, user & password. + * @param {function} callback The callback function + * + * @return An array of label + */ + sigma.neo4j.getLabels = function(neo4j, callback) { + sigma.neo4j.send(neo4j, '/db/data/labels', 'GET', null, callback); + }; + + /** + * This function parse a neo4j cypher query result. + * + * @param {string} neo4j The URL of neo4j server or an object with the url, user & password. + * @param {function} callback The callback function + * + * @return An array of relationship type + */ + sigma.neo4j.getTypes = function(neo4j, callback) { + sigma.neo4j.send(neo4j, '/db/data/relationship/types', 'GET', null, callback); + }; + +}).call(this); + + diff --git a/sigma.js-1.2.0/plugins/sigma.parsers.gexf/README.md b/sigma.js-1.2.0/plugins/sigma.parsers.gexf/README.md new file mode 100644 index 0000000..d9ba5e7 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.parsers.gexf/README.md @@ -0,0 +1,29 @@ +sigma.parsers.gexf +================== + +Plugin developed by [Alexis Jacomy](https://github.com/jacomyal), on top of [gexf-parser](https://github.com/Yomguithereal/gexf-parser), developed by [Guillaume Plique](https://github.com/Yomguithereal). + +--- + +This plugin provides a single function, `sigma.parsers.gexf()`, that will load a GEXF encoded file, parse it, and instantiate sigma. + +The most basic way to use this helper is to call it with a path and a sigma configuration object. It will then instantiate sigma, but after having added the graph into the config object. + +````javascript +sigma.parsers.gexf( + 'myGraph.gexf', + { container: 'myContainer' } +); +```` + +It is also possible to update an existing instance's graph instead. + +````javascript +sigma.parsers.gexf( + 'myGraph.gexf', + myExistingInstance, + function() { + myExistingInstance.refresh(); + } +); +```` diff --git a/sigma.js-1.2.0/plugins/sigma.parsers.gexf/gexf-parser.js b/sigma.js-1.2.0/plugins/sigma.parsers.gexf/gexf-parser.js new file mode 100644 index 0000000..6ff9424 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.parsers.gexf/gexf-parser.js @@ -0,0 +1,551 @@ +;(function(undefined) { + 'use strict'; + + /** + * GEXF Library + * ============= + * + * Author: PLIQUE Guillaume (Yomguithereal) + * URL: https://github.com/Yomguithereal/gexf-parser + * Version: 0.1.1 + */ + + /** + * Helper Namespace + * ----------------- + * + * A useful batch of function dealing with DOM operations and types. + */ + var _helpers = { + getModelTags: function(xml) { + var attributesTags = xml.getElementsByTagName('attributes'), + modelTags = {}, + l = attributesTags.length, + i; + + for (i = 0; i < l; i++) + modelTags[attributesTags[i].getAttribute('class')] = + attributesTags[i].childNodes; + + return modelTags; + }, + nodeListToArray: function(nodeList) { + + // Return array + var children = []; + + // Iterating + for (var i = 0, len = nodeList.length; i < len; ++i) { + if (nodeList[i].nodeName !== '#text') + children.push(nodeList[i]); + } + + return children; + }, + nodeListEach: function(nodeList, func) { + + // Iterating + for (var i = 0, len = nodeList.length; i < len; ++i) { + if (nodeList[i].nodeName !== '#text') + func(nodeList[i]); + } + }, + nodeListToHash: function(nodeList, filter) { + + // Return object + var children = {}; + + // Iterating + for (var i = 0; i < nodeList.length; i++) { + if (nodeList[i].nodeName !== '#text') { + var prop = filter(nodeList[i]); + children[prop.key] = prop.value; + } + } + + return children; + }, + namedNodeMapToObject: function(nodeMap) { + + // Return object + var attributes = {}; + + // Iterating + for (var i = 0; i < nodeMap.length; i++) { + attributes[nodeMap[i].name] = nodeMap[i].value; + } + + return attributes; + }, + getFirstElementByTagNS: function(node, ns, tag) { + var el = node.getElementsByTagName(ns + ':' + tag)[0]; + + if (!el) + el = node.getElementsByTagNameNS(ns, tag)[0]; + + if (!el) + el = node.getElementsByTagName(tag)[0]; + + return el; + }, + getAttributeNS: function(node, ns, attribute) { + var attr_value = node.getAttribute(ns + ':' + attribute); + + if (attr_value === undefined) + attr_value = node.getAttributeNS(ns, attribute); + + if (attr_value === undefined) + attr_value = node.getAttribute(attribute); + + return attr_value; + }, + enforceType: function(type, value) { + + switch (type) { + case 'boolean': + value = (value === 'true'); + break; + + case 'integer': + case 'long': + case 'float': + case 'double': + value = +value; + break; + + case 'liststring': + value = value ? value.split('|') : []; + break; + } + + return value; + }, + getRGB: function(values) { + return (values[3]) ? + 'rgba(' + values.join(',') + ')' : + 'rgb(' + values.slice(0, -1).join(',') + ')'; + } + }; + + + /** + * Parser Core Functions + * ---------------------- + * + * The XML parser's functions themselves. + */ + + /** + * Node structure. + * A function returning an object guarded with default value. + * + * @param {object} properties The node properties. + * @return {object} The guarded node object. + */ + function Node(properties) { + + // Possible Properties + var node = { + id: properties.id, + label: properties.label + }; + + if (properties.viz) + node.viz = properties.viz; + + if (properties.attributes) + node.attributes = properties.attributes; + + return node; + } + + + /** + * Edge structure. + * A function returning an object guarded with default value. + * + * @param {object} properties The edge properties. + * @return {object} The guarded edge object. + */ + function Edge(properties) { + + // Possible Properties + var edge = { + id: properties.id, + type: properties.type || 'undirected', + label: properties.label || '', + source: properties.source, + target: properties.target, + weight: +properties.weight || 1.0 + }; + + if (properties.viz) + edge.viz = properties.viz; + + if (properties.attributes) + edge.attributes = properties.attributes; + + return edge; + } + + /** + * Graph parser. + * This structure parse a gexf string and return an object containing the + * parsed graph. + * + * @param {string} xml The xml string of the gexf file to parse. + * @return {object} The parsed graph. + */ + function Graph(xml) { + var _xml = {}; + + // Basic Properties + //------------------ + _xml.els = { + root: xml.getElementsByTagName('gexf')[0], + graph: xml.getElementsByTagName('graph')[0], + meta: xml.getElementsByTagName('meta')[0], + nodes: xml.getElementsByTagName('node'), + edges: xml.getElementsByTagName('edge'), + model: _helpers.getModelTags(xml) + }; + + // Information + _xml.hasViz = !!_helpers.getAttributeNS(_xml.els.root, 'xmlns', 'viz'); + _xml.version = _xml.els.root.getAttribute('version') || '1.0'; + _xml.mode = _xml.els.graph.getAttribute('mode') || 'static'; + + var edgeType = _xml.els.graph.getAttribute('defaultedgetype'); + _xml.defaultEdgetype = edgeType || 'undirected'; + + // Parser Functions + //------------------ + + // Meta Data + function _metaData() { + + var metas = {}; + if (!_xml.els.meta) + return metas; + + // Last modified date + metas.lastmodifieddate = _xml.els.meta.getAttribute('lastmodifieddate'); + + // Other information + _helpers.nodeListEach(_xml.els.meta.childNodes, function(child) { + metas[child.tagName.toLowerCase()] = child.textContent; + }); + + return metas; + } + + // Model + function _model(cls) { + var attributes = []; + + // Iterating through attributes + if (_xml.els.model[cls]) + _helpers.nodeListEach(_xml.els.model[cls], function(attr) { + + // Properties + var properties = { + id: attr.getAttribute('id') || attr.getAttribute('for'), + type: attr.getAttribute('type') || 'string', + title: attr.getAttribute('title') || '' + }; + + // Defaults + var default_el = _helpers.nodeListToArray(attr.childNodes); + + if (default_el.length > 0) + properties.defaultValue = default_el[0].textContent; + + // Creating attribute + attributes.push(properties); + }); + + return attributes.length > 0 ? attributes : false; + } + + // Data from nodes or edges + function _data(model, node_or_edge) { + + var data = {}; + var attvalues_els = node_or_edge.getElementsByTagName('attvalue'); + + // Getting Node Indicated Attributes + var ah = _helpers.nodeListToHash(attvalues_els, function(el) { + var attributes = _helpers.namedNodeMapToObject(el.attributes); + var key = attributes.id || attributes['for']; + + // Returning object + return {key: key, value: attributes.value}; + }); + + + // Iterating through model + model.map(function(a) { + + // Default value? + data[a.id] = !(a.id in ah) && 'defaultValue' in a ? + _helpers.enforceType(a.type, a.defaultValue) : + _helpers.enforceType(a.type, ah[a.id]); + + }); + + return data; + } + + // Nodes + function _nodes(model) { + var nodes = []; + + // Iteration through nodes + _helpers.nodeListEach(_xml.els.nodes, function(n) { + + // Basic properties + var properties = { + id: n.getAttribute('id'), + label: n.getAttribute('label') || '' + }; + + // Retrieving data from nodes if any + if (model) + properties.attributes = _data(model, n); + + // Retrieving viz information + if (_xml.hasViz) + properties.viz = _nodeViz(n); + + // Pushing node + nodes.push(Node(properties)); + }); + + return nodes; + } + + // Viz information from nodes + function _nodeViz(node) { + var viz = {}; + + // Color + var color_el = _helpers.getFirstElementByTagNS(node, 'viz', 'color'); + + if (color_el) { + var color = ['r', 'g', 'b', 'a'].map(function(c) { + return color_el.getAttribute(c); + }); + + viz.color = _helpers.getRGB(color); + } + + // Position + var pos_el = _helpers.getFirstElementByTagNS(node, 'viz', 'position'); + + if (pos_el) { + viz.position = {}; + + ['x', 'y', 'z'].map(function(p) { + viz.position[p] = +pos_el.getAttribute(p); + }); + } + + // Size + var size_el = _helpers.getFirstElementByTagNS(node, 'viz', 'size'); + if (size_el) + viz.size = +size_el.getAttribute('value'); + + // Shape + var shape_el = _helpers.getFirstElementByTagNS(node, 'viz', 'shape'); + if (shape_el) + viz.shape = shape_el.getAttribute('value'); + + return viz; + } + + // Edges + function _edges(model, default_type) { + var edges = []; + + // Iteration through edges + _helpers.nodeListEach(_xml.els.edges, function(e) { + + // Creating the edge + var properties = _helpers.namedNodeMapToObject(e.attributes); + if (!('type' in properties)) { + properties.type = default_type; + } + + // Retrieving edge data + if (model) + properties.attributes = _data(model, e); + + + // Retrieving viz information + if (_xml.hasViz) + properties.viz = _edgeViz(e); + + edges.push(Edge(properties)); + }); + + return edges; + } + + // Viz information from edges + function _edgeViz(edge) { + var viz = {}; + + // Color + var color_el = _helpers.getFirstElementByTagNS(edge, 'viz', 'color'); + + if (color_el) { + var color = ['r', 'g', 'b', 'a'].map(function(c) { + return color_el.getAttribute(c); + }); + + viz.color = _helpers.getRGB(color); + } + + // Shape + var shape_el = _helpers.getFirstElementByTagNS(edge, 'viz', 'shape'); + if (shape_el) + viz.shape = shape_el.getAttribute('value'); + + // Thickness + var thick_el = _helpers.getFirstElementByTagNS(edge, 'viz', 'thickness'); + if (thick_el) + viz.thickness = +thick_el.getAttribute('value'); + + return viz; + } + + + // Returning the Graph + //--------------------- + var nodeModel = _model('node'), + edgeModel = _model('edge'); + + var graph = { + version: _xml.version, + mode: _xml.mode, + defaultEdgeType: _xml.defaultEdgetype, + meta: _metaData(), + model: {}, + nodes: _nodes(nodeModel), + edges: _edges(edgeModel, _xml.defaultEdgetype) + }; + + if (nodeModel) + graph.model.node = nodeModel; + if (edgeModel) + graph.model.edge = edgeModel; + + return graph; + } + + + /** + * Public API + * ----------- + * + * User-accessible functions. + */ + + // Fetching GEXF with XHR + function fetch(gexf_url, callback) { + var xhr = (function() { + if (window.XMLHttpRequest) + return new XMLHttpRequest(); + + var names, + i; + + if (window.ActiveXObject) { + names = [ + 'Msxml2.XMLHTTP.6.0', + 'Msxml2.XMLHTTP.3.0', + 'Msxml2.XMLHTTP', + 'Microsoft.XMLHTTP' + ]; + + for (i in names) + try { + return new ActiveXObject(names[i]); + } catch (e) {} + } + + return null; + })(); + + if (!xhr) + throw 'XMLHttpRequest not supported, cannot load the file.'; + + // Async? + var async = (typeof callback === 'function'), + getResult; + + // If we can't override MIME type, we are on IE 9 + // We'll be parsing the response string then. + if (xhr.overrideMimeType) { + xhr.overrideMimeType('text/xml'); + getResult = function(r) { + return r.responseXML; + }; + } + else { + getResult = function(r) { + var p = new DOMParser(); + return p.parseFromString(r.responseText, 'application/xml'); + }; + } + + xhr.open('GET', gexf_url, async); + + if (async) + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) + callback(getResult(xhr)); + }; + + xhr.send(); + + return (async) ? xhr : getResult(xhr); + } + + // Parsing the GEXF File + function parse(gexf) { + return Graph(gexf); + } + + // Fetch and parse the GEXF File + function fetchAndParse(gexf_url, callback) { + if (typeof callback === 'function') { + return fetch(gexf_url, function(gexf) { + callback(Graph(gexf)); + }); + } else + return Graph(fetch(gexf_url)); + } + + + /** + * Exporting + * ---------- + */ + if (typeof this.gexf !== 'undefined') + throw 'gexf: error - a variable called "gexf" already ' + + 'exists in the global scope'; + + this.gexf = { + + // Functions + parse: parse, + fetch: fetchAndParse, + + // Version + version: '0.1.1' + }; + + if (typeof exports !== 'undefined' && this.exports !== exports) + module.exports = this.gexf; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.parsers.gexf/sigma.parsers.gexf.js b/sigma.js-1.2.0/plugins/sigma.parsers.gexf/sigma.parsers.gexf.js new file mode 100644 index 0000000..943d313 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.parsers.gexf/sigma.parsers.gexf.js @@ -0,0 +1,112 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize package: + sigma.utils.pkg('sigma.parsers'); + + // Just a basic ID generator: + var _id = 0; + function edgeId() { + return 'e' + (_id++); + } + + /** + * If the first arguments is a valid URL, this function loads a GEXF file and + * creates a new sigma instance or updates the graph of a given instance. It + * is possible to give a callback that will be executed at the end of the + * process. And if the first argument is a DOM element, it will skip the + * loading step and parse the given XML tree to fill the graph. + * + * @param {string|DOMElement} target The URL of the GEXF file or a valid + * GEXF tree. + * @param {object|sigma} sig A sigma configuration object or a + * sigma instance. + * @param {?function} callback Eventually a callback to execute + * after having parsed the file. It will + * be called with the related sigma + * instance as parameter. + */ + sigma.parsers.gexf = function(target, sig, callback) { + var i, + l, + arr, + obj; + + function parse(graph) { + // Adapt the graph: + arr = graph.nodes; + for (i = 0, l = arr.length; i < l; i++) { + obj = arr[i]; + + obj.id = obj.id; + if (obj.viz && typeof obj.viz === 'object') { + if (obj.viz.position && typeof obj.viz.position === 'object') { + obj.x = obj.viz.position.x; + obj.y = -obj.viz.position.y; // Needed otherwise it's up side down + } + obj.size = obj.viz.size; + obj.color = obj.viz.color; + } + } + + arr = graph.edges; + for (i = 0, l = arr.length; i < l; i++) { + obj = arr[i]; + + obj.id = typeof obj.id === 'string' ? obj.id : edgeId(); + obj.source = '' + obj.source; + obj.target = '' + obj.target; + + if (obj.viz && typeof obj.viz === 'object') { + obj.color = obj.viz.color; + obj.size = obj.viz.thickness; + } + + // Weight over viz.thickness? + obj.size = obj.weight; + + // Changing type to be direction so it won't mess with sigma's naming + obj.direction = obj.type; + delete obj.type; + } + + // Update the instance's graph: + if (sig instanceof sigma) { + sig.graph.clear(); + + arr = graph.nodes; + for (i = 0, l = arr.length; i < l; i++) + sig.graph.addNode(arr[i]); + + arr = graph.edges; + for (i = 0, l = arr.length; i < l; i++) + sig.graph.addEdge(arr[i]); + + // ...or instantiate sigma if needed: + } else if (typeof sig === 'object') { + sig.graph = graph; + sig = new sigma(sig); + + // ...or it's finally the callback: + } else if (typeof sig === 'function') { + callback = sig; + sig = null; + } + + // Call the callback if specified: + if (callback) { + callback(sig || graph); + return; + } else + return graph; + } + + if (typeof target === 'string') + gexf.fetch(target, parse); + else if (typeof target === 'object') + return parse(gexf.parse(target)); + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.parsers.json/README.md b/sigma.js-1.2.0/plugins/sigma.parsers.json/README.md new file mode 100644 index 0000000..8c9be75 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.parsers.json/README.md @@ -0,0 +1,29 @@ +sigma.parsers.json +================== + +Plugin developed by [Alexis Jacomy](https://github.com/jacomyal). + +--- + +This plugin provides a single function, `sigma.parsers.json()`, that will load a JSON encoded file, parse it, eventually instantiate sigma and fill the graph with the `graph.read()` method. The main goal is to avoid using jQuery only to load an external JSON file. + +The most basic way to use this helper is to call it with a path and a sigma configuration object. It will then instanciate sigma, but after having added the graph into the config object. + +````javascript +sigma.parsers.json( + 'myGraph.json', + { container: 'myContainer' } +); +```` + +It is also possible to update an existing instance's graph instead. + +````javascript +sigma.parsers.json( + 'myGraph.json', + myExistingInstance, + function() { + myExistingInstance.refresh(); + } +); +```` diff --git a/sigma.js-1.2.0/plugins/sigma.parsers.json/sigma.parsers.json.js b/sigma.js-1.2.0/plugins/sigma.parsers.json/sigma.parsers.json.js new file mode 100644 index 0000000..b71903d --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.parsers.json/sigma.parsers.json.js @@ -0,0 +1,88 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize package: + sigma.utils.pkg('sigma.parsers'); + sigma.utils.pkg('sigma.utils'); + + /** + * Just an XmlHttpRequest polyfill for different IE versions. + * + * @return {*} The XHR like object. + */ + sigma.utils.xhr = function() { + if (window.XMLHttpRequest) + return new XMLHttpRequest(); + + var names, + i; + + if (window.ActiveXObject) { + names = [ + 'Msxml2.XMLHTTP.6.0', + 'Msxml2.XMLHTTP.3.0', + 'Msxml2.XMLHTTP', + 'Microsoft.XMLHTTP' + ]; + + for (i in names) + try { + return new ActiveXObject(names[i]); + } catch (e) {} + } + + return null; + }; + + /** + * This function loads a JSON file and creates a new sigma instance or + * updates the graph of a given instance. It is possible to give a callback + * that will be executed at the end of the process. + * + * @param {string} url The URL of the JSON file. + * @param {object|sigma} sig A sigma configuration object or a sigma + * instance. + * @param {?function} callback Eventually a callback to execute after + * having parsed the file. It will be called + * with the related sigma instance as + * parameter. + */ + sigma.parsers.json = function(url, sig, callback) { + var graph, + xhr = sigma.utils.xhr(); + + if (!xhr) + throw 'XMLHttpRequest not supported, cannot load the file.'; + + xhr.open('GET', url, true); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + graph = JSON.parse(xhr.responseText); + + // Update the instance's graph: + if (sig instanceof sigma) { + sig.graph.clear(); + sig.graph.read(graph); + + // ...or instantiate sigma if needed: + } else if (typeof sig === 'object') { + sig.graph = graph; + sig = new sigma(sig); + + // ...or it's finally the callback: + } else if (typeof sig === 'function') { + callback = sig; + sig = null; + } + + // Call the callback if specified: + if (callback) + callback(sig || graph); + } + }; + xhr.send(); + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/LICENSE b/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/LICENSE new file mode 100644 index 0000000..a84c395 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/LICENSE @@ -0,0 +1,25 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to <http://unlicense.org> + diff --git a/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/README.md b/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/README.md new file mode 100644 index 0000000..68d5363 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/README.md @@ -0,0 +1,27 @@ +sigma.pathfinding.astar.js — v1.0.0 +=================================== + +> Plugin author: [@A----](https://github.com/A----) +> Main repository for this plugin is here: https://github.com/A----/sigma-pathfinding-astar +> Please report issues, make PR, there. +> This project is released under Public Domain license (see LICENSE for more information). + + +*sigma.pathfinding.astar.js* is a plugin for [sigma.js](http://sigmajs.org) that computes path in a graph +using a naive implementation of the [A*](http://en.wikipedia.org/wiki/A*_search_algorithm) algorithm. + +## Usage + +Either download a tarball, `git clone` the repository or `npm install` it. Then it's pretty straight-forward. + +It adds a method to your `sigma.graph` called `astar(srcId, destId[, options])`. +- `srcId`, identifier of the start node; +- `destId`, identification of the destination node; +- `options` (optional), an object containing one or more of those properties: + - `undirected` (default: `false`), if set to `true`, consider the graph as non-oriented (will explore all edges, including the inbound ones); + - `pathLengthFunction` (default is the geometrical distance), a `function(node1, node2, previousLength)` that should return the new path length between the start node and `node2`, knowing that the path length between the start node and `node1` is contained in `previousLength`. + - `heuristicLengthFunction` (default: `undefined`), a `function(node1, node2)` guesses the path length between `node1` and `node2` (`node2` actually is the destination node). If left undefined, takes the `pathLengthFunction` option (third parameter will be left undefined). + +Return value is either: +- `undefined`: no path could be found between the source node and the destination node; +- `[srcNode, …, destNode ]`: an array of nodes, including source and destination node. diff --git a/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/sigma.pathfinding.astar.js b/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/sigma.pathfinding.astar.js new file mode 100644 index 0000000..0c7bd3f --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.pathfinding.astar/sigma.pathfinding.astar.js @@ -0,0 +1,134 @@ +(function() { + 'use strict'; + + if (typeof sigma === 'undefined') { + throw 'sigma is not declared'; + } + + // Default function to compute path length between two nodes: + // the euclidian + var defaultPathLengthFunction = function(node1, node2, previousPathLength) { + var isEverythingDefined = + node1 != undefined && + node2 != undefined && + node1.x != undefined && + node1.y != undefined && + node2.x != undefined && + node2.y != undefined; + if(!isEverythingDefined) { + return undefined; + } + + return (previousPathLength || 0) + Math.sqrt( + Math.pow((node2.y - node1.y), 2) + Math.pow((node2.x - node1.x), 2) + ); + }; + + sigma.classes.graph.addMethod( + 'astar', + function(srcId, destId, settings) { + var currentSettings = new sigma.classes.configurable( + // Default settings + { + // Graph is directed, affects which edges are taken into account + undirected: false, + // Function to compute the distance between two connected node + pathLengthFunction: defaultPathLengthFunction, + // Function to compute an distance between two nodes + // if undefined, uses pathLengthFunction + heuristicLengthFunction: undefined + }, + settings || {}); + + var pathLengthFunction = currentSettings("pathLengthFunction"), + heuristicLengthFunction = currentSettings("heuristicLengthFunction") || pathLengthFunction; + + var srcNode = this.nodes(srcId), + destNode = this.nodes(destId); + + var closedList = {}, + openList = []; + + var addToLists = function(node, previousNode, pathLength, heuristicLength) { + var nodeId = node.id; + var newItem = { + pathLength: pathLength, + heuristicLength: heuristicLength, + node: node, + nodeId: nodeId, + previousNode: previousNode + }; + + if(closedList[nodeId] == undefined || closedList[nodeId].pathLenth > pathLength) { + closedList[nodeId] = newItem; + + var item; + var i; + for(i = 0; i < openList.length; i++) { + item = openList[i]; + if(item.heuristicLength > heuristicLength) { + break; + } + } + + openList.splice(i, 0, newItem); + } + }; + + addToLists(srcNode, null, 0, 0); + + var pathFound = false; + + // Depending of the type of graph (directed or not), + // the neighbors are either the out neighbors or all. + var allNeighbors; + if(currentSettings("undirected")) { + allNeighbors = this.allNeighborsIndex; + } + else { + allNeighbors = this.outNeighborsIndex; + } + + + var inspectedItem, + neighbors, + neighbor, + pathLength, + heuristicLength, + i; + while(openList.length > 0) { + inspectedItem = openList.shift(); + + // We reached the destination node + if(inspectedItem.nodeId == destId) { + pathFound = true; + break; + } + + neighbors = Object.keys(allNeighbors[inspectedItem.nodeId]); + for(i = 0; i < neighbors.length; i++) { + neighbor = this.nodes(neighbors[i]); + pathLength = pathLengthFunction(inspectedItem.node, neighbor, inspectedItem.pathLength); + heuristicLength = heuristicLengthFunction(neighbor, destNode); + addToLists(neighbor, inspectedItem.node, pathLength, heuristicLength); + } + } + + if(pathFound) { + // Rebuilding path + var path = [], + currentNode = destNode; + + while(currentNode) { + path.unshift(currentNode); + currentNode = closedList[currentNode.id].previousNode; + } + + return path; + } + else { + return undefined; + } + } + ); +}).call(window); diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.animate/README.md b/sigma.js-1.2.0/plugins/sigma.plugins.animate/README.md new file mode 100644 index 0000000..57ece93 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.animate/README.md @@ -0,0 +1,71 @@ +sigma.plugins.animate +===================== + +Plugin developed by [Alexis Jacomy](https://github.com/jacomyal). + +--- + +This plugin provides a method to animate a sigma instance by interpolating some node properties. Check the `sigma.plugins.animate` function doc or the `examples/animate.html` code sample to know more. + +Interpolate coordinates as follows: + +```js +sigma.plugins.animate( + s, + { + x: 'target_x', + y: 'target_y', + } + ); +``` + +Interpolate colors and sizes as follows: + +```js +sigma.plugins.animate( + s, + { + size: 'target_size', + color: 'target_color' + } + ); +``` + +Animate a subset of nodes as follows: + +```js +sigma.plugins.animate( + s, + { + x: 'to_x', + y: 'to_y', + size: 'to_size', + color: 'to_color' + }, + { + nodes: ['n0', 'n1', 'n2'] + } + ); +``` + +Example using all options: + +```js +sigma.plugins.animate( + s, + { + x: 'to_x', + y: 'to_y', + size: 'to_size', + color: 'to_color' + }, + { + nodes: ['n0', 'n1', 'n2'], + easing: 'cubicInOut', + duration: 300, + onComplete: function() { + // do stuff here after animation is complete + } + } + ); +``` diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.animate/sigma.plugins.animate.js b/sigma.js-1.2.0/plugins/sigma.plugins.animate/sigma.plugins.animate.js new file mode 100644 index 0000000..763463f --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.animate/sigma.plugins.animate.js @@ -0,0 +1,204 @@ +/** + * This plugin provides a method to animate a sigma instance by interpolating + * some node properties. Check the sigma.plugins.animate function doc or the + * examples/animate.html code sample to know more. + */ +(function() { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + sigma.utils.pkg('sigma.plugins'); + + var _id = 0, + _cache = {}; + + // TOOLING FUNCTIONS: + // ****************** + function parseColor(val) { + if (_cache[val]) + return _cache[val]; + + var result = [0, 0, 0]; + + if (val.match(/^#/)) { + val = (val || '').replace(/^#/, ''); + result = (val.length === 3) ? + [ + parseInt(val.charAt(0) + val.charAt(0), 16), + parseInt(val.charAt(1) + val.charAt(1), 16), + parseInt(val.charAt(2) + val.charAt(2), 16) + ] : + [ + parseInt(val.charAt(0) + val.charAt(1), 16), + parseInt(val.charAt(2) + val.charAt(3), 16), + parseInt(val.charAt(4) + val.charAt(5), 16) + ]; + } else if (val.match(/^ *rgba? *\(/)) { + val = val.match( + /^ *rgba? *\( *([0-9]*) *, *([0-9]*) *, *([0-9]*) *(,.*)?\) *$/ + ); + result = [ + +val[1], + +val[2], + +val[3] + ]; + } + + _cache[val] = { + r: result[0], + g: result[1], + b: result[2] + }; + + return _cache[val]; + } + + function interpolateColors(c1, c2, p) { + c1 = parseColor(c1); + c2 = parseColor(c2); + + var c = { + r: c1.r * (1 - p) + c2.r * p, + g: c1.g * (1 - p) + c2.g * p, + b: c1.b * (1 - p) + c2.b * p + }; + + return 'rgb(' + [c.r | 0, c.g | 0, c.b | 0].join(',') + ')'; + } + + /** + * This function will animate some specified node properties. It will + * basically call requestAnimationFrame, interpolate the values and call the + * refresh method during a specified duration. + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters in the settings + * object: + * + * {?array} nodes An array of node objects or node ids. If + * not specified, all nodes of the graph + * will be animated. + * {?(function|string)} easing Either the name of an easing in the + * sigma.utils.easings package or a + * function. If not specified, the + * quadraticInOut easing from this package + * will be used instead. + * {?number} duration The duration of the animation. If not + * specified, the "animationsTime" setting + * value of the sigma instance will be used + * instead. + * {?function} onComplete Eventually a function to call when the + * animation is ended. + * + * @param {sigma} s The related sigma instance. + * @param {object} animate An hash with the keys being the node properties + * to interpolate, and the values being the related + * target values. + * @param {?object} options Eventually an object with options. + */ + sigma.plugins.animate = function(s, animate, options) { + var o = options || {}, + id = ++_id, + duration = o.duration || s.settings('animationsTime'), + easing = typeof o.easing === 'string' ? + sigma.utils.easings[o.easing] : + typeof o.easing === 'function' ? + o.easing : + sigma.utils.easings.quadraticInOut, + start = sigma.utils.dateNow(), + nodes, + startPositions; + + if (o.nodes && o.nodes.length) { + if (typeof o.nodes[0] === 'object') + nodes = o.nodes; + else + nodes = s.graph.nodes(o.nodes); // argument is an array of IDs + } + else + nodes = s.graph.nodes(); + + // Store initial positions: + startPositions = nodes.reduce(function(res, node) { + var k; + res[node.id] = {}; + for (k in animate) + if (k in node) + res[node.id][k] = node[k]; + return res; + }, {}); + + s.animations = s.animations || Object.create({}); + sigma.plugins.kill(s); + + // Do not refresh edgequadtree during drag: + var k, + c; + for (k in s.cameras) { + c = s.cameras[k]; + c.edgequadtree._enabled = false; + } + + function step() { + var p = (sigma.utils.dateNow() - start) / duration; + + if (p >= 1) { + nodes.forEach(function(node) { + for (var k in animate) + if (k in animate) + node[k] = node[animate[k]]; + }); + + // Allow to refresh edgequadtree: + var k, + c; + for (k in s.cameras) { + c = s.cameras[k]; + c.edgequadtree._enabled = true; + } + + s.refresh(); + if (typeof o.onComplete === 'function') + o.onComplete(); + } else { + p = easing(p); + nodes.forEach(function(node) { + for (var k in animate) + if (k in animate) { + if (k.match(/color$/)) + node[k] = interpolateColors( + startPositions[node.id][k], + node[animate[k]], + p + ); + else + node[k] = + node[animate[k]] * p + + startPositions[node.id][k] * (1 - p); + } + }); + + s.refresh(); + s.animations[id] = requestAnimationFrame(step); + } + } + + step(); + }; + + sigma.plugins.kill = function(s) { + for (var k in (s.animations || {})) + cancelAnimationFrame(s.animations[k]); + + // Allow to refresh edgequadtree: + var k, + c; + for (k in s.cameras) { + c = s.cameras[k]; + c.edgequadtree._enabled = true; + } + }; +}).call(window); diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/README.md b/sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/README.md new file mode 100644 index 0000000..3ed734d --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/README.md @@ -0,0 +1,36 @@ +sigma.plugins.dragNodes +===================== + +Plugin developed by [José M. Camacho](https://github.com/josemazo), events by [Sébastien Heymann](https://github.com/sheymann) for [Linkurious](https://github.com/Linkurious). + +--- + +This plugin provides a method to drag & drop nodes. At the moment, this plugin is not compatible with the WebGL renderer. Check the sigma.plugins.dragNodes function doc or the [example code](../../examples/drag-nodes.html) to know more. + +To use, include all .js files under this folder. Then initialize it as follows: + +````javascript +var dragListener = new sigma.plugins.dragNodes(sigInst, renderer); +```` + +Kill the plugin as follows: + +````javascript +sigma.plugins.killDragNodes(sigInst); +```` + +## Events + +This plugin provides the following events fired by the instance of the plugin: +* `startdrag`: fired at the beginning of the drag +* `drag`: fired while the node is dragged +* `drop`: fired at the end of the drag if the node has been dragged +* `dragend`: fired at the end of the drag + +Exemple of event binding: + +````javascript +dragListener.bind('startdrag', function(event) { + console.log(event); +}); +```` diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/sigma.plugins.dragNodes.js b/sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/sigma.plugins.dragNodes.js new file mode 100644 index 0000000..fd0ed90 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.dragNodes/sigma.plugins.dragNodes.js @@ -0,0 +1,326 @@ +/** + * This plugin provides a method to drag & drop nodes. Check the + * sigma.plugins.dragNodes function doc or the examples/basic.html & + * examples/api-candy.html code samples to know more. + */ +(function() { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + sigma.utils.pkg('sigma.plugins'); + + + /** + * This function will add `mousedown`, `mouseup` & `mousemove` events to the + * nodes in the `overNode`event to perform drag & drop operations. It uses + * `linear interpolation` [http://en.wikipedia.org/wiki/Linear_interpolation] + * and `rotation matrix` [http://en.wikipedia.org/wiki/Rotation_matrix] to + * calculate the X and Y coordinates from the `cam` or `renderer` node + * attributes. These attributes represent the coordinates of the nodes in + * the real container, not in canvas. + * + * Fired events: + * ************* + * startdrag Fired at the beginning of the drag. + * drag Fired while the node is dragged. + * drop Fired at the end of the drag if the node has been dragged. + * dragend Fired at the end of the drag. + * + * Recognized parameters: + * ********************** + * @param {sigma} s The related sigma instance. + * @param {renderer} renderer The related renderer instance. + */ + function DragNodes(s, renderer) { + sigma.classes.dispatcher.extend(this); + + // A quick hardcoded rule to prevent people from using this plugin with the + // WebGL renderer (which is impossible at the moment): + // if ( + // sigma.renderers.webgl && + // renderer instanceof sigma.renderers.webgl + // ) + // throw new Error( + // 'The sigma.plugins.dragNodes is not compatible with the WebGL renderer' + // ); + + // Init variables: + var _self = this, + _s = s, + _body = document.body, + _renderer = renderer, + _mouse = renderer.container.lastChild, + _camera = renderer.camera, + _node = null, + _prefix = '', + _hoverStack = [], + _hoverIndex = {}, + _isMouseDown = false, + _isMouseOverCanvas = false, + _drag = false; + + if (renderer instanceof sigma.renderers.svg) { + _mouse = renderer.container.firstChild; + } + + // It removes the initial substring ('read_') if it's a WegGL renderer. + if (renderer instanceof sigma.renderers.webgl) { + _prefix = renderer.options.prefix.substr(5); + } else { + _prefix = renderer.options.prefix; + } + + renderer.bind('overNode', nodeMouseOver); + renderer.bind('outNode', treatOutNode); + renderer.bind('click', click); + + _s.bind('kill', function() { + _self.unbindAll(); + }); + + /** + * Unbind all event listeners. + */ + this.unbindAll = function() { + _mouse.removeEventListener('mousedown', nodeMouseDown); + _body.removeEventListener('mousemove', nodeMouseMove); + _body.removeEventListener('mouseup', nodeMouseUp); + _renderer.unbind('overNode', nodeMouseOver); + _renderer.unbind('outNode', treatOutNode); + } + + // Calculates the global offset of the given element more accurately than + // element.offsetTop and element.offsetLeft. + function calculateOffset(element) { + var style = window.getComputedStyle(element); + var getCssProperty = function(prop) { + return parseInt(style.getPropertyValue(prop).replace('px', '')) || 0; + }; + return { + left: element.getBoundingClientRect().left + getCssProperty('padding-left'), + top: element.getBoundingClientRect().top + getCssProperty('padding-top') + }; + }; + + function click(event) { + // event triggered at the end of the click + _isMouseDown = false; + _body.removeEventListener('mousemove', nodeMouseMove); + _body.removeEventListener('mouseup', nodeMouseUp); + + if (!_hoverStack.length) { + _node = null; + } + }; + + function nodeMouseOver(event) { + // Don't treat the node if it is already registered + if (_hoverIndex[event.data.node.id]) { + return; + } + + // Add node to array of current nodes over + _hoverStack.push(event.data.node); + _hoverIndex[event.data.node.id] = true; + + if(_hoverStack.length && ! _isMouseDown) { + // Set the current node to be the last one in the array + _node = _hoverStack[_hoverStack.length - 1]; + _mouse.addEventListener('mousedown', nodeMouseDown); + } + }; + + function treatOutNode(event) { + // Remove the node from the array + var indexCheck = _hoverStack.map(function(e) { return e; }).indexOf(event.data.node); + _hoverStack.splice(indexCheck, 1); + delete _hoverIndex[event.data.node.id]; + + if(_hoverStack.length && ! _isMouseDown) { + // On out, set the current node to be the next stated in array + _node = _hoverStack[_hoverStack.length - 1]; + } else { + _mouse.removeEventListener('mousedown', nodeMouseDown); + } + }; + + function nodeMouseDown(event) { + _isMouseDown = true; + var size = _s.graph.nodes().length; + + // when there is only node in the graph, the plugin cannot apply + // linear interpolation. So treat it as if a user is dragging + // the graph + if (_node && size > 1) { + _mouse.removeEventListener('mousedown', nodeMouseDown); + _body.addEventListener('mousemove', nodeMouseMove); + _body.addEventListener('mouseup', nodeMouseUp); + + // Do not refresh edgequadtree during drag: + var k, + c; + for (k in _s.cameras) { + c = _s.cameras[k]; + if (c.edgequadtree !== undefined) { + c.edgequadtree._enabled = false; + } + } + + // Deactivate drag graph. + _renderer.settings({mouseEnabled: false, enableHovering: false}); + _s.refresh(); + + _self.dispatchEvent('startdrag', { + node: _node, + captor: event, + renderer: _renderer + }); + } + }; + + function nodeMouseUp(event) { + _isMouseDown = false; + _mouse.addEventListener('mousedown', nodeMouseDown); + _body.removeEventListener('mousemove', nodeMouseMove); + _body.removeEventListener('mouseup', nodeMouseUp); + + // Allow to refresh edgequadtree: + var k, + c; + for (k in _s.cameras) { + c = _s.cameras[k]; + if (c.edgequadtree !== undefined) { + c.edgequadtree._enabled = true; + } + } + + // Activate drag graph. + _renderer.settings({mouseEnabled: true, enableHovering: true}); + _s.refresh(); + + if (_drag) { + _self.dispatchEvent('drop', { + node: _node, + captor: event, + renderer: _renderer + }); + } + _self.dispatchEvent('dragend', { + node: _node, + captor: event, + renderer: _renderer + }); + + _drag = false; + _node = null; + }; + + function nodeMouseMove(event) { + if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1) { + clearTimeout(timeOut); + var timeOut = setTimeout(executeNodeMouseMove, 0); + } else { + executeNodeMouseMove(); + } + + function executeNodeMouseMove() { + var offset = calculateOffset(_renderer.container), + x = event.clientX - offset.left, + y = event.clientY - offset.top, + cos = Math.cos(_camera.angle), + sin = Math.sin(_camera.angle), + nodes = _s.graph.nodes(), + ref = []; + + // Getting and derotating the reference coordinates. + for (var i = 0; i < 2; i++) { + var n = nodes[i]; + var aux = { + x: n.x * cos + n.y * sin, + y: n.y * cos - n.x * sin, + renX: n[_prefix + 'x'], + renY: n[_prefix + 'y'], + }; + ref.push(aux); + } + + // Applying linear interpolation. + // if the nodes are on top of each other, we use the camera ratio to interpolate + if (ref[0].x === ref[1].x && ref[0].y === ref[1].y) { + var xRatio = (ref[0].renX === 0) ? 1 : ref[0].renX; + var yRatio = (ref[0].renY === 0) ? 1 : ref[0].renY; + x = (ref[0].x / xRatio) * (x - ref[0].renX) + ref[0].x; + y = (ref[0].y / yRatio) * (y - ref[0].renY) + ref[0].y; + } else { + var xRatio = (ref[1].renX - ref[0].renX) / (ref[1].x - ref[0].x); + var yRatio = (ref[1].renY - ref[0].renY) / (ref[1].y - ref[0].y); + + // if the coordinates are the same, we use the other ratio to interpolate + if (ref[1].x === ref[0].x) { + xRatio = yRatio; + } + + if (ref[1].y === ref[0].y) { + yRatio = xRatio; + } + + x = (x - ref[0].renX) / xRatio + ref[0].x; + y = (y - ref[0].renY) / yRatio + ref[0].y; + } + + // Rotating the coordinates. + _node.x = x * cos - y * sin; + _node.y = y * cos + x * sin; + + _s.refresh(); + + _drag = true; + _self.dispatchEvent('drag', { + node: _node, + captor: event, + renderer: _renderer + }); + } + }; + }; + + /** + * Interface + * ------------------ + * + * > var dragNodesListener = sigma.plugins.dragNodes(s, s.renderers[0]); + */ + var _instance = {}; + + /** + * @param {sigma} s The related sigma instance. + * @param {renderer} renderer The related renderer instance. + */ + sigma.plugins.dragNodes = function(s, renderer) { + // Create object if undefined + if (!_instance[s.id]) { + _instance[s.id] = new DragNodes(s, renderer); + } + + s.bind('kill', function() { + sigma.plugins.killDragNodes(s); + }); + + return _instance[s.id]; + }; + + /** + * This method removes the event listeners and kills the dragNodes instance. + * + * @param {sigma} s The related sigma instance. + */ + sigma.plugins.killDragNodes = function(s) { + if (_instance[s.id] instanceof DragNodes) { + _instance[s.id].unbindAll(); + delete _instance[s.id]; + } + }; + +}).call(window); diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.filter/README.md b/sigma.js-1.2.0/plugins/sigma.plugins.filter/README.md new file mode 100644 index 0000000..acbba72 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.filter/README.md @@ -0,0 +1,187 @@ +sigma.plugins.filter +================== + +Plugin developed by [Sébastien Heymann](sheymann) for [Linkurious](https://github.com/Linkurious). + +--- +## General +This plugin filters nodes and edges in a fancy manner: +- Define your own filters on nodes and edges using the `nodesBy` and `edgesBy` methods, or execute more complex filters using the `neighborsOf` method. +- Register multiple filters before applying them anytime at once. +- Undo any filter while preserving the execution order. +- Chain all methods for concise style. + +See the following [example code](../../examples/filters.html) and [unit tests](../../test/unit.plugins.filter.js) for full usage. + +To use, include all .js files under this folder. Then initialize it as follows: + +````javascript +var filter = new sigma.plugins.filter(sigInst); +```` + +## Predicates +Predicates are truth tests (i.e. functions which return a boolean) on a single node or a single edge. They return true if the element should be visible. For instance: + +````javascript +// Only edges of size above one should be visible: +function(e) { + return e.size > 1; +} +```` + +In this example, notice that if the size attribute is undefined, the edge will be hidden. If you still want to display edges with no size attribute defined, you have to modify the predicate a bit: + +````javascript +// Only edges of size above one should be visible: +function(e) { + return e.size === undefined || e.size > 1; +} +```` + +Predicates are applied by predicate processors. + +## Predicate processors +Predicate processors are functions which wrap one predicate and apply it to the graph. Three predicate processors are available: +- `nodesBy` +- `edgesBy` +- `neighborsOf` + +For each node of the graph, the `nodesBy` processor sets the attribute `hidden` to false if the predicate is true for the node. It also sets the `hidden` attribute of edges to true if one of the edge's extremities is hidden. For instance: + +````javascript +// Only connected nodes (i.e. nodes of positive degree) should be visible: +filter.nodesBy(function(n) { + return this.degree(n.id) > 0; +}, 'non-isolates'); +```` + +For each edge of the graph, the `edgesBy` processor sets the attribute `hidden` to false if the predicate is true for the edge. For instance: + +````javascript +// Only edges of size above one should be visible: +filter.edgesBy(function(e) { + return e.size > 1; +}, 'edge-size-above-one'); +```` + +For each neighbor node of a specified node, the `neighborsOf` processor sets the attribute `hidden` to true if it is not directly connected to the node. It also sets the `hidden` attribute of edges to true if one of the edge's extremities is hidden. For instance: + +````javascript +// Only neighbors of the node 'n0' should be visible: +filter.neighborsOf('n0'); +```` + +Processors instanciated with a predicate are called filters. **Filters are not applied until the `apply` method is called.** + +## Filters chain +Combining filters is easy! Declare one filter after another, then call the `apply` method to execute them on the graph in that order. For instance: + +````javascript +// graph = { +// nodes: [{id:'n0'}, {id:'n1'}, {id:'n2'}, {id:'n3'}], +// edges: [ +// {id:'e0', source:'n0', target:'n1', size:1}, +// {id:'e1', source:'n1', target:'n2', size:0.5}, +// {id:'e2', source:'n1', target:'n2'}] +// } +filter + .nodesBy(function(n) { + return this.degree(n.id) > 0; + }) + .edgesBy(function(e) { + return e.size >= 1; + }) + .apply(); +// n3.hidden == true +// e1.hidden == true +// e2.hidden == true +```` + +Combined filters work like if there was an 'AND' operator between them. Be careful not to create mutually exclusive filters, for instance: + +````javascript +filter + .nodesBy(function(n) { + return n.attributes.animal === 'pony'; + }) + .nodesBy(function(n) { + return n.attributes.animal !== 'pony'; + }) + .apply(); +// all nodes are hidden +```` + +Filters are internally stored in an array called the `chain`. + +## Undo filters +Undoing filters means to remove them from the `chain`. Filters can be undone easily. Choose which filter(s) to undo, or undo all of them at once. + +Filters can be associated with keys at declaration, where keys are any string you give. For instance, the following filter has the key *node-animal*: + +````javascript +filter.nodesBy(function(n) { + return n.attributes.animal === 'pony'; +}, 'node-animal'); +```` + +Manually undo this filter as follows: + +````javascript +filter + .undo('node-animal') + .apply(); // we want it applied now +```` + +Multiple filters can be undone at once, for instance: + +````javascript +filter.undo('node-animal', 'edge-size', 'high-node-degree'); +// don't forget to call `apply()` anytime! +```` + +Alternative syntax: + +````javascript +var a = ['node-animal', 'edge-size', 'high-node-degree']; +filter.undo(a); +// don't forget to call `apply()` anytime! +```` + +Finally, undo all filters (with or without keys) as follows: + +````javascript +filter.undo(); +// don't forget to call `apply()` anytime! +```` + +Warning: you can't declare two filters with the same key, or it will throw an exception. + +## Export the chain +The exported chain is an array of objects. Each object represents a filter by a triplet *(?key, processor, predicate)*. The processor value is the internal name of the processor: `filter.processors.nodes`, `filter.processors.edges`, `filter.processors.neighbors`. The predicate value is a copy of the predicate function. Dump the `chain` using the `export` method as follows: + +````javascript +var chain = filter.export(); +// chain == [ +// { +// key: '...', +// processor: '...', +// predicate: function() {...} +// }, ... +// ] +```` + +## Import a chain +You can load a filters chain using the `import` method: + +````javascript +var chain = [ + { + key: 'my-filter', + predicate: function(n) { return this.degree(n.id) > 0; }, + processor: 'filter.processors.nodes' + } +]; +filter + .import(chain) + .apply(); +```` diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.filter/sigma.plugins.filter.js b/sigma.js-1.2.0/plugins/sigma.plugins.filter/sigma.plugins.filter.js new file mode 100644 index 0000000..c3f4c4e --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.filter/sigma.plugins.filter.js @@ -0,0 +1,504 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize package: + sigma.utils.pkg('sigma.plugins'); + + // Add custom graph methods: + /** + * This methods returns an array of nodes that are adjacent to a node. + * + * @param {string} id The node id. + * @return {array} The array of adjacent nodes. + */ + if (!sigma.classes.graph.hasMethod('adjacentNodes')) + sigma.classes.graph.addMethod('adjacentNodes', function(id) { + if (typeof id !== 'string') + throw 'adjacentNodes: the node id must be a string.'; + + var target, + nodes = []; + for(target in this.allNeighborsIndex[id]) { + nodes.push(this.nodesIndex[target]); + } + return nodes; + }); + + /** + * This methods returns an array of edges that are adjacent to a node. + * + * @param {string} id The node id. + * @return {array} The array of adjacent edges. + */ + if (!sigma.classes.graph.hasMethod('adjacentEdges')) + sigma.classes.graph.addMethod('adjacentEdges', function(id) { + if (typeof id !== 'string') + throw 'adjacentEdges: the node id must be a string.'; + + var a = this.allNeighborsIndex[id], + eid, + target, + edges = []; + for(target in a) { + for(eid in a[target]) { + edges.push(a[target][eid]); + } + } + return edges; + }); + + /** + * Sigma Filter + * ============================= + * + * @author Sébastien Heymann <seb@linkurio.us> (Linkurious) + * @version 0.1 + */ + + var _g = undefined, + _s = undefined, + _chain = [], // chain of wrapped filters + _keysIndex = Object.create(null), + Processors = {}; // available predicate processors + + + /** + * Library of processors + * ------------------ + */ + + /** + * + * @param {function} fn The predicate. + */ + Processors.nodes = function nodes(fn) { + var n = _g.nodes(), + ln = n.length, + e = _g.edges(), + le = e.length; + + // hide node, or keep former value + while(ln--) + n[ln].hidden = !fn.call(_g, n[ln]) || n[ln].hidden; + + while(le--) + if (_g.nodes(e[le].source).hidden || _g.nodes(e[le].target).hidden) + e[le].hidden = true; + }; + + /** + * + * @param {function} fn The predicate. + */ + Processors.edges = function edges(fn) { + var e = _g.edges(), + le = e.length; + + // hide edge, or keep former value + while(le--) + e[le].hidden = !fn.call(_g, e[le]) || e[le].hidden; + }; + + /** + * + * @param {string} id The center node. + */ + Processors.neighbors = function neighbors(id) { + var n = _g.nodes(), + ln = n.length, + e = _g.edges(), + le = e.length, + neighbors = _g.adjacentNodes(id), + nn = neighbors.length, + no = {}; + + while(nn--) + no[neighbors[nn].id] = true; + + while(ln--) + if (n[ln].id !== id && !(n[ln].id in no)) + n[ln].hidden = true; + + while(le--) + if (_g.nodes(e[le].source).hidden || _g.nodes(e[le].target).hidden) + e[le].hidden = true; + }; + + + /** + * This function adds a filter to the chain of filters. + * + * @param {function} fn The filter (i.e. predicate processor). + * @param {function} p The predicate. + * @param {?string} key The key to identify the filter. + */ + function register(fn, p, key) { + if (key != undefined && typeof key !== 'string') + throw 'The filter key "'+ key.toString() +'" must be a string.'; + + if (key != undefined && !key.length) + throw 'The filter key must be a non-empty string.'; + + if (typeof fn !== 'function') + throw 'The predicate of key "'+ key +'" must be a function.'; + + if ('undo' === key) + throw '"undo" is a reserved key.'; + + if (_keysIndex[key]) + throw 'The filter "' + key + '" already exists.'; + + if (key) + _keysIndex[key] = true; + + _chain.push({ + 'key': key, + 'processor': fn, + 'predicate': p + }); + }; + + /** + * This function removes a set of filters from the chain. + * + * @param {object} o The filter keys. + */ + function unregister (o) { + _chain = _chain.filter(function(a) { + return !(a.key in o); + }); + + for(var key in o) + delete _keysIndex[key]; + }; + + + + + /** + * Filter Object + * ------------------ + * @param {sigma} s The related sigma instance. + */ + function Filter(s) { + _s = s; + _g = s.graph; + }; + + + /** + * This method is used to filter the nodes. The method must be called with + * the predicate, which is a function that takes a node as argument and + * returns a boolean. It may take an identifier as argument to undo the + * filter later. The method wraps the predicate into an anonymous function + * that looks through each node in the graph. When executed, the anonymous + * function hides the nodes that fail a truth test (predicate). The method + * adds the anonymous function to the chain of filters. The filter is not + * executed until the apply() method is called. + * + * > var filter = new sigma.plugins.filter(s); + * > filter.nodesBy(function(n) { + * > return this.degree(n.id) > 0; + * > }, 'degreeNotNull'); + * + * @param {function} fn The filter predicate. + * @param {?string} key The key to identify the filter. + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.nodesBy = function(fn, key) { + // Wrap the predicate to be applied on the graph and add it to the chain. + register(Processors.nodes, fn, key); + + return this; + }; + + /** + * This method is used to filter the edges. The method must be called with + * the predicate, which is a function that takes a node as argument and + * returns a boolean. It may take an identifier as argument to undo the + * filter later. The method wraps the predicate into an anonymous function + * that looks through each edge in the graph. When executed, the anonymous + * function hides the edges that fail a truth test (predicate). The method + * adds the anonymous function to the chain of filters. The filter is not + * executed until the apply() method is called. + * + * > var filter = new sigma.plugins.filter(s); + * > filter.edgesBy(function(e) { + * > return e.size > 1; + * > }, 'edgeSize'); + * + * @param {function} fn The filter predicate. + * @param {?string} key The key to identify the filter. + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.edgesBy = function(fn, key) { + // Wrap the predicate to be applied on the graph and add it to the chain. + register(Processors.edges, fn, key); + + return this; + }; + + /** + * This method is used to filter the nodes which are not direct connections + * of a given node. The method must be called with the node identifier. It + * may take an identifier as argument to undo the filter later. The filter + * is not executed until the apply() method is called. + * + * > var filter = new sigma.plugins.filter(s); + * > filter.neighborsOf('n0'); + * + * @param {string} id The node id. + * @param {?string} key The key to identify the filter. + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.neighborsOf = function(id, key) { + if (typeof id !== 'string') + throw 'The node id "'+ id.toString() +'" must be a string.'; + if (!id.length) + throw 'The node id must be a non-empty string.'; + + // Wrap the predicate to be applied on the graph and add it to the chain. + register(Processors.neighbors, id, key); + + return this; + }; + + /** + * This method is used to execute the chain of filters and to refresh the + * display. + * + * > var filter = new sigma.plugins.filter(s); + * > filter + * > .nodesBy(function(n) { + * > return this.degree(n.id) > 0; + * > }, 'degreeNotNull') + * > .apply(); + * + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.apply = function() { + for (var i = 0, len = _chain.length; i < len; ++i) { + _chain[i].processor(_chain[i].predicate); + }; + + if (_chain[0] && 'undo' === _chain[0].key) { + _chain.shift(); + } + + _s.refresh(); + + return this; + }; + + /** + * This method undoes one or several filters, depending on how it is called. + * + * To undo all filters, call "undo" without argument. To undo a specific + * filter, call it with the key of the filter. To undo multiple filters, call + * it with an array of keys or multiple arguments, and it will undo each + * filter, in the same order. The undo is not executed until the apply() + * method is called. For instance: + * + * > var filter = new sigma.plugins.filter(s); + * > filter + * > .nodesBy(function(n) { + * > return this.degree(n.id) > 0; + * > }, 'degreeNotNull'); + * > .edgesBy(function(e) { + * > return e.size > 1; + * > }, 'edgeSize') + * > .undo(); + * + * Other examples: + * > filter.undo(); + * > filter.undo('myfilter'); + * > filter.undo(['myfilter1', 'myfilter2']); + * > filter.undo('myfilter1', 'myfilter2'); + * + * @param {?(string|array|*string))} v Eventually one key, an array of keys. + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.undo = function(v) { + var q = Object.create(null), + la = arguments.length; + + // find removable filters + if (la === 1) { + if (Object.prototype.toString.call(v) === '[object Array]') + for (var i = 0, len = v.length; i < len; i++) + q[v[i]] = true; + + else // 1 filter key + q[v] = true; + + } else if (la > 1) { + for (var i = 0; i < la; i++) + q[arguments[i]] = true; + } + else + this.clear(); + + unregister(q); + + function processor() { + var n = _g.nodes(), + ln = n.length, + e = _g.edges(), + le = e.length; + + while(ln--) + n[ln].hidden = false; + + while(le--) + e[le].hidden = false; + }; + + _chain.unshift({ + 'key': 'undo', + 'processor': processor + }); + + return this; + }; + + // fast deep copy function + function deepCopy(o) { + var copy = Object.create(null); + for (var i in o) { + if (typeof o[i] === "object" && o[i] !== null) { + copy[i] = deepCopy(o[i]); + } + else if (typeof o[i] === "function" && o[i] !== null) { + // clone function: + eval(" copy[i] = " + o[i].toString()); + //copy[i] = o[i].bind(_g); + } + + else + copy[i] = o[i]; + } + return copy; + }; + + function cloneChain(chain) { + // Clone the array of filters: + var copy = chain.slice(0); + for (var i = 0, len = copy.length; i < len; i++) { + copy[i] = deepCopy(copy[i]); + if (typeof copy[i].processor === "function") + copy[i].processor = 'filter.processors.' + copy[i].processor.name; + }; + return copy; + } + + /** + * This method is used to empty the chain of filters. + * Prefer the undo() method to reset filters. + * + * > var filter = new sigma.plugins.filter(s); + * > filter.clear(); + * + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.clear = function() { + _chain.length = 0; // clear the array + _keysIndex = Object.create(null); + return this; + }; + + /** + * This method clones the filter chain and return the copy. + * + * > var filter = new sigma.plugins.filter(s); + * > var chain = filter.export(); + * + * @return {object} The cloned chain of filters. + */ + Filter.prototype.export = function() { + var c = cloneChain(_chain); + return c; + }; + + /** + * This method sets the chain of filters with the specified chain. + * + * > var filter = new sigma.plugins.filter(s); + * > var chain = [ + * > { + * > key: 'my-filter', + * > predicate: function(n) {...}, + * > processor: 'filter.processors.nodes' + * > }, ... + * > ]; + * > filter.import(chain); + * + * @param {array} chain The chain of filters. + * @return {sigma.plugins.filter} Returns the instance. + */ + Filter.prototype.import = function(chain) { + if (chain === undefined) + throw 'Wrong arguments.'; + + if (Object.prototype.toString.call(chain) !== '[object Array]') + throw 'The chain" must be an array.'; + + var copy = cloneChain(chain); + + for (var i = 0, len = copy.length; i < len; i++) { + if (copy[i].predicate === undefined || copy[i].processor === undefined) + throw 'Wrong arguments.'; + + if (copy[i].key != undefined && typeof copy[i].key !== 'string') + throw 'The filter key "'+ copy[i].key.toString() +'" must be a string.'; + + if (typeof copy[i].predicate !== 'function') + throw 'The predicate of key "'+ copy[i].key +'" must be a function.'; + + if (typeof copy[i].processor !== 'string') + throw 'The processor of key "'+ copy[i].key +'" must be a string.'; + + // Replace the processor name by the corresponding function: + switch(copy[i].processor) { + case 'filter.processors.nodes': + copy[i].processor = Processors.nodes; + break; + case 'filter.processors.edges': + copy[i].processor = Processors.edges; + break; + case 'filter.processors.neighbors': + copy[i].processor = Processors.neighbors; + break; + default: + throw 'Unknown processor ' + copy[i].processor; + } + }; + + _chain = copy; + + return this; + }; + + + /** + * Interface + * ------------------ + * + * > var filter = new sigma.plugins.filter(s); + */ + var filter = null; + + /** + * @param {sigma} s The related sigma instance. + */ + sigma.plugins.filter = function(s) { + // Create filter if undefined + if (!filter) { + filter = new Filter(s); + } + return filter; + }; + +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/README.md b/sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/README.md new file mode 100644 index 0000000..69ceb99 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/README.md @@ -0,0 +1,24 @@ +sigma.plugins.neighborhood +========================== + +Plugin developed by [Alexis Jacomy](https://github.com/jacomyal). + +--- + +This plugin provides a method to retrieve the neighborhood of a node. Basically, it loads a graph and stores it in a headless `sigma.classes.graph` instance, that you can query to retrieve neighborhoods. + +It is useful for people who want to provide a neighborhoods navigation inside a big graph instead of just displaying it, and without having to deploy an API or the list of every neighborhoods. But please note that this plugin is here as an example of what you can do with the graph model, and do not hesitate to try customizing your navigation through graphs. + +This plugin also adds to the graph model a method called "neighborhood". Check the code for more information. + +Here is how to use it: + +````javascript +var db = new sigma.plugins.neighborhoods(); +db.load('path/to/my/graph.json', function() { + var nodeId = 'anyNodeID'; + mySigmaInstance + .read(db.neighborhood(nodeId)) + .refresh(); +}); +```` \ No newline at end of file diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/sigma.plugins.neighborhoods.js b/sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/sigma.plugins.neighborhoods.js new file mode 100644 index 0000000..8c4dd83 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.neighborhoods/sigma.plugins.neighborhoods.js @@ -0,0 +1,186 @@ +/** + * This plugin provides a method to retrieve the neighborhood of a node. + * Basically, it loads a graph and stores it in a headless sigma.classes.graph + * instance, that you can query to retrieve neighborhoods. + * + * It is useful for people who want to provide a neighborhoods navigation + * inside a big graph instead of just displaying it, and without having to + * deploy an API or the list of every neighborhoods. + * + * This plugin also adds to the graph model a method called "neighborhood". + * Check the code for more information. + * + * Here is how to use it: + * + * > var db = new sigma.plugins.neighborhoods(); + * > db.load('path/to/my/graph.json', function() { + * > var nodeId = 'anyNodeID'; + * > mySigmaInstance + * > .read(db.neighborhood(nodeId)) + * > .refresh(); + * > }); + */ +(function() { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + /** + * This method takes the ID of node as argument and returns the graph of the + * specified node, with every other nodes that are connected to it and every + * edges that connect two of the previously cited nodes. It uses the built-in + * indexes from sigma's graph model to search in the graph. + * + * @param {string} centerId The ID of the center node. + * @return {object} The graph, as a simple descriptive object, in + * the format required by the "read" graph method. + */ + sigma.classes.graph.addMethod( + 'neighborhood', + function(centerId) { + var k1, + k2, + k3, + node, + center, + // Those two local indexes are here just to avoid duplicates: + localNodesIndex = {}, + localEdgesIndex = {}, + // And here is the resulted graph, empty at the moment: + graph = { + nodes: [], + edges: [] + }; + + // Check that the exists: + if (!this.nodes(centerId)) + return graph; + + // Add center. It has to be cloned to add it the "center" attribute + // without altering the current graph: + node = this.nodes(centerId); + center = {}; + center.center = true; + for (k1 in node) + center[k1] = node[k1]; + + localNodesIndex[centerId] = true; + graph.nodes.push(center); + + // Add neighbors and edges between the center and the neighbors: + for (k1 in this.allNeighborsIndex[centerId]) { + if (!localNodesIndex[k1]) { + localNodesIndex[k1] = true; + graph.nodes.push(this.nodesIndex[k1]); + } + + for (k2 in this.allNeighborsIndex[centerId][k1]) + if (!localEdgesIndex[k2]) { + localEdgesIndex[k2] = true; + graph.edges.push(this.edgesIndex[k2]); + } + } + + // Add edges connecting two neighbors: + for (k1 in localNodesIndex) + if (k1 !== centerId) + for (k2 in localNodesIndex) + if ( + k2 !== centerId && + k1 !== k2 && + this.allNeighborsIndex[k1][k2] + ) + for (k3 in this.allNeighborsIndex[k1][k2]) + if (!localEdgesIndex[k3]) { + localEdgesIndex[k3] = true; + graph.edges.push(this.edgesIndex[k3]); + } + + // Finally, let's return the final graph: + return graph; + } + ); + + sigma.utils.pkg('sigma.plugins'); + + /** + * sigma.plugins.neighborhoods constructor. + */ + sigma.plugins.neighborhoods = function() { + var ready = false, + readyCallbacks = [], + graph = new sigma.classes.graph(); + + /** + * This method just returns the neighborhood of a node. + * + * @param {string} centerNodeID The ID of the center node. + * @return {object} Returns the neighborhood. + */ + this.neighborhood = function(centerNodeID) { + return graph.neighborhood(centerNodeID); + }; + + /** + * This method loads the JSON graph at "path", stores it in the local graph + * instance, and executes the callback. + * + * @param {string} path The path of the JSON graph file. + * @param {?function} callback Eventually a callback to execute. + */ + this.load = function(path, callback) { + // Quick XHR polyfill: + var xhr = (function() { + if (window.XMLHttpRequest) + return new XMLHttpRequest(); + + var names, + i; + + if (window.ActiveXObject) { + names = [ + 'Msxml2.XMLHTTP.6.0', + 'Msxml2.XMLHTTP.3.0', + 'Msxml2.XMLHTTP', + 'Microsoft.XMLHTTP' + ]; + + for (i in names) + try { + return new ActiveXObject(names[i]); + } catch (e) {} + } + + return null; + })(); + + if (!xhr) + throw 'XMLHttpRequest not supported, cannot load the data.'; + + xhr.open('GET', path, true); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + graph.clear().read(JSON.parse(xhr.responseText)); + + if (callback) + callback(); + } + }; + + // Start loading the file: + xhr.send(); + + return this; + }; + + /** + * This method cleans the graph instance "reads" a graph into it. + * + * @param {object} g The graph object to read. + */ + this.read = function(g) { + graph.clear().read(g); + }; + }; +}).call(window); diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/README.md b/sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/README.md new file mode 100644 index 0000000..ec287d0 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/README.md @@ -0,0 +1,8 @@ +sigma.plugins.relativeSize +===================== + +Plugin developed by [Anatoliy Stegniy](https://github.com/tsdaemon). + +--- + +This plugin provides a method to change nodes size depending to their degree (number of relationships) diff --git a/sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/sigma.plugins.relativeSize.js b/sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/sigma.plugins.relativeSize.js new file mode 100644 index 0000000..f56ded0 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.plugins.relativeSize/sigma.plugins.relativeSize.js @@ -0,0 +1,28 @@ +(function() { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + sigma.utils.pkg('sigma.plugins'); + + var _id = 0, + _cache = {}; + + /** + * This function will change size for all nodes depending to their degree + * + * @param {sigma} s The related sigma instance. + * @param {object} initialSize Start size property + */ + sigma.plugins.relativeSize = function(s, initialSize) { + var nodes = s.graph.nodes(); + + // second create size for every node + for(var i = 0; i < nodes.length; i++) { + var degree = s.graph.degree(nodes[i].id); + nodes[i].size = initialSize * Math.sqrt(degree); + } + s.refresh(); + }; +}).call(window); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/README.md b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/README.md new file mode 100644 index 0000000..9a379b3 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/README.md @@ -0,0 +1,21 @@ +sigma.renderers.customEdgeShapes +================== + +Plugin developed by [Sébastien Heymann](https://github.com/sheymann) for [Linkurious](https://github.com/Linkurious). + +Contact: seb@linkurio.us + +--- +## General +This plugin registers custom edge shape renderers. See the following [example code](../../examples/plugin-customEdgeShapes.html) for full usage. + +To use, include all .js files under this folder. + +## Shapes +The plugin implements the following shapes: + * `dashed` + * `dotted` + * `parallel`: two solid parallel lines representing an edge aggregating multiple edges in the original graph. + * `tapered` (see Danny Holten, Petra Isenberg, Jean-Daniel Fekete, and J. Van Wijk (2010) Performance Evaluation of Tapered, Curved, and Animated Directed-Edge Representations in Node-Link Graphs. Research Report, Sep 2010.) + +To assign a shape renderer to an edge, simply set `edge.type='shape-name'` e.g. `edge.type='dotted'`. The default renderer implemented by sigma.js is named `def` (alias `line`) - see also [generic custom edge renderer example](../../examples/custom-edge-renderer.html). diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dashed.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dashed.js new file mode 100644 index 0000000..ad18000 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dashed.js @@ -0,0 +1,64 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.dashed = + function(edge, source, target, context, settings) { + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + size *= settings('edgeHoverSizeRatio'); + + context.save(); + + context.setLineDash([8,3]); + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dotted.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dotted.js new file mode 100644 index 0000000..6152825 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.dotted.js @@ -0,0 +1,64 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.dotted = + function(edge, source, target, context, settings) { + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + size *= settings('edgeHoverSizeRatio'); + + context.save(); + + context.setLineDash([2]); + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.parallel.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.parallel.js new file mode 100644 index 0000000..011caff --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.parallel.js @@ -0,0 +1,77 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.parallel = + function(edge, source, target, context, settings) { + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + c, + d, + dist = sigma.utils.getDistance(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + size *= settings('edgeHoverSizeRatio'); + + // Intersection points of the source node circle: + c = sigma.utils.getCircleIntersection(sX, sY, size, tX, tY, dist); + + // Intersection points of the target node circle: + d = sigma.utils.getCircleIntersection(tX, tY, size, sX, sY, dist); + + context.save(); + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(c.xi, c.yi); + context.lineTo(d.xi_prime, d.yi_prime); + context.closePath(); + context.stroke(); + + context.beginPath(); + context.moveTo(c.xi_prime, c.yi_prime); + context.lineTo(d.xi, d.yi); + context.closePath(); + context.stroke(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.tapered.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.tapered.js new file mode 100644 index 0000000..aa1773a --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edgehovers.tapered.js @@ -0,0 +1,74 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.tapered = + function(edge, source, target, context, settings) { + // The goal is to draw a triangle where the target node is a point of + // the triangle, and the two other points are the intersection of the + // source circle and the circle (target, distance(source, target)). + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + prefix = settings('prefix') || '', + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + dist = sigma.utils.getDistance(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + size *= settings('edgeHoverSizeRatio'); + + // Intersection points: + var c = sigma.utils.getCircleIntersection(sX, sY, size, tX, tY, dist); + + context.save(); + + // Turn transparency on: + context.globalAlpha = 0.65; + + // Draw the triangle: + context.fillStyle = color; + context.beginPath(); + context.moveTo(tX, tY); + context.lineTo(c.xi, c.yi); + context.lineTo(c.xi_prime, c.yi_prime); + context.closePath(); + context.fill(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dashed.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dashed.js new file mode 100644 index 0000000..cbcc31e --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dashed.js @@ -0,0 +1,64 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This method renders the edge as a dashed line. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.dashed = function(edge, source, target, context, settings) { + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.save(); + + if (edge.active) { + context.strokeStyle = settings('edgeActiveColor') === 'edge' ? + (color || defaultEdgeColor) : + settings('defaultEdgeActiveColor'); + } + else { + context.strokeStyle = color; + } + + context.setLineDash([8,3]); + context.lineWidth = size; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dotted.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dotted.js new file mode 100644 index 0000000..d82f430 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.dotted.js @@ -0,0 +1,64 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This method renders the edge as a dotted line. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.dotted = function(edge, source, target, context, settings) { + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.save(); + + if (edge.active) { + context.strokeStyle = settings('edgeActiveColor') === 'edge' ? + (color || defaultEdgeColor) : + settings('defaultEdgeActiveColor'); + } + else { + context.strokeStyle = color; + } + + context.setLineDash([2]); + context.lineWidth = size; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.parallel.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.parallel.js new file mode 100644 index 0000000..7264b62 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.parallel.js @@ -0,0 +1,77 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This method renders the edge as two parallel lines. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.parallel = function(edge, source, target, context, settings) { + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + c, + d, + dist = sigma.utils.getDistance(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + // Intersection points of the source node circle: + c = sigma.utils.getCircleIntersection(sX, sY, size, tX, tY, dist); + + // Intersection points of the target node circle: + d = sigma.utils.getCircleIntersection(tX, tY, size, sX, sY, dist); + + context.save(); + + if (edge.active) { + context.strokeStyle = settings('edgeActiveColor') === 'edge' ? + (color || defaultEdgeColor) : + settings('defaultEdgeActiveColor'); + } + else { + context.strokeStyle = color; + } + + context.lineWidth = size; + context.beginPath(); + context.moveTo(c.xi, c.yi); + context.lineTo(d.xi_prime, d.yi_prime); + context.closePath(); + context.stroke(); + + context.beginPath(); + context.moveTo(c.xi_prime, c.yi_prime); + context.lineTo(d.xi, d.yi); + context.closePath(); + context.stroke(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.tapered.js b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.tapered.js new file mode 100644 index 0000000..b862892 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customEdgeShapes/sigma.canvas.edges.tapered.js @@ -0,0 +1,77 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This method renders the edge as a tapered line. + * Danny Holten, Petra Isenberg, Jean-Daniel Fekete, and J. Van Wijk (2010) + * Performance Evaluation of Tapered, Curved, and Animated Directed-Edge + * Representations in Node-Link Graphs. Research Report, Sep 2010. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.tapered = function(edge, source, target, context, settings) { + // The goal is to draw a triangle where the target node is a point of + // the triangle, and the two other points are the intersection of the + // source circle and the circle (target, distance(source, target)). + var color = edge.active ? + edge.active_color || settings('defaultEdgeActiveColor') : + edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + prefix = settings('prefix') || '', + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + dist = sigma.utils.getDistance(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + // Intersection points: + var c = sigma.utils.getCircleIntersection(sX, sY, size, tX, tY, dist); + + context.save(); + + if (edge.active) { + context.fillStyle = settings('edgeActiveColor') === 'edge' ? + (color || defaultEdgeColor) : + settings('defaultEdgeActiveColor'); + } + else { + context.fillStyle = color; + } + + // Turn transparency on: + context.globalAlpha = 0.65; + + // Draw the triangle: + context.beginPath(); + context.moveTo(tX, tY); + context.lineTo(c.xi, c.yi); + context.lineTo(c.xi_prime, c.yi_prime); + context.closePath(); + context.fill(); + + context.restore(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/README.md b/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/README.md new file mode 100644 index 0000000..8e0054a --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/README.md @@ -0,0 +1,61 @@ +sigma.renderers.customShapes +================== + +Plugin developed by [Ron Peleg](https://github.com/rpeleg1970). + +--- +## General +This plugin registers custom node shape renderers, and allows adding scaled images on top of them. See the following [example code](../../examples/plugin-customShapes.html) for full usage. + +To use, include all .js files under this folder. + +The plugin implements the `node.borderColor` property to allow control of the (surprise) border color. + +## Shapes +The plugin implements the following shapes. To set a shape renderer, you simply set `node.type='shape-name'` e.g. `node.type='star'`. The default renderer implemented by sigma.js is named `def` - see also [generic custom node renderer example](../../examples/custom-node-renderer.html) + * `circle`: similar to the `def` renderer, but also allows images + * `square` + * `diamond` + * `equilateral`: equilateral polygon. you can control additional properties in this polygon by setting more values as follows: +````javascript + node.equilateral = { + rotate: /* rotate right, value in deg */, + numPoints: /* default 5, integer */ + } +```` + * `star`: you can control additional properties in this star by setting more as follows: +````javascript + node.star = { + numPoints: /* default 5, integer */, + innerRatio: /* ratio of inner radius in star, compared to node.size */ + } +```` + * `cross`: plus shape. you can control additional properties in this polygon by setting more values as follows: +````javascript + node.cross = { + lineWeight: /* width of cross arms */, + } +```` + * `pacman`: an example of a more exotic renderer + +The list of available renderer types can be obtained by calling `ShapeLibrary.enumerate()` + +## Images +You can add an image to any node, simply by adding `node.image` property, with the following content: +````javascript +node.image = { + url: /* mandatory image URL */, + clip: /* Ratio of image clipping disk compared to node size (def 1.0) - see example to how we adapt this to differenmt shapes */, + scale: /* Ratio of how to scale the image, compared to node size, default 1.0 */, + w: /* numeric width - important for correct scaling if w/h ratio is not 1.0 */, + h: /* numeric height - important for correct scaling if w/h ratio is not 1.0 */ +} +```` +Because the plug-in calls the sigma instance `refresh()` method on image loading, you MUST init as follows or you will not see rendered images: +````javascript + s = new sigma({ + ... + }); + CustomShapes.init(s); + s.refresh(); +```` diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/shape-library.js b/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/shape-library.js new file mode 100644 index 0000000..875c190 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/shape-library.js @@ -0,0 +1,162 @@ +;(function(undefined) { + 'use strict'; + + var shapes = []; + var register = function(name,drawShape,drawBorder) { + shapes.push({ + 'name': name, + 'drawShape': drawShape, + 'drawBorder': drawBorder + }); + } + + var enumerateShapes = function() { + return shapes; + } + + /** + * For the standard closed shapes - the shape fill and border are drawn the + * same, with some minor differences for fill and border. To facilitate this we + * create the generic draw functions, that take a shape drawing func and + * return a shape-renderer/border-renderer + * ---------- + */ + var genericDrawShape = function(shapeFunc) { + return function(node,x,y,size,color,context) { + context.fillStyle = color; + context.beginPath(); + shapeFunc(node,x,y,size,context); + context.closePath(); + context.fill(); + }; + } + + var genericDrawBorder = function(shapeFunc) { + return function(node,x,y,size,color,context) { + context.strokeStyle = color; + context.lineWidth = size / 5; + context.beginPath(); + shapeFunc(node,x,y,size,context); + context.closePath(); + context.stroke(); + }; + } + + /** + * We now proced to use the generics to define our standard shape/border + * drawers: square, diamond, equilateral (polygon), and star + * ---------- + */ + var drawSquare = function(node,x,y,size,context) { + var rotate = Math.PI*45/180; // 45 deg rotation of a diamond shape + context.moveTo(x+size*Math.sin(rotate), y-size*Math.cos(rotate)); // first point on outer radius, dwangle 'rotate' + for(var i=1; i<4; i++) { + context.lineTo(x+Math.sin(rotate+2*Math.PI*i/4)*size, y-Math.cos(rotate+2*Math.PI*i/4)*size); + } + } + register("square",genericDrawShape(drawSquare),genericDrawBorder(drawSquare)); + + var drawCircle = function(node,x,y,size,context) { + context.arc(x,y,size,0,Math.PI*2,true); + } + register("circle",genericDrawShape(drawCircle),genericDrawBorder(drawCircle)); + + var drawDiamond = function(node,x,y,size,context) { + context.moveTo(x-size, y); + context.lineTo(x, y-size); + context.lineTo(x+size, y); + context.lineTo(x, y+size); + } + register("diamond",genericDrawShape(drawDiamond),genericDrawBorder(drawDiamond)); + + var drawCross = function(node,x,y,size,context) { + var lineWeight = (node.cross && node.cross.lineWeight) || 5; + context.moveTo(x-size, y-lineWeight); + context.lineTo(x-size, y+lineWeight); + context.lineTo(x-lineWeight, y+lineWeight); + context.lineTo(x-lineWeight, y+size); + context.lineTo(x+lineWeight, y+size); + context.lineTo(x+lineWeight, y+lineWeight); + context.lineTo(x+size, y+lineWeight); + context.lineTo(x+size, y-lineWeight); + context.lineTo(x+lineWeight, y-lineWeight); + context.lineTo(x+lineWeight, y-size); + context.lineTo(x-lineWeight, y-size); + context.lineTo(x-lineWeight, y-lineWeight); + } + register("cross",genericDrawShape(drawCross),genericDrawBorder(drawCross)); + + var drawEquilateral = function(node,x,y,size,context) { + var pcount = (node.equilateral && node.equilateral.numPoints) || 5; + var rotate = ((node.equilateral && node.equilateral.rotate) || 0)*Math.PI/180; + var radius = size; + context.moveTo(x+radius*Math.sin(rotate), y-radius*Math.cos(rotate)); // first point on outer radius, angle 'rotate' + for(var i=1; i<pcount; i++) { + context.lineTo(x+Math.sin(rotate+2*Math.PI*i/pcount)*radius, y-Math.cos(rotate+2*Math.PI*i/pcount)*radius); + } + } + register("equilateral",genericDrawShape(drawEquilateral),genericDrawBorder(drawEquilateral)); + + + var starShape = function(node,x,y,size,context) { + var pcount = (node.star && node.star.numPoints) || 5, + inRatio = (node.star && node.star.innerRatio) || 0.5, + outR = size, + inR = size*inRatio, + angleOffset = Math.PI/pcount; + context.moveTo(x, y-size); // first point on outer radius, top + for(var i=0; i<pcount; i++) { + context.lineTo(x+Math.sin(angleOffset+2*Math.PI*i/pcount)*inR, + y-Math.cos(angleOffset+2*Math.PI*i/pcount)*inR); + context.lineTo(x+Math.sin(2*Math.PI*(i+1)/pcount)*outR, + y-Math.cos(2*Math.PI*(i+1)/pcount)*outR); + } + } + register("star",genericDrawShape(starShape),genericDrawBorder(starShape)); + + /** + * An example of a non standard shape (pacman). Here we WILL NOT use the + * genericDraw functions, but rather register a full custom node renderer for + * fill, and skip the border renderer which is irrelevant for this shape + * ---------- + */ + var drawPacman = function(node,x,y,size,color,context) { + context.fillStyle = 'yellow'; + context.beginPath(); + context.arc(x,y,size,1.25*Math.PI,0,false); + context.arc(x,y,size,0,0.75*Math.PI,false); + context.lineTo(x,y); + context.closePath(); + context.fill(); + + context.fillStyle = 'white'; + context.strokeStyle = 'black'; + context.beginPath(); + context.arc(x+size/3,y-size/3,size/4,0,2*Math.PI,false); + context.closePath(); + context.fill(); + context.stroke(); + + context.fillStyle = 'black'; + context.beginPath(); + context.arc(x+4*size/9,y-size/3,size/8,0,2*Math.PI,false); + context.closePath(); + context.fill(); + } + register("pacman",drawPacman,null); + + /** + * Exporting + * ---------- + */ + this.ShapeLibrary = { + + // Functions + enumerate: enumerateShapes, + // add: addShape, + + // Version + version: '0.1' + }; + +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/sigma.renderers.customShapes.js b/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/sigma.renderers.customShapes.js new file mode 100644 index 0000000..fcaf7e3 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.customShapes/sigma.renderers.customShapes.js @@ -0,0 +1,236 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + if (typeof ShapeLibrary === 'undefined') + throw 'ShapeLibrary is not declared'; + + + // Initialize package: + sigma.utils.pkg('sigma.canvas.nodes'); + sigma.utils.pkg('sigma.svg.nodes'); + + var sigInst = undefined; + var imgCache = {}; + + var initPlugin = function(inst) { + sigInst = inst; + } + + var drawImage = function (node,x,y,size,context) { + if(sigInst && node.image && node.image.url) { + var url = node.image.url; + var ih = node.image.h || 1; // 1 is arbitrary, anyway only the ratio counts + var iw = node.image.w || 1; + var scale = node.image.scale || 1; + var clip = node.image.clip || 1; + + // create new IMG or get from imgCache + var image = imgCache[url]; + if(!image) { + image = document.createElement('IMG'); + image.src = url; + image.status = 'loading'; + image.onerror = function() { + console.log("error loading", url); + image.status = 'error'; + }; + image.onload = function(){ + // TODO see how we redraw on load + // need to provide the siginst as a parameter to the library + console.log("redraw on image load", url); + image.status = 'ok'; + sigInst.refresh(); + }; + imgCache[url] = image; + } + + // calculate position and draw + var xratio = (iw<ih) ? (iw/ih) : 1; + var yratio = (ih<iw) ? (ih/iw) : 1; + var r = size*scale; + + // Draw the clipping disc: + context.save(); // enter clipping mode + context.beginPath(); + context.arc(x,y,size*clip,0,Math.PI*2,true); + context.closePath(); + context.clip(); + + if(image.status === 'ok') { + // Draw the actual image + context.drawImage(image, + x+Math.sin(-3.142/4)*r*xratio, + y-Math.cos(-3.142/4)*r*yratio, + r*xratio*2*Math.sin(-3.142/4)*(-1), + r*yratio*2*Math.cos(-3.142/4)); + } + context.restore(); // exit clipping mode + } + } + + var drawSVGImage = function (node, group, settings) { + if(sigInst && node.image && node.image.url) { + var clipCircle = document.createElementNS(settings('xmlns'), 'circle'), + clipPath = document.createElementNS(settings('xmlns'), 'clipPath'), + clipPathId = settings('classPrefix') + '-clip-path-' + node.id, + def = document.createElementNS(settings('xmlns'), 'defs'), + image = document.createElementNS(settings('xmlns'), 'image'), + url = node.image.url; + + clipPath.setAttributeNS(null, 'id', clipPathId); + clipPath.appendChild(clipCircle); + def.appendChild(clipPath); + + // angular's base tag will change the relative fragment id, so + // #<clipPathId> doesn't work + // HACKHACK: IE <=9 does not respect the HTML base element in SVG. + // They don't need the current URL in the clip path reference. + var absolutePath = /MSIE [5-9]/.test(navigator.userAgent) ? + "" : document.location.href; + // To fix cases where an anchor tag was used + absolutePath = absolutePath.split("#")[0]; + image.setAttributeNS(null, 'class', + settings('classPrefix') + '-node-image'); + image.setAttributeNS(null, 'clip-path', + 'url(' + absolutePath + '#' + clipPathId + ')'); + image.setAttributeNS(null, 'pointer-events', 'none'); + image.setAttributeNS('http://www.w3.org/1999/xlink', 'href', + node.image.url); + group.appendChild(def); + group.appendChild(image); + } + } + + var register = function(name,drawShape,drawBorder) { + sigma.canvas.nodes[name] = function(node, context, settings) { + var args = arguments, + prefix = settings('prefix') || '', + size = node[prefix + 'size'], + color = node.color || settings('defaultNodeColor'), + borderColor = node.borderColor || color, + x = node[prefix + 'x'], + y = node[prefix + 'y']; + + context.save(); + + if(drawShape) { + drawShape(node,x,y,size,color,context); + } + + if(drawBorder) { + drawBorder(node,x,y,size,borderColor,context); + } + + drawImage(node,x,y,size,context); + + context.restore(); + }; + + sigma.svg.nodes[name] = { + create: function(node, settings) { + var group = document.createElementNS(settings('xmlns'), 'g'), + circle = document.createElementNS(settings('xmlns'), 'circle'); + + group.setAttributeNS(null, 'class', + settings('classPrefix') + '-node-group'); + group.setAttributeNS(null, 'data-node-id', node.id); + // Defining the node's circle + circle.setAttributeNS(null, 'data-node-id', node.id); + circle.setAttributeNS(null, 'class', + settings('classPrefix') + '-node'); + circle.setAttributeNS(null, 'fill', + node.color || settings('defaultNodeColor')); + + group.appendChild(circle); + drawSVGImage(node, group, settings); + return group; + }, + update: function(node, group, settings) { + var classPrefix = settings('classPrefix'), + clip = node.image.clip || 1, + // 1 is arbitrary, anyway only the ratio counts + ih = node.image.h || 1, + iw = node.image.w || 1, + prefix = settings('prefix') || '', + scale = node.image.scale || 1, + size = node[prefix + 'size'], + x = node[prefix + 'x'], + y = node[prefix + 'y']; + + var r = scale * size, + xratio = (iw<ih) ? (iw/ih) : 1, + yratio = (ih<iw) ? (ih/iw) : 1; + + for(var i = 0, childNodes = group.childNodes; i < childNodes.length; i ++) { + var className = childNodes[i].getAttribute('class'); + + switch (className) { + case classPrefix + '-node': + childNodes[i].setAttributeNS(null, 'cx', x); + childNodes[i].setAttributeNS(null, 'cy', y); + childNodes[i].setAttributeNS(null, 'r', size); + + // // Updating only if not freestyle + if (!settings('freeStyle')) { + childNodes[i].setAttributeNS( + null, + 'fill', + node.color || settings('defaultNodeColor')); + } + break; + case classPrefix + '-node-image': + childNodes[i].setAttributeNS(null, 'x', + x+Math.sin(-3.142/4)*r*xratio); + childNodes[i].setAttributeNS(null, 'y', + y-Math.cos(-3.142/4)*r*yratio); + childNodes[i].setAttributeNS(null, 'width', + r*xratio*2*Math.sin(-3.142/4)*(-1)); + childNodes[i].setAttributeNS(null, 'height', + r*yratio*2*Math.cos(-3.142/4)); + break; + default: + // no class name, must be the clip-path + var clipPath = childNodes[i].firstChild; + if (clipPath != null) { + var clipPathId = classPrefix + '-clip-path-' + node.id; + if (clipPath.getAttribute('id') === clipPathId) { + clipPath.firstChild.setAttributeNS(null, 'cx', x); + clipPath.firstChild.setAttributeNS(null, 'cy', y); + clipPath.firstChild.setAttributeNS(null, 'r', + clip * size); + } + } + break; + } + } + + // showing + group.style.display = ''; + } + } + } + + ShapeLibrary.enumerate().forEach(function(shape) { + register(shape.name,shape.drawShape,shape.drawBorder); + }); + + /** + * Exporting + * ---------- + */ + this.CustomShapes = { + + // Functions + init: initPlugin, + // add pre-cache images + + // Version + version: '0.1' + }; + + + +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/README.md b/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/README.md new file mode 100644 index 0000000..c305d95 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/README.md @@ -0,0 +1,38 @@ +sigma.renderers.edgeDots +======================== + +Plugin developed by [Joakim af Sandeberg](https://github.com/jotunacorn). + +Contact: joakim.afs+github@gmail.com + +--- +## General +This plugin adds the option to show colored dots near the source and target of an edge when using the canvas renderer. + +See the following [example](../../examples/plugin-edgeDots.html) for full usage. + +To use it, include all .js files under this folder. + +## Edges + +This plugin extends Sigma.js canvas edges: + * **sourceDotColor** + * The value to use as color for the source dot. If left undefined there will be no dot at the source. + * type: *string* + * default value: undefined + * **targetDotColor** + * The value to use as color for the target dot. If left undefined there will be no dot at the target. + * type: *string* + * default value: undefined + * **dotOffset** + * The value which define the distance between the dots and the nodes, relative to the node size. + * type: *number* + * default value: 3 + * **dotSize** + * The value which define the size of the dot relative to the edge. + * type: *number* + * default value: 1 +## Renderers + +This plugin modifies the sigma.canvas.edges.curve and sigma.canvas.edges.curvedArrow + diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurve.js b/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurve.js new file mode 100644 index 0000000..f902713 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurve.js @@ -0,0 +1,114 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as curves. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.dotCurve = function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + sSize = source[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y']; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, sSize) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x1, cp.y1, cp.x2, cp.y2, tX, tY); + } else { + context.quadraticCurveTo(cp.x, cp.y, tX, tY); + } + context.stroke(); + if(edge.sourceDotColor != undefined || edge.targetDotColor != undefined) { + var dotOffset = edge.dotOffset || 3; + var dotSize = edge.dotSize || 1; + dotSize = size*dotSize; + dotOffset = dotOffset*sSize; + if(edge.sourceDotColor != undefined) { + createDot(context, sX, sY, cp, tX, tY, dotOffset, dotSize, edge.sourceDotColor); + } + if (edge.targetDotColor != undefined){ + createDot(context, tX, tY, cp, sX, sY, dotOffset, dotSize, edge.targetDotColor); + } + } + }; + + function createDot(context, sX, sY, cp, tX, tY, offset, size, color) { + context.beginPath(); + context.fillStyle = color; + var dot = getPointOnBezier(sX, sY, cp.x, cp.y, tX, tY, + offset); + context.arc(dot.x, dot.y, size * 3, 0, 2 * Math.PI, + false); + context.fill(); + } + + function getQBezierValue(t, p1, p2, p3) { + var iT = 1 - t; + return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3; + } + + function getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, position) { + return { + x:getQBezierValue(position, startX, cpX, endX), + y:getQBezierValue(position, startY, cpY, endY) + }; + } + function getDistanceBetweenPoints(x1, y1, x2, y2){ + return Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); + } + /* Function to get a point on a bezier curve a certain distance away from + its source. Needed since the position on a beziercurve is given to the + formula as a percentage (t).*/ + function getPointOnBezier(startX, startY, cpX, cpY, endX, endY, distance){ + var bestT = 0; + var bestAccuracy = 1000; + var stepSize = 0.001; + for(var t = 0; t<1; t+=stepSize){ + var currentPoint = getQuadraticCurvePoint(startX, startY, cpX, cpY, + endX, endY, t); + var currentDistance = getDistanceBetweenPoints(startX, startY, + currentPoint.x, currentPoint.y); + if(Math.abs(currentDistance-distance) < bestAccuracy){ + bestAccuracy = Math.abs(currentDistance-distance); + bestT = t; + } + } + return getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, bestT); + } + +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurvedArrow.js b/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurvedArrow.js new file mode 100644 index 0000000..8dc94a7 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeDots/sigma.canvas.edges.dotCurvedArrow.js @@ -0,0 +1,145 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as curves with arrow heading. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.dotCurvedArrow = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + size = edge[prefix + 'size'] || 1, + count = edge.count || 0, + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + aSize = Math.max(size * 2.5, settings('minArrowSize')), + d, + aX, + aY, + vX, + vY; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, tSize, count) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY, count); + + if (source.id === target.id) { + d = Math.sqrt(Math.pow(tX - cp.x1, 2) + Math.pow(tY - cp.y1, 2)); + aX = cp.x1 + (tX - cp.x1) * (d - aSize - tSize) / d; + aY = cp.y1 + (tY - cp.y1) * (d - aSize - tSize) / d; + vX = (tX - cp.x1) * aSize / d; + vY = (tY - cp.y1) * aSize / d; + } + else { + d = Math.sqrt(Math.pow(tX - cp.x, 2) + Math.pow(tY - cp.y, 2)); + aX = cp.x + (tX - cp.x) * (d - aSize - tSize) / d; + aY = cp.y + (tY - cp.y) * (d - aSize - tSize) / d; + vX = (tX - cp.x) * aSize / d; + vY = (tY - cp.y) * aSize / d; + } + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x2, cp.y2, cp.x1, cp.y1, aX, aY); + } else { + context.quadraticCurveTo(cp.x, cp.y, aX, aY); + } + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + if(edge.sourceDotColor != undefined || edge.targetDotColor != undefined) { + var dotOffset = edge.dotOffset || 3; + var dotSize = edge.dotSize || 1; + dotSize = size*dotSize; + dotOffset = dotOffset*tSize; + if(edge.sourceDotColor != undefined) { + createDot(context, sX, sY, cp, tX, tY, dotOffset, dotSize, edge.sourceDotColor); + } + if (edge.targetDotColor != undefined){ + createDot(context, tX, tY, cp, sX, sY, dotOffset, dotSize, edge.targetDotColor); + } + } + }; + + function createDot(context, sX, sY, cp, tX, tY, offset, size, color) { + context.beginPath(); + context.fillStyle = color; + var dot = getPointOnBezier(sX, sY, cp.x, cp.y, tX, tY, + offset); + context.arc(dot.x, dot.y, size * 3, 0, 2 * Math.PI, + false); + context.fill(); + } + + function getQBezierValue(t, p1, p2, p3) { + var iT = 1 - t; + return iT * iT * p1 + 2 * iT * t * p2 + t * t * p3; + } + + function getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, position) { + return { + x:getQBezierValue(position, startX, cpX, endX), + y:getQBezierValue(position, startY, cpY, endY) + }; + } + function getDistanceBetweenPoints(x1, y1, x2, y2){ + return Math.sqrt((x2-x1)*(x2-x1) + (y2-y1)*(y2-y1)); + } + /* Function to get a point on a bezier curve a certain distance away from + its source. Needed since the position on a beziercurve is given to the + formula as a percentage (t).*/ + function getPointOnBezier(startX, startY, cpX, cpY, endX, endY, distance){ + var bestT = 0; + var bestAccuracy = 1000; + var stepSize = 0.001; + for(var t = 0; t<1; t+=stepSize){ + var currentPoint = getQuadraticCurvePoint(startX, startY, cpX, cpY, + endX, endY, t); + var currentDistance = getDistanceBetweenPoints(startX, startY, + currentPoint.x, currentPoint.y); + if(Math.abs(currentDistance-distance) < bestAccuracy){ + bestAccuracy = Math.abs(currentDistance-distance); + bestT = t; + } + } + return getQuadraticCurvePoint(startX, startY, cpX, cpY, endX, endY, bestT); + } +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/README.md b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/README.md new file mode 100644 index 0000000..0c4e246 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/README.md @@ -0,0 +1,76 @@ +sigma.renderers.edgeLabels +================== + +Plugin developed by [Sébastien Heymann](https://github.com/sheymann) for [Linkurious](https://github.com/Linkurious). + +Contact: seb@linkurio.us + +--- +## General +This plugin displays edge labels. + +See the following [example](../../examples/edge-renderers.html) for full usage. + +To use it, include all .js files under this folder. + +## Settings + +This plugin extends Sigma.js settings in a transparent way to render edge labels, see [settings.js](settings.js): + + * **defaultEdgeLabelColor** + * type: *string* + * default value: `#000` + + * **defaultEdgeLabelActiveColor** + * type: *string* + * default value: `rgb(236, 81, 72)` + + * **defaultEdgeLabelSize** + * type: *number* + * default value: `10` + + * **edgeLabelSize** + * Indicates how to choose the edge labels size. + * type: *string* + * default value: `fixed` + * available values: `fixed`, `proportional` + + * **edgeLabelSizePowRatio** + * The opposite power ratio between the font size of the label and the edge size. + * type: *number* + * default value: `0.8` + +````javascript +// Formula: +Math.pow(size, - 1 / edgeLabelSizePowRatio) * size * defaultEdgeLabelSize +```` + + * **edgeLabelThreshold** + * The minimum size an edge must have to see its label displayed. + * type: *number* + * default value: `1` + +The plugin also forces `drawEdgeLabels` to `true`. + +The default values provided by the plugin may be overridden when instantiating Sigma, e.g.: + +````javascript +var sigInst = new sigma({ + container: 'graph-container', + settings: { + edgeLabelSize: 'proportional' + } +}); +```` + +## Renderers + +This plugin provides the following edge label renderers: +- `line` (default) +- `arrow` (use default) +- `curve` +- `curvedArrow` + +## Compatibility + +This plugin is compatible with `sigma.plugins.activeState`. diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/settings.js b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/settings.js new file mode 100644 index 0000000..0a709b4 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/settings.js @@ -0,0 +1,41 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize package: + sigma.utils.pkg('sigma.settings'); + + /** + * Extended sigma settings for sigma.renderers.edgeLabels. + */ + var settings = { + /** + * RENDERERS SETTINGS: + * ******************* + */ + // {string} + defaultEdgeLabelColor: '#000', + // {string} + defaultEdgeLabelActiveColor: '#000', + // {string} + defaultEdgeLabelSize: 10, + // {string} Indicates how to choose the edge labels size. Available values: + // "fixed", "proportional" + edgeLabelSize: 'fixed', + // {string} The opposite power ratio between the font size of the label and + // the edge size: + // Math.pow(size, -1 / edgeLabelSizePowRatio) * size * defaultEdgeLabelSize + edgeLabelSizePowRatio: 1, + // {number} The minimum size an edge must have to see its label displayed. + edgeLabelThreshold: 1, + }; + + // Export the previously designed settings: + sigma.settings = sigma.utils.extend(sigma.settings || {}, settings); + + // Override default settings: + sigma.settings.drawEdgeLabels = true; + +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curve.js b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curve.js new file mode 100644 index 0000000..69f906f --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curve.js @@ -0,0 +1,112 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.edges.labels'); + + /** + * This label renderer will just display the label on the curve of the edge. + * The label is rendered at half distance of the edge extremities, and is + * always oriented from left to right on the top side of the curve. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.labels.curve = + function(edge, source, target, context, settings) { + if (typeof edge.label !== 'string') + return; + + var prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1; + + if (size < settings('edgeLabelThreshold')) + return; + + var fontSize, + sSize = source[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + dX = tX - sX, + dY = tY - sY, + sign = (sX < tX) ? 1 : -1, + cp = {}, + c, + angle, + t = 0.5; //length of the curve + + if (source.id === target.id) { + cp = sigma.utils.getSelfLoopControlPoints(sX, sY, sSize); + c = sigma.utils.getPointOnBezierCurve( + t, sX, sY, tX, tY, cp.x1, cp.y1, cp.x2, cp.y2 + ); + angle = Math.atan2(1, 1); // 45° + } else { + cp = sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY); + c = sigma.utils.getPointOnQuadraticCurve(t, sX, sY, tX, tY, cp.x, cp.y); + angle = Math.atan2(dY * sign, dX * sign); + } + + // The font size is sublineraly proportional to the edge size, in order to + // avoid very large labels on screen. + // This is achieved by f(x) = x * x^(-1/ a), where 'x' is the size and 'a' + // is the edgeLabelSizePowRatio. Notice that f(1) = 1. + // The final form is: + // f'(x) = b * x * x^(-1 / a), thus f'(1) = b. Application: + // fontSize = defaultEdgeLabelSize if edgeLabelSizePowRatio = 1 + fontSize = (settings('edgeLabelSize') === 'fixed') ? + settings('defaultEdgeLabelSize') : + settings('defaultEdgeLabelSize') * + size * + Math.pow(size, -1 / settings('edgeLabelSizePowRatio')); + + context.save(); + + + if (edge.active) { + context.font = [ + settings('activeFontStyle'), + fontSize + 'px', + settings('activeFont') || settings('font') + ].join(' '); + + context.fillStyle = + settings('edgeActiveColor') === 'edge' ? + (edge.active_color || settings('defaultEdgeActiveColor')) : + settings('defaultEdgeLabelActiveColor'); + } + else { + context.font = [ + settings('fontStyle'), + fontSize + 'px', + settings('font') + ].join(' '); + + context.fillStyle = + (settings('edgeLabelColor') === 'edge') ? + (edge.color || settings('defaultEdgeColor')) : + settings('defaultEdgeLabelColor'); + } + + context.textAlign = 'center'; + context.textBaseline = 'alphabetic'; + + context.translate(c.x, c.y); + context.rotate(angle); + context.fillText( + edge.label, + 0, + (-size / 2) - 3 + ); + + context.restore(); + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curvedArrow.js b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curvedArrow.js new file mode 100644 index 0000000..e32012c --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.curvedArrow.js @@ -0,0 +1,25 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.edges.labels'); + + /** + * This label renderer will just display the label on the curve of the edge. + * The label is rendered at half distance of the edge extremities, and is + * always oriented from left to right on the top side of the curve. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.labels.curvedArrow = + function(edge, source, target, context, settings) { + sigma.canvas.edges.labels.curve(edge, source, target, context, settings); + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.def.js b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.def.js new file mode 100644 index 0000000..51f4bf9 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.edgeLabels/sigma.canvas.edges.labels.def.js @@ -0,0 +1,96 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.edges.labels'); + + /** + * This label renderer will just display the label on the line of the edge. + * The label is rendered at half distance of the edge extremities, and is + * always oriented from left to right on the top side of the line. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.labels.def = + function(edge, source, target, context, settings) { + if (typeof edge.label !== 'string' || source == target) + return; + + var prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1; + + if (size < settings('edgeLabelThreshold')) + return; + + if (0 === settings('edgeLabelSizePowRatio')) + throw '"edgeLabelSizePowRatio" must not be 0.'; + + var fontSize, + x = (source[prefix + 'x'] + target[prefix + 'x']) / 2, + y = (source[prefix + 'y'] + target[prefix + 'y']) / 2, + dX = target[prefix + 'x'] - source[prefix + 'x'], + dY = target[prefix + 'y'] - source[prefix + 'y'], + sign = (source[prefix + 'x'] < target[prefix + 'x']) ? 1 : -1, + angle = Math.atan2(dY * sign, dX * sign); + + // The font size is sublineraly proportional to the edge size, in order to + // avoid very large labels on screen. + // This is achieved by f(x) = x * x^(-1/ a), where 'x' is the size and 'a' + // is the edgeLabelSizePowRatio. Notice that f(1) = 1. + // The final form is: + // f'(x) = b * x * x^(-1 / a), thus f'(1) = b. Application: + // fontSize = defaultEdgeLabelSize if edgeLabelSizePowRatio = 1 + fontSize = (settings('edgeLabelSize') === 'fixed') ? + settings('defaultEdgeLabelSize') : + settings('defaultEdgeLabelSize') * + size * + Math.pow(size, -1 / settings('edgeLabelSizePowRatio')); + + context.save(); + + if (edge.active) { + context.font = [ + settings('activeFontStyle'), + fontSize + 'px', + settings('activeFont') || settings('font') + ].join(' '); + + context.fillStyle = + settings('edgeActiveColor') === 'edge' ? + (edge.active_color || settings('defaultEdgeActiveColor')) : + settings('defaultEdgeLabelActiveColor'); + } + else { + context.font = [ + settings('fontStyle'), + fontSize + 'px', + settings('font') + ].join(' '); + + context.fillStyle = + (settings('edgeLabelColor') === 'edge') ? + (edge.color || settings('defaultEdgeColor')) : + settings('defaultEdgeLabelColor'); + } + + context.textAlign = 'center'; + context.textBaseline = 'alphabetic'; + + context.translate(x, y); + context.rotate(angle); + context.fillText( + edge.label, + 0, + (-size / 2) - 3 + ); + + context.restore(); + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/README.md b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/README.md new file mode 100644 index 0000000..bcd83c4 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/README.md @@ -0,0 +1,31 @@ +sigma.renderers.edgeLabels +================== + +Plugin developed by [Jack Miner](https://github.com/3ch01c). + +Contact: 3ch01c@gmail.com + +--- +## General +This plugin allows visualizing multiple parallel edges. + +See the following [example](../../examples/parallel-edges.html) for full usage. + +To use it, include all .js files under this folder. + +## Edges + +This plugin extends Sigma.js edges: + + * **count** + * Represents the index of the edge in the set of parallel edges. Inversely proportional to the amplitude of the vertex of the edge curve. + * type: *number* + * default value: `0` + +## Renderers + +This plugin modifies + +## Utils + +This plugin modifies functions `sigma.utils.getQuadraticControlPoint` and `sigma.utils.getSelfLoopControlPoints` with an optional amplitude modifier parameters. diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curve.js b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curve.js new file mode 100644 index 0000000..cf4ca0a --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curve.js @@ -0,0 +1,65 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.curve = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = settings('edgeHoverSizeRatio') * (edge[prefix + 'size'] || 1), + count = edge.count || 0, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + sSize = source[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y']; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, sSize, count) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY, count); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x1, cp.y1, cp.x2, cp.y2, tX, tY); + } else { + context.quadraticCurveTo(cp.x, cp.y, tX, tY); + } + context.stroke(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curvedArrow.js b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curvedArrow.js new file mode 100644 index 0000000..d1c9e69 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edgehovers.curvedArrow.js @@ -0,0 +1,97 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.curvedArrow = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + size = settings('edgeHoverSizeRatio') * (edge[prefix + 'size'] || 1), + count = edge.count || 0, + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + d, + aSize, + aX, + aY, + vX, + vY; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, tSize, count) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY, count); + + if (source.id === target.id) { + d = Math.sqrt(Math.pow(tX - cp.x1, 2) + Math.pow(tY - cp.y1, 2)); + aSize = size * 2.5; + aX = cp.x1 + (tX - cp.x1) * (d - aSize - tSize) / d; + aY = cp.y1 + (tY - cp.y1) * (d - aSize - tSize) / d; + vX = (tX - cp.x1) * aSize / d; + vY = (tY - cp.y1) * aSize / d; + } + else { + d = Math.sqrt(Math.pow(tX - cp.x, 2) + Math.pow(tY - cp.y, 2)); + aSize = size * 2.5; + aX = cp.x + (tX - cp.x) * (d - aSize - tSize) / d; + aY = cp.y + (tY - cp.y) * (d - aSize - tSize) / d; + vX = (tX - cp.x) * aSize / d; + vY = (tY - cp.y) * aSize / d; + } + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x2, cp.y2, cp.x1, cp.y1, aX, aY); + } else { + context.quadraticCurveTo(cp.x, cp.y, aX, aY); + } + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curve.js b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curve.js new file mode 100644 index 0000000..3b06b46 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curve.js @@ -0,0 +1,58 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as curves. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.curve = function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + count = edge.count || 0, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + sSize = source[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y']; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, sSize, count) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY, count); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x1, cp.y1, cp.x2, cp.y2, tX, tY); + } else { + context.quadraticCurveTo(cp.x, cp.y, tX, tY); + } + context.stroke(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curvedArrow.js b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curvedArrow.js new file mode 100644 index 0000000..7001f05 --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.curvedArrow.js @@ -0,0 +1,89 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as curves with arrow heading. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.curvedArrow = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + size = edge[prefix + 'size'] || 1, + count = edge.count || 0, + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + aSize = Math.max(size * 2.5, settings('minArrowSize')), + d, + aX, + aY, + vX, + vY; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, tSize, count) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY, count); + + if (source.id === target.id) { + d = Math.sqrt(Math.pow(tX - cp.x1, 2) + Math.pow(tY - cp.y1, 2)); + aX = cp.x1 + (tX - cp.x1) * (d - aSize - tSize) / d; + aY = cp.y1 + (tY - cp.y1) * (d - aSize - tSize) / d; + vX = (tX - cp.x1) * aSize / d; + vY = (tY - cp.y1) * aSize / d; + } + else { + d = Math.sqrt(Math.pow(tX - cp.x, 2) + Math.pow(tY - cp.y, 2)); + aX = cp.x + (tX - cp.x) * (d - aSize - tSize) / d; + aY = cp.y + (tY - cp.y) * (d - aSize - tSize) / d; + vX = (tX - cp.x) * aSize / d; + vY = (tY - cp.y) * aSize / d; + } + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x2, cp.y2, cp.x1, cp.y1, aX, aY); + } else { + context.quadraticCurveTo(cp.x, cp.y, aX, aY); + } + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.labels.curve.js b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.labels.curve.js new file mode 100644 index 0000000..569232f --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/sigma.canvas.edges.labels.curve.js @@ -0,0 +1,112 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.edges.labels'); + + /** + * This label renderer will just display the label on the curve of the edge. + * The label is rendered at half distance of the edge extremities, and is + * always oriented from left to right on the top side of the curve. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.labels.curve = + function(edge, source, target, context, settings) { + if (typeof edge.label !== 'string') + return; + + var prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1; + + if (size < settings('edgeLabelThreshold')) + return; + + var fontSize, + sSize = source[prefix + 'size'], + count = edge.count || 0, + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + dX = tX - sX, + dY = tY - sY, + sign = (sX < tX) ? 1 : -1, + cp = {}, + c, + angle, + t = 0.5; //length of the curve + + if (source.id === target.id) { + cp = sigma.utils.getSelfLoopControlPoints(sX, sY, sSize, count); + c = sigma.utils.getPointOnBezierCurve( + t, sX, sY, tX, tY, cp.x1, cp.y1, cp.x2, cp.y2 + ); + angle = Math.atan2(1, 1); // 45° + } else { + cp = sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY, count); + c = sigma.utils.getPointOnQuadraticCurve(t, sX, sY, tX, tY, cp.x, cp.y); + angle = Math.atan2(dY * sign, dX * sign); + } + + // The font size is sublineraly proportional to the edge size, in order to + // avoid very large labels on screen. + // This is achieved by f(x) = x * x^(-1/ a), where 'x' is the size and 'a' + // is the edgeLabelSizePowRatio. Notice that f(1) = 1. + // The final form is: + // f'(x) = b * x * x^(-1 / a), thus f'(1) = b. Application: + // fontSize = defaultEdgeLabelSize if edgeLabelSizePowRatio = 1 + fontSize = (settings('edgeLabelSize') === 'fixed') ? + settings('defaultEdgeLabelSize') : + settings('defaultEdgeLabelSize') * + size * + Math.pow(size, -1 / settings('edgeLabelSizePowRatio')); + + context.save(); + + + if (edge.active) { + context.font = [ + settings('activeFontStyle'), + fontSize + 'px', + settings('activeFont') || settings('font') + ].join(' '); + + context.fillStyle = + settings('edgeActiveColor') === 'edge' ? + (edge.active_color || settings('defaultEdgeActiveColor')) : + settings('defaultEdgeLabelActiveColor'); + } + else { + context.font = [ + settings('fontStyle'), + fontSize + 'px', + settings('font') + ].join(' '); + + context.fillStyle = + (settings('edgeLabelColor') === 'edge') ? + (edge.color || settings('defaultEdgeColor')) : + settings('defaultEdgeLabelColor'); + } + + context.textAlign = 'center'; + context.textBaseline = 'alphabetic'; + context.translate(c.x, c.y); + context.rotate(angle); + context.fillText( + edge.label, + 0, + (-size / 2) - 3 + ); + + context.restore(); + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/utils.js b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/utils.js new file mode 100644 index 0000000..7e45ecf --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.parallelEdges/utils.js @@ -0,0 +1,50 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + var _root = this; + + // Initialize packages: + sigma.utils = sigma.utils || {}; + + /** + * Return the control point coordinates for a quadratic bezier curve. + * + * @param {number} x1 The X coordinate of the start point. + * @param {number} y1 The Y coordinate of the start point. + * @param {number} x2 The X coordinate of the end point. + * @param {number} y2 The Y coordinate of the end point. + * @param {number} a Modifier for the amplitude of the curve. + * @return {x,y} The control point coordinates. + */ + sigma.utils.getQuadraticControlPoint = function(x1, y1, x2, y2, a) { + a = a || 0; + return { + x: (x1 + x2) / 2 + (y2 - y1) / (60 / (15 + a)), + y: (y1 + y2) / 2 + (x1 - x2) / (60 / (15 + a)) + }; + }; + + /** + * Return the coordinates of the two control points for a self loop (i.e. + * where the start point is also the end point) computed as a cubic bezier + * curve. + * + * @param {number} x The X coordinate of the node. + * @param {number} y The Y coordinate of the node. + * @param {number} size The node size. + * @param {number} a Modifier to the loop size. + * @return {x1,y1,x2,y2} The coordinates of the two control points. + */ + sigma.utils.getSelfLoopControlPoints = function(x , y, size, a) { + a = a || 0; + return { + x1: x - (size + a) * 7, + y1: y, + x2: x, + y2: y + (size + a) * 7 + }; + }; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.snapshot/README.md b/sigma.js-1.2.0/plugins/sigma.renderers.snapshot/README.md new file mode 100644 index 0000000..98a31cd --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.snapshot/README.md @@ -0,0 +1,36 @@ +sigma.renderers.snapshot +======================== + +Plugin by [Guillaume Plique](https://github.com/Yomguithereal). + +--- + +This plugin makes the retrieval of an image version of the graph rendered with canvas or webgl as easy as a stroll in a park. + +*Basic usage* + +```js +// Retrieving a dataUrl of the rendered graph +var dataUrl = myRenderer.snapshot(); + +// Download the rendered graph as an image +myRenderer.snapshot({download: true}); +``` + +*Complex usage* + +```js +myRenderer.snapshot({ + format: 'jpg', + background: 'white', + labels: false +}); +``` + +*Parameters* + +* **format** *?string* [`png`]: file format of the image. Supported: `png`, `jpg`, `gif`, `tiff`. +* **background** *?string*: whether you want to specify a background color for the snapshot. Transparent if none specified. +* **labels** *?boolean* [`true`] : do we want the labels on screen to be displayed on the snapshot? +* **download** *?boolean* [`false`] : whether you want the graph image to be downloaded by the browser. +* **filename** *?string* [`graph.png`] : full filename for the file to download. diff --git a/sigma.js-1.2.0/plugins/sigma.renderers.snapshot/sigma.renderers.snapshot.js b/sigma.js-1.2.0/plugins/sigma.renderers.snapshot/sigma.renderers.snapshot.js new file mode 100644 index 0000000..b2d31fb --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.renderers.snapshot/sigma.renderers.snapshot.js @@ -0,0 +1,122 @@ +;(function(undefined) { + + /** + * Sigma Renderer Snapshot Utility + * ================================ + * + * The aim of this plugin is to enable users to retrieve a static image + * of the graph being rendered. + * + * Author: Guillaume Plique (Yomguithereal) + * Version: 0.0.1 + */ + + // Terminating if sigma were not to be found + if (typeof sigma === 'undefined') + throw 'sigma.renderers.snapshot: sigma not in scope.'; + + // Constants + var CONTEXTS = ['scene', 'edges', 'nodes', 'labels'], + TYPES = { + png: 'image/png', + jpg: 'image/jpeg', + gif: 'image/gif', + tiff: 'image/tiff' + }; + + // Utilities + function download(dataUrl, extension, filename) { + + // Anchor + var anchor = document.createElement('a'); + anchor.setAttribute('href', dataUrl); + anchor.setAttribute('download', filename || 'graph.' + extension); + + // Click event + var event = document.createEvent('MouseEvent'); + event.initMouseEvent('click', true, false, window, 0, 0, 0 ,0, 0, + false, false, false, false, 0, null); + + anchor.dispatchEvent(event); + delete anchor; + } + + // Main function + function snapshot(params) { + params = params || {}; + + // Enforcing + if (params.format && !(params.format in TYPES)) + throw Error('sigma.renderers.snaphot: unsupported format "' + + params.format + '".'); + + var self = this, + webgl = this instanceof sigma.renderers.webgl, + doneContexts = []; + + // Creating a false canvas where we'll merge the other + var merged = document.createElement('canvas'), + mergedContext = merged.getContext('2d'), + sized = false; + + // Iterating through context + CONTEXTS.forEach(function(name) { + if (!self.contexts[name]) + return; + + if (params.labels === false && name === 'labels') + return; + + var canvas = self.domElements[name] || self.domElements['scene'], + context = self.contexts[name]; + + if (~doneContexts.indexOf(context)) + return; + + if (!sized) { + merged.width = webgl && context instanceof WebGLRenderingContext ? + canvas.width / 2 : + canvas.width; + merged.height = webgl && context instanceof WebGLRenderingContext ? + canvas.height / 2 : + canvas.height + sized = true; + + // Do we want a background color? + if (params.background) { + mergedContext.rect(0, 0, merged.width, merged.height); + mergedContext.fillStyle = params.background; + mergedContext.fill(); + } + } + + if (context instanceof WebGLRenderingContext) + mergedContext.drawImage(canvas, 0, 0, + canvas.width / 2, canvas.height / 2); + else + mergedContext.drawImage(canvas, 0, 0); + + doneContexts.push(context); + }); + + var dataUrl = merged.toDataURL(TYPES[params.format || 'png']); + + if (params.download) + download( + dataUrl, + params.format || 'png', + params.filename + ); + + // Cleaning + delete mergedContext; + delete merged; + delete doneContexts; + + return dataUrl; + } + + // Extending canvas and webl renderers + sigma.renderers.canvas.prototype.snapshot = snapshot; + sigma.renderers.webgl.prototype.snapshot = snapshot; +}).call(this); diff --git a/sigma.js-1.2.0/plugins/sigma.statistics.HITS/sigma.statistics.HITS.js b/sigma.js-1.2.0/plugins/sigma.statistics.HITS/sigma.statistics.HITS.js new file mode 100644 index 0000000..030a66e --- /dev/null +++ b/sigma.js-1.2.0/plugins/sigma.statistics.HITS/sigma.statistics.HITS.js @@ -0,0 +1,154 @@ +/** +* This plugin computes HITS statistics (Authority and Hub measures) for each node of the graph. +* It adds to the graph model a method called "HITS". +* +* Author: Mehdi El Fadil, Mango Information Systems +* License: This plugin for sigma.js follows the same licensing terms as sigma.js library. +* +* This implementation is based on the original paper J. Kleinberg, Authoritative Sources in a Hyperlinked Environment (http://www.cs.cornell.edu/home/kleinber/auth.pdf), and is inspired by implementation in Gephi software (Patick J. McSweeney <pjmcswee@syr.edu>, Sebastien Heymann <seb@gephi.org>, Dual-licensed under GPL v3 and CDDL) +* https://github.com/Mango-information-systems/gephi/blob/fix-hits/modules/StatisticsPlugin/src/main/java/org/gephi/statistics/plugin/Hits.java +* +* Bugs in Gephi implementation should not be found in this implementation. +* Tests have been put in place based on a test plan used to test implementation in Gephi, cf. discussion here: https://github.com/jacomyal/sigma.js/issues/309 +* No guarantee is provided regarding the correctness of the calculations. Plugin author did not control the validity of the test scenarii. +* +* Warning: tricky edge-case. Hubs and authorities for nodes without any edge are only reliable in an undirected graph calculation mode. +* +* Check the code for more information. +* +* Here is how to use it: +* +* > // directed graph +* > var stats = s.graph.HITS() +* > // returns an object indexed by node Id with the authority and hub measures +* > // like { "n0": {"authority": 0.00343, "hub": 0.023975}, "n1": [...]* +* +* > // undirected graph: pass 'true' as function parameter +* > var stats = s.graph.HITS(true) +* > // returns an object indexed by node Id with the authority and hub measures +* > // like { "n0": {"authority": 0.00343, "hub": 0.023975}, "n1": [...] +*/ + +(function() { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + +/** +* This method takes a graph instance and returns authority and hub measures computed for each node. It uses the built-in +* indexes from sigma's graph model to search in the graph. +* +* @param {boolean} isUndirected flag informing whether the graph is directed or not. Default false: directed graph. +* @return {object} object indexed by node Ids, containing authority and hub measures for each node of the graph. +*/ + + sigma.classes.graph.addMethod( + 'HITS', + function(isUndirected) { + var res = {} + , epsilon = 0.0001 + , hubList = [] + , authList = [] + , nodes = this.nodes() + , nodesCount = nodes.length + , tempRes = {} + + if (!isUndirected) + isUndirected = false + + for (var i in nodes) { + + if (isUndirected) { + hubList.push(nodes[i]) + authList.push(nodes[i]) + } + else { + if (this.degree(nodes[i].id, 'out') > 0) + hubList.push(nodes[i]) + + if (this.degree(nodes[i].id, 'in') > 0) + authList.push(nodes[i]) + } + + res[nodes[i].id] = { authority : 1, hub: 1 } + } + + var done + + while (true) { + done = true + var authSum = 0 + , hubSum = 0 + + for (var i in authList) { + + tempRes[authList[i].id] = {authority : 1, hub:0 } + + var connectedNodes = [] + + if (isUndirected) + connectedNodes = this.allNeighborsIndex[authList[i].id] + else + connectedNodes = this.inNeighborsIndex[authList[i].id] + + for (var j in connectedNodes) { + if (j != authList[i].id) + tempRes[authList[i].id].authority += res[j].hub + } + + authSum += tempRes[authList[i].id].authority + + } + + for (var i in hubList) { + + if (tempRes[hubList[i].id]) + tempRes[hubList[i].id].hub = 1 + else + tempRes[hubList[i].id] = {authority: 0, hub : 1 } + + var connectedNodes = [] + + if (isUndirected) + connectedNodes = this.allNeighborsIndex[hubList[i].id] + else + connectedNodes = this.outNeighborsIndex[hubList[i].id] + + for (var j in connectedNodes) { + if (j != hubList[i].id) + tempRes[hubList[i].id].hub += res[j].authority + } + + hubSum += tempRes[hubList[i].id].hub + + } + + for (var i in authList) { + tempRes[authList[i].id].authority /= authSum + + if (Math.abs((tempRes[authList[i].id].authority - res[authList[i].id].authority) / res[authList[i].id].authority) >= epsilon) + done = false + } + + for (var i in hubList) { + tempRes[hubList[i].id].hub /= hubSum + + if (Math.abs((tempRes[hubList[i].id].hub - res[hubList[i].id].hub) / res[hubList[i].id].hub) >= epsilon) + done = false + } + res = tempRes + + tempRes = {} + + if (done) + break + + } + + return res + + } + ) + +}).call(window) diff --git a/sigma.js-1.2.0/src/captors/sigma.captors.mouse.js b/sigma.js-1.2.0/src/captors/sigma.captors.mouse.js new file mode 100644 index 0000000..e3a40c5 --- /dev/null +++ b/sigma.js-1.2.0/src/captors/sigma.captors.mouse.js @@ -0,0 +1,349 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.captors'); + + /** + * The user inputs default captor. It deals with mouse events, keyboards + * events and touch events. + * + * @param {DOMElement} target The DOM element where the listeners will be + * bound. + * @param {camera} camera The camera related to the target. + * @param {configurable} settings The settings function. + * @return {sigma.captor} The fresh new captor instance. + */ + sigma.captors.mouse = function(target, camera, settings) { + var _self = this, + _target = target, + _camera = camera, + _settings = settings, + + // CAMERA MANAGEMENT: + // ****************** + // The camera position when the user starts dragging: + _startCameraX, + _startCameraY, + _startCameraAngle, + + // The latest stage position: + _lastCameraX, + _lastCameraY, + _lastCameraAngle, + _lastCameraRatio, + + // MOUSE MANAGEMENT: + // ***************** + // The mouse position when the user starts dragging: + _startMouseX, + _startMouseY, + + _isMouseDown, + _isMoving, + _hasDragged, + _downStartTime, + _movingTimeoutId; + + sigma.classes.dispatcher.extend(this); + + sigma.utils.doubleClick(_target, 'click', _doubleClickHandler); + _target.addEventListener('DOMMouseScroll', _wheelHandler, false); + _target.addEventListener('mousewheel', _wheelHandler, false); + _target.addEventListener('mousemove', _moveHandler, false); + _target.addEventListener('mousedown', _downHandler, false); + _target.addEventListener('click', _clickHandler, false); + _target.addEventListener('mouseout', _outHandler, false); + document.addEventListener('mouseup', _upHandler, false); + + + + + /** + * This method unbinds every handlers that makes the captor work. + */ + this.kill = function() { + sigma.utils.unbindDoubleClick(_target, 'click'); + _target.removeEventListener('DOMMouseScroll', _wheelHandler); + _target.removeEventListener('mousewheel', _wheelHandler); + _target.removeEventListener('mousemove', _moveHandler); + _target.removeEventListener('mousedown', _downHandler); + _target.removeEventListener('click', _clickHandler); + _target.removeEventListener('mouseout', _outHandler); + document.removeEventListener('mouseup', _upHandler); + }; + + + + + // MOUSE EVENTS: + // ************* + + /** + * The handler listening to the 'move' mouse event. It will effectively + * drag the graph. + * + * @param {event} e A mouse event. + */ + function _moveHandler(e) { + var x, + y, + pos; + + // Dispatch event: + if (_settings('mouseEnabled')) { + _self.dispatchEvent('mousemove', + sigma.utils.mouseCoords(e)); + + if (_isMouseDown) { + _isMoving = true; + _hasDragged = true; + + if (_movingTimeoutId) + clearTimeout(_movingTimeoutId); + + _movingTimeoutId = setTimeout(function() { + _isMoving = false; + }, _settings('dragTimeout')); + + sigma.misc.animation.killAll(_camera); + + _camera.isMoving = true; + pos = _camera.cameraPosition( + sigma.utils.getX(e) - _startMouseX, + sigma.utils.getY(e) - _startMouseY, + true + ); + + x = _startCameraX - pos.x; + y = _startCameraY - pos.y; + + if (x !== _camera.x || y !== _camera.y) { + _lastCameraX = _camera.x; + _lastCameraY = _camera.y; + + _camera.goTo({ + x: x, + y: y + }); + } + + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue = false; + + e.stopPropagation(); + return false; + } + } + } + + /** + * The handler listening to the 'up' mouse event. It will stop dragging the + * graph. + * + * @param {event} e A mouse event. + */ + function _upHandler(e) { + if (_settings('mouseEnabled') && _isMouseDown) { + _isMouseDown = false; + if (_movingTimeoutId) + clearTimeout(_movingTimeoutId); + + _camera.isMoving = false; + + var x = sigma.utils.getX(e), + y = sigma.utils.getY(e); + + if (_isMoving) { + sigma.misc.animation.killAll(_camera); + sigma.misc.animation.camera( + _camera, + { + x: _camera.x + + _settings('mouseInertiaRatio') * (_camera.x - _lastCameraX), + y: _camera.y + + _settings('mouseInertiaRatio') * (_camera.y - _lastCameraY) + }, + { + easing: 'quadraticOut', + duration: _settings('mouseInertiaDuration') + } + ); + } else if ( + _startMouseX !== x || + _startMouseY !== y + ) + _camera.goTo({ + x: _camera.x, + y: _camera.y + }); + + _self.dispatchEvent('mouseup', + sigma.utils.mouseCoords(e)); + + // Update _isMoving flag: + _isMoving = false; + } + } + + /** + * The handler listening to the 'down' mouse event. It will start observing + * the mouse position for dragging the graph. + * + * @param {event} e A mouse event. + */ + function _downHandler(e) { + if (_settings('mouseEnabled')) { + _startCameraX = _camera.x; + _startCameraY = _camera.y; + + _lastCameraX = _camera.x; + _lastCameraY = _camera.y; + + _startMouseX = sigma.utils.getX(e); + _startMouseY = sigma.utils.getY(e); + + _hasDragged = false; + _downStartTime = (new Date()).getTime(); + + switch (e.which) { + case 2: + // Middle mouse button pressed + // Do nothing. + break; + case 3: + // Right mouse button pressed + _self.dispatchEvent('rightclick', + sigma.utils.mouseCoords(e, _startMouseX, _startMouseY)); + break; + // case 1: + default: + // Left mouse button pressed + _isMouseDown = true; + + _self.dispatchEvent('mousedown', + sigma.utils.mouseCoords(e, _startMouseX, _startMouseY)); + } + } + } + + /** + * The handler listening to the 'out' mouse event. It will just redispatch + * the event. + * + * @param {event} e A mouse event. + */ + function _outHandler(e) { + if (_settings('mouseEnabled')) + _self.dispatchEvent('mouseout'); + } + + /** + * The handler listening to the 'click' mouse event. It will redispatch the + * click event, but with normalized X and Y coordinates. + * + * @param {event} e A mouse event. + */ + function _clickHandler(e) { + if (_settings('mouseEnabled')) { + var event = sigma.utils.mouseCoords(e); + event.isDragging = + (((new Date()).getTime() - _downStartTime) > 100) && _hasDragged; + _self.dispatchEvent('click', event); + } + + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue = false; + + e.stopPropagation(); + return false; + } + + /** + * The handler listening to the double click custom event. It will + * basically zoom into the graph. + * + * @param {event} e A mouse event. + */ + function _doubleClickHandler(e) { + var pos, + ratio, + animation; + + if (_settings('mouseEnabled')) { + ratio = 1 / _settings('doubleClickZoomingRatio'); + + _self.dispatchEvent('doubleclick', + sigma.utils.mouseCoords(e, _startMouseX, _startMouseY)); + + if (_settings('doubleClickEnabled')) { + pos = _camera.cameraPosition( + sigma.utils.getX(e) - sigma.utils.getCenter(e).x, + sigma.utils.getY(e) - sigma.utils.getCenter(e).y, + true + ); + + animation = { + duration: _settings('doubleClickZoomDuration') + }; + + sigma.utils.zoomTo(_camera, pos.x, pos.y, ratio, animation); + } + + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue = false; + + e.stopPropagation(); + return false; + } + } + + /** + * The handler listening to the 'wheel' mouse event. It will basically zoom + * in or not into the graph. + * + * @param {event} e A mouse event. + */ + function _wheelHandler(e) { + var pos, + ratio, + animation, + wheelDelta = sigma.utils.getDelta(e); + + if (_settings('mouseEnabled') && _settings('mouseWheelEnabled') && wheelDelta !== 0) { + ratio = wheelDelta > 0 ? + 1 / _settings('zoomingRatio') : + _settings('zoomingRatio'); + + pos = _camera.cameraPosition( + sigma.utils.getX(e) - sigma.utils.getCenter(e).x, + sigma.utils.getY(e) - sigma.utils.getCenter(e).y, + true + ); + + animation = { + duration: _settings('mouseZoomDuration') + }; + + sigma.utils.zoomTo(_camera, pos.x, pos.y, ratio, animation); + + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue = false; + + e.stopPropagation(); + return false; + } + } + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/captors/sigma.captors.touch.js b/sigma.js-1.2.0/src/captors/sigma.captors.touch.js new file mode 100644 index 0000000..0e4d987 --- /dev/null +++ b/sigma.js-1.2.0/src/captors/sigma.captors.touch.js @@ -0,0 +1,410 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.captors'); + + /** + * The user inputs default captor. It deals with mouse events, keyboards + * events and touch events. + * + * @param {DOMElement} target The DOM element where the listeners will be + * bound. + * @param {camera} camera The camera related to the target. + * @param {configurable} settings The settings function. + * @return {sigma.captor} The fresh new captor instance. + */ + sigma.captors.touch = function(target, camera, settings) { + var _self = this, + _target = target, + _camera = camera, + _settings = settings, + + // CAMERA MANAGEMENT: + // ****************** + // The camera position when the user starts dragging: + _startCameraX, + _startCameraY, + _startCameraAngle, + _startCameraRatio, + + // The latest stage position: + _lastCameraX, + _lastCameraY, + _lastCameraAngle, + _lastCameraRatio, + + // TOUCH MANAGEMENT: + // ***************** + // Touches that are down: + _downTouches = [], + + _startTouchX0, + _startTouchY0, + _startTouchX1, + _startTouchY1, + _startTouchAngle, + _startTouchDistance, + + _touchMode, + + _isMoving, + _doubleTap, + _movingTimeoutId; + + sigma.classes.dispatcher.extend(this); + + sigma.utils.doubleClick(_target, 'touchstart', _doubleTapHandler); + _target.addEventListener('touchstart', _handleStart, false); + _target.addEventListener('touchend', _handleLeave, false); + _target.addEventListener('touchcancel', _handleLeave, false); + _target.addEventListener('touchleave', _handleLeave, false); + _target.addEventListener('touchmove', _handleMove, false); + + function position(e) { + var offset = sigma.utils.getOffset(_target); + + return { + x: e.pageX - offset.left, + y: e.pageY - offset.top + }; + } + + /** + * This method unbinds every handlers that makes the captor work. + */ + this.kill = function() { + sigma.utils.unbindDoubleClick(_target, 'touchstart'); + _target.addEventListener('touchstart', _handleStart); + _target.addEventListener('touchend', _handleLeave); + _target.addEventListener('touchcancel', _handleLeave); + _target.addEventListener('touchleave', _handleLeave); + _target.addEventListener('touchmove', _handleMove); + }; + + // TOUCH EVENTS: + // ************* + /** + * The handler listening to the 'touchstart' event. It will set the touch + * mode ("_touchMode") and start observing the user touch moves. + * + * @param {event} e A touch event. + */ + function _handleStart(e) { + if (_settings('touchEnabled')) { + var x0, + x1, + y0, + y1, + pos0, + pos1; + + _downTouches = e.touches; + + switch (_downTouches.length) { + case 1: + _camera.isMoving = true; + _touchMode = 1; + + _startCameraX = _camera.x; + _startCameraY = _camera.y; + + _lastCameraX = _camera.x; + _lastCameraY = _camera.y; + + pos0 = position(_downTouches[0]); + _startTouchX0 = pos0.x; + _startTouchY0 = pos0.y; + + break; + case 2: + _camera.isMoving = true; + _touchMode = 2; + + pos0 = position(_downTouches[0]); + pos1 = position(_downTouches[1]); + x0 = pos0.x; + y0 = pos0.y; + x1 = pos1.x; + y1 = pos1.y; + + _lastCameraX = _camera.x; + _lastCameraY = _camera.y; + + _startCameraAngle = _camera.angle; + _startCameraRatio = _camera.ratio; + + _startCameraX = _camera.x; + _startCameraY = _camera.y; + + _startTouchX0 = x0; + _startTouchY0 = y0; + _startTouchX1 = x1; + _startTouchY1 = y1; + + _startTouchAngle = Math.atan2( + _startTouchY1 - _startTouchY0, + _startTouchX1 - _startTouchX0 + ); + _startTouchDistance = Math.sqrt( + (_startTouchY1 - _startTouchY0) * + (_startTouchY1 - _startTouchY0) + + (_startTouchX1 - _startTouchX0) * + (_startTouchX1 - _startTouchX0) + ); + + e.preventDefault(); + return false; + } + } + } + + /** + * The handler listening to the 'touchend', 'touchcancel' and 'touchleave' + * event. It will update the touch mode if there are still at least one + * finger, and stop dragging else. + * + * @param {event} e A touch event. + */ + function _handleLeave(e) { + if (_settings('touchEnabled')) { + _downTouches = e.touches; + var inertiaRatio = _settings('touchInertiaRatio'); + + if (_movingTimeoutId) { + _isMoving = false; + clearTimeout(_movingTimeoutId); + } + + switch (_touchMode) { + case 2: + if (e.touches.length === 1) { + _handleStart(e); + + e.preventDefault(); + break; + } + /* falls through */ + case 1: + _camera.isMoving = false; + _self.dispatchEvent('stopDrag'); + + if (_isMoving) { + _doubleTap = false; + sigma.misc.animation.camera( + _camera, + { + x: _camera.x + + inertiaRatio * (_camera.x - _lastCameraX), + y: _camera.y + + inertiaRatio * (_camera.y - _lastCameraY) + }, + { + easing: 'quadraticOut', + duration: _settings('touchInertiaDuration') + } + ); + } + + _isMoving = false; + _touchMode = 0; + break; + } + } + } + + /** + * The handler listening to the 'touchmove' event. It will effectively drag + * the graph, and eventually zooms and turn it if the user is using two + * fingers. + * + * @param {event} e A touch event. + */ + function _handleMove(e) { + if (!_doubleTap && _settings('touchEnabled')) { + var x0, + x1, + y0, + y1, + cos, + sin, + end, + pos0, + pos1, + diff, + start, + dAngle, + dRatio, + newStageX, + newStageY, + newStageRatio, + newStageAngle; + + _downTouches = e.touches; + _isMoving = true; + + if (_movingTimeoutId) + clearTimeout(_movingTimeoutId); + + _movingTimeoutId = setTimeout(function() { + _isMoving = false; + }, _settings('dragTimeout')); + + switch (_touchMode) { + case 1: + pos0 = position(_downTouches[0]); + x0 = pos0.x; + y0 = pos0.y; + + diff = _camera.cameraPosition( + x0 - _startTouchX0, + y0 - _startTouchY0, + true + ); + + newStageX = _startCameraX - diff.x; + newStageY = _startCameraY - diff.y; + + if (newStageX !== _camera.x || newStageY !== _camera.y) { + _lastCameraX = _camera.x; + _lastCameraY = _camera.y; + + _camera.goTo({ + x: newStageX, + y: newStageY + }); + + _self.dispatchEvent('mousemove', + sigma.utils.mouseCoords(e, pos0.x, pos0.y)); + + _self.dispatchEvent('drag'); + } + break; + case 2: + pos0 = position(_downTouches[0]); + pos1 = position(_downTouches[1]); + x0 = pos0.x; + y0 = pos0.y; + x1 = pos1.x; + y1 = pos1.y; + + start = _camera.cameraPosition( + (_startTouchX0 + _startTouchX1) / 2 - + sigma.utils.getCenter(e).x, + (_startTouchY0 + _startTouchY1) / 2 - + sigma.utils.getCenter(e).y, + true + ); + end = _camera.cameraPosition( + (x0 + x1) / 2 - sigma.utils.getCenter(e).x, + (y0 + y1) / 2 - sigma.utils.getCenter(e).y, + true + ); + + dAngle = Math.atan2(y1 - y0, x1 - x0) - _startTouchAngle; + dRatio = Math.sqrt( + (y1 - y0) * (y1 - y0) + (x1 - x0) * (x1 - x0) + ) / _startTouchDistance; + + // Translation: + x0 = start.x; + y0 = start.y; + + // Homothetic transformation: + newStageRatio = _startCameraRatio / dRatio; + x0 = x0 * dRatio; + y0 = y0 * dRatio; + + // Rotation: + newStageAngle = _startCameraAngle - dAngle; + cos = Math.cos(-dAngle); + sin = Math.sin(-dAngle); + x1 = x0 * cos + y0 * sin; + y1 = y0 * cos - x0 * sin; + x0 = x1; + y0 = y1; + + // Finalize: + newStageX = x0 - end.x + _startCameraX; + newStageY = y0 - end.y + _startCameraY; + + if ( + newStageRatio !== _camera.ratio || + newStageAngle !== _camera.angle || + newStageX !== _camera.x || + newStageY !== _camera.y + ) { + _lastCameraX = _camera.x; + _lastCameraY = _camera.y; + _lastCameraAngle = _camera.angle; + _lastCameraRatio = _camera.ratio; + + _camera.goTo({ + x: newStageX, + y: newStageY, + angle: newStageAngle, + ratio: newStageRatio + }); + + _self.dispatchEvent('drag'); + } + + break; + } + + e.preventDefault(); + return false; + } + } + + /** + * The handler listening to the double tap custom event. It will + * basically zoom into the graph. + * + * @param {event} e A touch event. + */ + function _doubleTapHandler(e) { + var pos, + ratio, + animation; + + if (e.touches && e.touches.length === 1 && _settings('touchEnabled')) { + _doubleTap = true; + + ratio = 1 / _settings('doubleClickZoomingRatio'); + + pos = position(e.touches[0]); + _self.dispatchEvent('doubleclick', + sigma.utils.mouseCoords(e, pos.x, pos.y)); + + if (_settings('doubleClickEnabled')) { + pos = _camera.cameraPosition( + pos.x - sigma.utils.getCenter(e).x, + pos.y - sigma.utils.getCenter(e).y, + true + ); + + animation = { + duration: _settings('doubleClickZoomDuration'), + onComplete: function() { + _doubleTap = false; + } + }; + + sigma.utils.zoomTo(_camera, pos.x, pos.y, ratio, animation); + } + + if (e.preventDefault) + e.preventDefault(); + else + e.returnValue = false; + + e.stopPropagation(); + return false; + } + } + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/classes/sigma.classes.camera.js b/sigma.js-1.2.0/src/classes/sigma.classes.camera.js new file mode 100644 index 0000000..dcc4c52 --- /dev/null +++ b/sigma.js-1.2.0/src/classes/sigma.classes.camera.js @@ -0,0 +1,240 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + sigma.utils.pkg('sigma.classes'); + + /** + * The camera constructor. It just initializes its attributes and methods. + * + * @param {string} id The id. + * @param {sigma.classes.graph} graph The graph. + * @param {configurable} settings The settings function. + * @param {?object} options Eventually some overriding options. + * @return {camera} Returns the fresh new camera instance. + */ + sigma.classes.camera = function(id, graph, settings, options) { + sigma.classes.dispatcher.extend(this); + + Object.defineProperty(this, 'graph', { + value: graph + }); + Object.defineProperty(this, 'id', { + value: id + }); + Object.defineProperty(this, 'readPrefix', { + value: 'read_cam' + id + ':' + }); + Object.defineProperty(this, 'prefix', { + value: 'cam' + id + ':' + }); + + this.x = 0; + this.y = 0; + this.ratio = 1; + this.angle = 0; + this.isAnimated = false; + this.settings = (typeof options === 'object' && options) ? + settings.embedObject(options) : + settings; + }; + + /** + * Updates the camera position. + * + * @param {object} coordinates The new coordinates object. + * @return {camera} Returns the camera. + */ + sigma.classes.camera.prototype.goTo = function(coordinates) { + if (!this.settings('enableCamera')) + return this; + + var i, + l, + c = coordinates || {}, + keys = ['x', 'y', 'ratio', 'angle']; + + for (i = 0, l = keys.length; i < l; i++) + if (c[keys[i]] !== undefined) { + if (typeof c[keys[i]] === 'number' && !isNaN(c[keys[i]])) + this[keys[i]] = c[keys[i]]; + else + throw 'Value for "' + keys[i] + '" is not a number.'; + } + + this.dispatchEvent('coordinatesUpdated'); + return this; + }; + + /** + * This method takes a graph and computes for each node and edges its + * coordinates relatively to the center of the camera. Basically, it will + * compute the coordinates that will be used by the graphic renderers. + * + * Since it should be possible to use different cameras and different + * renderers, it is possible to specify a prefix to put before the new + * coordinates (to get something like "node.camera1_x") + * + * @param {?string} read The prefix of the coordinates to read. + * @param {?string} write The prefix of the coordinates to write. + * @param {?object} options Eventually an object of options. Those can be: + * - A restricted nodes array. + * - A restricted edges array. + * - A width. + * - A height. + * @return {camera} Returns the camera. + */ + sigma.classes.camera.prototype.applyView = function(read, write, options) { + options = options || {}; + write = write !== undefined ? write : this.prefix; + read = read !== undefined ? read : this.readPrefix; + + var nodes = options.nodes || this.graph.nodes(), + edges = options.edges || this.graph.edges(); + + var i, + l, + node, + relCos = Math.cos(this.angle) / this.ratio, + relSin = Math.sin(this.angle) / this.ratio, + nodeRatio = Math.pow(this.ratio, this.settings('nodesPowRatio')), + edgeRatio = Math.pow(this.ratio, this.settings('edgesPowRatio')), + xOffset = (options.width || 0) / 2 - this.x * relCos - this.y * relSin, + yOffset = (options.height || 0) / 2 - this.y * relCos + this.x * relSin; + + for (i = 0, l = nodes.length; i < l; i++) { + node = nodes[i]; + node[write + 'x'] = + (node[read + 'x'] || 0) * relCos + + (node[read + 'y'] || 0) * relSin + + xOffset; + node[write + 'y'] = + (node[read + 'y'] || 0) * relCos - + (node[read + 'x'] || 0) * relSin + + yOffset; + node[write + 'size'] = + (node[read + 'size'] || 0) / + nodeRatio; + } + + for (i = 0, l = edges.length; i < l; i++) { + edges[i][write + 'size'] = + (edges[i][read + 'size'] || 0) / + edgeRatio; + } + + return this; + }; + + /** + * This function converts the coordinates of a point from the frame of the + * camera to the frame of the graph. + * + * @param {number} x The X coordinate of the point in the frame of the + * camera. + * @param {number} y The Y coordinate of the point in the frame of the + * camera. + * @return {object} The point coordinates in the frame of the graph. + */ + sigma.classes.camera.prototype.graphPosition = function(x, y, vector) { + var X = 0, + Y = 0, + cos = Math.cos(this.angle), + sin = Math.sin(this.angle); + + // Revert the origin differential vector: + if (!vector) { + X = - (this.x * cos + this.y * sin) / this.ratio; + Y = - (this.y * cos - this.x * sin) / this.ratio; + } + + return { + x: (x * cos + y * sin) / this.ratio + X, + y: (y * cos - x * sin) / this.ratio + Y + }; + }; + + /** + * This function converts the coordinates of a point from the frame of the + * graph to the frame of the camera. + * + * @param {number} x The X coordinate of the point in the frame of the + * graph. + * @param {number} y The Y coordinate of the point in the frame of the + * graph. + * @return {object} The point coordinates in the frame of the camera. + */ + sigma.classes.camera.prototype.cameraPosition = function(x, y, vector) { + var X = 0, + Y = 0, + cos = Math.cos(this.angle), + sin = Math.sin(this.angle); + + // Revert the origin differential vector: + if (!vector) { + X = - (this.x * cos + this.y * sin) / this.ratio; + Y = - (this.y * cos - this.x * sin) / this.ratio; + } + + return { + x: ((x - X) * cos - (y - Y) * sin) * this.ratio, + y: ((y - Y) * cos + (x - X) * sin) * this.ratio + }; + }; + + /** + * This method returns the transformation matrix of the camera. This is + * especially useful to apply the camera view directly in shaders, in case of + * WebGL rendering. + * + * @return {array} The transformation matrix. + */ + sigma.classes.camera.prototype.getMatrix = function() { + var scale = sigma.utils.matrices.scale(1 / this.ratio), + rotation = sigma.utils.matrices.rotation(this.angle), + translation = sigma.utils.matrices.translation(-this.x, -this.y), + matrix = sigma.utils.matrices.multiply( + translation, + sigma.utils.matrices.multiply( + rotation, + scale + ) + ); + + return matrix; + }; + + /** + * Taking a width and a height as parameters, this method returns the + * coordinates of the rectangle representing the camera on screen, in the + * graph's referentiel. + * + * To keep displaying labels of nodes going out of the screen, the method + * keeps a margin around the screen in the returned rectangle. + * + * @param {number} width The width of the screen. + * @param {number} height The height of the screen. + * @return {object} The rectangle as x1, y1, x2 and y2, representing + * two opposite points. + */ + sigma.classes.camera.prototype.getRectangle = function(width, height) { + var widthVect = this.cameraPosition(width, 0, true), + heightVect = this.cameraPosition(0, height, true), + centerVect = this.cameraPosition(width / 2, height / 2, true), + marginX = this.cameraPosition(width / 4, 0, true).x, + marginY = this.cameraPosition(0, height / 4, true).y; + + return { + x1: this.x - centerVect.x - marginX, + y1: this.y - centerVect.y - marginY, + x2: this.x - centerVect.x + marginX + widthVect.x, + y2: this.y - centerVect.y - marginY + widthVect.y, + height: Math.sqrt( + Math.pow(heightVect.x, 2) + + Math.pow(heightVect.y + 2 * marginY, 2) + ) + }; + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/classes/sigma.classes.configurable.js b/sigma.js-1.2.0/src/classes/sigma.classes.configurable.js new file mode 100644 index 0000000..09ce1f7 --- /dev/null +++ b/sigma.js-1.2.0/src/classes/sigma.classes.configurable.js @@ -0,0 +1,116 @@ +;(function() { + 'use strict'; + + /** + * This utils aims to facilitate the manipulation of each instance setting. + * Using a function instead of an object brings two main advantages: First, + * it will be easier in the future to catch settings updates through a + * function than an object. Second, giving it a full object will "merge" it + * to the settings object properly, keeping us to have to always add a loop. + * + * @return {configurable} The "settings" function. + */ + var configurable = function() { + var i, + l, + data = {}, + datas = Array.prototype.slice.call(arguments, 0); + + /** + * The method to use to set or get any property of this instance. + * + * @param {string|object} a1 If it is a string and if a2 is undefined, + * then it will return the corresponding + * property. If it is a string and if a2 is + * set, then it will set a2 as the property + * corresponding to a1, and return this. If + * it is an object, then each pair string + + * object(or any other type) will be set as a + * property. + * @param {*?} a2 The new property corresponding to a1 if a1 + * is a string. + * @return {*|configurable} Returns itself or the corresponding + * property. + * + * Polymorphism: + * ************* + * Here are some basic use examples: + * + * > settings = new configurable(); + * > settings('mySetting', 42); + * > settings('mySetting'); // Logs: 42 + * > settings('mySetting', 123); + * > settings('mySetting'); // Logs: 123 + * > settings({mySetting: 456}); + * > settings('mySetting'); // Logs: 456 + * + * Also, it is possible to use the function as a fallback: + * > settings({mySetting: 'abc'}, 'mySetting'); // Logs: 'abc' + * > settings({hisSetting: 'abc'}, 'mySetting'); // Logs: 456 + */ + var settings = function(a1, a2) { + var o, + i, + l, + k; + + if (arguments.length === 1 && typeof a1 === 'string') { + if (data[a1] !== undefined) + return data[a1]; + for (i = 0, l = datas.length; i < l; i++) + if (datas[i][a1] !== undefined) + return datas[i][a1]; + return undefined; + } else if (typeof a1 === 'object' && typeof a2 === 'string') { + return (a1 || {})[a2] !== undefined ? a1[a2] : settings(a2); + } else { + o = (typeof a1 === 'object' && a2 === undefined) ? a1 : {}; + + if (typeof a1 === 'string') + o[a1] = a2; + + for (i = 0, k = Object.keys(o), l = k.length; i < l; i++) + data[k[i]] = o[k[i]]; + + return this; + } + }; + + /** + * This method returns a new configurable function, with new objects + * + * @param {object*} Any number of objects to search in. + * @return {function} Returns the function. Check its documentation to know + * more about how it works. + */ + settings.embedObjects = function() { + var args = datas.concat( + data + ).concat( + Array.prototype.splice.call(arguments, 0) + ); + + return configurable.apply({}, args); + }; + + // Initialize + for (i = 0, l = arguments.length; i < l; i++) + settings(arguments[i]); + + return settings; + }; + + /** + * EXPORT: + * ******* + */ + if (typeof this.sigma !== 'undefined') { + this.sigma.classes = this.sigma.classes || {}; + this.sigma.classes.configurable = configurable; + } else if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = configurable; + exports.configurable = configurable; + } else + this.configurable = configurable; +}).call(this); diff --git a/sigma.js-1.2.0/src/classes/sigma.classes.dispatcher.js b/sigma.js-1.2.0/src/classes/sigma.classes.dispatcher.js new file mode 100644 index 0000000..0ce7dca --- /dev/null +++ b/sigma.js-1.2.0/src/classes/sigma.classes.dispatcher.js @@ -0,0 +1,204 @@ +;(function() { + 'use strict'; + + /** + * Dispatcher constructor. + * + * @return {dispatcher} The new dispatcher instance. + */ + var dispatcher = function() { + Object.defineProperty(this, '_handlers', { + value: {} + }); + }; + + + + + /** + * Will execute the handler everytime that the indicated event (or the + * indicated events) will be triggered. + * + * @param {string} events The name of the event (or the events + * separated by spaces). + * @param {function(Object)} handler The handler to bind. + * @return {dispatcher} Returns the instance itself. + */ + dispatcher.prototype.bind = function(events, handler) { + var i, + l, + event, + eArray; + + if ( + arguments.length === 1 && + typeof arguments[0] === 'object' + ) + for (events in arguments[0]) + this.bind(events, arguments[0][events]); + else if ( + arguments.length === 2 && + typeof arguments[1] === 'function' + ) { + eArray = typeof events === 'string' ? events.split(' ') : events; + + for (i = 0, l = eArray.length; i !== l; i += 1) { + event = eArray[i]; + + // Check that event is not '': + if (!event) + continue; + + if (!this._handlers[event]) + this._handlers[event] = []; + + // Using an object instead of directly the handler will make possible + // later to add flags + this._handlers[event].push({ + handler: handler + }); + } + } else + throw 'bind: Wrong arguments.'; + + return this; + }; + + /** + * Removes the handler from a specified event (or specified events). + * + * @param {?string} events The name of the event (or the events + * separated by spaces). If undefined, + * then all handlers are removed. + * @param {?function(object)} handler The handler to unbind. If undefined, + * each handler bound to the event or the + * events will be removed. + * @return {dispatcher} Returns the instance itself. + */ + dispatcher.prototype.unbind = function(events, handler) { + var i, + n, + j, + m, + k, + a, + event, + eArray = typeof events === 'string' ? events.split(' ') : events; + + if (!arguments.length) { + for (k in this._handlers) + delete this._handlers[k]; + return this; + } + + if (handler) { + for (i = 0, n = eArray.length; i !== n; i += 1) { + event = eArray[i]; + if (this._handlers[event]) { + a = []; + for (j = 0, m = this._handlers[event].length; j !== m; j += 1) + if (this._handlers[event][j].handler !== handler) + a.push(this._handlers[event][j]); + + this._handlers[event] = a; + } + + if (this._handlers[event] && this._handlers[event].length === 0) + delete this._handlers[event]; + } + } else + for (i = 0, n = eArray.length; i !== n; i += 1) + delete this._handlers[eArray[i]]; + + return this; + }; + + /** + * Executes each handler bound to the event + * + * @param {string} events The name of the event (or the events separated + * by spaces). + * @param {?object} data The content of the event (optional). + * @return {dispatcher} Returns the instance itself. + */ + dispatcher.prototype.dispatchEvent = function(events, data) { + var i, + n, + j, + m, + a, + event, + eventName, + self = this, + eArray = typeof events === 'string' ? events.split(' ') : events; + + data = data === undefined ? {} : data; + + for (i = 0, n = eArray.length; i !== n; i += 1) { + eventName = eArray[i]; + + if (this._handlers[eventName]) { + event = self.getEvent(eventName, data); + a = []; + + for (j = 0, m = this._handlers[eventName].length; j !== m; j += 1) { + this._handlers[eventName][j].handler(event); + if (!this._handlers[eventName][j].one) + a.push(this._handlers[eventName][j]); + } + + this._handlers[eventName] = a; + } + } + + return this; + }; + + /** + * Return an event object. + * + * @param {string} events The name of the event. + * @param {?object} data The content of the event (optional). + * @return {object} Returns the instance itself. + */ + dispatcher.prototype.getEvent = function(event, data) { + return { + type: event, + data: data || {}, + target: this + }; + }; + + /** + * A useful function to deal with inheritance. It will make the target + * inherit the prototype of the class dispatcher as well as its constructor. + * + * @param {object} target The target. + */ + dispatcher.extend = function(target, args) { + var k; + + for (k in dispatcher.prototype) + if (dispatcher.prototype.hasOwnProperty(k)) + target[k] = dispatcher.prototype[k]; + + dispatcher.apply(target, args); + }; + + + + + /** + * EXPORT: + * ******* + */ + if (typeof this.sigma !== 'undefined') { + this.sigma.classes = this.sigma.classes || {}; + this.sigma.classes.dispatcher = dispatcher; + } else if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = dispatcher; + exports.dispatcher = dispatcher; + } else + this.dispatcher = dispatcher; +}).call(this); diff --git a/sigma.js-1.2.0/src/classes/sigma.classes.edgequad.js b/sigma.js-1.2.0/src/classes/sigma.classes.edgequad.js new file mode 100644 index 0000000..fbc5b7f --- /dev/null +++ b/sigma.js-1.2.0/src/classes/sigma.classes.edgequad.js @@ -0,0 +1,832 @@ +;(function(undefined) { + 'use strict'; + + /** + * Sigma Quadtree Module for edges + * =============================== + * + * Author: Sébastien Heymann, + * from the quad of Guillaume Plique (Yomguithereal) + * Version: 0.2 + */ + + + + /** + * Quad Geometric Operations + * ------------------------- + * + * A useful batch of geometric operations used by the quadtree. + */ + + var _geom = { + + /** + * Transforms a graph node with x, y and size into an + * axis-aligned square. + * + * @param {object} A graph node with at least a point (x, y) and a size. + * @return {object} A square: two points (x1, y1), (x2, y2) and height. + */ + pointToSquare: function(n) { + return { + x1: n.x - n.size, + y1: n.y - n.size, + x2: n.x + n.size, + y2: n.y - n.size, + height: n.size * 2 + }; + }, + + /** + * Transforms a graph edge with x1, y1, x2, y2 and size into an + * axis-aligned square. + * + * @param {object} A graph edge with at least two points + * (x1, y1), (x2, y2) and a size. + * @return {object} A square: two points (x1, y1), (x2, y2) and height. + */ + lineToSquare: function(e) { + if (e.y1 < e.y2) { + // (e.x1, e.y1) on top + if (e.x1 < e.x2) { + // (e.x1, e.y1) on left + return { + x1: e.x1 - e.size, + y1: e.y1 - e.size, + x2: e.x2 + e.size, + y2: e.y1 - e.size, + height: e.y2 - e.y1 + e.size * 2 + }; + } + // (e.x1, e.y1) on right + return { + x1: e.x2 - e.size, + y1: e.y1 - e.size, + x2: e.x1 + e.size, + y2: e.y1 - e.size, + height: e.y2 - e.y1 + e.size * 2 + }; + } + + // (e.x2, e.y2) on top + if (e.x1 < e.x2) { + // (e.x1, e.y1) on left + return { + x1: e.x1 - e.size, + y1: e.y2 - e.size, + x2: e.x2 + e.size, + y2: e.y2 - e.size, + height: e.y1 - e.y2 + e.size * 2 + }; + } + // (e.x2, e.y2) on right + return { + x1: e.x2 - e.size, + y1: e.y2 - e.size, + x2: e.x1 + e.size, + y2: e.y2 - e.size, + height: e.y1 - e.y2 + e.size * 2 + }; + }, + + /** + * Transforms a graph edge of type 'curve' with x1, y1, x2, y2, + * control point and size into an axis-aligned square. + * + * @param {object} e A graph edge with at least two points + * (x1, y1), (x2, y2) and a size. + * @param {object} cp A control point (x,y). + * @return {object} A square: two points (x1, y1), (x2, y2) and height. + */ + quadraticCurveToSquare: function(e, cp) { + var pt = sigma.utils.getPointOnQuadraticCurve( + 0.5, + e.x1, + e.y1, + e.x2, + e.y2, + cp.x, + cp.y + ); + + // Bounding box of the two points and the point at the middle of the + // curve: + var minX = Math.min(e.x1, e.x2, pt.x), + maxX = Math.max(e.x1, e.x2, pt.x), + minY = Math.min(e.y1, e.y2, pt.y), + maxY = Math.max(e.y1, e.y2, pt.y); + + return { + x1: minX - e.size, + y1: minY - e.size, + x2: maxX + e.size, + y2: minY - e.size, + height: maxY - minY + e.size * 2 + }; + }, + + /** + * Transforms a graph self loop into an axis-aligned square. + * + * @param {object} n A graph node with a point (x, y) and a size. + * @return {object} A square: two points (x1, y1), (x2, y2) and height. + */ + selfLoopToSquare: function(n) { + // Fitting to the curve is too costly, we compute a larger bounding box + // using the control points: + var cp = sigma.utils.getSelfLoopControlPoints(n.x, n.y, n.size); + + // Bounding box of the point and the two control points: + var minX = Math.min(n.x, cp.x1, cp.x2), + maxX = Math.max(n.x, cp.x1, cp.x2), + minY = Math.min(n.y, cp.y1, cp.y2), + maxY = Math.max(n.y, cp.y1, cp.y2); + + return { + x1: minX - n.size, + y1: minY - n.size, + x2: maxX + n.size, + y2: minY - n.size, + height: maxY - minY + n.size * 2 + }; + }, + + /** + * Checks whether a rectangle is axis-aligned. + * + * @param {object} A rectangle defined by two points + * (x1, y1) and (x2, y2). + * @return {boolean} True if the rectangle is axis-aligned. + */ + isAxisAligned: function(r) { + return r.x1 === r.x2 || r.y1 === r.y2; + }, + + /** + * Compute top points of an axis-aligned rectangle. This is useful in + * cases when the rectangle has been rotated (left, right or bottom up) and + * later operations need to know the top points. + * + * @param {object} An axis-aligned rectangle defined by two points + * (x1, y1), (x2, y2) and height. + * @return {object} A rectangle: two points (x1, y1), (x2, y2) and height. + */ + axisAlignedTopPoints: function(r) { + + // Basic + if (r.y1 === r.y2 && r.x1 < r.x2) + return r; + + // Rotated to right + if (r.x1 === r.x2 && r.y2 > r.y1) + return { + x1: r.x1 - r.height, y1: r.y1, + x2: r.x1, y2: r.y1, + height: r.height + }; + + // Rotated to left + if (r.x1 === r.x2 && r.y2 < r.y1) + return { + x1: r.x1, y1: r.y2, + x2: r.x2 + r.height, y2: r.y2, + height: r.height + }; + + // Bottom's up + return { + x1: r.x2, y1: r.y1 - r.height, + x2: r.x1, y2: r.y1 - r.height, + height: r.height + }; + }, + + /** + * Get coordinates of a rectangle's lower left corner from its top points. + * + * @param {object} A rectangle defined by two points (x1, y1) and (x2, y2). + * @return {object} Coordinates of the corner (x, y). + */ + lowerLeftCoor: function(r) { + var width = ( + Math.sqrt( + Math.pow(r.x2 - r.x1, 2) + + Math.pow(r.y2 - r.y1, 2) + ) + ); + + return { + x: r.x1 - (r.y2 - r.y1) * r.height / width, + y: r.y1 + (r.x2 - r.x1) * r.height / width + }; + }, + + /** + * Get coordinates of a rectangle's lower right corner from its top points + * and its lower left corner. + * + * @param {object} A rectangle defined by two points (x1, y1) and (x2, y2). + * @param {object} A corner's coordinates (x, y). + * @return {object} Coordinates of the corner (x, y). + */ + lowerRightCoor: function(r, llc) { + return { + x: llc.x - r.x1 + r.x2, + y: llc.y - r.y1 + r.y2 + }; + }, + + /** + * Get the coordinates of all the corners of a rectangle from its top point. + * + * @param {object} A rectangle defined by two points (x1, y1) and (x2, y2). + * @return {array} An array of the four corners' coordinates (x, y). + */ + rectangleCorners: function(r) { + var llc = this.lowerLeftCoor(r), + lrc = this.lowerRightCoor(r, llc); + + return [ + {x: r.x1, y: r.y1}, + {x: r.x2, y: r.y2}, + {x: llc.x, y: llc.y}, + {x: lrc.x, y: lrc.y} + ]; + }, + + /** + * Split a square defined by its boundaries into four. + * + * @param {object} Boundaries of the square (x, y, width, height). + * @return {array} An array containing the four new squares, themselves + * defined by an array of their four corners (x, y). + */ + splitSquare: function(b) { + return [ + [ + {x: b.x, y: b.y}, + {x: b.x + b.width / 2, y: b.y}, + {x: b.x, y: b.y + b.height / 2}, + {x: b.x + b.width / 2, y: b.y + b.height / 2} + ], + [ + {x: b.x + b.width / 2, y: b.y}, + {x: b.x + b.width, y: b.y}, + {x: b.x + b.width / 2, y: b.y + b.height / 2}, + {x: b.x + b.width, y: b.y + b.height / 2} + ], + [ + {x: b.x, y: b.y + b.height / 2}, + {x: b.x + b.width / 2, y: b.y + b.height / 2}, + {x: b.x, y: b.y + b.height}, + {x: b.x + b.width / 2, y: b.y + b.height} + ], + [ + {x: b.x + b.width / 2, y: b.y + b.height / 2}, + {x: b.x + b.width, y: b.y + b.height / 2}, + {x: b.x + b.width / 2, y: b.y + b.height}, + {x: b.x + b.width, y: b.y + b.height} + ] + ]; + }, + + /** + * Compute the four axis between corners of rectangle A and corners of + * rectangle B. This is needed later to check an eventual collision. + * + * @param {array} An array of rectangle A's four corners (x, y). + * @param {array} An array of rectangle B's four corners (x, y). + * @return {array} An array of four axis defined by their coordinates (x,y). + */ + axis: function(c1, c2) { + return [ + {x: c1[1].x - c1[0].x, y: c1[1].y - c1[0].y}, + {x: c1[1].x - c1[3].x, y: c1[1].y - c1[3].y}, + {x: c2[0].x - c2[2].x, y: c2[0].y - c2[2].y}, + {x: c2[0].x - c2[1].x, y: c2[0].y - c2[1].y} + ]; + }, + + /** + * Project a rectangle's corner on an axis. + * + * @param {object} Coordinates of a corner (x, y). + * @param {object} Coordinates of an axis (x, y). + * @return {object} The projection defined by coordinates (x, y). + */ + projection: function(c, a) { + var l = ( + (c.x * a.x + c.y * a.y) / + (Math.pow(a.x, 2) + Math.pow(a.y, 2)) + ); + + return { + x: l * a.x, + y: l * a.y + }; + }, + + /** + * Check whether two rectangles collide on one particular axis. + * + * @param {object} An axis' coordinates (x, y). + * @param {array} Rectangle A's corners. + * @param {array} Rectangle B's corners. + * @return {boolean} True if the rectangles collide on the axis. + */ + axisCollision: function(a, c1, c2) { + var sc1 = [], + sc2 = []; + + for (var ci = 0; ci < 4; ci++) { + var p1 = this.projection(c1[ci], a), + p2 = this.projection(c2[ci], a); + + sc1.push(p1.x * a.x + p1.y * a.y); + sc2.push(p2.x * a.x + p2.y * a.y); + } + + var maxc1 = Math.max.apply(Math, sc1), + maxc2 = Math.max.apply(Math, sc2), + minc1 = Math.min.apply(Math, sc1), + minc2 = Math.min.apply(Math, sc2); + + return (minc2 <= maxc1 && maxc2 >= minc1); + }, + + /** + * Check whether two rectangles collide on each one of their four axis. If + * all axis collide, then the two rectangles do collide on the plane. + * + * @param {array} Rectangle A's corners. + * @param {array} Rectangle B's corners. + * @return {boolean} True if the rectangles collide. + */ + collision: function(c1, c2) { + var axis = this.axis(c1, c2), + col = true; + + for (var i = 0; i < 4; i++) + col = col && this.axisCollision(axis[i], c1, c2); + + return col; + } + }; + + + /** + * Quad Functions + * ------------ + * + * The Quadtree functions themselves. + * For each of those functions, we consider that in a splitted quad, the + * index of each node is the following: + * 0: top left + * 1: top right + * 2: bottom left + * 3: bottom right + * + * Moreover, the hereafter quad's philosophy is to consider that if an element + * collides with more than one nodes, this element belongs to each of the + * nodes it collides with where other would let it lie on a higher node. + */ + + /** + * Get the index of the node containing the point in the quad + * + * @param {object} point A point defined by coordinates (x, y). + * @param {object} quadBounds Boundaries of the quad (x, y, width, heigth). + * @return {integer} The index of the node containing the point. + */ + function _quadIndex(point, quadBounds) { + var xmp = quadBounds.x + quadBounds.width / 2, + ymp = quadBounds.y + quadBounds.height / 2, + top = (point.y < ymp), + left = (point.x < xmp); + + if (top) { + if (left) + return 0; + else + return 1; + } + else { + if (left) + return 2; + else + return 3; + } + } + + /** + * Get a list of indexes of nodes containing an axis-aligned rectangle + * + * @param {object} rectangle A rectangle defined by two points (x1, y1), + * (x2, y2) and height. + * @param {array} quadCorners An array of the quad nodes' corners. + * @return {array} An array of indexes containing one to + * four integers. + */ + function _quadIndexes(rectangle, quadCorners) { + var indexes = []; + + // Iterating through quads + for (var i = 0; i < 4; i++) + if ((rectangle.x2 >= quadCorners[i][0].x) && + (rectangle.x1 <= quadCorners[i][1].x) && + (rectangle.y1 + rectangle.height >= quadCorners[i][0].y) && + (rectangle.y1 <= quadCorners[i][2].y)) + indexes.push(i); + + return indexes; + } + + /** + * Get a list of indexes of nodes containing a non-axis-aligned rectangle + * + * @param {array} corners An array containing each corner of the + * rectangle defined by its coordinates (x, y). + * @param {array} quadCorners An array of the quad nodes' corners. + * @return {array} An array of indexes containing one to + * four integers. + */ + function _quadCollision(corners, quadCorners) { + var indexes = []; + + // Iterating through quads + for (var i = 0; i < 4; i++) + if (_geom.collision(corners, quadCorners[i])) + indexes.push(i); + + return indexes; + } + + /** + * Subdivide a quad by creating a node at a precise index. The function does + * not generate all four nodes not to potentially create unused nodes. + * + * @param {integer} index The index of the node to create. + * @param {object} quad The quad object to subdivide. + * @return {object} A new quad representing the node created. + */ + function _quadSubdivide(index, quad) { + var next = quad.level + 1, + subw = Math.round(quad.bounds.width / 2), + subh = Math.round(quad.bounds.height / 2), + qx = Math.round(quad.bounds.x), + qy = Math.round(quad.bounds.y), + x, + y; + + switch (index) { + case 0: + x = qx; + y = qy; + break; + case 1: + x = qx + subw; + y = qy; + break; + case 2: + x = qx; + y = qy + subh; + break; + case 3: + x = qx + subw; + y = qy + subh; + break; + } + + return _quadTree( + {x: x, y: y, width: subw, height: subh}, + next, + quad.maxElements, + quad.maxLevel + ); + } + + /** + * Recursively insert an element into the quadtree. Only points + * with size, i.e. axis-aligned squares, may be inserted with this + * method. + * + * @param {object} el The element to insert in the quadtree. + * @param {object} sizedPoint A sized point defined by two top points + * (x1, y1), (x2, y2) and height. + * @param {object} quad The quad in which to insert the element. + * @return {undefined} The function does not return anything. + */ + function _quadInsert(el, sizedPoint, quad) { + if (quad.level < quad.maxLevel) { + + // Searching appropriate quads + var indexes = _quadIndexes(sizedPoint, quad.corners); + + // Iterating + for (var i = 0, l = indexes.length; i < l; i++) { + + // Subdividing if necessary + if (quad.nodes[indexes[i]] === undefined) + quad.nodes[indexes[i]] = _quadSubdivide(indexes[i], quad); + + // Recursion + _quadInsert(el, sizedPoint, quad.nodes[indexes[i]]); + } + } + else { + + // Pushing the element in a leaf node + quad.elements.push(el); + } + } + + /** + * Recursively retrieve every elements held by the node containing the + * searched point. + * + * @param {object} point The searched point (x, y). + * @param {object} quad The searched quad. + * @return {array} An array of elements contained in the relevant + * node. + */ + function _quadRetrievePoint(point, quad) { + if (quad.level < quad.maxLevel) { + var index = _quadIndex(point, quad.bounds); + + // If node does not exist we return an empty list + if (quad.nodes[index] !== undefined) { + return _quadRetrievePoint(point, quad.nodes[index]); + } + else { + return []; + } + } + else { + return quad.elements; + } + } + + /** + * Recursively retrieve every elements contained within an rectangular area + * that may or may not be axis-aligned. + * + * @param {object|array} rectData The searched area defined either by + * an array of four corners (x, y) in + * the case of a non-axis-aligned + * rectangle or an object with two top + * points (x1, y1), (x2, y2) and height. + * @param {object} quad The searched quad. + * @param {function} collisionFunc The collision function used to search + * for node indexes. + * @param {array?} els The retrieved elements. + * @return {array} An array of elements contained in the + * area. + */ + function _quadRetrieveArea(rectData, quad, collisionFunc, els) { + els = els || {}; + + if (quad.level < quad.maxLevel) { + var indexes = collisionFunc(rectData, quad.corners); + + for (var i = 0, l = indexes.length; i < l; i++) + if (quad.nodes[indexes[i]] !== undefined) + _quadRetrieveArea( + rectData, + quad.nodes[indexes[i]], + collisionFunc, + els + ); + } else + for (var j = 0, m = quad.elements.length; j < m; j++) + if (els[quad.elements[j].id] === undefined) + els[quad.elements[j].id] = quad.elements[j]; + + return els; + } + + /** + * Creates the quadtree object itself. + * + * @param {object} bounds The boundaries of the quad defined by an + * origin (x, y), width and heigth. + * @param {integer} level The level of the quad in the tree. + * @param {integer} maxElements The max number of element in a leaf node. + * @param {integer} maxLevel The max recursion level of the tree. + * @return {object} The quadtree object. + */ + function _quadTree(bounds, level, maxElements, maxLevel) { + return { + level: level || 0, + bounds: bounds, + corners: _geom.splitSquare(bounds), + maxElements: maxElements || 40, + maxLevel: maxLevel || 8, + elements: [], + nodes: [] + }; + } + + + /** + * Sigma Quad Constructor + * ---------------------- + * + * The edgequad API as exposed to sigma. + */ + + /** + * The edgequad core that will become the sigma interface with the quadtree. + * + * property {object} _tree Property holding the quadtree object. + * property {object} _geom Exposition of the _geom namespace for testing. + * property {object} _cache Cache for the area method. + * property {boolean} _enabled Can index and retreive elements. + */ + var edgequad = function() { + this._geom = _geom; + this._tree = null; + this._cache = { + query: false, + result: false + }; + this._enabled = true; + }; + + /** + * Index a graph by inserting its edges into the quadtree. + * + * @param {object} graph A graph instance. + * @param {object} params An object of parameters with at least the quad + * bounds. + * @return {object} The quadtree object. + * + * Parameters: + * ---------- + * bounds: {object} boundaries of the quad defined by its origin (x, y) + * width and heigth. + * prefix: {string?} a prefix for edge geometric attributes. + * maxElements: {integer?} the max number of elements in a leaf node. + * maxLevel: {integer?} the max recursion level of the tree. + */ + edgequad.prototype.index = function(graph, params) { + if (!this._enabled) + return this._tree; + + // Enforcing presence of boundaries + if (!params.bounds) + throw 'sigma.classes.edgequad.index: bounds information not given.'; + + // Prefix + var prefix = params.prefix || '', + cp, + source, + target, + n, + e; + + // Building the tree + this._tree = _quadTree( + params.bounds, + 0, + params.maxElements, + params.maxLevel + ); + + var edges = graph.edges(); + + // Inserting graph edges into the tree + for (var i = 0, l = edges.length; i < l; i++) { + source = graph.nodes(edges[i].source); + target = graph.nodes(edges[i].target); + e = { + x1: source[prefix + 'x'], + y1: source[prefix + 'y'], + x2: target[prefix + 'x'], + y2: target[prefix + 'y'], + size: edges[i][prefix + 'size'] || 0 + }; + + // Inserting edge + if (edges[i].type === 'curve' || edges[i].type === 'curvedArrow') { + if (source.id === target.id) { + n = { + x: source[prefix + 'x'], + y: source[prefix + 'y'], + size: source[prefix + 'size'] || 0 + }; + _quadInsert( + edges[i], + _geom.selfLoopToSquare(n), + this._tree); + } + else { + cp = sigma.utils.getQuadraticControlPoint(e.x1, e.y1, e.x2, e.y2); + _quadInsert( + edges[i], + _geom.quadraticCurveToSquare(e, cp), + this._tree); + } + } + else { + _quadInsert( + edges[i], + _geom.lineToSquare(e), + this._tree); + } + } + + // Reset cache: + this._cache = { + query: false, + result: false + }; + + // remove? + return this._tree; + }; + + /** + * Retrieve every graph edges held by the quadtree node containing the + * searched point. + * + * @param {number} x of the point. + * @param {number} y of the point. + * @return {array} An array of edges retrieved. + */ + edgequad.prototype.point = function(x, y) { + if (!this._enabled) + return []; + + return this._tree ? + _quadRetrievePoint({x: x, y: y}, this._tree) || [] : + []; + }; + + /** + * Retrieve every graph edges within a rectangular area. The methods keep the + * last area queried in cache for optimization reason and will act differently + * for the same reason if the area is axis-aligned or not. + * + * @param {object} A rectangle defined by two top points (x1, y1), (x2, y2) + * and height. + * @return {array} An array of edges retrieved. + */ + edgequad.prototype.area = function(rect) { + if (!this._enabled) + return []; + + var serialized = JSON.stringify(rect), + collisionFunc, + rectData; + + // Returning cache? + if (this._cache.query === serialized) + return this._cache.result; + + // Axis aligned ? + if (_geom.isAxisAligned(rect)) { + collisionFunc = _quadIndexes; + rectData = _geom.axisAlignedTopPoints(rect); + } + else { + collisionFunc = _quadCollision; + rectData = _geom.rectangleCorners(rect); + } + + // Retrieving edges + var edges = this._tree ? + _quadRetrieveArea( + rectData, + this._tree, + collisionFunc + ) : + []; + + // Object to array + var edgesArray = []; + for (var i in edges) + edgesArray.push(edges[i]); + + // Caching + this._cache.query = serialized; + this._cache.result = edgesArray; + + return edgesArray; + }; + + + /** + * EXPORT: + * ******* + */ + if (typeof this.sigma !== 'undefined') { + this.sigma.classes = this.sigma.classes || {}; + this.sigma.classes.edgequad = edgequad; + } else if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = edgequad; + exports.edgequad = edgequad; + } else + this.edgequad = edgequad; +}).call(this); diff --git a/sigma.js-1.2.0/src/classes/sigma.classes.graph.js b/sigma.js-1.2.0/src/classes/sigma.classes.graph.js new file mode 100644 index 0000000..c7ebe9d --- /dev/null +++ b/sigma.js-1.2.0/src/classes/sigma.classes.graph.js @@ -0,0 +1,859 @@ +;(function(undefined) { + 'use strict'; + + var _methods = Object.create(null), + _indexes = Object.create(null), + _initBindings = Object.create(null), + _methodBindings = Object.create(null), + _methodBeforeBindings = Object.create(null), + _defaultSettings = { + immutable: true, + clone: true + }, + _defaultSettingsFunction = function(key) { + return _defaultSettings[key]; + }; + + /** + * The graph constructor. It initializes the data and the indexes, and binds + * the custom indexes and methods to its own scope. + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters in the settings + * object: + * + * {boolean} clone Indicates if the data have to be cloned in methods + * to add nodes or edges. + * {boolean} immutable Indicates if nodes "id" values and edges "id", + * "source" and "target" values must be set as + * immutable. + * + * @param {?configurable} settings Eventually a settings function. + * @return {graph} The new graph instance. + */ + var graph = function(settings) { + var k, + fn, + data; + + /** + * DATA: + * ***** + * Every data that is callable from graph methods are stored in this "data" + * object. This object will be served as context for all these methods, + * and it is possible to add other type of data in it. + */ + data = { + /** + * SETTINGS FUNCTION: + * ****************** + */ + settings: settings || _defaultSettingsFunction, + + /** + * MAIN DATA: + * ********** + */ + nodesArray: [], + edgesArray: [], + + /** + * GLOBAL INDEXES: + * *************** + * These indexes just index data by ids. + */ + nodesIndex: Object.create(null), + edgesIndex: Object.create(null), + + /** + * LOCAL INDEXES: + * ************** + * These indexes refer from node to nodes. Each key is an id, and each + * value is the array of the ids of related nodes. + */ + inNeighborsIndex: Object.create(null), + outNeighborsIndex: Object.create(null), + allNeighborsIndex: Object.create(null), + + inNeighborsCount: Object.create(null), + outNeighborsCount: Object.create(null), + allNeighborsCount: Object.create(null) + }; + + // Execute bindings: + for (k in _initBindings) + _initBindings[k].call(data); + + // Add methods to both the scope and the data objects: + for (k in _methods) { + fn = __bindGraphMethod(k, data, _methods[k]); + this[k] = fn; + data[k] = fn; + } + }; + + + + + /** + * A custom tool to bind methods such that function that are bound to it will + * be executed anytime the method is called. + * + * @param {string} methodName The name of the method to bind. + * @param {object} scope The scope where the method must be executed. + * @param {function} fn The method itself. + * @return {function} The new method. + */ + function __bindGraphMethod(methodName, scope, fn) { + var result = function() { + var k, + res; + + // Execute "before" bound functions: + for (k in _methodBeforeBindings[methodName]) + _methodBeforeBindings[methodName][k].apply(scope, arguments); + + // Apply the method: + res = fn.apply(scope, arguments); + + // Execute bound functions: + for (k in _methodBindings[methodName]) + _methodBindings[methodName][k].apply(scope, arguments); + + // Return res: + return res; + }; + + return result; + } + + /** + * This custom tool function removes every pair key/value from an hash. The + * goal is to avoid creating a new object while some other references are + * still hanging in some scopes... + * + * @param {object} obj The object to empty. + * @return {object} The empty object. + */ + function __emptyObject(obj) { + var k; + + for (k in obj) + if (!('hasOwnProperty' in obj) || obj.hasOwnProperty(k)) + delete obj[k]; + + return obj; + } + + + + + /** + * This global method adds a method that will be bound to the futurly created + * graph instances. + * + * Since these methods will be bound to their scope when the instances are + * created, it does not use the prototype. Because of that, methods have to + * be added before instances are created to make them available. + * + * Here is an example: + * + * > graph.addMethod('getNodesCount', function() { + * > return this.nodesArray.length; + * > }); + * > + * > var myGraph = new graph(); + * > console.log(myGraph.getNodesCount()); // outputs 0 + * + * @param {string} methodName The name of the method. + * @param {function} fn The method itself. + * @return {object} The global graph constructor. + */ + graph.addMethod = function(methodName, fn) { + if ( + typeof methodName !== 'string' || + typeof fn !== 'function' || + arguments.length !== 2 + ) + throw 'addMethod: Wrong arguments.'; + + if (_methods[methodName] || graph[methodName]) + throw 'The method "' + methodName + '" already exists.'; + + _methods[methodName] = fn; + _methodBindings[methodName] = Object.create(null); + _methodBeforeBindings[methodName] = Object.create(null); + + return this; + }; + + /** + * This global method returns true if the method has already been added, and + * false else. + * + * Here are some examples: + * + * > graph.hasMethod('addNode'); // returns true + * > graph.hasMethod('hasMethod'); // returns true + * > graph.hasMethod('unexistingMethod'); // returns false + * + * @param {string} methodName The name of the method. + * @return {boolean} The result. + */ + graph.hasMethod = function(methodName) { + return !!(_methods[methodName] || graph[methodName]); + }; + + /** + * This global methods attaches a function to a method. Anytime the specified + * method is called, the attached function is called right after, with the + * same arguments and in the same scope. The attached function is called + * right before if the last argument is true, unless the method is the graph + * constructor. + * + * To attach a function to the graph constructor, use 'constructor' as the + * method name (first argument). + * + * The main idea is to have a clean way to keep custom indexes up to date, + * for instance: + * + * > var timesAddNodeCalled = 0; + * > graph.attach('addNode', 'timesAddNodeCalledInc', function() { + * > timesAddNodeCalled++; + * > }); + * > + * > var myGraph = new graph(); + * > console.log(timesAddNodeCalled); // outputs 0 + * > + * > myGraph.addNode({ id: '1' }).addNode({ id: '2' }); + * > console.log(timesAddNodeCalled); // outputs 2 + * + * The idea for calling a function before is to provide pre-processors, for + * instance: + * + * > var colorPalette = { Person: '#C3CBE1', Place: '#9BDEBD' }; + * > graph.attach('addNode', 'applyNodeColorPalette', function(n) { + * > n.color = colorPalette[n.category]; + * > }, true); + * > + * > var myGraph = new graph(); + * > myGraph.addNode({ id: 'n0', category: 'Person' }); + * > console.log(myGraph.nodes('n0').color); // outputs '#C3CBE1' + * + * @param {string} methodName The name of the related method or + * "constructor". + * @param {string} key The key to identify the function to attach. + * @param {function} fn The function to bind. + * @param {boolean} before If true the function is called right before. + * @return {object} The global graph constructor. + */ + graph.attach = function(methodName, key, fn, before) { + if ( + typeof methodName !== 'string' || + typeof key !== 'string' || + typeof fn !== 'function' || + arguments.length < 3 || + arguments.length > 4 + ) + throw 'attach: Wrong arguments.'; + + var bindings; + + if (methodName === 'constructor') + bindings = _initBindings; + else { + if (before) { + if (!_methodBeforeBindings[methodName]) + throw 'The method "' + methodName + '" does not exist.'; + + bindings = _methodBeforeBindings[methodName]; + } + else { + if (!_methodBindings[methodName]) + throw 'The method "' + methodName + '" does not exist.'; + + bindings = _methodBindings[methodName]; + } + } + + if (bindings[key]) + throw 'A function "' + key + '" is already attached ' + + 'to the method "' + methodName + '".'; + + bindings[key] = fn; + + return this; + }; + + /** + * Alias of attach(methodName, key, fn, true). + */ + graph.attachBefore = function(methodName, key, fn) { + return this.attach(methodName, key, fn, true); + }; + + /** + * This methods is just an helper to deal with custom indexes. It takes as + * arguments the name of the index and an object containing all the different + * functions to bind to the methods. + * + * Here is a basic example, that creates an index to keep the number of nodes + * in the current graph. It also adds a method to provide a getter on that + * new index: + * + * > sigma.classes.graph.addIndex('nodesCount', { + * > constructor: function() { + * > this.nodesCount = 0; + * > }, + * > addNode: function() { + * > this.nodesCount++; + * > }, + * > dropNode: function() { + * > this.nodesCount--; + * > } + * > }); + * > + * > sigma.classes.graph.addMethod('getNodesCount', function() { + * > return this.nodesCount; + * > }); + * > + * > var myGraph = new sigma.classes.graph(); + * > console.log(myGraph.getNodesCount()); // outputs 0 + * > + * > myGraph.addNode({ id: '1' }).addNode({ id: '2' }); + * > console.log(myGraph.getNodesCount()); // outputs 2 + * + * @param {string} name The name of the index. + * @param {object} bindings The object containing the functions to bind. + * @return {object} The global graph constructor. + */ + graph.addIndex = function(name, bindings) { + if ( + typeof name !== 'string' || + Object(bindings) !== bindings || + arguments.length !== 2 + ) + throw 'addIndex: Wrong arguments.'; + + if (_indexes[name]) + throw 'The index "' + name + '" already exists.'; + + var k; + + // Store the bindings: + _indexes[name] = bindings; + + // Attach the bindings: + for (k in bindings) + if (typeof bindings[k] !== 'function') + throw 'The bindings must be functions.'; + else + graph.attach(k, name, bindings[k]); + + return this; + }; + + + + + /** + * This method adds a node to the graph. The node must be an object, with a + * string under the key "id". Except for this, it is possible to add any + * other attribute, that will be preserved all along the manipulations. + * + * If the graph option "clone" has a truthy value, the node will be cloned + * when added to the graph. Also, if the graph option "immutable" has a + * truthy value, its id will be defined as immutable. + * + * @param {object} node The node to add. + * @return {object} The graph instance. + */ + graph.addMethod('addNode', function(node) { + // Check that the node is an object and has an id: + if (Object(node) !== node || arguments.length !== 1) + throw 'addNode: Wrong arguments.'; + + if (typeof node.id !== 'string' && typeof node.id !== 'number') + throw 'The node must have a string or number id.'; + + if (this.nodesIndex[node.id]) + throw 'The node "' + node.id + '" already exists.'; + + var k, + id = node.id, + validNode = Object.create(null); + + // Check the "clone" option: + if (this.settings('clone')) { + for (k in node) + if (k !== 'id') + validNode[k] = node[k]; + } else + validNode = node; + + // Check the "immutable" option: + if (this.settings('immutable')) + Object.defineProperty(validNode, 'id', { + value: id, + enumerable: true + }); + else + validNode.id = id; + + // Add empty containers for edges indexes: + this.inNeighborsIndex[id] = Object.create(null); + this.outNeighborsIndex[id] = Object.create(null); + this.allNeighborsIndex[id] = Object.create(null); + + this.inNeighborsCount[id] = 0; + this.outNeighborsCount[id] = 0; + this.allNeighborsCount[id] = 0; + + // Add the node to indexes: + this.nodesArray.push(validNode); + this.nodesIndex[validNode.id] = validNode; + + // Return the current instance: + return this; + }); + + /** + * This method adds an edge to the graph. The edge must be an object, with a + * string under the key "id", and strings under the keys "source" and + * "target" that design existing nodes. Except for this, it is possible to + * add any other attribute, that will be preserved all along the + * manipulations. + * + * If the graph option "clone" has a truthy value, the edge will be cloned + * when added to the graph. Also, if the graph option "immutable" has a + * truthy value, its id, source and target will be defined as immutable. + * + * @param {object} edge The edge to add. + * @return {object} The graph instance. + */ + graph.addMethod('addEdge', function(edge) { + // Check that the edge is an object and has an id: + if (Object(edge) !== edge || arguments.length !== 1) + throw 'addEdge: Wrong arguments.'; + + if (typeof edge.id !== 'string' && typeof edge.id !== 'number') + throw 'The edge must have a string or number id.'; + + if ((typeof edge.source !== 'string' && typeof edge.source !== 'number') || + !this.nodesIndex[edge.source]) + throw 'The edge source must have an existing node id.'; + + if ((typeof edge.target !== 'string' && typeof edge.target !== 'number') || + !this.nodesIndex[edge.target]) + throw 'The edge target must have an existing node id.'; + + if (this.edgesIndex[edge.id]) + throw 'The edge "' + edge.id + '" already exists.'; + + var k, + validEdge = Object.create(null); + + // Check the "clone" option: + if (this.settings('clone')) { + for (k in edge) + if (k !== 'id' && k !== 'source' && k !== 'target') + validEdge[k] = edge[k]; + } else + validEdge = edge; + + // Check the "immutable" option: + if (this.settings('immutable')) { + Object.defineProperty(validEdge, 'id', { + value: edge.id, + enumerable: true + }); + + Object.defineProperty(validEdge, 'source', { + value: edge.source, + enumerable: true + }); + + Object.defineProperty(validEdge, 'target', { + value: edge.target, + enumerable: true + }); + } else { + validEdge.id = edge.id; + validEdge.source = edge.source; + validEdge.target = edge.target; + } + + // Add the edge to indexes: + this.edgesArray.push(validEdge); + this.edgesIndex[validEdge.id] = validEdge; + + if (!this.inNeighborsIndex[validEdge.target][validEdge.source]) + this.inNeighborsIndex[validEdge.target][validEdge.source] = + Object.create(null); + this.inNeighborsIndex[validEdge.target][validEdge.source][validEdge.id] = + validEdge; + + if (!this.outNeighborsIndex[validEdge.source][validEdge.target]) + this.outNeighborsIndex[validEdge.source][validEdge.target] = + Object.create(null); + this.outNeighborsIndex[validEdge.source][validEdge.target][validEdge.id] = + validEdge; + + if (!this.allNeighborsIndex[validEdge.source][validEdge.target]) + this.allNeighborsIndex[validEdge.source][validEdge.target] = + Object.create(null); + this.allNeighborsIndex[validEdge.source][validEdge.target][validEdge.id] = + validEdge; + + if (validEdge.target !== validEdge.source) { + if (!this.allNeighborsIndex[validEdge.target][validEdge.source]) + this.allNeighborsIndex[validEdge.target][validEdge.source] = + Object.create(null); + this.allNeighborsIndex[validEdge.target][validEdge.source][validEdge.id] = + validEdge; + } + + // Keep counts up to date: + this.inNeighborsCount[validEdge.target]++; + this.outNeighborsCount[validEdge.source]++; + this.allNeighborsCount[validEdge.target]++; + this.allNeighborsCount[validEdge.source]++; + + return this; + }); + + /** + * This method drops a node from the graph. It also removes each edge that is + * bound to it, through the dropEdge method. An error is thrown if the node + * does not exist. + * + * @param {string} id The node id. + * @return {object} The graph instance. + */ + graph.addMethod('dropNode', function(id) { + // Check that the arguments are valid: + if ((typeof id !== 'string' && typeof id !== 'number') || + arguments.length !== 1) + throw 'dropNode: Wrong arguments.'; + + if (!this.nodesIndex[id]) + throw 'The node "' + id + '" does not exist.'; + + var i, k, l; + + // Remove the node from indexes: + delete this.nodesIndex[id]; + for (i = 0, l = this.nodesArray.length; i < l; i++) + if (this.nodesArray[i].id === id) { + this.nodesArray.splice(i, 1); + break; + } + + // Remove related edges: + for (i = this.edgesArray.length - 1; i >= 0; i--) + if (this.edgesArray[i].source === id || this.edgesArray[i].target === id) + this.dropEdge(this.edgesArray[i].id); + + // Remove related edge indexes: + delete this.inNeighborsIndex[id]; + delete this.outNeighborsIndex[id]; + delete this.allNeighborsIndex[id]; + + delete this.inNeighborsCount[id]; + delete this.outNeighborsCount[id]; + delete this.allNeighborsCount[id]; + + for (k in this.nodesIndex) { + delete this.inNeighborsIndex[k][id]; + delete this.outNeighborsIndex[k][id]; + delete this.allNeighborsIndex[k][id]; + } + + return this; + }); + + /** + * This method drops an edge from the graph. An error is thrown if the edge + * does not exist. + * + * @param {string} id The edge id. + * @return {object} The graph instance. + */ + graph.addMethod('dropEdge', function(id) { + // Check that the arguments are valid: + if ((typeof id !== 'string' && typeof id !== 'number') || + arguments.length !== 1) + throw 'dropEdge: Wrong arguments.'; + + if (!this.edgesIndex[id]) + throw 'The edge "' + id + '" does not exist.'; + + var i, l, edge; + + // Remove the edge from indexes: + edge = this.edgesIndex[id]; + delete this.edgesIndex[id]; + for (i = 0, l = this.edgesArray.length; i < l; i++) + if (this.edgesArray[i].id === id) { + this.edgesArray.splice(i, 1); + break; + } + + delete this.inNeighborsIndex[edge.target][edge.source][edge.id]; + if (!Object.keys(this.inNeighborsIndex[edge.target][edge.source]).length) + delete this.inNeighborsIndex[edge.target][edge.source]; + + delete this.outNeighborsIndex[edge.source][edge.target][edge.id]; + if (!Object.keys(this.outNeighborsIndex[edge.source][edge.target]).length) + delete this.outNeighborsIndex[edge.source][edge.target]; + + delete this.allNeighborsIndex[edge.source][edge.target][edge.id]; + if (!Object.keys(this.allNeighborsIndex[edge.source][edge.target]).length) + delete this.allNeighborsIndex[edge.source][edge.target]; + + if (edge.target !== edge.source) { + delete this.allNeighborsIndex[edge.target][edge.source][edge.id]; + if (!Object.keys(this.allNeighborsIndex[edge.target][edge.source]).length) + delete this.allNeighborsIndex[edge.target][edge.source]; + } + + this.inNeighborsCount[edge.target]--; + this.outNeighborsCount[edge.source]--; + this.allNeighborsCount[edge.source]--; + this.allNeighborsCount[edge.target]--; + + return this; + }); + + /** + * This method destroys the current instance. It basically empties each index + * and methods attached to the graph. + */ + graph.addMethod('kill', function() { + // Delete arrays: + this.nodesArray.length = 0; + this.edgesArray.length = 0; + delete this.nodesArray; + delete this.edgesArray; + + // Delete indexes: + delete this.nodesIndex; + delete this.edgesIndex; + delete this.inNeighborsIndex; + delete this.outNeighborsIndex; + delete this.allNeighborsIndex; + delete this.inNeighborsCount; + delete this.outNeighborsCount; + delete this.allNeighborsCount; + }); + + /** + * This method empties the nodes and edges arrays, as well as the different + * indexes. + * + * @return {object} The graph instance. + */ + graph.addMethod('clear', function() { + this.nodesArray.length = 0; + this.edgesArray.length = 0; + + // Due to GC issues, I prefer not to create new object. These objects are + // only available from the methods and attached functions, but still, it is + // better to prevent ghost references to unrelevant data... + __emptyObject(this.nodesIndex); + __emptyObject(this.edgesIndex); + __emptyObject(this.nodesIndex); + __emptyObject(this.inNeighborsIndex); + __emptyObject(this.outNeighborsIndex); + __emptyObject(this.allNeighborsIndex); + __emptyObject(this.inNeighborsCount); + __emptyObject(this.outNeighborsCount); + __emptyObject(this.allNeighborsCount); + + return this; + }); + + /** + * This method reads an object and adds the nodes and edges, through the + * proper methods "addNode" and "addEdge". + * + * Here is an example: + * + * > var myGraph = new graph(); + * > myGraph.read({ + * > nodes: [ + * > { id: 'n0' }, + * > { id: 'n1' } + * > ], + * > edges: [ + * > { + * > id: 'e0', + * > source: 'n0', + * > target: 'n1' + * > } + * > ] + * > }); + * > + * > console.log( + * > myGraph.nodes().length, + * > myGraph.edges().length + * > ); // outputs 2 1 + * + * @param {object} g The graph object. + * @return {object} The graph instance. + */ + graph.addMethod('read', function(g) { + var i, + a, + l; + + a = g.nodes || []; + for (i = 0, l = a.length; i < l; i++) + this.addNode(a[i]); + + a = g.edges || []; + for (i = 0, l = a.length; i < l; i++) + this.addEdge(a[i]); + + return this; + }); + + /** + * This methods returns one or several nodes, depending on how it is called. + * + * To get the array of nodes, call "nodes" without argument. To get a + * specific node, call it with the id of the node. The get multiple node, + * call it with an array of ids, and it will return the array of nodes, in + * the same order. + * + * @param {?(string|array)} v Eventually one id, an array of ids. + * @return {object|array} The related node or array of nodes. + */ + graph.addMethod('nodes', function(v) { + // Clone the array of nodes and return it: + if (!arguments.length) + return this.nodesArray.slice(0); + + // Return the related node: + if (arguments.length === 1 && + (typeof v === 'string' || typeof v === 'number')) + return this.nodesIndex[v]; + + // Return an array of the related node: + if ( + arguments.length === 1 && + Object.prototype.toString.call(v) === '[object Array]' + ) { + var i, + l, + a = []; + + for (i = 0, l = v.length; i < l; i++) + if (typeof v[i] === 'string' || typeof v[i] === 'number') + a.push(this.nodesIndex[v[i]]); + else + throw 'nodes: Wrong arguments.'; + + return a; + } + + throw 'nodes: Wrong arguments.'; + }); + + /** + * This methods returns the degree of one or several nodes, depending on how + * it is called. It is also possible to get incoming or outcoming degrees + * instead by specifying 'in' or 'out' as a second argument. + * + * @param {string|array} v One id, an array of ids. + * @param {?string} which Which degree is required. Values are 'in', + * 'out', and by default the normal degree. + * @return {number|array} The related degree or array of degrees. + */ + graph.addMethod('degree', function(v, which) { + // Check which degree is required: + which = { + 'in': this.inNeighborsCount, + 'out': this.outNeighborsCount + }[which || ''] || this.allNeighborsCount; + + // Return the related node: + if (typeof v === 'string' || typeof v === 'number') + return which[v]; + + // Return an array of the related node: + if (Object.prototype.toString.call(v) === '[object Array]') { + var i, + l, + a = []; + + for (i = 0, l = v.length; i < l; i++) + if (typeof v[i] === 'string' || typeof v[i] === 'number') + a.push(which[v[i]]); + else + throw 'degree: Wrong arguments.'; + + return a; + } + + throw 'degree: Wrong arguments.'; + }); + + /** + * This methods returns one or several edges, depending on how it is called. + * + * To get the array of edges, call "edges" without argument. To get a + * specific edge, call it with the id of the edge. The get multiple edge, + * call it with an array of ids, and it will return the array of edges, in + * the same order. + * + * @param {?(string|array)} v Eventually one id, an array of ids. + * @return {object|array} The related edge or array of edges. + */ + graph.addMethod('edges', function(v) { + // Clone the array of edges and return it: + if (!arguments.length) + return this.edgesArray.slice(0); + + // Return the related edge: + if (arguments.length === 1 && + (typeof v === 'string' || typeof v === 'number')) + return this.edgesIndex[v]; + + // Return an array of the related edge: + if ( + arguments.length === 1 && + Object.prototype.toString.call(v) === '[object Array]' + ) { + var i, + l, + a = []; + + for (i = 0, l = v.length; i < l; i++) + if (typeof v[i] === 'string' || typeof v[i] === 'number') + a.push(this.edgesIndex[v[i]]); + else + throw 'edges: Wrong arguments.'; + + return a; + } + + throw 'edges: Wrong arguments.'; + }); + + + /** + * EXPORT: + * ******* + */ + if (typeof sigma !== 'undefined') { + sigma.classes = sigma.classes || Object.create(null); + sigma.classes.graph = graph; + } else if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = graph; + exports.graph = graph; + } else + this.graph = graph; +}).call(this); diff --git a/sigma.js-1.2.0/src/classes/sigma.classes.quad.js b/sigma.js-1.2.0/src/classes/sigma.classes.quad.js new file mode 100644 index 0000000..fb11386 --- /dev/null +++ b/sigma.js-1.2.0/src/classes/sigma.classes.quad.js @@ -0,0 +1,674 @@ +;(function(undefined) { + 'use strict'; + + /** + * Sigma Quadtree Module + * ===================== + * + * Author: Guillaume Plique (Yomguithereal) + * Version: 0.2 + */ + + + + /** + * Quad Geometric Operations + * ------------------------- + * + * A useful batch of geometric operations used by the quadtree. + */ + + var _geom = { + + /** + * Transforms a graph node with x, y and size into an + * axis-aligned square. + * + * @param {object} A graph node with at least a point (x, y) and a size. + * @return {object} A square: two points (x1, y1), (x2, y2) and height. + */ + pointToSquare: function(n) { + return { + x1: n.x - n.size, + y1: n.y - n.size, + x2: n.x + n.size, + y2: n.y - n.size, + height: n.size * 2 + }; + }, + + /** + * Checks whether a rectangle is axis-aligned. + * + * @param {object} A rectangle defined by two points + * (x1, y1) and (x2, y2). + * @return {boolean} True if the rectangle is axis-aligned. + */ + isAxisAligned: function(r) { + return r.x1 === r.x2 || r.y1 === r.y2; + }, + + /** + * Compute top points of an axis-aligned rectangle. This is useful in + * cases when the rectangle has been rotated (left, right or bottom up) and + * later operations need to know the top points. + * + * @param {object} An axis-aligned rectangle defined by two points + * (x1, y1), (x2, y2) and height. + * @return {object} A rectangle: two points (x1, y1), (x2, y2) and height. + */ + axisAlignedTopPoints: function(r) { + + // Basic + if (r.y1 === r.y2 && r.x1 < r.x2) + return r; + + // Rotated to right + if (r.x1 === r.x2 && r.y2 > r.y1) + return { + x1: r.x1 - r.height, y1: r.y1, + x2: r.x1, y2: r.y1, + height: r.height + }; + + // Rotated to left + if (r.x1 === r.x2 && r.y2 < r.y1) + return { + x1: r.x1, y1: r.y2, + x2: r.x2 + r.height, y2: r.y2, + height: r.height + }; + + // Bottom's up + return { + x1: r.x2, y1: r.y1 - r.height, + x2: r.x1, y2: r.y1 - r.height, + height: r.height + }; + }, + + /** + * Get coordinates of a rectangle's lower left corner from its top points. + * + * @param {object} A rectangle defined by two points (x1, y1) and (x2, y2). + * @return {object} Coordinates of the corner (x, y). + */ + lowerLeftCoor: function(r) { + var width = ( + Math.sqrt( + Math.pow(r.x2 - r.x1, 2) + + Math.pow(r.y2 - r.y1, 2) + ) + ); + + return { + x: r.x1 - (r.y2 - r.y1) * r.height / width, + y: r.y1 + (r.x2 - r.x1) * r.height / width + }; + }, + + /** + * Get coordinates of a rectangle's lower right corner from its top points + * and its lower left corner. + * + * @param {object} A rectangle defined by two points (x1, y1) and (x2, y2). + * @param {object} A corner's coordinates (x, y). + * @return {object} Coordinates of the corner (x, y). + */ + lowerRightCoor: function(r, llc) { + return { + x: llc.x - r.x1 + r.x2, + y: llc.y - r.y1 + r.y2 + }; + }, + + /** + * Get the coordinates of all the corners of a rectangle from its top point. + * + * @param {object} A rectangle defined by two points (x1, y1) and (x2, y2). + * @return {array} An array of the four corners' coordinates (x, y). + */ + rectangleCorners: function(r) { + var llc = this.lowerLeftCoor(r), + lrc = this.lowerRightCoor(r, llc); + + return [ + {x: r.x1, y: r.y1}, + {x: r.x2, y: r.y2}, + {x: llc.x, y: llc.y}, + {x: lrc.x, y: lrc.y} + ]; + }, + + /** + * Split a square defined by its boundaries into four. + * + * @param {object} Boundaries of the square (x, y, width, height). + * @return {array} An array containing the four new squares, themselves + * defined by an array of their four corners (x, y). + */ + splitSquare: function(b) { + return [ + [ + {x: b.x, y: b.y}, + {x: b.x + b.width / 2, y: b.y}, + {x: b.x, y: b.y + b.height / 2}, + {x: b.x + b.width / 2, y: b.y + b.height / 2} + ], + [ + {x: b.x + b.width / 2, y: b.y}, + {x: b.x + b.width, y: b.y}, + {x: b.x + b.width / 2, y: b.y + b.height / 2}, + {x: b.x + b.width, y: b.y + b.height / 2} + ], + [ + {x: b.x, y: b.y + b.height / 2}, + {x: b.x + b.width / 2, y: b.y + b.height / 2}, + {x: b.x, y: b.y + b.height}, + {x: b.x + b.width / 2, y: b.y + b.height} + ], + [ + {x: b.x + b.width / 2, y: b.y + b.height / 2}, + {x: b.x + b.width, y: b.y + b.height / 2}, + {x: b.x + b.width / 2, y: b.y + b.height}, + {x: b.x + b.width, y: b.y + b.height} + ] + ]; + }, + + /** + * Compute the four axis between corners of rectangle A and corners of + * rectangle B. This is needed later to check an eventual collision. + * + * @param {array} An array of rectangle A's four corners (x, y). + * @param {array} An array of rectangle B's four corners (x, y). + * @return {array} An array of four axis defined by their coordinates (x,y). + */ + axis: function(c1, c2) { + return [ + {x: c1[1].x - c1[0].x, y: c1[1].y - c1[0].y}, + {x: c1[1].x - c1[3].x, y: c1[1].y - c1[3].y}, + {x: c2[0].x - c2[2].x, y: c2[0].y - c2[2].y}, + {x: c2[0].x - c2[1].x, y: c2[0].y - c2[1].y} + ]; + }, + + /** + * Project a rectangle's corner on an axis. + * + * @param {object} Coordinates of a corner (x, y). + * @param {object} Coordinates of an axis (x, y). + * @return {object} The projection defined by coordinates (x, y). + */ + projection: function(c, a) { + var l = ( + (c.x * a.x + c.y * a.y) / + (Math.pow(a.x, 2) + Math.pow(a.y, 2)) + ); + + return { + x: l * a.x, + y: l * a.y + }; + }, + + /** + * Check whether two rectangles collide on one particular axis. + * + * @param {object} An axis' coordinates (x, y). + * @param {array} Rectangle A's corners. + * @param {array} Rectangle B's corners. + * @return {boolean} True if the rectangles collide on the axis. + */ + axisCollision: function(a, c1, c2) { + var sc1 = [], + sc2 = []; + + for (var ci = 0; ci < 4; ci++) { + var p1 = this.projection(c1[ci], a), + p2 = this.projection(c2[ci], a); + + sc1.push(p1.x * a.x + p1.y * a.y); + sc2.push(p2.x * a.x + p2.y * a.y); + } + + var maxc1 = Math.max.apply(Math, sc1), + maxc2 = Math.max.apply(Math, sc2), + minc1 = Math.min.apply(Math, sc1), + minc2 = Math.min.apply(Math, sc2); + + return (minc2 <= maxc1 && maxc2 >= minc1); + }, + + /** + * Check whether two rectangles collide on each one of their four axis. If + * all axis collide, then the two rectangles do collide on the plane. + * + * @param {array} Rectangle A's corners. + * @param {array} Rectangle B's corners. + * @return {boolean} True if the rectangles collide. + */ + collision: function(c1, c2) { + var axis = this.axis(c1, c2), + col = true; + + for (var i = 0; i < 4; i++) + col = col && this.axisCollision(axis[i], c1, c2); + + return col; + } + }; + + + /** + * Quad Functions + * ------------ + * + * The Quadtree functions themselves. + * For each of those functions, we consider that in a splitted quad, the + * index of each node is the following: + * 0: top left + * 1: top right + * 2: bottom left + * 3: bottom right + * + * Moreover, the hereafter quad's philosophy is to consider that if an element + * collides with more than one nodes, this element belongs to each of the + * nodes it collides with where other would let it lie on a higher node. + */ + + /** + * Get the index of the node containing the point in the quad + * + * @param {object} point A point defined by coordinates (x, y). + * @param {object} quadBounds Boundaries of the quad (x, y, width, heigth). + * @return {integer} The index of the node containing the point. + */ + function _quadIndex(point, quadBounds) { + var xmp = quadBounds.x + quadBounds.width / 2, + ymp = quadBounds.y + quadBounds.height / 2, + top = (point.y < ymp), + left = (point.x < xmp); + + if (top) { + if (left) + return 0; + else + return 1; + } + else { + if (left) + return 2; + else + return 3; + } + } + + /** + * Get a list of indexes of nodes containing an axis-aligned rectangle + * + * @param {object} rectangle A rectangle defined by two points (x1, y1), + * (x2, y2) and height. + * @param {array} quadCorners An array of the quad nodes' corners. + * @return {array} An array of indexes containing one to + * four integers. + */ + function _quadIndexes(rectangle, quadCorners) { + var indexes = []; + + // Iterating through quads + for (var i = 0; i < 4; i++) + if ((rectangle.x2 >= quadCorners[i][0].x) && + (rectangle.x1 <= quadCorners[i][1].x) && + (rectangle.y1 + rectangle.height >= quadCorners[i][0].y) && + (rectangle.y1 <= quadCorners[i][2].y)) + indexes.push(i); + + return indexes; + } + + /** + * Get a list of indexes of nodes containing a non-axis-aligned rectangle + * + * @param {array} corners An array containing each corner of the + * rectangle defined by its coordinates (x, y). + * @param {array} quadCorners An array of the quad nodes' corners. + * @return {array} An array of indexes containing one to + * four integers. + */ + function _quadCollision(corners, quadCorners) { + var indexes = []; + + // Iterating through quads + for (var i = 0; i < 4; i++) + if (_geom.collision(corners, quadCorners[i])) + indexes.push(i); + + return indexes; + } + + /** + * Subdivide a quad by creating a node at a precise index. The function does + * not generate all four nodes not to potentially create unused nodes. + * + * @param {integer} index The index of the node to create. + * @param {object} quad The quad object to subdivide. + * @return {object} A new quad representing the node created. + */ + function _quadSubdivide(index, quad) { + var next = quad.level + 1, + subw = Math.round(quad.bounds.width / 2), + subh = Math.round(quad.bounds.height / 2), + qx = Math.round(quad.bounds.x), + qy = Math.round(quad.bounds.y), + x, + y; + + switch (index) { + case 0: + x = qx; + y = qy; + break; + case 1: + x = qx + subw; + y = qy; + break; + case 2: + x = qx; + y = qy + subh; + break; + case 3: + x = qx + subw; + y = qy + subh; + break; + } + + return _quadTree( + {x: x, y: y, width: subw, height: subh}, + next, + quad.maxElements, + quad.maxLevel + ); + } + + /** + * Recursively insert an element into the quadtree. Only points + * with size, i.e. axis-aligned squares, may be inserted with this + * method. + * + * @param {object} el The element to insert in the quadtree. + * @param {object} sizedPoint A sized point defined by two top points + * (x1, y1), (x2, y2) and height. + * @param {object} quad The quad in which to insert the element. + * @return {undefined} The function does not return anything. + */ + function _quadInsert(el, sizedPoint, quad) { + if (quad.level < quad.maxLevel) { + + // Searching appropriate quads + var indexes = _quadIndexes(sizedPoint, quad.corners); + + // Iterating + for (var i = 0, l = indexes.length; i < l; i++) { + + // Subdividing if necessary + if (quad.nodes[indexes[i]] === undefined) + quad.nodes[indexes[i]] = _quadSubdivide(indexes[i], quad); + + // Recursion + _quadInsert(el, sizedPoint, quad.nodes[indexes[i]]); + } + } + else { + + // Pushing the element in a leaf node + quad.elements.push(el); + } + } + + /** + * Recursively retrieve every elements held by the node containing the + * searched point. + * + * @param {object} point The searched point (x, y). + * @param {object} quad The searched quad. + * @return {array} An array of elements contained in the relevant + * node. + */ + function _quadRetrievePoint(point, quad) { + if (quad.level < quad.maxLevel) { + var index = _quadIndex(point, quad.bounds); + + // If node does not exist we return an empty list + if (quad.nodes[index] !== undefined) { + return _quadRetrievePoint(point, quad.nodes[index]); + } + else { + return []; + } + } + else { + return quad.elements; + } + } + + /** + * Recursively retrieve every elements contained within an rectangular area + * that may or may not be axis-aligned. + * + * @param {object|array} rectData The searched area defined either by + * an array of four corners (x, y) in + * the case of a non-axis-aligned + * rectangle or an object with two top + * points (x1, y1), (x2, y2) and height. + * @param {object} quad The searched quad. + * @param {function} collisionFunc The collision function used to search + * for node indexes. + * @param {array?} els The retrieved elements. + * @return {array} An array of elements contained in the + * area. + */ + function _quadRetrieveArea(rectData, quad, collisionFunc, els) { + els = els || {}; + + if (quad.level < quad.maxLevel) { + var indexes = collisionFunc(rectData, quad.corners); + + for (var i = 0, l = indexes.length; i < l; i++) + if (quad.nodes[indexes[i]] !== undefined) + _quadRetrieveArea( + rectData, + quad.nodes[indexes[i]], + collisionFunc, + els + ); + } else + for (var j = 0, m = quad.elements.length; j < m; j++) + if (els[quad.elements[j].id] === undefined) + els[quad.elements[j].id] = quad.elements[j]; + + return els; + } + + /** + * Creates the quadtree object itself. + * + * @param {object} bounds The boundaries of the quad defined by an + * origin (x, y), width and heigth. + * @param {integer} level The level of the quad in the tree. + * @param {integer} maxElements The max number of element in a leaf node. + * @param {integer} maxLevel The max recursion level of the tree. + * @return {object} The quadtree object. + */ + function _quadTree(bounds, level, maxElements, maxLevel) { + return { + level: level || 0, + bounds: bounds, + corners: _geom.splitSquare(bounds), + maxElements: maxElements || 20, + maxLevel: maxLevel || 4, + elements: [], + nodes: [] + }; + } + + + /** + * Sigma Quad Constructor + * ---------------------- + * + * The quad API as exposed to sigma. + */ + + /** + * The quad core that will become the sigma interface with the quadtree. + * + * property {object} _tree Property holding the quadtree object. + * property {object} _geom Exposition of the _geom namespace for testing. + * property {object} _cache Cache for the area method. + */ + var quad = function() { + this._geom = _geom; + this._tree = null; + this._cache = { + query: false, + result: false + }; + }; + + /** + * Index a graph by inserting its nodes into the quadtree. + * + * @param {array} nodes An array of nodes to index. + * @param {object} params An object of parameters with at least the quad + * bounds. + * @return {object} The quadtree object. + * + * Parameters: + * ---------- + * bounds: {object} boundaries of the quad defined by its origin (x, y) + * width and heigth. + * prefix: {string?} a prefix for node geometric attributes. + * maxElements: {integer?} the max number of elements in a leaf node. + * maxLevel: {integer?} the max recursion level of the tree. + */ + quad.prototype.index = function(nodes, params) { + + // Enforcing presence of boundaries + if (!params.bounds) + throw 'sigma.classes.quad.index: bounds information not given.'; + + // Prefix + var prefix = params.prefix || ''; + + // Building the tree + this._tree = _quadTree( + params.bounds, + 0, + params.maxElements, + params.maxLevel + ); + + // Inserting graph nodes into the tree + for (var i = 0, l = nodes.length; i < l; i++) { + + // Inserting node + _quadInsert( + nodes[i], + _geom.pointToSquare({ + x: nodes[i][prefix + 'x'], + y: nodes[i][prefix + 'y'], + size: nodes[i][prefix + 'size'] + }), + this._tree + ); + } + + // Reset cache: + this._cache = { + query: false, + result: false + }; + + // remove? + return this._tree; + }; + + /** + * Retrieve every graph nodes held by the quadtree node containing the + * searched point. + * + * @param {number} x of the point. + * @param {number} y of the point. + * @return {array} An array of nodes retrieved. + */ + quad.prototype.point = function(x, y) { + return this._tree ? + _quadRetrievePoint({x: x, y: y}, this._tree) || [] : + []; + }; + + /** + * Retrieve every graph nodes within a rectangular area. The methods keep the + * last area queried in cache for optimization reason and will act differently + * for the same reason if the area is axis-aligned or not. + * + * @param {object} A rectangle defined by two top points (x1, y1), (x2, y2) + * and height. + * @return {array} An array of nodes retrieved. + */ + quad.prototype.area = function(rect) { + var serialized = JSON.stringify(rect), + collisionFunc, + rectData; + + // Returning cache? + if (this._cache.query === serialized) + return this._cache.result; + + // Axis aligned ? + if (_geom.isAxisAligned(rect)) { + collisionFunc = _quadIndexes; + rectData = _geom.axisAlignedTopPoints(rect); + } + else { + collisionFunc = _quadCollision; + rectData = _geom.rectangleCorners(rect); + } + + // Retrieving nodes + var nodes = this._tree ? + _quadRetrieveArea( + rectData, + this._tree, + collisionFunc + ) : + []; + + // Object to array + var nodesArray = []; + for (var i in nodes) + nodesArray.push(nodes[i]); + + // Caching + this._cache.query = serialized; + this._cache.result = nodesArray; + + return nodesArray; + }; + + + /** + * EXPORT: + * ******* + */ + if (typeof this.sigma !== 'undefined') { + this.sigma.classes = this.sigma.classes || {}; + this.sigma.classes.quad = quad; + } else if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = quad; + exports.quad = quad; + } else + this.quad = quad; +}).call(this); diff --git a/sigma.js-1.2.0/src/conrad.js b/sigma.js-1.2.0/src/conrad.js new file mode 100644 index 0000000..bdb6610 --- /dev/null +++ b/sigma.js-1.2.0/src/conrad.js @@ -0,0 +1,984 @@ +/** + * conrad.js is a tiny JavaScript jobs scheduler, + * + * Version: 0.1.0 + * Sources: http://github.com/jacomyal/conrad.js + * Doc: http://github.com/jacomyal/conrad.js#readme + * + * License: + * -------- + * Copyright © 2013 Alexis Jacomy, Sciences-Po médialab + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * The Software is provided "as is", without warranty of any kind, express or + * implied, including but not limited to the warranties of merchantability, + * fitness for a particular purpose and noninfringement. In no event shall the + * authors or copyright holders be liable for any claim, damages or other + * liability, whether in an action of contract, tort or otherwise, arising + * from, out of or in connection with the software or the use or other dealings + * in the Software. + */ +(function(global) { + 'use strict'; + + // Check that conrad.js has not been loaded yet: + if (global.conrad) + throw new Error('conrad already exists'); + + + /** + * PRIVATE VARIABLES: + * ****************** + */ + + /** + * A flag indicating whether conrad is running or not. + * + * @type {Number} + */ + var _lastFrameTime; + + /** + * A flag indicating whether conrad is running or not. + * + * @type {Boolean} + */ + var _isRunning = false; + + /** + * The hash of registered jobs. Each job must at least have a unique ID + * under the key "id" and a function under the key "job". This hash + * contains each running job and each waiting job. + * + * @type {Object} + */ + var _jobs = {}; + + /** + * The hash of currently running jobs. + * + * @type {Object} + */ + var _runningJobs = {}; + + /** + * The array of currently running jobs, sorted by priority. + * + * @type {Array} + */ + var _sortedByPriorityJobs = []; + + /** + * The array of currently waiting jobs. + * + * @type {Object} + */ + var _waitingJobs = {}; + + /** + * The array of finished jobs. They are stored in an array, since two jobs + * with the same "id" can happen at two different times. + * + * @type {Array} + */ + var _doneJobs = []; + + /** + * A dirty flag to keep conrad from starting: Indeed, when addJob() is called + * with several jobs, conrad must be started only at the end. This flag keeps + * me from duplicating the code that effectively adds a job. + * + * @type {Boolean} + */ + var _noStart = false; + + /** + * An hash containing some global settings about how conrad.js should + * behave. + * + * @type {Object} + */ + var _parameters = { + frameDuration: 20, + history: true + }; + + /** + * This object contains every handlers bound to conrad events. It does not + * requirea any DOM implementation, since the events are all JavaScript. + * + * @type {Object} + */ + var _handlers = Object.create(null); + + + /** + * PRIVATE FUNCTIONS: + * ****************** + */ + + /** + * Will execute the handler everytime that the indicated event (or the + * indicated events) will be triggered. + * + * @param {string|array|object} events The name of the event (or the events + * separated by spaces). + * @param {function(Object)} handler The handler to bind. + * @return {Object} Returns conrad. + */ + function _bind(events, handler) { + var i, + i_end, + event, + eArray; + + if (!arguments.length) + return; + else if ( + arguments.length === 1 && + Object(arguments[0]) === arguments[0] + ) + for (events in arguments[0]) + _bind(events, arguments[0][events]); + else if (arguments.length > 1) { + eArray = + Array.isArray(events) ? + events : + events.split(/ /); + + for (i = 0, i_end = eArray.length; i !== i_end; i += 1) { + event = eArray[i]; + + if (!_handlers[event]) + _handlers[event] = []; + + // Using an object instead of directly the handler will make possible + // later to add flags + _handlers[event].push({ + handler: handler + }); + } + } + } + + /** + * Removes the handler from a specified event (or specified events). + * + * @param {?string} events The name of the event (or the events + * separated by spaces). If undefined, + * then all handlers are removed. + * @param {?function(Object)} handler The handler to unbind. If undefined, + * each handler bound to the event or the + * events will be removed. + * @return {Object} Returns conrad. + */ + function _unbind(events, handler) { + var i, + i_end, + j, + j_end, + a, + event, + eArray = Array.isArray(events) ? + events : + events.split(/ /); + + if (!arguments.length) + _handlers = Object.create(null); + else if (handler) { + for (i = 0, i_end = eArray.length; i !== i_end; i += 1) { + event = eArray[i]; + if (_handlers[event]) { + a = []; + for (j = 0, j_end = _handlers[event].length; j !== j_end; j += 1) + if (_handlers[event][j].handler !== handler) + a.push(_handlers[event][j]); + + _handlers[event] = a; + } + + if (_handlers[event] && _handlers[event].length === 0) + delete _handlers[event]; + } + } else + for (i = 0, i_end = eArray.length; i !== i_end; i += 1) + delete _handlers[eArray[i]]; + } + + /** + * Executes each handler bound to the event. + * + * @param {string} events The name of the event (or the events separated + * by spaces). + * @param {?Object} data The content of the event (optional). + * @return {Object} Returns conrad. + */ + function _dispatch(events, data) { + var i, + j, + i_end, + j_end, + event, + eventName, + eArray = Array.isArray(events) ? + events : + events.split(/ /); + + data = data === undefined ? {} : data; + + for (i = 0, i_end = eArray.length; i !== i_end; i += 1) { + eventName = eArray[i]; + + if (_handlers[eventName]) { + event = { + type: eventName, + data: data || {} + }; + + for (j = 0, j_end = _handlers[eventName].length; j !== j_end; j += 1) + try { + _handlers[eventName][j].handler(event); + } catch (e) {} + } + } + } + + /** + * Executes the most prioritary job once, and deals with filling the stats + * (done, time, averageTime, currentTime, etc...). + * + * @return {?Object} Returns the job object if it has to be killed, null else. + */ + function _executeFirstJob() { + var i, + l, + test, + kill, + pushed = false, + time = __dateNow(), + job = _sortedByPriorityJobs.shift(); + + // Execute the job and look at the result: + test = job.job(); + + // Deal with stats: + time = __dateNow() - time; + job.done++; + job.time += time; + job.currentTime += time; + job.weightTime = job.currentTime / (job.weight || 1); + job.averageTime = job.time / job.done; + + // Check if the job has to be killed: + kill = job.count ? (job.count <= job.done) : !test; + + // Reset priorities: + if (!kill) { + for (i = 0, l = _sortedByPriorityJobs.length; i < l; i++) + if (_sortedByPriorityJobs[i].weightTime > job.weightTime) { + _sortedByPriorityJobs.splice(i, 0, job); + pushed = true; + break; + } + + if (!pushed) + _sortedByPriorityJobs.push(job); + } + + return kill ? job : null; + } + + /** + * Activates a job, by adding it to the _runningJobs object and the + * _sortedByPriorityJobs array. It also initializes its currentTime value. + * + * @param {Object} job The job to activate. + */ + function _activateJob(job) { + var l = _sortedByPriorityJobs.length; + + // Add the job to the running jobs: + _runningJobs[job.id] = job; + job.status = 'running'; + + // Add the job to the priorities: + if (l) { + job.weightTime = _sortedByPriorityJobs[l - 1].weightTime; + job.currentTime = job.weightTime * (job.weight || 1); + } + + // Initialize the job and dispatch: + job.startTime = __dateNow(); + _dispatch('jobStarted', __clone(job)); + + _sortedByPriorityJobs.push(job); + } + + /** + * The main loop of conrad.js: + * . It executes job such that they all occupate the same processing time. + * . It stops jobs that do not need to be executed anymore. + * . It triggers callbacks when it is relevant. + * . It starts waiting jobs when they need to be started. + * . It injects frames to keep a constant frapes per second ratio. + * . It stops itself when there are no more jobs to execute. + */ + function _loop() { + var k, + o, + l, + job, + time, + deadJob; + + // Deal with the newly added jobs (the _jobs object): + for (k in _jobs) { + job = _jobs[k]; + + if (job.after) + _waitingJobs[k] = job; + else + _activateJob(job); + + delete _jobs[k]; + } + + // Set the _isRunning flag to false if there are no running job: + _isRunning = !!_sortedByPriorityJobs.length; + + // Deal with the running jobs (the _runningJobs object): + while ( + _sortedByPriorityJobs.length && + __dateNow() - _lastFrameTime < _parameters.frameDuration + ) { + deadJob = _executeFirstJob(); + + // Deal with the case where the job has ended: + if (deadJob) { + _killJob(deadJob.id); + + // Check for waiting jobs: + for (k in _waitingJobs) + if (_waitingJobs[k].after === deadJob.id) { + _activateJob(_waitingJobs[k]); + delete _waitingJobs[k]; + } + } + } + + // Check if conrad still has jobs to deal with, and kill it if not: + if (_isRunning) { + // Update the _lastFrameTime: + _lastFrameTime = __dateNow(); + + _dispatch('enterFrame'); + setTimeout(_loop, 0); + } else + _dispatch('stop'); + } + + /** + * Adds one or more jobs, and starts the loop if no job was running before. A + * job is at least a unique string "id" and a function, and there are some + * parameters that you can specify for each job to modify the way conrad will + * execute it. If a job is added with the "id" of another job that is waiting + * or still running, an error will be thrown. + * + * When a job is added, it is referenced in the _jobs object, by its id. + * Then, if it has to be executed right now, it will be also referenced in + * the _runningJobs object. If it has to wait, then it will be added into the + * _waitingJobs object, until it can start. + * + * Keep reading this documentation to see how to call this method. + * + * @return {Object} Returns conrad. + * + * Adding one job: + * *************** + * Basically, a job is defined by its string id and a function (the job). It + * is also possible to add some parameters: + * + * > conrad.addJob('myJobId', myJobFunction); + * > conrad.addJob('myJobId', { + * > job: myJobFunction, + * > someParameter: someValue + * > }); + * > conrad.addJob({ + * > id: 'myJobId', + * > job: myJobFunction, + * > someParameter: someValue + * > }); + * + * Adding several jobs: + * ******************** + * When adding several jobs at the same time, it is possible to specify + * parameters for each one individually or for all: + * + * > conrad.addJob([ + * > { + * > id: 'myJobId1', + * > job: myJobFunction1, + * > someParameter1: someValue1 + * > }, + * > { + * > id: 'myJobId2', + * > job: myJobFunction2, + * > someParameter2: someValue2 + * > } + * > ], { + * > someCommonParameter: someCommonValue + * > }); + * > conrad.addJob({ + * > myJobId1: {, + * > job: myJobFunction1, + * > someParameter1: someValue1 + * > }, + * > myJobId2: {, + * > job: myJobFunction2, + * > someParameter2: someValue2 + * > } + * > }, { + * > someCommonParameter: someCommonValue + * > }); + * > conrad.addJob({ + * > myJobId1: myJobFunction1, + * > myJobId2: myJobFunction2 + * > }, { + * > someCommonParameter: someCommonValue + * > }); + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters: + * + * {?Function} end A callback to execute when the job is ended. It is + * not executed if the job is killed instead of ended + * "naturally". + * {?Integer} count The number of time the job has to be executed. + * {?Number} weight If specified, the job will be executed as it was + * added "weight" times. + * {?String} after The id of another job (eventually not added yet). + * If specified, this job will start only when the + * specified "after" job is ended. + */ + function _addJob(v1, v2) { + var i, + l, + o; + + // Array of jobs: + if (Array.isArray(v1)) { + // Keep conrad to start until the last job is added: + _noStart = true; + + for (i = 0, l = v1.length; i < l; i++) + _addJob(v1[i].id, __extend(v1[i], v2)); + + _noStart = false; + if (!_isRunning) { + // Update the _lastFrameTime: + _lastFrameTime = __dateNow(); + + _dispatch('start'); + _loop(); + } + } else if (typeof v1 === 'object') { + // One job (object): + if (typeof v1.id === 'string') + _addJob(v1.id, v1); + + // Hash of jobs: + else { + // Keep conrad to start until the last job is added: + _noStart = true; + + for (i in v1) + if (typeof v1[i] === 'function') + _addJob(i, __extend({ + job: v1[i] + }, v2)); + else + _addJob(i, __extend(v1[i], v2)); + + _noStart = false; + if (!_isRunning) { + // Update the _lastFrameTime: + _lastFrameTime = __dateNow(); + + _dispatch('start'); + _loop(); + } + } + + // One job (string, *): + } else if (typeof v1 === 'string') { + if (_hasJob(v1)) + throw new Error( + '[conrad.addJob] Job with id "' + v1 + '" already exists.' + ); + + // One job (string, function): + if (typeof v2 === 'function') { + o = { + id: v1, + done: 0, + time: 0, + status: 'waiting', + currentTime: 0, + averageTime: 0, + weightTime: 0, + job: v2 + }; + + // One job (string, object): + } else if (typeof v2 === 'object') { + o = __extend( + { + id: v1, + done: 0, + time: 0, + status: 'waiting', + currentTime: 0, + averageTime: 0, + weightTime: 0 + }, + v2 + ); + + // If none of those cases, throw an error: + } else + throw new Error('[conrad.addJob] Wrong arguments.'); + + // Effectively add the job: + _jobs[v1] = o; + _dispatch('jobAdded', __clone(o)); + + // Check if the loop has to be started: + if (!_isRunning && !_noStart) { + // Update the _lastFrameTime: + _lastFrameTime = __dateNow(); + + _dispatch('start'); + _loop(); + } + + // If none of those cases, throw an error: + } else + throw new Error('[conrad.addJob] Wrong arguments.'); + + return this; + } + + /** + * Kills one or more jobs, indicated by their ids. It is only possible to + * kill running jobs or waiting jobs. If you try to kill a job that does not + * exist or that is already killed, a warning will be thrown. + * + * @param {Array|String} v1 A string job id or an array of job ids. + * @return {Object} Returns conrad. + */ + function _killJob(v1) { + var i, + l, + k, + a, + job, + found = false; + + // Array of job ids: + if (Array.isArray(v1)) + for (i = 0, l = v1.length; i < l; i++) + _killJob(v1[i]); + + // One job's id: + else if (typeof v1 === 'string') { + a = [_runningJobs, _waitingJobs, _jobs]; + + // Remove the job from the hashes: + for (i = 0, l = a.length; i < l; i++) + if (v1 in a[i]) { + job = a[i][v1]; + + if (_parameters.history) { + job.status = 'done'; + _doneJobs.push(job); + } + + _dispatch('jobEnded', __clone(job)); + delete a[i][v1]; + + if (typeof job.end === 'function') + job.end(); + + found = true; + } + + // Remove the priorities array: + a = _sortedByPriorityJobs; + for (i = 0, l = a.length; i < l; i++) + if (a[i].id === v1) { + a.splice(i, 1); + break; + } + + if (!found) + throw new Error('[conrad.killJob] Job "' + v1 + '" not found.'); + + // If none of those cases, throw an error: + } else + throw new Error('[conrad.killJob] Wrong arguments.'); + + return this; + } + + /** + * Kills every running, waiting, and just added jobs. + * + * @return {Object} Returns conrad. + */ + function _killAll() { + var k, + jobs = __extend(_jobs, _runningJobs, _waitingJobs); + + // Take every jobs and push them into the _doneJobs object: + if (_parameters.history) + for (k in jobs) { + jobs[k].status = 'done'; + _doneJobs.push(jobs[k]); + + if (typeof jobs[k].end === 'function') + jobs[k].end(); + } + + // Reinitialize the different jobs lists: + _jobs = {}; + _waitingJobs = {}; + _runningJobs = {}; + _sortedByPriorityJobs = []; + + // In case some jobs are added right after the kill: + _isRunning = false; + + return this; + } + + /** + * Returns true if a job with the specified id is currently running or + * waiting, and false else. + * + * @param {String} id The id of the job. + * @return {?Object} Returns the job object if it exists. + */ + function _hasJob(id) { + var job = _jobs[id] || _runningJobs[id] || _waitingJobs[id]; + return job ? __extend(job) : null; + } + + /** + * This method will set the setting specified by "v1" to the value specified + * by "v2" if both are given, and else return the current value of the + * settings "v1". + * + * @param {String} v1 The name of the property. + * @param {?*} v2 Eventually, a value to set to the specified + * property. + * @return {Object|*} Returns the specified settings value if "v2" is not + * given, and conrad else. + */ + function _settings(v1, v2) { + var o; + + if (typeof a1 === 'string' && arguments.length === 1) + return _parameters[a1]; + else { + o = (typeof a1 === 'object' && arguments.length === 1) ? + a1 || {} : + {}; + if (typeof a1 === 'string') + o[a1] = a2; + + for (var k in o) + if (o[k] !== undefined) + _parameters[k] = o[k]; + else + delete _parameters[k]; + + return this; + } + } + + /** + * Returns true if conrad is currently running, and false else. + * + * @return {Boolean} Returns _isRunning. + */ + function _getIsRunning() { + return _isRunning; + } + + /** + * Unreference every job that is stored in the _doneJobs object. It will + * not be possible anymore to get stats about these jobs, but it will release + * the memory. + * + * @return {Object} Returns conrad. + */ + function _clearHistory() { + _doneJobs = []; + return this; + } + + /** + * Returns a snapshot of every data about jobs that wait to be started, are + * currently running or are done. + * + * It is possible to get only running, waiting or done jobs by giving + * "running", "waiting" or "done" as fist argument. + * + * It is also possible to get every job with a specified id by giving it as + * first argument. Also, using a RegExp instead of an id will return every + * jobs whose ids match the RegExp. And these two last use cases work as well + * by giving before "running", "waiting" or "done". + * + * @return {Array} The array of the matching jobs. + * + * Some call examples: + * ******************* + * > conrad.getStats('running') + * > conrad.getStats('waiting') + * > conrad.getStats('done') + * > conrad.getStats('myJob') + * > conrad.getStats(/test/) + * > conrad.getStats('running', 'myRunningJob') + * > conrad.getStats('running', /test/) + */ + function _getStats(v1, v2) { + var a, + k, + i, + l, + stats, + pattern, + isPatternString; + + if (!arguments.length) { + stats = []; + + for (k in _jobs) + stats.push(_jobs[k]); + + for (k in _waitingJobs) + stats.push(_waitingJobs[k]); + + for (k in _runningJobs) + stats.push(_runningJobs[k]); + + stats = stats.concat(_doneJobs); + } + + if (typeof v1 === 'string') + switch (v1) { + case 'waiting': + stats = __objectValues(_waitingJobs); + break; + case 'running': + stats = __objectValues(_runningJobs); + break; + case 'done': + stats = _doneJobs; + break; + default: + pattern = v1; + } + + if (v1 instanceof RegExp) + pattern = v1; + + if (!pattern && (typeof v2 === 'string' || v2 instanceof RegExp)) + pattern = v2; + + // Filter jobs if a pattern is given: + if (pattern) { + isPatternString = typeof pattern === 'string'; + + if (stats instanceof Array) { + a = stats; + } else if (typeof stats === 'object') { + a = []; + + for (k in stats) + a = a.concat(stats[k]); + } else { + a = []; + + for (k in _jobs) + a.push(_jobs[k]); + + for (k in _waitingJobs) + a.push(_waitingJobs[k]); + + for (k in _runningJobs) + a.push(_runningJobs[k]); + + a = a.concat(_doneJobs); + } + + stats = []; + for (i = 0, l = a.length; i < l; i++) + if (isPatternString ? a[i].id === pattern : a[i].id.match(pattern)) + stats.push(a[i]); + } + + return __clone(stats); + } + + + /** + * TOOLS FUNCTIONS: + * **************** + */ + + /** + * This function takes any number of objects as arguments, copies from each + * of these objects each pair key/value into a new object, and finally + * returns this object. + * + * The arguments are parsed from the last one to the first one, such that + * when two objects have keys in common, the "earliest" object wins. + * + * Example: + * ******** + * > var o1 = { + * > a: 1, + * > b: 2, + * > c: '3' + * > }, + * > o2 = { + * > c: '4', + * > d: [ 5 ] + * > }; + * > __extend(o1, o2); + * > // Returns: { + * > // a: 1, + * > // b: 2, + * > // c: '3', + * > // d: [ 5 ] + * > // }; + * + * @param {Object+} Any number of objects. + * @return {Object} The merged object. + */ + function __extend() { + var i, + k, + res = {}, + l = arguments.length; + + for (i = l - 1; i >= 0; i--) + for (k in arguments[i]) + res[k] = arguments[i][k]; + + return res; + } + + /** + * This function simply clones an object. This object must contain only + * objects, arrays and immutable values. Since it is not public, it does not + * deal with cyclic references, DOM elements and instantiated objects - so + * use it carefully. + * + * @param {Object} The object to clone. + * @return {Object} The clone. + */ + function __clone(item) { + var result, i, k, l; + + if (!item) + return item; + + if (Array.isArray(item)) { + result = []; + for (i = 0, l = item.length; i < l; i++) + result.push(__clone(item[i])); + } else if (typeof item === 'object') { + result = {}; + for (i in item) + result[i] = __clone(item[i]); + } else + result = item; + + return result; + } + + /** + * Returns an array containing the values of an object. + * + * @param {Object} The object. + * @return {Array} The array of values. + */ + function __objectValues(o) { + var k, + a = []; + + for (k in o) + a.push(o[k]); + + return a; + } + + /** + * A short "Date.now()" polyfill. + * + * @return {Number} The current time (in ms). + */ + function __dateNow() { + return Date.now ? Date.now() : new Date().getTime(); + } + + /** + * Polyfill for the Array.isArray function: + */ + if (!Array.isArray) + Array.isArray = function(v) { + return Object.prototype.toString.call(v) === '[object Array]'; + }; + + + /** + * EXPORT PUBLIC API: + * ****************** + */ + var conrad = { + hasJob: _hasJob, + addJob: _addJob, + killJob: _killJob, + killAll: _killAll, + settings: _settings, + getStats: _getStats, + isRunning: _getIsRunning, + clearHistory: _clearHistory, + + // Events management: + bind: _bind, + unbind: _unbind, + + // Version: + version: '0.1.0' + }; + + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = conrad; + exports.conrad = conrad; + } + global.conrad = conrad; +})(this); diff --git a/sigma.js-1.2.0/src/middlewares/sigma.middlewares.copy.js b/sigma.js-1.2.0/src/middlewares/sigma.middlewares.copy.js new file mode 100644 index 0000000..8f1b2a9 --- /dev/null +++ b/sigma.js-1.2.0/src/middlewares/sigma.middlewares.copy.js @@ -0,0 +1,35 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.middlewares'); + + /** + * This middleware will just copy the graphic properties. + * + * @param {?string} readPrefix The read prefix. + * @param {?string} writePrefix The write prefix. + */ + sigma.middlewares.copy = function(readPrefix, writePrefix) { + var i, + l, + a; + + if (writePrefix + '' === readPrefix + '') + return; + + a = this.graph.nodes(); + for (i = 0, l = a.length; i < l; i++) { + a[i][writePrefix + 'x'] = a[i][readPrefix + 'x']; + a[i][writePrefix + 'y'] = a[i][readPrefix + 'y']; + a[i][writePrefix + 'size'] = a[i][readPrefix + 'size']; + } + + a = this.graph.edges(); + for (i = 0, l = a.length; i < l; i++) + a[i][writePrefix + 'size'] = a[i][readPrefix + 'size']; + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/middlewares/sigma.middlewares.rescale.js b/sigma.js-1.2.0/src/middlewares/sigma.middlewares.rescale.js new file mode 100644 index 0000000..85460ec --- /dev/null +++ b/sigma.js-1.2.0/src/middlewares/sigma.middlewares.rescale.js @@ -0,0 +1,189 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.middlewares'); + sigma.utils.pkg('sigma.utils'); + + /** + * This middleware will rescale the graph such that it takes an optimal space + * on the renderer. + * + * As each middleware, this function is executed in the scope of the sigma + * instance. + * + * @param {?string} readPrefix The read prefix. + * @param {?string} writePrefix The write prefix. + * @param {object} options The parameters. + */ + sigma.middlewares.rescale = function(readPrefix, writePrefix, options) { + var i, + l, + a, + b, + c, + d, + scale, + margin, + n = this.graph.nodes(), + e = this.graph.edges(), + settings = this.settings.embedObjects(options || {}), + bounds = settings('bounds') || sigma.utils.getBoundaries( + this.graph, + readPrefix, + true + ), + minX = bounds.minX, + minY = bounds.minY, + maxX = bounds.maxX, + maxY = bounds.maxY, + sizeMax = bounds.sizeMax, + weightMax = bounds.weightMax, + w = settings('width') || 1, + h = settings('height') || 1, + rescaleSettings = settings('autoRescale'), + validSettings = { + nodePosition: 1, + nodeSize: 1, + edgeSize: 1 + }; + + /** + * What elements should we rescale? + */ + if (!(rescaleSettings instanceof Array)) + rescaleSettings = ['nodePosition', 'nodeSize', 'edgeSize']; + + for (i = 0, l = rescaleSettings.length; i < l; i++) + if (!validSettings[rescaleSettings[i]]) + throw new Error( + 'The rescale setting "' + rescaleSettings[i] + '" is not recognized.' + ); + + var np = ~rescaleSettings.indexOf('nodePosition'), + ns = ~rescaleSettings.indexOf('nodeSize'), + es = ~rescaleSettings.indexOf('edgeSize'); + + /** + * First, we compute the scaling ratio, without considering the sizes + * of the nodes : Each node will have its center in the canvas, but might + * be partially out of it. + */ + scale = settings('scalingMode') === 'outside' ? + Math.max( + w / Math.max(maxX - minX, 1), + h / Math.max(maxY - minY, 1) + ) : + Math.min( + w / Math.max(maxX - minX, 1), + h / Math.max(maxY - minY, 1) + ); + + /** + * Then, we correct that scaling ratio considering a margin, which is + * basically the size of the biggest node. + * This has to be done as a correction since to compare the size of the + * biggest node to the X and Y values, we have to first get an + * approximation of the scaling ratio. + **/ + margin = + ( + settings('rescaleIgnoreSize') ? + 0 : + (settings('maxNodeSize') || sizeMax) / scale + ) + + (settings('sideMargin') || 0); + maxX += margin; + minX -= margin; + maxY += margin; + minY -= margin; + + // Fix the scaling with the new extrema: + scale = settings('scalingMode') === 'outside' ? + Math.max( + w / Math.max(maxX - minX, 1), + h / Math.max(maxY - minY, 1) + ) : + Math.min( + w / Math.max(maxX - minX, 1), + h / Math.max(maxY - minY, 1) + ); + + // Size homothetic parameters: + if (!settings('maxNodeSize') && !settings('minNodeSize')) { + a = 1; + b = 0; + } else if (settings('maxNodeSize') === settings('minNodeSize')) { + a = 0; + b = +settings('maxNodeSize'); + } else { + a = (settings('maxNodeSize') - settings('minNodeSize')) / sizeMax; + b = +settings('minNodeSize'); + } + + if (!settings('maxEdgeSize') && !settings('minEdgeSize')) { + c = 1; + d = 0; + } else if (settings('maxEdgeSize') === settings('minEdgeSize')) { + c = 0; + d = +settings('minEdgeSize'); + } else { + c = (settings('maxEdgeSize') - settings('minEdgeSize')) / weightMax; + d = +settings('minEdgeSize'); + } + + // Rescale the nodes and edges: + for (i = 0, l = e.length; i < l; i++) + e[i][writePrefix + 'size'] = + e[i][readPrefix + 'size'] * (es ? c : 1) + (es ? d : 0); + + for (i = 0, l = n.length; i < l; i++) { + n[i][writePrefix + 'size'] = + n[i][readPrefix + 'size'] * (ns ? a : 1) + (ns ? b : 0); + n[i][writePrefix + 'x'] = + (n[i][readPrefix + 'x'] - (maxX + minX) / 2) * (np ? scale : 1); + n[i][writePrefix + 'y'] = + (n[i][readPrefix + 'y'] - (maxY + minY) / 2) * (np ? scale : 1); + } + }; + + sigma.utils.getBoundaries = function(graph, prefix, doEdges) { + var i, + l, + e = graph.edges(), + n = graph.nodes(), + weightMax = -Infinity, + sizeMax = -Infinity, + minX = Infinity, + minY = Infinity, + maxX = -Infinity, + maxY = -Infinity; + + if (doEdges) + for (i = 0, l = e.length; i < l; i++) + weightMax = Math.max(e[i][prefix + 'size'], weightMax); + + for (i = 0, l = n.length; i < l; i++) { + sizeMax = Math.max(n[i][prefix + 'size'], sizeMax); + maxX = Math.max(n[i][prefix + 'x'], maxX); + minX = Math.min(n[i][prefix + 'x'], minX); + maxY = Math.max(n[i][prefix + 'y'], maxY); + minY = Math.min(n[i][prefix + 'y'], minY); + } + + weightMax = weightMax || 1; + sizeMax = sizeMax || 1; + + return { + weightMax: weightMax, + sizeMax: sizeMax, + minX: minX, + minY: minY, + maxX: maxX, + maxY: maxY + }; + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/misc/sigma.misc.animation.js b/sigma.js-1.2.0/src/misc/sigma.misc.animation.js new file mode 100644 index 0000000..299f00f --- /dev/null +++ b/sigma.js-1.2.0/src/misc/sigma.misc.animation.js @@ -0,0 +1,239 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.misc.animation.running'); + + /** + * Generates a unique ID for the animation. + * + * @return {string} Returns the new ID. + */ + var _getID = (function() { + var id = 0; + return function() { + return '' + (++id); + }; + })(); + + /** + * This function animates a camera. It has to be called with the camera to + * animate, the values of the coordinates to reach and eventually some + * options. It returns a number id, that you can use to kill the animation, + * with the method sigma.misc.animation.kill(id). + * + * The available options are: + * + * {?number} duration The duration of the animation. + * {?function} onNewFrame A callback to execute when the animation + * enter a new frame. + * {?function} onComplete A callback to execute when the animation + * is completed or killed. + * {?(string|function)} easing The name of a function from the package + * sigma.utils.easings, or a custom easing + * function. + * + * @param {camera} camera The camera to animate. + * @param {object} target The coordinates to reach. + * @param {?object} options Eventually an object to specify some options to + * the function. The available options are + * presented in the description of the function. + * @return {number} The animation id, to make it easy to kill + * through the method "sigma.misc.animation.kill". + */ + sigma.misc.animation.camera = function(camera, val, options) { + if ( + !(camera instanceof sigma.classes.camera) || + typeof val !== 'object' || + !val + ) + throw 'animation.camera: Wrong arguments.'; + + if ( + typeof val.x !== 'number' && + typeof val.y !== 'number' && + typeof val.ratio !== 'number' && + typeof val.angle !== 'number' + ) + throw 'There must be at least one valid coordinate in the given val.'; + + var fn, + id, + anim, + easing, + duration, + initialVal, + o = options || {}, + start = sigma.utils.dateNow(); + + // Store initial values: + initialVal = { + x: camera.x, + y: camera.y, + ratio: camera.ratio, + angle: camera.angle + }; + + duration = o.duration; + easing = typeof o.easing !== 'function' ? + sigma.utils.easings[o.easing || 'quadraticInOut'] : + o.easing; + + fn = function() { + var coef, + t = o.duration ? (sigma.utils.dateNow() - start) / o.duration : 1; + + // If the animation is over: + if (t >= 1) { + camera.isAnimated = false; + camera.goTo({ + x: val.x !== undefined ? val.x : initialVal.x, + y: val.y !== undefined ? val.y : initialVal.y, + ratio: val.ratio !== undefined ? val.ratio : initialVal.ratio, + angle: val.angle !== undefined ? val.angle : initialVal.angle + }); + + cancelAnimationFrame(id); + delete sigma.misc.animation.running[id]; + + // Check callbacks: + if (typeof o.onComplete === 'function') + o.onComplete(); + + // Else, let's keep going: + } else { + coef = easing(t); + camera.isAnimated = true; + camera.goTo({ + x: val.x !== undefined ? + initialVal.x + (val.x - initialVal.x) * coef : + initialVal.x, + y: val.y !== undefined ? + initialVal.y + (val.y - initialVal.y) * coef : + initialVal.y, + ratio: val.ratio !== undefined ? + initialVal.ratio + (val.ratio - initialVal.ratio) * coef : + initialVal.ratio, + angle: val.angle !== undefined ? + initialVal.angle + (val.angle - initialVal.angle) * coef : + initialVal.angle + }); + + // Check callbacks: + if (typeof o.onNewFrame === 'function') + o.onNewFrame(); + + anim.frameId = requestAnimationFrame(fn); + } + }; + + id = _getID(); + anim = { + frameId: requestAnimationFrame(fn), + target: camera, + type: 'camera', + options: o, + fn: fn + }; + sigma.misc.animation.running[id] = anim; + + return id; + }; + + /** + * Kills a running animation. It triggers the eventual onComplete callback. + * + * @param {number} id The id of the animation to kill. + * @return {object} Returns the sigma.misc.animation package. + */ + sigma.misc.animation.kill = function(id) { + if (arguments.length !== 1 || typeof id !== 'number') + throw 'animation.kill: Wrong arguments.'; + + var o = sigma.misc.animation.running[id]; + + if (o) { + cancelAnimationFrame(id); + delete sigma.misc.animation.running[o.frameId]; + + if (o.type === 'camera') + o.target.isAnimated = false; + + // Check callbacks: + if (typeof (o.options || {}).onComplete === 'function') + o.options.onComplete(); + } + + return this; + }; + + /** + * Kills every running animations, or only the one with the specified type, + * if a string parameter is given. + * + * @param {?(string|object)} filter A string to filter the animations to kill + * on their type (example: "camera"), or an + * object to filter on their target. + * @return {number} Returns the number of animations killed + * that way. + */ + sigma.misc.animation.killAll = function(filter) { + var o, + id, + count = 0, + type = typeof filter === 'string' ? filter : null, + target = typeof filter === 'object' ? filter : null, + running = sigma.misc.animation.running; + + for (id in running) + if ( + (!type || running[id].type === type) && + (!target || running[id].target === target) + ) { + o = sigma.misc.animation.running[id]; + cancelAnimationFrame(o.frameId); + delete sigma.misc.animation.running[id]; + + if (o.type === 'camera') + o.target.isAnimated = false; + + // Increment counter: + count++; + + // Check callbacks: + if (typeof (o.options || {}).onComplete === 'function') + o.options.onComplete(); + } + + return count; + }; + + /** + * Returns "true" if any animation that is currently still running matches + * the filter given to the function. + * + * @param {string|object} filter A string to filter the animations to kill + * on their type (example: "camera"), or an + * object to filter on their target. + * @return {boolean} Returns true if any running animation + * matches. + */ + sigma.misc.animation.has = function(filter) { + var id, + type = typeof filter === 'string' ? filter : null, + target = typeof filter === 'object' ? filter : null, + running = sigma.misc.animation.running; + + for (id in running) + if ( + (!type || running[id].type === type) && + (!target || running[id].target === target) + ) + return true; + + return false; + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/misc/sigma.misc.bindDOMEvents.js b/sigma.js-1.2.0/src/misc/sigma.misc.bindDOMEvents.js new file mode 100644 index 0000000..1e758e8 --- /dev/null +++ b/sigma.js-1.2.0/src/misc/sigma.misc.bindDOMEvents.js @@ -0,0 +1,156 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.misc'); + + /** + * This helper will bind any DOM renderer (for instance svg) + * to its captors, to properly dispatch the good events to the sigma instance + * to manage clicking, hovering etc... + * + * It has to be called in the scope of the related renderer. + */ + sigma.misc.bindDOMEvents = function(container) { + var self = this, + graph = this.graph; + + // DOMElement abstraction + function Element(domElement) { + + // Helpers + this.attr = function(attrName) { + return domElement.getAttributeNS(null, attrName); + }; + + // Properties + this.tag = domElement.tagName; + this.class = this.attr('class'); + this.id = this.attr('id'); + + // Methods + this.isNode = function() { + return !!~this.class.indexOf(self.settings('classPrefix') + '-node'); + }; + + this.isEdge = function() { + return !!~this.class.indexOf(self.settings('classPrefix') + '-edge'); + }; + + this.isHover = function() { + return !!~this.class.indexOf(self.settings('classPrefix') + '-hover'); + }; + } + + // Click + function click(e) { + if (!self.settings('eventsEnabled')) + return; + + // Generic event + self.dispatchEvent('click', e); + + // Are we on a node? + var element = new Element(e.target); + + if (element.isNode()) + self.dispatchEvent('clickNode', { + node: graph.nodes(element.attr('data-node-id')) + }); + else + self.dispatchEvent('clickStage'); + + e.preventDefault(); + e.stopPropagation(); + } + + // Double click + function doubleClick(e) { + if (!self.settings('eventsEnabled')) + return; + + // Generic event + self.dispatchEvent('doubleClick', e); + + // Are we on a node? + var element = new Element(e.target); + + if (element.isNode()) + self.dispatchEvent('doubleClickNode', { + node: graph.nodes(element.attr('data-node-id')) + }); + else + self.dispatchEvent('doubleClickStage'); + + e.preventDefault(); + e.stopPropagation(); + } + + // On over + function onOver(e) { + var target = e.toElement || e.target; + + if (!self.settings('eventsEnabled') || !target) + return; + + var el = new Element(target); + + if (el.isNode()) { + self.dispatchEvent('overNode', { + node: graph.nodes(el.attr('data-node-id')) + }); + } + else if (el.isEdge()) { + var edge = graph.edges(el.attr('data-edge-id')); + self.dispatchEvent('overEdge', { + edge: edge, + source: graph.nodes(edge.source), + target: graph.nodes(edge.target) + }); + } + } + + // On out + function onOut(e) { + var target = e.fromElement || e.originalTarget; + + if (!self.settings('eventsEnabled')) + return; + + var el = new Element(target); + + if (el.isNode()) { + self.dispatchEvent('outNode', { + node: graph.nodes(el.attr('data-node-id')) + }); + } + else if (el.isEdge()) { + var edge = graph.edges(el.attr('data-edge-id')); + self.dispatchEvent('outEdge', { + edge: edge, + source: graph.nodes(edge.source), + target: graph.nodes(edge.target) + }); + } + } + + // Registering Events: + + // Click + container.addEventListener('click', click, false); + sigma.utils.doubleClick(container, 'click', doubleClick); + + // Touch counterparts + container.addEventListener('touchstart', click, false); + sigma.utils.doubleClick(container, 'touchstart', doubleClick); + + // Mouseover + container.addEventListener('mouseover', onOver, true); + + // Mouseout + container.addEventListener('mouseout', onOut, true); + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/misc/sigma.misc.bindEvents.js b/sigma.js-1.2.0/src/misc/sigma.misc.bindEvents.js new file mode 100644 index 0000000..e87ad02 --- /dev/null +++ b/sigma.js-1.2.0/src/misc/sigma.misc.bindEvents.js @@ -0,0 +1,509 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.misc'); + + /** + * This helper will bind any no-DOM renderer (for instance canvas or WebGL) + * to its captors, to properly dispatch the good events to the sigma instance + * to manage clicking, hovering etc... + * + * It has to be called in the scope of the related renderer. + */ + sigma.misc.bindEvents = function(prefix) { + var i, + l, + mX, + mY, + captor, + self = this; + + function getNodes(e) { + if (e) { + mX = 'x' in e.data ? e.data.x : mX; + mY = 'y' in e.data ? e.data.y : mY; + } + + var i, + j, + l, + n, + x, + y, + s, + inserted, + selected = [], + modifiedX = mX + self.width / 2, + modifiedY = mY + self.height / 2, + point = self.camera.cameraPosition( + mX, + mY + ), + nodes = self.camera.quadtree.point( + point.x, + point.y + ); + + if (nodes.length) + for (i = 0, l = nodes.length; i < l; i++) { + n = nodes[i]; + x = n[prefix + 'x']; + y = n[prefix + 'y']; + s = n[prefix + 'size']; + + if ( + !n.hidden && + modifiedX > x - s && + modifiedX < x + s && + modifiedY > y - s && + modifiedY < y + s && + Math.sqrt( + Math.pow(modifiedX - x, 2) + + Math.pow(modifiedY - y, 2) + ) < s + ) { + // Insert the node: + inserted = false; + + for (j = 0; j < selected.length; j++) + if (n.size > selected[j].size) { + selected.splice(j, 0, n); + inserted = true; + break; + } + + if (!inserted) + selected.push(n); + } + } + + return selected; + } + + + function getEdges(e) { + if (!self.settings('enableEdgeHovering')) { + // No event if the setting is off: + return []; + } + + var isCanvas = ( + sigma.renderers.canvas && self instanceof sigma.renderers.canvas); + + if (!isCanvas) { + // A quick hardcoded rule to prevent people from using this feature + // with the WebGL renderer (which is not good enough at the moment): + throw new Error( + 'The edge events feature is not compatible with the WebGL renderer' + ); + } + + if (e) { + mX = 'x' in e.data ? e.data.x : mX; + mY = 'y' in e.data ? e.data.y : mY; + } + + var i, + j, + l, + a, + edge, + s, + maxEpsilon = self.settings('edgeHoverPrecision'), + source, + target, + cp, + nodeIndex = {}, + inserted, + selected = [], + modifiedX = mX + self.width / 2, + modifiedY = mY + self.height / 2, + point = self.camera.cameraPosition( + mX, + mY + ), + edges = []; + + if (isCanvas) { + var nodesOnScreen = self.camera.quadtree.area( + self.camera.getRectangle(self.width, self.height) + ); + for (a = nodesOnScreen, i = 0, l = a.length; i < l; i++) + nodeIndex[a[i].id] = a[i]; + } + + if (self.camera.edgequadtree !== undefined) { + edges = self.camera.edgequadtree.point( + point.x, + point.y + ); + } + + function insertEdge(selected, edge) { + inserted = false; + + for (j = 0; j < selected.length; j++) + if (edge.size > selected[j].size) { + selected.splice(j, 0, edge); + inserted = true; + break; + } + + if (!inserted) + selected.push(edge); + } + + if (edges.length) + for (i = 0, l = edges.length; i < l; i++) { + edge = edges[i]; + source = self.graph.nodes(edge.source); + target = self.graph.nodes(edge.target); + // (HACK) we can't get edge[prefix + 'size'] on WebGL renderer: + s = edge[prefix + 'size'] || + edge['read_' + prefix + 'size']; + + // First, let's identify which edges are drawn. To do this, we keep + // every edges that have at least one extremity displayed according to + // the quadtree and the "hidden" attribute. We also do not keep hidden + // edges. + // Then, let's check if the mouse is on the edge (we suppose that it + // is a line segment). + + if ( + !edge.hidden && + !source.hidden && !target.hidden && + (!isCanvas || + (nodeIndex[edge.source] || nodeIndex[edge.target])) && + sigma.utils.getDistance( + source[prefix + 'x'], + source[prefix + 'y'], + modifiedX, + modifiedY) > source[prefix + 'size'] && + sigma.utils.getDistance( + target[prefix + 'x'], + target[prefix + 'y'], + modifiedX, + modifiedY) > target[prefix + 'size'] + ) { + if (edge.type == 'curve' || edge.type == 'curvedArrow') { + if (source.id === target.id) { + cp = sigma.utils.getSelfLoopControlPoints( + source[prefix + 'x'], + source[prefix + 'y'], + source[prefix + 'size'] + ); + if ( + sigma.utils.isPointOnBezierCurve( + modifiedX, + modifiedY, + source[prefix + 'x'], + source[prefix + 'y'], + target[prefix + 'x'], + target[prefix + 'y'], + cp.x1, + cp.y1, + cp.x2, + cp.y2, + Math.max(s, maxEpsilon) + )) { + insertEdge(selected, edge); + } + } + else { + cp = sigma.utils.getQuadraticControlPoint( + source[prefix + 'x'], + source[prefix + 'y'], + target[prefix + 'x'], + target[prefix + 'y']); + if ( + sigma.utils.isPointOnQuadraticCurve( + modifiedX, + modifiedY, + source[prefix + 'x'], + source[prefix + 'y'], + target[prefix + 'x'], + target[prefix + 'y'], + cp.x, + cp.y, + Math.max(s, maxEpsilon) + )) { + insertEdge(selected, edge); + } + } + } else if ( + sigma.utils.isPointOnSegment( + modifiedX, + modifiedY, + source[prefix + 'x'], + source[prefix + 'y'], + target[prefix + 'x'], + target[prefix + 'y'], + Math.max(s, maxEpsilon) + )) { + insertEdge(selected, edge); + } + } + } + + return selected; + } + + + function bindCaptor(captor) { + var nodes, + edges, + overNodes = {}, + overEdges = {}; + + function onClick(e) { + if (!self.settings('eventsEnabled')) + return; + + self.dispatchEvent('click', e.data); + + nodes = getNodes(e); + edges = getEdges(e); + + if (nodes.length) { + self.dispatchEvent('clickNode', { + node: nodes[0], + captor: e.data + }); + self.dispatchEvent('clickNodes', { + node: nodes, + captor: e.data + }); + } else if (edges.length) { + self.dispatchEvent('clickEdge', { + edge: edges[0], + captor: e.data + }); + self.dispatchEvent('clickEdges', { + edge: edges, + captor: e.data + }); + } else + self.dispatchEvent('clickStage', {captor: e.data}); + } + + function onDoubleClick(e) { + if (!self.settings('eventsEnabled')) + return; + + self.dispatchEvent('doubleClick', e.data); + + nodes = getNodes(e); + edges = getEdges(e); + + if (nodes.length) { + self.dispatchEvent('doubleClickNode', { + node: nodes[0], + captor: e.data + }); + self.dispatchEvent('doubleClickNodes', { + node: nodes, + captor: e.data + }); + } else if (edges.length) { + self.dispatchEvent('doubleClickEdge', { + edge: edges[0], + captor: e.data + }); + self.dispatchEvent('doubleClickEdges', { + edge: edges, + captor: e.data + }); + } else + self.dispatchEvent('doubleClickStage', {captor: e.data}); + } + + function onRightClick(e) { + if (!self.settings('eventsEnabled')) + return; + + self.dispatchEvent('rightClick', e.data); + + nodes = getNodes(e); + edges = getEdges(e); + + if (nodes.length) { + self.dispatchEvent('rightClickNode', { + node: nodes[0], + captor: e.data + }); + self.dispatchEvent('rightClickNodes', { + node: nodes, + captor: e.data + }); + } else if (edges.length) { + self.dispatchEvent('rightClickEdge', { + edge: edges[0], + captor: e.data + }); + self.dispatchEvent('rightClickEdges', { + edge: edges, + captor: e.data + }); + } else + self.dispatchEvent('rightClickStage', {captor: e.data}); + } + + function onOut(e) { + if (!self.settings('eventsEnabled')) + return; + + var k, + i, + l, + le, + outNodes = [], + outEdges = []; + + for (k in overNodes) + outNodes.push(overNodes[k]); + + overNodes = {}; + // Dispatch both single and multi events: + for (i = 0, l = outNodes.length; i < l; i++) + self.dispatchEvent('outNode', { + node: outNodes[i], + captor: e.data + }); + if (outNodes.length) + self.dispatchEvent('outNodes', { + nodes: outNodes, + captor: e.data + }); + + overEdges = {}; + // Dispatch both single and multi events: + for (i = 0, le = outEdges.length; i < le; i++) + self.dispatchEvent('outEdge', { + edge: outEdges[i], + captor: e.data + }); + if (outEdges.length) + self.dispatchEvent('outEdges', { + edges: outEdges, + captor: e.data + }); + } + + function onMove(e) { + if (!self.settings('eventsEnabled')) + return; + + nodes = getNodes(e); + edges = getEdges(e); + + var i, + k, + node, + edge, + newOutNodes = [], + newOverNodes = [], + currentOverNodes = {}, + l = nodes.length, + newOutEdges = [], + newOverEdges = [], + currentOverEdges = {}, + le = edges.length; + + // Check newly overred nodes: + for (i = 0; i < l; i++) { + node = nodes[i]; + currentOverNodes[node.id] = node; + if (!overNodes[node.id]) { + newOverNodes.push(node); + overNodes[node.id] = node; + } + } + + // Check no more overred nodes: + for (k in overNodes) + if (!currentOverNodes[k]) { + newOutNodes.push(overNodes[k]); + delete overNodes[k]; + } + + // Dispatch both single and multi events: + for (i = 0, l = newOverNodes.length; i < l; i++) + self.dispatchEvent('overNode', { + node: newOverNodes[i], + captor: e.data + }); + for (i = 0, l = newOutNodes.length; i < l; i++) + self.dispatchEvent('outNode', { + node: newOutNodes[i], + captor: e.data + }); + if (newOverNodes.length) + self.dispatchEvent('overNodes', { + nodes: newOverNodes, + captor: e.data + }); + if (newOutNodes.length) + self.dispatchEvent('outNodes', { + nodes: newOutNodes, + captor: e.data + }); + + // Check newly overred edges: + for (i = 0; i < le; i++) { + edge = edges[i]; + currentOverEdges[edge.id] = edge; + if (!overEdges[edge.id]) { + newOverEdges.push(edge); + overEdges[edge.id] = edge; + } + } + + // Check no more overred edges: + for (k in overEdges) + if (!currentOverEdges[k]) { + newOutEdges.push(overEdges[k]); + delete overEdges[k]; + } + + // Dispatch both single and multi events: + for (i = 0, le = newOverEdges.length; i < le; i++) + self.dispatchEvent('overEdge', { + edge: newOverEdges[i], + captor: e.data + }); + for (i = 0, le = newOutEdges.length; i < le; i++) + self.dispatchEvent('outEdge', { + edge: newOutEdges[i], + captor: e.data + }); + if (newOverEdges.length) + self.dispatchEvent('overEdges', { + edges: newOverEdges, + captor: e.data + }); + if (newOutEdges.length) + self.dispatchEvent('outEdges', { + edges: newOutEdges, + captor: e.data + }); + } + + // Bind events: + captor.bind('click', onClick); + captor.bind('mousedown', onMove); + captor.bind('mouseup', onMove); + captor.bind('mousemove', onMove); + captor.bind('mouseout', onOut); + captor.bind('doubleclick', onDoubleClick); + captor.bind('rightclick', onRightClick); + self.bind('render', onMove); + } + + for (i = 0, l = this.captors.length; i < l; i++) + bindCaptor(this.captors[i]); + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/misc/sigma.misc.drawHovers.js b/sigma.js-1.2.0/src/misc/sigma.misc.drawHovers.js new file mode 100644 index 0000000..82fafec --- /dev/null +++ b/sigma.js-1.2.0/src/misc/sigma.misc.drawHovers.js @@ -0,0 +1,222 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.misc'); + + /** + * This method listens to "overNode", "outNode", "overEdge" and "outEdge" + * events from a renderer and renders the nodes differently on the top layer. + * The goal is to make any node label readable with the mouse, and to + * highlight hovered nodes and edges. + * + * It has to be called in the scope of the related renderer. + */ + sigma.misc.drawHovers = function(prefix) { + var self = this, + hoveredNodes = {}, + hoveredEdges = {}; + + this.bind('overNode', function(event) { + var node = event.data.node; + if (!node.hidden) { + hoveredNodes[node.id] = node; + draw(); + } + }); + + this.bind('outNode', function(event) { + delete hoveredNodes[event.data.node.id]; + draw(); + }); + + this.bind('overEdge', function(event) { + var edge = event.data.edge; + if (!edge.hidden) { + hoveredEdges[edge.id] = edge; + draw(); + } + }); + + this.bind('outEdge', function(event) { + delete hoveredEdges[event.data.edge.id]; + draw(); + }); + + this.bind('render', function(event) { + draw(); + }); + + function draw() { + + var k, + source, + target, + hoveredNode, + hoveredEdge, + c = self.contexts.hover.canvas, + defaultNodeType = self.settings('defaultNodeType'), + defaultEdgeType = self.settings('defaultEdgeType'), + nodeRenderers = sigma.canvas.hovers, + edgeRenderers = sigma.canvas.edgehovers, + extremitiesRenderers = sigma.canvas.extremities, + embedSettings = self.settings.embedObjects({ + prefix: prefix + }); + + // Clear self.contexts.hover: + self.contexts.hover.clearRect(0, 0, c.width, c.height); + + // Node render: single hover + if ( + embedSettings('enableHovering') && + embedSettings('singleHover') && + Object.keys(hoveredNodes).length + ) { + hoveredNode = hoveredNodes[Object.keys(hoveredNodes)[0]]; + ( + nodeRenderers[hoveredNode.type] || + nodeRenderers[defaultNodeType] || + nodeRenderers.def + )( + hoveredNode, + self.contexts.hover, + embedSettings + ); + } + + // Node render: multiple hover + if ( + embedSettings('enableHovering') && + !embedSettings('singleHover') + ) + for (k in hoveredNodes) + ( + nodeRenderers[hoveredNodes[k].type] || + nodeRenderers[defaultNodeType] || + nodeRenderers.def + )( + hoveredNodes[k], + self.contexts.hover, + embedSettings + ); + + // Edge render: single hover + if ( + embedSettings('enableEdgeHovering') && + embedSettings('singleHover') && + Object.keys(hoveredEdges).length + ) { + hoveredEdge = hoveredEdges[Object.keys(hoveredEdges)[0]]; + source = self.graph.nodes(hoveredEdge.source); + target = self.graph.nodes(hoveredEdge.target); + + if (! hoveredEdge.hidden) { + ( + edgeRenderers[hoveredEdge.type] || + edgeRenderers[defaultEdgeType] || + edgeRenderers.def + ) ( + hoveredEdge, + source, + target, + self.contexts.hover, + embedSettings + ); + + if (embedSettings('edgeHoverExtremities')) { + ( + extremitiesRenderers[hoveredEdge.type] || + extremitiesRenderers.def + )( + hoveredEdge, + source, + target, + self.contexts.hover, + embedSettings + ); + + } else { + // Avoid edges rendered over nodes: + ( + sigma.canvas.nodes[source.type] || + sigma.canvas.nodes.def + ) ( + source, + self.contexts.hover, + embedSettings + ); + ( + sigma.canvas.nodes[target.type] || + sigma.canvas.nodes.def + ) ( + target, + self.contexts.hover, + embedSettings + ); + } + } + } + + // Edge render: multiple hover + if ( + embedSettings('enableEdgeHovering') && + !embedSettings('singleHover') + ) { + for (k in hoveredEdges) { + hoveredEdge = hoveredEdges[k]; + source = self.graph.nodes(hoveredEdge.source); + target = self.graph.nodes(hoveredEdge.target); + + if (!hoveredEdge.hidden) { + ( + edgeRenderers[hoveredEdge.type] || + edgeRenderers[defaultEdgeType] || + edgeRenderers.def + ) ( + hoveredEdge, + source, + target, + self.contexts.hover, + embedSettings + ); + + if (embedSettings('edgeHoverExtremities')) { + ( + extremitiesRenderers[hoveredEdge.type] || + extremitiesRenderers.def + )( + hoveredEdge, + source, + target, + self.contexts.hover, + embedSettings + ); + } else { + // Avoid edges rendered over nodes: + ( + sigma.canvas.nodes[source.type] || + sigma.canvas.nodes.def + ) ( + source, + self.contexts.hover, + embedSettings + ); + ( + sigma.canvas.nodes[target.type] || + sigma.canvas.nodes.def + ) ( + target, + self.contexts.hover, + embedSettings + ); + } + } + } + } + } + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.arrow.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.arrow.js new file mode 100644 index 0000000..1be0cc4 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.arrow.js @@ -0,0 +1,76 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.arrow = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + size = edge[prefix + 'size'] || 1, + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y']; + + size = (edge.hover) ? + settings('edgeHoverSizeRatio') * size : size; + var aSize = size * 2.5, + d = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2)), + aX = sX + (tX - sX) * (d - aSize - tSize) / d, + aY = sY + (tY - sY) * (d - aSize - tSize) / d, + vX = (tX - sX) * aSize / d, + vY = (tY - sY) * aSize / d; + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + context.lineTo( + aX, + aY + ); + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curve.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curve.js new file mode 100644 index 0000000..f79abf8 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curve.js @@ -0,0 +1,64 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.curve = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = settings('edgeHoverSizeRatio') * (edge[prefix + 'size'] || 1), + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + sSize = source[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y']; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, sSize) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x1, cp.y1, cp.x2, cp.y2, tX, tY); + } else { + context.quadraticCurveTo(cp.x, cp.y, tX, tY); + } + context.stroke(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js new file mode 100644 index 0000000..6a34b77 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.curvedArrow.js @@ -0,0 +1,96 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.curvedArrow = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + size = settings('edgeHoverSizeRatio') * (edge[prefix + 'size'] || 1), + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + d, + aSize, + aX, + aY, + vX, + vY; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, tSize) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY); + + if (source.id === target.id) { + d = Math.sqrt(Math.pow(tX - cp.x1, 2) + Math.pow(tY - cp.y1, 2)); + aSize = size * 2.5; + aX = cp.x1 + (tX - cp.x1) * (d - aSize - tSize) / d; + aY = cp.y1 + (tY - cp.y1) * (d - aSize - tSize) / d; + vX = (tX - cp.x1) * aSize / d; + vY = (tY - cp.y1) * aSize / d; + } + else { + d = Math.sqrt(Math.pow(tX - cp.x, 2) + Math.pow(tY - cp.y, 2)); + aSize = size * 2.5; + aX = cp.x + (tX - cp.x) * (d - aSize - tSize) / d; + aY = cp.y + (tY - cp.y) * (d - aSize - tSize) / d; + vX = (tX - cp.x) * aSize / d; + vY = (tY - cp.y) * aSize / d; + } + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x2, cp.y2, cp.x1, cp.y1, aX, aY); + } else { + context.quadraticCurveTo(cp.x, cp.y, aX, aY); + } + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.def.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.def.js new file mode 100644 index 0000000..d88ad38 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edgehovers.def.js @@ -0,0 +1,57 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edgehovers'); + + /** + * This hover renderer will display the edge with a different color or size. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edgehovers.def = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + if (settings('edgeHoverColor') === 'edge') { + color = edge.hover_color || color; + } else { + color = edge.hover_color || settings('defaultEdgeHoverColor') || color; + } + size *= settings('edgeHoverSizeRatio'); + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.arrow.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.arrow.js new file mode 100644 index 0000000..4f12977 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.arrow.js @@ -0,0 +1,66 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as arrows going from the source node + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.arrow = function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + size = edge[prefix + 'size'] || 1, + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + aSize = Math.max(size * 2.5, settings('minArrowSize')), + d = Math.sqrt(Math.pow(tX - sX, 2) + Math.pow(tY - sY, 2)), + aX = sX + (tX - sX) * (d - aSize - tSize) / d, + aY = sY + (tY - sY) * (d - aSize - tSize) / d, + vX = (tX - sX) * aSize / d, + vY = (tY - sY) * aSize / d; + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + context.lineTo( + aX, + aY + ); + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curve.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curve.js new file mode 100644 index 0000000..3e1502b --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curve.js @@ -0,0 +1,57 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as curves. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.curve = function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + sSize = source[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y']; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, sSize) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x1, cp.y1, cp.x2, cp.y2, tX, tY); + } else { + context.quadraticCurveTo(cp.x, cp.y, tX, tY); + } + context.stroke(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curvedArrow.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curvedArrow.js new file mode 100644 index 0000000..9c7b663 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.curvedArrow.js @@ -0,0 +1,88 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * This edge renderer will display edges as curves with arrow heading. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.curvedArrow = + function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'), + cp = {}, + size = edge[prefix + 'size'] || 1, + tSize = target[prefix + 'size'], + sX = source[prefix + 'x'], + sY = source[prefix + 'y'], + tX = target[prefix + 'x'], + tY = target[prefix + 'y'], + aSize = Math.max(size * 2.5, settings('minArrowSize')), + d, + aX, + aY, + vX, + vY; + + cp = (source.id === target.id) ? + sigma.utils.getSelfLoopControlPoints(sX, sY, tSize) : + sigma.utils.getQuadraticControlPoint(sX, sY, tX, tY); + + if (source.id === target.id) { + d = Math.sqrt(Math.pow(tX - cp.x1, 2) + Math.pow(tY - cp.y1, 2)); + aX = cp.x1 + (tX - cp.x1) * (d - aSize - tSize) / d; + aY = cp.y1 + (tY - cp.y1) * (d - aSize - tSize) / d; + vX = (tX - cp.x1) * aSize / d; + vY = (tY - cp.y1) * aSize / d; + } + else { + d = Math.sqrt(Math.pow(tX - cp.x, 2) + Math.pow(tY - cp.y, 2)); + aX = cp.x + (tX - cp.x) * (d - aSize - tSize) / d; + aY = cp.y + (tY - cp.y) * (d - aSize - tSize) / d; + vX = (tX - cp.x) * aSize / d; + vY = (tY - cp.y) * aSize / d; + } + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo(sX, sY); + if (source.id === target.id) { + context.bezierCurveTo(cp.x2, cp.y2, cp.x1, cp.y1, aX, aY); + } else { + context.quadraticCurveTo(cp.x, cp.y, aX, aY); + } + context.stroke(); + + context.fillStyle = color; + context.beginPath(); + context.moveTo(aX + vX, aY + vY); + context.lineTo(aX + vY * 0.6, aY - vX * 0.6); + context.lineTo(aX - vY * 0.6, aY + vX * 0.6); + context.lineTo(aX + vX, aY + vY); + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.def.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.def.js new file mode 100644 index 0000000..dd97b90 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.edges.def.js @@ -0,0 +1,49 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.edges'); + + /** + * The default edge renderer. It renders the edge as a simple line. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.edges.def = function(edge, source, target, context, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + size = edge[prefix + 'size'] || 1, + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + context.strokeStyle = color; + context.lineWidth = size; + context.beginPath(); + context.moveTo( + source[prefix + 'x'], + source[prefix + 'y'] + ); + context.lineTo( + target[prefix + 'x'], + target[prefix + 'y'] + ); + context.stroke(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.extremities.def.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.extremities.def.js new file mode 100644 index 0000000..7877dc2 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.extremities.def.js @@ -0,0 +1,38 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.extremities'); + + /** + * The default renderer for hovered edge extremities. It renders the edge + * extremities as hovered. + * + * @param {object} edge The edge object. + * @param {object} source node The edge source node. + * @param {object} target node The edge target node. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.extremities.def = + function(edge, source, target, context, settings) { + // Source Node: + ( + sigma.canvas.hovers[source.type] || + sigma.canvas.hovers.def + ) ( + source, context, settings + ); + + // Target Node: + ( + sigma.canvas.hovers[target.type] || + sigma.canvas.hovers.def + ) ( + target, context, settings + ); + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.hovers.def.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.hovers.def.js new file mode 100644 index 0000000..00185c2 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.hovers.def.js @@ -0,0 +1,106 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.hovers'); + + /** + * This hover renderer will basically display the label with a background. + * + * @param {object} node The node object. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.hovers.def = function(node, context, settings) { + var x, + y, + w, + h, + e, + fontStyle = settings('hoverFontStyle') || settings('fontStyle'), + prefix = settings('prefix') || '', + size = node[prefix + 'size'], + fontSize = (settings('labelSize') === 'fixed') ? + settings('defaultLabelSize') : + settings('labelSizeRatio') * size; + + // Label background: + context.font = (fontStyle ? fontStyle + ' ' : '') + + fontSize + 'px ' + (settings('hoverFont') || settings('font')); + + context.beginPath(); + context.fillStyle = settings('labelHoverBGColor') === 'node' ? + (node.color || settings('defaultNodeColor')) : + settings('defaultHoverLabelBGColor'); + + if (node.label && settings('labelHoverShadow')) { + context.shadowOffsetX = 0; + context.shadowOffsetY = 0; + context.shadowBlur = 8; + context.shadowColor = settings('labelHoverShadowColor'); + } + + if (node.label && typeof node.label === 'string') { + x = Math.round(node[prefix + 'x'] - fontSize / 2 - 2); + y = Math.round(node[prefix + 'y'] - fontSize / 2 - 2); + w = Math.round( + context.measureText(node.label).width + fontSize / 2 + size + 7 + ); + h = Math.round(fontSize + 4); + e = Math.round(fontSize / 2 + 2); + + context.moveTo(x, y + e); + context.arcTo(x, y, x + e, y, e); + context.lineTo(x + w, y); + context.lineTo(x + w, y + h); + context.lineTo(x + e, y + h); + context.arcTo(x, y + h, x, y + h - e, e); + context.lineTo(x, y + e); + + context.closePath(); + context.fill(); + + context.shadowOffsetX = 0; + context.shadowOffsetY = 0; + context.shadowBlur = 0; + } + + // Node border: + if (settings('borderSize') > 0) { + context.beginPath(); + context.fillStyle = settings('nodeBorderColor') === 'node' ? + (node.color || settings('defaultNodeColor')) : + settings('defaultNodeBorderColor'); + context.arc( + node[prefix + 'x'], + node[prefix + 'y'], + size + settings('borderSize'), + 0, + Math.PI * 2, + true + ); + context.closePath(); + context.fill(); + } + + // Node: + var nodeRenderer = sigma.canvas.nodes[node.type] || sigma.canvas.nodes.def; + nodeRenderer(node, context, settings); + + // Display the label: + if (node.label && typeof node.label === 'string') { + context.fillStyle = (settings('labelHoverColor') === 'node') ? + (node.color || settings('defaultNodeColor')) : + settings('defaultLabelHoverColor'); + + context.fillText( + node.label, + Math.round(node[prefix + 'x'] + size + 3), + Math.round(node[prefix + 'y'] + fontSize / 3) + ); + } + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.labels.def.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.labels.def.js new file mode 100644 index 0000000..8a70d73 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.labels.def.js @@ -0,0 +1,44 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.canvas.labels'); + + /** + * This label renderer will just display the label on the right of the node. + * + * @param {object} node The node object. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.labels.def = function(node, context, settings) { + var fontSize, + prefix = settings('prefix') || '', + size = node[prefix + 'size']; + + if (size < settings('labelThreshold')) + return; + + if (!node.label || typeof node.label !== 'string') + return; + + fontSize = (settings('labelSize') === 'fixed') ? + settings('defaultLabelSize') : + settings('labelSizeRatio') * size; + + context.font = (settings('fontStyle') ? settings('fontStyle') + ' ' : '') + + fontSize + 'px ' + settings('font'); + context.fillStyle = (settings('labelColor') === 'node') ? + (node.color || settings('defaultNodeColor')) : + settings('defaultLabelColor'); + + context.fillText( + node.label, + Math.round(node[prefix + 'x'] + size + 3), + Math.round(node[prefix + 'y'] + fontSize / 3) + ); + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.nodes.def.js b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.nodes.def.js new file mode 100644 index 0000000..ee499b0 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/canvas/sigma.canvas.nodes.def.js @@ -0,0 +1,30 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.canvas.nodes'); + + /** + * The default node renderer. It renders the node as a simple disc. + * + * @param {object} node The node object. + * @param {CanvasRenderingContext2D} context The canvas context. + * @param {configurable} settings The settings function. + */ + sigma.canvas.nodes.def = function(node, context, settings) { + var prefix = settings('prefix') || ''; + + context.fillStyle = node.color || settings('defaultNodeColor'); + context.beginPath(); + context.arc( + node[prefix + 'x'], + node[prefix + 'y'], + node[prefix + 'size'], + 0, + Math.PI * 2, + true + ); + + context.closePath(); + context.fill(); + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/sigma.renderers.canvas.js b/sigma.js-1.2.0/src/renderers/sigma.renderers.canvas.js new file mode 100644 index 0000000..963d7d0 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/sigma.renderers.canvas.js @@ -0,0 +1,442 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + if (typeof conrad === 'undefined') + throw 'conrad is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.renderers'); + + /** + * This function is the constructor of the canvas sigma's renderer. + * + * @param {sigma.classes.graph} graph The graph to render. + * @param {sigma.classes.camera} camera The camera. + * @param {configurable} settings The sigma instance settings + * function. + * @param {object} object The options object. + * @return {sigma.renderers.canvas} The renderer instance. + */ + sigma.renderers.canvas = function(graph, camera, settings, options) { + if (typeof options !== 'object') + throw 'sigma.renderers.canvas: Wrong arguments.'; + + if (!(options.container instanceof HTMLElement)) + throw 'Container not found.'; + + var k, + i, + l, + a, + fn, + self = this; + + sigma.classes.dispatcher.extend(this); + + // Initialize main attributes: + Object.defineProperty(this, 'conradId', { + value: sigma.utils.id() + }); + this.graph = graph; + this.camera = camera; + this.contexts = {}; + this.domElements = {}; + this.options = options; + this.container = this.options.container; + this.settings = ( + typeof options.settings === 'object' && + options.settings + ) ? + settings.embedObjects(options.settings) : + settings; + + // Node indexes: + this.nodesOnScreen = []; + this.edgesOnScreen = []; + + // Conrad related attributes: + this.jobs = {}; + + // Find the prefix: + this.options.prefix = 'renderer' + this.conradId + ':'; + + // Initialize the DOM elements: + if ( + !this.settings('batchEdgesDrawing') + ) { + this.initDOM('canvas', 'scene'); + this.contexts.edges = this.contexts.scene; + this.contexts.nodes = this.contexts.scene; + this.contexts.labels = this.contexts.scene; + } else { + this.initDOM('canvas', 'edges'); + this.initDOM('canvas', 'scene'); + this.contexts.nodes = this.contexts.scene; + this.contexts.labels = this.contexts.scene; + } + + this.initDOM('canvas', 'mouse'); + this.contexts.hover = this.contexts.mouse; + + // Initialize captors: + this.captors = []; + a = this.options.captors || [sigma.captors.mouse, sigma.captors.touch]; + for (i = 0, l = a.length; i < l; i++) { + fn = typeof a[i] === 'function' ? a[i] : sigma.captors[a[i]]; + this.captors.push( + new fn( + this.domElements.mouse, + this.camera, + this.settings + ) + ); + } + + // Deal with sigma events: + sigma.misc.bindEvents.call(this, this.options.prefix); + sigma.misc.drawHovers.call(this, this.options.prefix); + + this.resize(false); + }; + + + + + /** + * This method renders the graph on the canvases. + * + * @param {?object} options Eventually an object of options. + * @return {sigma.renderers.canvas} Returns the instance itself. + */ + sigma.renderers.canvas.prototype.render = function(options) { + options = options || {}; + + var a, + i, + k, + l, + o, + id, + end, + job, + start, + edges, + renderers, + rendererType, + batchSize, + tempGCO, + index = {}, + graph = this.graph, + nodes = this.graph.nodes, + prefix = this.options.prefix || '', + drawEdges = this.settings(options, 'drawEdges'), + drawNodes = this.settings(options, 'drawNodes'), + drawLabels = this.settings(options, 'drawLabels'), + drawEdgeLabels = this.settings(options, 'drawEdgeLabels'), + embedSettings = this.settings.embedObjects(options, { + prefix: this.options.prefix + }); + + // Call the resize function: + this.resize(false); + + // Check the 'hideEdgesOnMove' setting: + if (this.settings(options, 'hideEdgesOnMove')) + if (this.camera.isAnimated || this.camera.isMoving) + drawEdges = false; + + // Apply the camera's view: + this.camera.applyView( + undefined, + this.options.prefix, + { + width: this.width, + height: this.height + } + ); + + // Clear canvases: + this.clear(); + + // Kill running jobs: + for (k in this.jobs) + if (conrad.hasJob(k)) + conrad.killJob(k); + + // Find which nodes are on screen: + this.edgesOnScreen = []; + this.nodesOnScreen = this.camera.quadtree.area( + this.camera.getRectangle(this.width, this.height) + ); + + for (a = this.nodesOnScreen, i = 0, l = a.length; i < l; i++) + index[a[i].id] = a[i]; + + // Draw edges: + // - If settings('batchEdgesDrawing') is true, the edges are displayed per + // batches. If not, they are drawn in one frame. + if (drawEdges) { + // First, let's identify which edges to draw. To do this, we just keep + // every edges that have at least one extremity displayed according to + // the quadtree and the "hidden" attribute. We also do not keep hidden + // edges. + for (a = graph.edges(), i = 0, l = a.length; i < l; i++) { + o = a[i]; + if ( + (index[o.source] || index[o.target]) && + (!o.hidden && !nodes(o.source).hidden && !nodes(o.target).hidden) + ) + this.edgesOnScreen.push(o); + } + + // If the "batchEdgesDrawing" settings is true, edges are batched: + if (this.settings(options, 'batchEdgesDrawing')) { + id = 'edges_' + this.conradId; + batchSize = embedSettings('canvasEdgesBatchSize'); + + edges = this.edgesOnScreen; + l = edges.length; + + start = 0; + end = Math.min(edges.length, start + batchSize); + + job = function() { + tempGCO = this.contexts.edges.globalCompositeOperation; + this.contexts.edges.globalCompositeOperation = 'destination-over'; + + renderers = sigma.canvas.edges; + for (i = start; i < end; i++) { + o = edges[i]; + (renderers[ + o.type || this.settings(options, 'defaultEdgeType') + ] || renderers.def)( + o, + graph.nodes(o.source), + graph.nodes(o.target), + this.contexts.edges, + embedSettings + ); + } + + // Draw edge labels: + if (drawEdgeLabels) { + renderers = sigma.canvas.edges.labels; + for (i = start; i < end; i++) { + o = edges[i]; + if (!o.hidden) + (renderers[ + o.type || this.settings(options, 'defaultEdgeType') + ] || renderers.def)( + o, + graph.nodes(o.source), + graph.nodes(o.target), + this.contexts.labels, + embedSettings + ); + } + } + + // Restore original globalCompositeOperation: + this.contexts.edges.globalCompositeOperation = tempGCO; + + // Catch job's end: + if (end === edges.length) { + delete this.jobs[id]; + return false; + } + + start = end + 1; + end = Math.min(edges.length, start + batchSize); + return true; + }; + + this.jobs[id] = job; + conrad.addJob(id, job.bind(this)); + + // If not, they are drawn in one frame: + } else { + renderers = sigma.canvas.edges; + for (a = this.edgesOnScreen, i = 0, l = a.length; i < l; i++) { + o = a[i]; + (renderers[ + o.type || this.settings(options, 'defaultEdgeType') + ] || renderers.def)( + o, + graph.nodes(o.source), + graph.nodes(o.target), + this.contexts.edges, + embedSettings + ); + } + + // Draw edge labels: + // - No batching + if (drawEdgeLabels) { + renderers = sigma.canvas.edges.labels; + for (a = this.edgesOnScreen, i = 0, l = a.length; i < l; i++) + if (!a[i].hidden) + (renderers[ + a[i].type || this.settings(options, 'defaultEdgeType') + ] || renderers.def)( + a[i], + graph.nodes(a[i].source), + graph.nodes(a[i].target), + this.contexts.labels, + embedSettings + ); + } + } + } + + // Draw nodes: + // - No batching + if (drawNodes) { + renderers = sigma.canvas.nodes; + for (a = this.nodesOnScreen, i = 0, l = a.length; i < l; i++) + if (!a[i].hidden) + (renderers[ + a[i].type || this.settings(options, 'defaultNodeType') + ] || renderers.def)( + a[i], + this.contexts.nodes, + embedSettings + ); + } + + // Draw labels: + // - No batching + if (drawLabels) { + renderers = sigma.canvas.labels; + for (a = this.nodesOnScreen, i = 0, l = a.length; i < l; i++) + if (!a[i].hidden) + (renderers[ + a[i].type || this.settings(options, 'defaultNodeType') + ] || renderers.def)( + a[i], + this.contexts.labels, + embedSettings + ); + } + + this.dispatchEvent('render'); + + return this; + }; + + /** + * This method creates a DOM element of the specified type, switches its + * position to "absolute", references it to the domElements attribute, and + * finally appends it to the container. + * + * @param {string} tag The label tag. + * @param {string} id The id of the element (to store it in "domElements"). + */ + sigma.renderers.canvas.prototype.initDOM = function(tag, id) { + var dom = document.createElement(tag); + + dom.style.position = 'absolute'; + dom.setAttribute('class', 'sigma-' + id); + + this.domElements[id] = dom; + this.container.appendChild(dom); + + if (tag.toLowerCase() === 'canvas') + this.contexts[id] = dom.getContext('2d'); + }; + + /** + * This method resizes each DOM elements in the container and stores the new + * dimensions. Then, it renders the graph. + * + * @param {?number} width The new width of the container. + * @param {?number} height The new height of the container. + * @return {sigma.renderers.canvas} Returns the instance itself. + */ + sigma.renderers.canvas.prototype.resize = function(w, h) { + var k, + oldWidth = this.width, + oldHeight = this.height, + pixelRatio = sigma.utils.getPixelRatio(); + + if (w !== undefined && h !== undefined) { + this.width = w; + this.height = h; + } else { + this.width = this.container.offsetWidth; + this.height = this.container.offsetHeight; + + w = this.width; + h = this.height; + } + + if (oldWidth !== this.width || oldHeight !== this.height) { + for (k in this.domElements) { + this.domElements[k].style.width = w + 'px'; + this.domElements[k].style.height = h + 'px'; + + if (this.domElements[k].tagName.toLowerCase() === 'canvas') { + this.domElements[k].setAttribute('width', (w * pixelRatio) + 'px'); + this.domElements[k].setAttribute('height', (h * pixelRatio) + 'px'); + + if (pixelRatio !== 1) + this.contexts[k].scale(pixelRatio, pixelRatio); + } + } + } + + return this; + }; + + /** + * This method clears each canvas. + * + * @return {sigma.renderers.canvas} Returns the instance itself. + */ + sigma.renderers.canvas.prototype.clear = function() { + for (var k in this.contexts) { + this.contexts[k].clearRect(0, 0, this.width, this.height); + } + + return this; + }; + + /** + * This method kills contexts and other attributes. + */ + sigma.renderers.canvas.prototype.kill = function() { + var k, + captor; + + // Kill captors: + while ((captor = this.captors.pop())) + captor.kill(); + delete this.captors; + + // Kill contexts: + for (k in this.domElements) { + this.domElements[k].parentNode.removeChild(this.domElements[k]); + delete this.domElements[k]; + delete this.contexts[k]; + } + delete this.domElements; + delete this.contexts; + }; + + + + + /** + * The labels, nodes and edges renderers are stored in the three following + * objects. When an element is drawn, its type will be checked and if a + * renderer with the same name exists, it will be used. If not found, the + * default renderer will be used instead. + * + * They are stored in different files, in the "./canvas" folder. + */ + sigma.utils.pkg('sigma.canvas.nodes'); + sigma.utils.pkg('sigma.canvas.edges'); + sigma.utils.pkg('sigma.canvas.labels'); +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/sigma.renderers.def.js b/sigma.js-1.2.0/src/renderers/sigma.renderers.def.js new file mode 100644 index 0000000..b091d39 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/sigma.renderers.def.js @@ -0,0 +1,29 @@ +;(function(global) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.renderers'); + + // Check if WebGL is enabled: + var canvas, + webgl = !!global.WebGLRenderingContext; + if (webgl) { + canvas = document.createElement('canvas'); + try { + webgl = !!( + canvas.getContext('webgl') || + canvas.getContext('experimental-webgl') + ); + } catch (e) { + webgl = false; + } + } + + // Copy the good renderer: + sigma.renderers.def = webgl ? + sigma.renderers.webgl : + sigma.renderers.canvas; +})(this); diff --git a/sigma.js-1.2.0/src/renderers/sigma.renderers.svg.js b/sigma.js-1.2.0/src/renderers/sigma.renderers.svg.js new file mode 100644 index 0000000..ffec79e --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/sigma.renderers.svg.js @@ -0,0 +1,479 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + if (typeof conrad === 'undefined') + throw 'conrad is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.renderers'); + + /** + * This function is the constructor of the svg sigma's renderer. + * + * @param {sigma.classes.graph} graph The graph to render. + * @param {sigma.classes.camera} camera The camera. + * @param {configurable} settings The sigma instance settings + * function. + * @param {object} object The options object. + * @return {sigma.renderers.svg} The renderer instance. + */ + sigma.renderers.svg = function(graph, camera, settings, options) { + if (typeof options !== 'object') + throw 'sigma.renderers.svg: Wrong arguments.'; + + if (!(options.container instanceof HTMLElement)) + throw 'Container not found.'; + + var i, + l, + a, + fn, + self = this; + + sigma.classes.dispatcher.extend(this); + + // Initialize main attributes: + this.graph = graph; + this.camera = camera; + this.domElements = { + graph: null, + groups: {}, + nodes: {}, + edges: {}, + labels: {}, + hovers: {} + }; + this.measurementCanvas = null; + this.options = options; + this.container = this.options.container; + this.settings = ( + typeof options.settings === 'object' && + options.settings + ) ? + settings.embedObjects(options.settings) : + settings; + + // Is the renderer meant to be freestyle? + this.settings('freeStyle', !!this.options.freeStyle); + + // SVG xmlns + this.settings('xmlns', 'http://www.w3.org/2000/svg'); + + // Indexes: + this.nodesOnScreen = []; + this.edgesOnScreen = []; + + // Find the prefix: + this.options.prefix = 'renderer' + sigma.utils.id() + ':'; + + // Initialize the DOM elements + this.initDOM('svg'); + + // Initialize captors: + this.captors = []; + a = this.options.captors || [sigma.captors.mouse, sigma.captors.touch]; + for (i = 0, l = a.length; i < l; i++) { + fn = typeof a[i] === 'function' ? a[i] : sigma.captors[a[i]]; + this.captors.push( + new fn( + this.domElements.graph, + this.camera, + this.settings + ) + ); + } + + // Bind resize: + window.addEventListener('resize', function() { + self.resize(); + }); + + // Deal with sigma events: + // TODO: keep an option to override the DOM events? + sigma.misc.bindDOMEvents.call(this, this.domElements.graph); + this.bindHovers(this.options.prefix); + + // Resize + this.resize(false); + }; + + /** + * This method renders the graph on the svg scene. + * + * @param {?object} options Eventually an object of options. + * @return {sigma.renderers.svg} Returns the instance itself. + */ + sigma.renderers.svg.prototype.render = function(options) { + options = options || {}; + + var a, + i, + k, + e, + l, + o, + source, + target, + start, + edges, + renderers, + subrenderers, + index = {}, + graph = this.graph, + nodes = this.graph.nodes, + prefix = this.options.prefix || '', + drawEdges = this.settings(options, 'drawEdges'), + drawNodes = this.settings(options, 'drawNodes'), + drawLabels = this.settings(options, 'drawLabels'), + embedSettings = this.settings.embedObjects(options, { + prefix: this.options.prefix, + forceLabels: this.options.forceLabels + }); + + // Check the 'hideEdgesOnMove' setting: + if (this.settings(options, 'hideEdgesOnMove')) + if (this.camera.isAnimated || this.camera.isMoving) + drawEdges = false; + + // Apply the camera's view: + this.camera.applyView( + undefined, + this.options.prefix, + { + width: this.width, + height: this.height + } + ); + + // Hiding everything + // TODO: find a more sensible way to perform this operation + this.hideDOMElements(this.domElements.nodes); + this.hideDOMElements(this.domElements.edges); + this.hideDOMElements(this.domElements.labels); + + // Find which nodes are on screen + this.edgesOnScreen = []; + this.nodesOnScreen = this.camera.quadtree.area( + this.camera.getRectangle(this.width, this.height) + ); + + // Node index + for (a = this.nodesOnScreen, i = 0, l = a.length; i < l; i++) + index[a[i].id] = a[i]; + + // Find which edges are on screen + for (a = graph.edges(), i = 0, l = a.length; i < l; i++) { + o = a[i]; + if ( + (index[o.source] || index[o.target]) && + (!o.hidden && !nodes(o.source).hidden && !nodes(o.target).hidden) + ) + this.edgesOnScreen.push(o); + } + + // Display nodes + //--------------- + renderers = sigma.svg.nodes; + subrenderers = sigma.svg.labels; + + //-- First we create the nodes which are not already created + if (drawNodes) + for (a = this.nodesOnScreen, i = 0, l = a.length; i < l; i++) { + if (!a[i].hidden && !this.domElements.nodes[a[i].id]) { + + // Node + e = (renderers[a[i].type] || renderers.def).create( + a[i], + embedSettings + ); + + this.domElements.nodes[a[i].id] = e; + this.domElements.groups.nodes.appendChild(e); + + // Label + e = (subrenderers[a[i].type] || subrenderers.def).create( + a[i], + embedSettings + ); + + this.domElements.labels[a[i].id] = e; + this.domElements.groups.labels.appendChild(e); + } + } + + //-- Second we update the nodes + if (drawNodes) + for (a = this.nodesOnScreen, i = 0, l = a.length; i < l; i++) { + + if (a[i].hidden) + continue; + + // Node + (renderers[a[i].type] || renderers.def).update( + a[i], + this.domElements.nodes[a[i].id], + embedSettings + ); + + // Label + (subrenderers[a[i].type] || subrenderers.def).update( + a[i], + this.domElements.labels[a[i].id], + embedSettings + ); + } + + // Display edges + //--------------- + renderers = sigma.svg.edges; + + //-- First we create the edges which are not already created + if (drawEdges) + for (a = this.edgesOnScreen, i = 0, l = a.length; i < l; i++) { + if (!this.domElements.edges[a[i].id]) { + source = nodes(a[i].source); + target = nodes(a[i].target); + + e = (renderers[a[i].type] || renderers.def).create( + a[i], + source, + target, + embedSettings + ); + + this.domElements.edges[a[i].id] = e; + this.domElements.groups.edges.appendChild(e); + } + } + + //-- Second we update the edges + if (drawEdges) + for (a = this.edgesOnScreen, i = 0, l = a.length; i < l; i++) { + source = nodes(a[i].source); + target = nodes(a[i].target); + + (renderers[a[i].type] || renderers.def).update( + a[i], + this.domElements.edges[a[i].id], + source, + target, + embedSettings + ); + } + + this.dispatchEvent('render'); + + return this; + }; + + /** + * This method creates a DOM element of the specified type, switches its + * position to "absolute", references it to the domElements attribute, and + * finally appends it to the container. + * + * @param {string} tag The label tag. + * @param {string} id The id of the element (to store it in "domElements"). + */ + sigma.renderers.svg.prototype.initDOM = function(tag) { + var dom = document.createElementNS(this.settings('xmlns'), tag), + c = this.settings('classPrefix'), + g, + l, + i; + + dom.style.position = 'absolute'; + dom.setAttribute('class', c + '-svg'); + + // Setting SVG namespace + dom.setAttribute('xmlns', this.settings('xmlns')); + dom.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink'); + dom.setAttribute('version', '1.1'); + + // Creating the measurement canvas + var canvas = document.createElement('canvas'); + canvas.setAttribute('class', c + '-measurement-canvas'); + + // Appending elements + this.domElements.graph = this.container.appendChild(dom); + + // Creating groups + var groups = ['edges', 'nodes', 'labels', 'hovers']; + for (i = 0, l = groups.length; i < l; i++) { + g = document.createElementNS(this.settings('xmlns'), 'g'); + + g.setAttributeNS(null, 'id', c + '-group-' + groups[i]); + g.setAttributeNS(null, 'class', c + '-group'); + + this.domElements.groups[groups[i]] = + this.domElements.graph.appendChild(g); + } + + // Appending measurement canvas + this.container.appendChild(canvas); + this.measurementCanvas = canvas.getContext('2d'); + }; + + /** + * This method hides a batch of SVG DOM elements. + * + * @param {array} elements An array of elements to hide. + * @param {object} renderer The renderer to use. + * @return {sigma.renderers.svg} Returns the instance itself. + */ + sigma.renderers.svg.prototype.hideDOMElements = function(elements) { + var o, + i; + + for (i in elements) { + o = elements[i]; + sigma.svg.utils.hide(o); + } + + return this; + }; + + /** + * This method binds the hover events to the renderer. + * + * @param {string} prefix The renderer prefix. + */ + // TODO: add option about whether to display hovers or not + sigma.renderers.svg.prototype.bindHovers = function(prefix) { + var renderers = sigma.svg.hovers, + self = this, + hoveredNode; + + function overNode(e) { + var node = e.data.node, + embedSettings = self.settings.embedObjects({ + prefix: prefix + }); + + if (!embedSettings('enableHovering')) + return; + + var hover = (renderers[node.type] || renderers.def).create( + node, + self.domElements.nodes[node.id], + self.measurementCanvas, + embedSettings + ); + + self.domElements.hovers[node.id] = hover; + + // Inserting the hover in the dom + self.domElements.groups.hovers.appendChild(hover); + hoveredNode = node; + } + + function outNode(e) { + var node = e.data.node, + embedSettings = self.settings.embedObjects({ + prefix: prefix + }); + + if (!embedSettings('enableHovering')) + return; + + // Deleting element + self.domElements.groups.hovers.removeChild( + self.domElements.hovers[node.id] + ); + hoveredNode = null; + delete self.domElements.hovers[node.id]; + + // Reinstate + self.domElements.groups.nodes.appendChild( + self.domElements.nodes[node.id] + ); + } + + // OPTIMIZE: perform a real update rather than a deletion + function update() { + if (!hoveredNode) + return; + + var embedSettings = self.settings.embedObjects({ + prefix: prefix + }); + + // Deleting element before update + self.domElements.groups.hovers.removeChild( + self.domElements.hovers[hoveredNode.id] + ); + delete self.domElements.hovers[hoveredNode.id]; + + var hover = (renderers[hoveredNode.type] || renderers.def).create( + hoveredNode, + self.domElements.nodes[hoveredNode.id], + self.measurementCanvas, + embedSettings + ); + + self.domElements.hovers[hoveredNode.id] = hover; + + // Inserting the hover in the dom + self.domElements.groups.hovers.appendChild(hover); + } + + // Binding events + this.bind('overNode', overNode); + this.bind('outNode', outNode); + + // Update on render + this.bind('render', update); + }; + + /** + * This method resizes each DOM elements in the container and stores the new + * dimensions. Then, it renders the graph. + * + * @param {?number} width The new width of the container. + * @param {?number} height The new height of the container. + * @return {sigma.renderers.svg} Returns the instance itself. + */ + sigma.renderers.svg.prototype.resize = function(w, h) { + var oldWidth = this.width, + oldHeight = this.height, + pixelRatio = 1; + + if (w !== undefined && h !== undefined) { + this.width = w; + this.height = h; + } else { + this.width = this.container.offsetWidth; + this.height = this.container.offsetHeight; + + w = this.width; + h = this.height; + } + + if (oldWidth !== this.width || oldHeight !== this.height) { + this.domElements.graph.style.width = w + 'px'; + this.domElements.graph.style.height = h + 'px'; + + if (this.domElements.graph.tagName.toLowerCase() === 'svg') { + this.domElements.graph.setAttribute('width', (w * pixelRatio)); + this.domElements.graph.setAttribute('height', (h * pixelRatio)); + } + } + + return this; + }; + + + /** + * The labels, nodes and edges renderers are stored in the three following + * objects. When an element is drawn, its type will be checked and if a + * renderer with the same name exists, it will be used. If not found, the + * default renderer will be used instead. + * + * They are stored in different files, in the "./svg" folder. + */ + sigma.utils.pkg('sigma.svg.nodes'); + sigma.utils.pkg('sigma.svg.edges'); + sigma.utils.pkg('sigma.svg.labels'); +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/sigma.renderers.webgl.js b/sigma.js-1.2.0/src/renderers/sigma.renderers.webgl.js new file mode 100644 index 0000000..db58ff5 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/sigma.renderers.webgl.js @@ -0,0 +1,717 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.renderers'); + + /** + * This function is the constructor of the canvas sigma's renderer. + * + * @param {sigma.classes.graph} graph The graph to render. + * @param {sigma.classes.camera} camera The camera. + * @param {configurable} settings The sigma instance settings + * function. + * @param {object} object The options object. + * @return {sigma.renderers.canvas} The renderer instance. + */ + sigma.renderers.webgl = function(graph, camera, settings, options) { + if (typeof options !== 'object') + throw 'sigma.renderers.webgl: Wrong arguments.'; + + if (!(options.container instanceof HTMLElement)) + throw 'Container not found.'; + + var k, + i, + l, + a, + fn, + _self = this; + + sigma.classes.dispatcher.extend(this); + + // Conrad related attributes: + this.jobs = {}; + + Object.defineProperty(this, 'conradId', { + value: sigma.utils.id() + }); + + // Initialize main attributes: + this.graph = graph; + this.camera = camera; + this.contexts = {}; + this.domElements = {}; + this.options = options; + this.container = this.options.container; + this.settings = ( + typeof options.settings === 'object' && + options.settings + ) ? + settings.embedObjects(options.settings) : + settings; + + // Find the prefix: + this.options.prefix = this.camera.readPrefix; + + // Initialize programs hash + Object.defineProperty(this, 'nodePrograms', { + value: {} + }); + Object.defineProperty(this, 'edgePrograms', { + value: {} + }); + Object.defineProperty(this, 'nodeFloatArrays', { + value: {} + }); + Object.defineProperty(this, 'edgeFloatArrays', { + value: {} + }); + Object.defineProperty(this, 'edgeIndicesArrays', { + value: {} + }); + + // Initialize the DOM elements: + if (this.settings(options, 'batchEdgesDrawing')) { + this.initDOM('canvas', 'edges', true); + this.initDOM('canvas', 'nodes', true); + } else { + this.initDOM('canvas', 'scene', true); + this.contexts.nodes = this.contexts.scene; + this.contexts.edges = this.contexts.scene; + } + + this.initDOM('canvas', 'labels'); + this.initDOM('canvas', 'mouse'); + this.contexts.hover = this.contexts.mouse; + + // Initialize captors: + this.captors = []; + a = this.options.captors || [sigma.captors.mouse, sigma.captors.touch]; + for (i = 0, l = a.length; i < l; i++) { + fn = typeof a[i] === 'function' ? a[i] : sigma.captors[a[i]]; + this.captors.push( + new fn( + this.domElements.mouse, + this.camera, + this.settings + ) + ); + } + + // Deal with sigma events: + sigma.misc.bindEvents.call(this, this.camera.prefix); + sigma.misc.drawHovers.call(this, this.camera.prefix); + + this.resize(); + }; + + + + + /** + * This method will generate the nodes and edges float arrays. This step is + * separated from the "render" method, because to keep WebGL efficient, since + * all the camera and middlewares are modelised as matrices and they do not + * require the float arrays to be regenerated. + * + * Basically, when the user moves the camera or applies some specific linear + * transformations, this process step will be skipped, and the "render" + * method will efficiently refresh the rendering. + * + * And when the user modifies the graph colors or positions (applying a new + * layout or filtering the colors, for instance), this "process" step will be + * required to regenerate the float arrays. + * + * @return {sigma.renderers.webgl} Returns the instance itself. + */ + sigma.renderers.webgl.prototype.process = function() { + var a, + i, + l, + k, + type, + renderer, + graph = this.graph, + options = sigma.utils.extend(options, this.options), + defaultEdgeType = this.settings(options, 'defaultEdgeType'), + defaultNodeType = this.settings(options, 'defaultNodeType'); + + // Empty float arrays: + for (k in this.nodeFloatArrays) + delete this.nodeFloatArrays[k]; + + for (k in this.edgeFloatArrays) + delete this.edgeFloatArrays[k]; + + for (k in this.edgeIndicesArrays) + delete this.edgeIndicesArrays[k]; + + // Sort edges and nodes per types: + for (a = graph.edges(), i = 0, l = a.length; i < l; i++) { + type = a[i].type || defaultEdgeType; + k = (type && sigma.webgl.edges[type]) ? type : 'def'; + + if (!this.edgeFloatArrays[k]) + this.edgeFloatArrays[k] = { + edges: [] + }; + + this.edgeFloatArrays[k].edges.push(a[i]); + } + + for (a = graph.nodes(), i = 0, l = a.length; i < l; i++) { + type = a[i].type || defaultNodeType; + k = (type && sigma.webgl.nodes[type]) ? type : 'def'; + + if (!this.nodeFloatArrays[k]) + this.nodeFloatArrays[k] = { + nodes: [] + }; + + this.nodeFloatArrays[k].nodes.push(a[i]); + } + + // Push edges: + for (k in this.edgeFloatArrays) { + renderer = sigma.webgl.edges[k]; + a = this.edgeFloatArrays[k].edges; + + // Creating the necessary arrays + this.edgeFloatArrays[k].array = new Float32Array( + a.length * renderer.POINTS * renderer.ATTRIBUTES + ); + + for (i = 0, l = a.length; i < l; i++) { + + // Just check that the edge and both its extremities are visible: + if ( + !a[i].hidden && + !graph.nodes(a[i].source).hidden && + !graph.nodes(a[i].target).hidden + ) + renderer.addEdge( + a[i], + graph.nodes(a[i].source), + graph.nodes(a[i].target), + this.edgeFloatArrays[k].array, + i * renderer.POINTS * renderer.ATTRIBUTES, + options.prefix, + this.settings + ); + } + + if (typeof renderer.computeIndices === 'function') + this.edgeIndicesArrays[k] = renderer.computeIndices( + this.edgeFloatArrays[k].array + ); + } + + // Push nodes: + for (k in this.nodeFloatArrays) { + renderer = sigma.webgl.nodes[k]; + a = this.nodeFloatArrays[k].nodes; + + // Creating the necessary arrays + this.nodeFloatArrays[k].array = new Float32Array( + a.length * renderer.POINTS * renderer.ATTRIBUTES + ); + + for (i = 0, l = a.length; i < l; i++) { + if (!this.nodeFloatArrays[k].array) + this.nodeFloatArrays[k].array = new Float32Array( + a.length * renderer.POINTS * renderer.ATTRIBUTES + ); + + // Just check that the edge and both its extremities are visible: + if ( + !a[i].hidden + ) + renderer.addNode( + a[i], + this.nodeFloatArrays[k].array, + i * renderer.POINTS * renderer.ATTRIBUTES, + options.prefix, + this.settings + ); + } + } + + return this; + }; + + + + + /** + * This method renders the graph. It basically calls each program (and + * generate them if they do not exist yet) to render nodes and edges, batched + * per renderer. + * + * As in the canvas renderer, it is possible to display edges, nodes and / or + * labels in batches, to make the whole thing way more scalable. + * + * @param {?object} params Eventually an object of options. + * @return {sigma.renderers.webgl} Returns the instance itself. + */ + sigma.renderers.webgl.prototype.render = function(params) { + var a, + i, + l, + k, + o, + program, + renderer, + self = this, + graph = this.graph, + nodesGl = this.contexts.nodes, + edgesGl = this.contexts.edges, + matrix = this.camera.getMatrix(), + options = sigma.utils.extend(params, this.options), + drawLabels = this.settings(options, 'drawLabels'), + drawEdges = this.settings(options, 'drawEdges'), + drawNodes = this.settings(options, 'drawNodes'); + + // Call the resize function: + this.resize(false); + + // Check the 'hideEdgesOnMove' setting: + if (this.settings(options, 'hideEdgesOnMove')) + if (this.camera.isAnimated || this.camera.isMoving) + drawEdges = false; + + // Clear canvases: + this.clear(); + + // Translate matrix to [width/2, height/2]: + matrix = sigma.utils.matrices.multiply( + matrix, + sigma.utils.matrices.translation(this.width / 2, this.height / 2) + ); + + // Kill running jobs: + for (k in this.jobs) + if (conrad.hasJob(k)) + conrad.killJob(k); + + if (drawEdges) { + if (this.settings(options, 'batchEdgesDrawing')) + (function() { + var a, + k, + i, + id, + job, + arr, + end, + start, + indices, + renderer, + batchSize, + currentProgram; + + id = 'edges_' + this.conradId; + batchSize = this.settings(options, 'webglEdgesBatchSize'); + a = Object.keys(this.edgeFloatArrays); + + if (!a.length) + return; + i = 0; + renderer = sigma.webgl.edges[a[i]]; + arr = this.edgeFloatArrays[a[i]].array; + indices = this.edgeIndicesArrays[a[i]]; + start = 0; + end = Math.min( + start + batchSize * renderer.POINTS, + arr.length / renderer.ATTRIBUTES + ); + + job = function() { + // Check program: + if (!this.edgePrograms[a[i]]) + this.edgePrograms[a[i]] = renderer.initProgram(edgesGl); + + if (start < end) { + edgesGl.useProgram(this.edgePrograms[a[i]]); + renderer.render( + edgesGl, + this.edgePrograms[a[i]], + arr, + { + settings: this.settings, + matrix: matrix, + width: this.width, + height: this.height, + ratio: this.camera.ratio, + scalingRatio: this.settings( + options, + 'webglOversamplingRatio' + ), + start: start, + count: end - start, + indicesData: indices + } + ); + } + + // Catch job's end: + if ( + end >= arr.length / renderer.ATTRIBUTES && + i === a.length - 1 + ) { + delete this.jobs[id]; + return false; + } + + if (end >= arr.length / renderer.ATTRIBUTES) { + i++; + arr = this.edgeFloatArrays[a[i]].array; + renderer = sigma.webgl.edges[a[i]]; + start = 0; + end = Math.min( + start + batchSize * renderer.POINTS, + arr.length / renderer.ATTRIBUTES + ); + } else { + start = end; + end = Math.min( + start + batchSize * renderer.POINTS, + arr.length / renderer.ATTRIBUTES + ); + } + + return true; + }; + + this.jobs[id] = job; + conrad.addJob(id, job.bind(this)); + }).call(this); + else { + for (k in this.edgeFloatArrays) { + renderer = sigma.webgl.edges[k]; + + // Check program: + if (!this.edgePrograms[k]) + this.edgePrograms[k] = renderer.initProgram(edgesGl); + + // Render + if (this.edgeFloatArrays[k]) { + edgesGl.useProgram(this.edgePrograms[k]); + renderer.render( + edgesGl, + this.edgePrograms[k], + this.edgeFloatArrays[k].array, + { + settings: this.settings, + matrix: matrix, + width: this.width, + height: this.height, + ratio: this.camera.ratio, + scalingRatio: this.settings(options, 'webglOversamplingRatio'), + indicesData: this.edgeIndicesArrays[k] + } + ); + } + } + } + } + + if (drawNodes) { + // Enable blending: + nodesGl.blendFunc(nodesGl.SRC_ALPHA, nodesGl.ONE_MINUS_SRC_ALPHA); + nodesGl.enable(nodesGl.BLEND); + + for (k in this.nodeFloatArrays) { + renderer = sigma.webgl.nodes[k]; + + // Check program: + if (!this.nodePrograms[k]) + this.nodePrograms[k] = renderer.initProgram(nodesGl); + + // Render + if (this.nodeFloatArrays[k]) { + nodesGl.useProgram(this.nodePrograms[k]); + renderer.render( + nodesGl, + this.nodePrograms[k], + this.nodeFloatArrays[k].array, + { + settings: this.settings, + matrix: matrix, + width: this.width, + height: this.height, + ratio: this.camera.ratio, + scalingRatio: this.settings(options, 'webglOversamplingRatio') + } + ); + } + } + } + + if (drawLabels) { + a = this.camera.quadtree.area( + this.camera.getRectangle(this.width, this.height) + ); + + // Apply camera view to these nodes: + this.camera.applyView( + undefined, + undefined, + { + nodes: a, + edges: [], + width: this.width, + height: this.height + } + ); + + o = function(key) { + return self.settings({ + prefix: self.camera.prefix + }, key); + }; + + for (i = 0, l = a.length; i < l; i++) + if (!a[i].hidden) + ( + sigma.canvas.labels[ + a[i].type || + this.settings(options, 'defaultNodeType') + ] || sigma.canvas.labels.def + )(a[i], this.contexts.labels, o); + } + + this.dispatchEvent('render'); + + return this; + }; + + + + + /** + * This method creates a DOM element of the specified type, switches its + * position to "absolute", references it to the domElements attribute, and + * finally appends it to the container. + * + * @param {string} tag The label tag. + * @param {string} id The id of the element (to store it in + * "domElements"). + * @param {?boolean} webgl Will init the WebGL context if true. + */ + sigma.renderers.webgl.prototype.initDOM = function(tag, id, webgl) { + var gl, + dom = document.createElement(tag), + self = this; + + dom.style.position = 'absolute'; + dom.setAttribute('class', 'sigma-' + id); + + this.domElements[id] = dom; + this.container.appendChild(dom); + + if (tag.toLowerCase() === 'canvas') { + this.contexts[id] = dom.getContext(webgl ? 'experimental-webgl' : '2d', { + preserveDrawingBuffer: true + }); + + // Adding webgl context loss listeners + if (webgl) { + dom.addEventListener('webglcontextlost', function(e) { + e.preventDefault(); + }, false); + + dom.addEventListener('webglcontextrestored', function(e) { + self.render(); + }, false); + } + } + }; + + /** + * This method resizes each DOM elements in the container and stores the new + * dimensions. Then, it renders the graph. + * + * @param {?number} width The new width of the container. + * @param {?number} height The new height of the container. + * @return {sigma.renderers.webgl} Returns the instance itself. + */ + sigma.renderers.webgl.prototype.resize = function(w, h) { + var k, + oldWidth = this.width, + oldHeight = this.height, + pixelRatio = sigma.utils.getPixelRatio(); + + if (w !== undefined && h !== undefined) { + this.width = w; + this.height = h; + } else { + this.width = this.container.offsetWidth; + this.height = this.container.offsetHeight; + + w = this.width; + h = this.height; + } + + if (oldWidth !== this.width || oldHeight !== this.height) { + for (k in this.domElements) { + this.domElements[k].style.width = w + 'px'; + this.domElements[k].style.height = h + 'px'; + + if (this.domElements[k].tagName.toLowerCase() === 'canvas') { + // If simple 2D canvas: + if (this.contexts[k] && this.contexts[k].scale) { + this.domElements[k].setAttribute('width', (w * pixelRatio) + 'px'); + this.domElements[k].setAttribute('height', (h * pixelRatio) + 'px'); + + if (pixelRatio !== 1) + this.contexts[k].scale(pixelRatio, pixelRatio); + } else { + this.domElements[k].setAttribute( + 'width', + (w * this.settings('webglOversamplingRatio')) + 'px' + ); + this.domElements[k].setAttribute( + 'height', + (h * this.settings('webglOversamplingRatio')) + 'px' + ); + } + } + } + } + + // Scale: + for (k in this.contexts) + if (this.contexts[k] && this.contexts[k].viewport) + this.contexts[k].viewport( + 0, + 0, + this.width * this.settings('webglOversamplingRatio'), + this.height * this.settings('webglOversamplingRatio') + ); + + return this; + }; + + /** + * This method clears each canvas. + * + * @return {sigma.renderers.webgl} Returns the instance itself. + */ + sigma.renderers.webgl.prototype.clear = function() { + this.contexts.labels.clearRect(0, 0, this.width, this.height); + this.contexts.nodes.clear(this.contexts.nodes.COLOR_BUFFER_BIT); + this.contexts.edges.clear(this.contexts.edges.COLOR_BUFFER_BIT); + + return this; + }; + + /** + * This method kills contexts and other attributes. + */ + sigma.renderers.webgl.prototype.kill = function() { + var k, + captor; + + // Kill captors: + while ((captor = this.captors.pop())) + captor.kill(); + delete this.captors; + + // Kill contexts: + for (k in this.domElements) { + this.domElements[k].parentNode.removeChild(this.domElements[k]); + delete this.domElements[k]; + delete this.contexts[k]; + } + delete this.domElements; + delete this.contexts; + }; + + + + + /** + * The object "sigma.webgl.nodes" contains the different WebGL node + * renderers. The default one draw nodes as discs. Here are the attributes + * any node renderer must have: + * + * {number} POINTS The number of points required to draw a node. + * {number} ATTRIBUTES The number of attributes needed to draw one point. + * {function} addNode A function that adds a node to the data stack that + * will be given to the buffer. Here is the arguments: + * > {object} node + * > {number} index The node index in the + * nodes array. + * > {Float32Array} data The stack. + * > {object} options Some options. + * {function} render The function that will effectively render the nodes + * into the buffer. + * > {WebGLRenderingContext} gl + * > {WebGLProgram} program + * > {Float32Array} data The stack to give to the + * buffer. + * > {object} params An object containing some + * options, like width, + * height, the camera ratio. + * {function} initProgram The function that will initiate the program, with + * the relevant shaders and parameters. It must return + * the newly created program. + * + * Check sigma.webgl.nodes.def or sigma.webgl.nodes.fast to see how it + * works more precisely. + */ + sigma.utils.pkg('sigma.webgl.nodes'); + + + + + /** + * The object "sigma.webgl.edges" contains the different WebGL edge + * renderers. The default one draw edges as direct lines. Here are the + * attributes any edge renderer must have: + * + * {number} POINTS The number of points required to draw an edge. + * {number} ATTRIBUTES The number of attributes needed to draw one point. + * {function} addEdge A function that adds an edge to the data stack that + * will be given to the buffer. Here is the arguments: + * > {object} edge + * > {object} source + * > {object} target + * > {Float32Array} data The stack. + * > {object} options Some options. + * {function} render The function that will effectively render the edges + * into the buffer. + * > {WebGLRenderingContext} gl + * > {WebGLProgram} program + * > {Float32Array} data The stack to give to the + * buffer. + * > {object} params An object containing some + * options, like width, + * height, the camera ratio. + * {function} initProgram The function that will initiate the program, with + * the relevant shaders and parameters. It must return + * the newly created program. + * + * Check sigma.webgl.edges.def or sigma.webgl.edges.fast to see how it + * works more precisely. + */ + sigma.utils.pkg('sigma.webgl.edges'); + + + + + /** + * The object "sigma.canvas.labels" contains the different + * label renderers for the WebGL renderer. Since displaying texts in WebGL is + * definitely painful and since there a way less labels to display than nodes + * or edges, the default renderer simply renders them in a canvas. + * + * A labels renderer is a simple function, taking as arguments the related + * node, the renderer and a settings function. + */ + sigma.utils.pkg('sigma.canvas.labels'); +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.curve.js b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.curve.js new file mode 100644 index 0000000..37f82e6 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.curve.js @@ -0,0 +1,84 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.svg.edges'); + + /** + * The curve edge renderer. It renders the node as a bezier curve. + */ + sigma.svg.edges.curve = { + + /** + * SVG Element creation. + * + * @param {object} edge The edge object. + * @param {object} source The source node object. + * @param {object} target The target node object. + * @param {configurable} settings The settings function. + */ + create: function(edge, source, target, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + var path = document.createElementNS(settings('xmlns'), 'path'); + + // Attributes + path.setAttributeNS(null, 'data-edge-id', edge.id); + path.setAttributeNS(null, 'class', settings('classPrefix') + '-edge'); + path.setAttributeNS(null, 'stroke', color); + + return path; + }, + + /** + * SVG Element update. + * + * @param {object} edge The edge object. + * @param {DOMElement} line The line DOM Element. + * @param {object} source The source node object. + * @param {object} target The target node object. + * @param {configurable} settings The settings function. + */ + update: function(edge, path, source, target, settings) { + var prefix = settings('prefix') || ''; + + path.setAttributeNS(null, 'stroke-width', edge[prefix + 'size'] || 1); + + // Control point + var cx = (source[prefix + 'x'] + target[prefix + 'x']) / 2 + + (target[prefix + 'y'] - source[prefix + 'y']) / 4, + cy = (source[prefix + 'y'] + target[prefix + 'y']) / 2 + + (source[prefix + 'x'] - target[prefix + 'x']) / 4; + + // Path + var p = 'M' + source[prefix + 'x'] + ',' + source[prefix + 'y'] + ' ' + + 'Q' + cx + ',' + cy + ' ' + + target[prefix + 'x'] + ',' + target[prefix + 'y']; + + // Updating attributes + path.setAttributeNS(null, 'd', p); + path.setAttributeNS(null, 'fill', 'none'); + + // Showing + path.style.display = ''; + + return this; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.def.js b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.def.js new file mode 100644 index 0000000..e48d57b --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.edges.def.js @@ -0,0 +1,73 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.svg.edges'); + + /** + * The default edge renderer. It renders the node as a simple line. + */ + sigma.svg.edges.def = { + + /** + * SVG Element creation. + * + * @param {object} edge The edge object. + * @param {object} source The source node object. + * @param {object} target The target node object. + * @param {configurable} settings The settings function. + */ + create: function(edge, source, target, settings) { + var color = edge.color, + prefix = settings('prefix') || '', + edgeColor = settings('edgeColor'), + defaultNodeColor = settings('defaultNodeColor'), + defaultEdgeColor = settings('defaultEdgeColor'); + + if (!color) + switch (edgeColor) { + case 'source': + color = source.color || defaultNodeColor; + break; + case 'target': + color = target.color || defaultNodeColor; + break; + default: + color = defaultEdgeColor; + break; + } + + var line = document.createElementNS(settings('xmlns'), 'line'); + + // Attributes + line.setAttributeNS(null, 'data-edge-id', edge.id); + line.setAttributeNS(null, 'class', settings('classPrefix') + '-edge'); + line.setAttributeNS(null, 'stroke', color); + + return line; + }, + + /** + * SVG Element update. + * + * @param {object} edge The edge object. + * @param {DOMElement} line The line DOM Element. + * @param {object} source The source node object. + * @param {object} target The target node object. + * @param {configurable} settings The settings function. + */ + update: function(edge, line, source, target, settings) { + var prefix = settings('prefix') || ''; + + line.setAttributeNS(null, 'stroke-width', edge[prefix + 'size'] || 1); + line.setAttributeNS(null, 'x1', source[prefix + 'x']); + line.setAttributeNS(null, 'y1', source[prefix + 'y']); + line.setAttributeNS(null, 'x2', target[prefix + 'x']); + line.setAttributeNS(null, 'y2', target[prefix + 'y']); + + // Showing + line.style.display = ''; + + return this; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/svg/sigma.svg.hovers.def.js b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.hovers.def.js new file mode 100644 index 0000000..6525ab9 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.hovers.def.js @@ -0,0 +1,113 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.svg.hovers'); + + /** + * The default hover renderer. + */ + sigma.svg.hovers.def = { + + /** + * SVG Element creation. + * + * @param {object} node The node object. + * @param {CanvasElement} measurementCanvas A fake canvas handled by + * the svg to perform some measurements and + * passed by the renderer. + * @param {DOMElement} nodeCircle The node DOM Element. + * @param {configurable} settings The settings function. + */ + create: function(node, nodeCircle, measurementCanvas, settings) { + + // Defining visual properties + var x, + y, + w, + h, + e, + d, + fontStyle = settings('hoverFontStyle') || settings('fontStyle'), + prefix = settings('prefix') || '', + size = node[prefix + 'size'], + fontSize = (settings('labelSize') === 'fixed') ? + settings('defaultLabelSize') : + settings('labelSizeRatio') * size, + fontColor = (settings('labelHoverColor') === 'node') ? + (node.color || settings('defaultNodeColor')) : + settings('defaultLabelHoverColor'); + + // Creating elements + var group = document.createElementNS(settings('xmlns'), 'g'), + rectangle = document.createElementNS(settings('xmlns'), 'rect'), + circle = document.createElementNS(settings('xmlns'), 'circle'), + text = document.createElementNS(settings('xmlns'), 'text'); + + // Defining properties + group.setAttributeNS(null, 'class', settings('classPrefix') + '-hover'); + group.setAttributeNS(null, 'data-node-id', node.id); + + if (typeof node.label === 'string') { + + // Text + text.innerHTML = node.label; + text.textContent = node.label; + text.setAttributeNS( + null, + 'class', + settings('classPrefix') + '-hover-label'); + text.setAttributeNS(null, 'font-size', fontSize); + text.setAttributeNS(null, 'font-family', settings('font')); + text.setAttributeNS(null, 'fill', fontColor); + text.setAttributeNS(null, 'x', + Math.round(node[prefix + 'x'] + size + 3)); + text.setAttributeNS(null, 'y', + Math.round(node[prefix + 'y'] + fontSize / 3)); + + // Measures + // OPTIMIZE: Find a better way than a measurement canvas + x = Math.round(node[prefix + 'x'] - fontSize / 2 - 2); + y = Math.round(node[prefix + 'y'] - fontSize / 2 - 2); + w = Math.round( + measurementCanvas.measureText(node.label).width + + fontSize / 2 + size + 9 + ); + h = Math.round(fontSize + 4); + e = Math.round(fontSize / 2 + 2); + + // Circle + circle.setAttributeNS( + null, + 'class', + settings('classPrefix') + '-hover-area'); + circle.setAttributeNS(null, 'fill', '#fff'); + circle.setAttributeNS(null, 'cx', node[prefix + 'x']); + circle.setAttributeNS(null, 'cy', node[prefix + 'y']); + circle.setAttributeNS(null, 'r', e); + + // Rectangle + rectangle.setAttributeNS( + null, + 'class', + settings('classPrefix') + '-hover-area'); + rectangle.setAttributeNS(null, 'fill', '#fff'); + rectangle.setAttributeNS(null, 'x', node[prefix + 'x'] + e / 4); + rectangle.setAttributeNS(null, 'y', node[prefix + 'y'] - e); + rectangle.setAttributeNS(null, 'width', w); + rectangle.setAttributeNS(null, 'height', h); + } + + // Appending childs + group.appendChild(circle); + group.appendChild(rectangle); + group.appendChild(text); + group.appendChild(nodeCircle); + + return group; + } + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/svg/sigma.svg.labels.def.js b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.labels.def.js new file mode 100644 index 0000000..4027c83 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.labels.def.js @@ -0,0 +1,80 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Initialize packages: + sigma.utils.pkg('sigma.svg.labels'); + + /** + * The default label renderer. It renders the label as a simple text. + */ + sigma.svg.labels.def = { + + /** + * SVG Element creation. + * + * @param {object} node The node object. + * @param {configurable} settings The settings function. + */ + create: function(node, settings) { + var prefix = settings('prefix') || '', + size = node[prefix + 'size'], + text = document.createElementNS(settings('xmlns'), 'text'); + + var fontSize = (settings('labelSize') === 'fixed') ? + settings('defaultLabelSize') : + settings('labelSizeRatio') * size; + + var fontColor = (settings('labelColor') === 'node') ? + (node.color || settings('defaultNodeColor')) : + settings('defaultLabelColor'); + + text.setAttributeNS(null, 'data-label-target', node.id); + text.setAttributeNS(null, 'class', settings('classPrefix') + '-label'); + text.setAttributeNS(null, 'font-size', fontSize); + text.setAttributeNS(null, 'font-family', settings('font')); + text.setAttributeNS(null, 'fill', fontColor); + + text.innerHTML = node.label; + text.textContent = node.label; + + return text; + }, + + /** + * SVG Element update. + * + * @param {object} node The node object. + * @param {DOMElement} text The label DOM element. + * @param {configurable} settings The settings function. + */ + update: function(node, text, settings) { + var prefix = settings('prefix') || '', + size = node[prefix + 'size']; + + var fontSize = (settings('labelSize') === 'fixed') ? + settings('defaultLabelSize') : + settings('labelSizeRatio') * size; + + // Case when we don't want to display the label + if (!settings('forceLabels') && size < settings('labelThreshold')) + return; + + if (typeof node.label !== 'string') + return; + + // Updating + text.setAttributeNS(null, 'x', + Math.round(node[prefix + 'x'] + size + 3)); + text.setAttributeNS(null, 'y', + Math.round(node[prefix + 'y'] + fontSize / 3)); + + // Showing + text.style.display = ''; + + return this; + } + }; +}).call(this); diff --git a/sigma.js-1.2.0/src/renderers/svg/sigma.svg.nodes.def.js b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.nodes.def.js new file mode 100644 index 0000000..4c01b7a --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.nodes.def.js @@ -0,0 +1,58 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.svg.nodes'); + + /** + * The default node renderer. It renders the node as a simple disc. + */ + sigma.svg.nodes.def = { + + /** + * SVG Element creation. + * + * @param {object} node The node object. + * @param {configurable} settings The settings function. + */ + create: function(node, settings) { + var prefix = settings('prefix') || '', + circle = document.createElementNS(settings('xmlns'), 'circle'); + + // Defining the node's circle + circle.setAttributeNS(null, 'data-node-id', node.id); + circle.setAttributeNS(null, 'class', settings('classPrefix') + '-node'); + circle.setAttributeNS( + null, 'fill', node.color || settings('defaultNodeColor')); + + // Returning the DOM Element + return circle; + }, + + /** + * SVG Element update. + * + * @param {object} node The node object. + * @param {DOMElement} circle The node DOM element. + * @param {configurable} settings The settings function. + */ + update: function(node, circle, settings) { + var prefix = settings('prefix') || ''; + + // Applying changes + // TODO: optimize - check if necessary + circle.setAttributeNS(null, 'cx', node[prefix + 'x']); + circle.setAttributeNS(null, 'cy', node[prefix + 'y']); + circle.setAttributeNS(null, 'r', node[prefix + 'size']); + + // Updating only if not freestyle + if (!settings('freeStyle')) + circle.setAttributeNS( + null, 'fill', node.color || settings('defaultNodeColor')); + + // Showing + circle.style.display = ''; + + return this; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/svg/sigma.svg.utils.js b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.utils.js new file mode 100644 index 0000000..f00e2e5 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/svg/sigma.svg.utils.js @@ -0,0 +1,31 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.svg.utils'); + + /** + * Some useful functions used by sigma's SVG renderer. + */ + sigma.svg.utils = { + + /** + * SVG Element show. + * + * @param {DOMElement} element The DOM element to show. + */ + show: function(element) { + element.style.display = ''; + return this; + }, + + /** + * SVG Element hide. + * + * @param {DOMElement} element The DOM element to hide. + */ + hide: function(element) { + element.style.display = 'none'; + return this; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.arrow.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.arrow.js new file mode 100644 index 0000000..4b548ac --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.arrow.js @@ -0,0 +1,391 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.edges'); + + /** + * This edge renderer will display edges as arrows going from the source node + * to the target node. To deal with edge thicknesses, the lines are made of + * three triangles: two forming rectangles, with the gl.TRIANGLES drawing + * mode. + * + * It is expensive, since drawing a single edge requires 9 points, each + * having a lot of attributes. + */ + sigma.webgl.edges.arrow = { + POINTS: 9, + ATTRIBUTES: 11, + addEdge: function(edge, source, target, data, i, prefix, settings) { + var w = (edge[prefix + 'size'] || 1) / 2, + x1 = source[prefix + 'x'], + y1 = source[prefix + 'y'], + x2 = target[prefix + 'x'], + y2 = target[prefix + 'y'], + targetSize = target[prefix + 'size'], + color = edge.color; + + if (!color) + switch (settings('edgeColor')) { + case 'source': + color = source.color || settings('defaultNodeColor'); + break; + case 'target': + color = target.color || settings('defaultNodeColor'); + break; + default: + color = settings('defaultEdgeColor'); + break; + } + + // Normalize color: + color = sigma.utils.floatColor(color); + + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 1.0; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 0.0; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = 0.0; + data[i++] = color; + + // Arrow head: + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 1.0; + data[i++] = -1.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = targetSize; + data[i++] = 1.0; + data[i++] = 0.0; + data[i++] = 1.0; + data[i++] = 1.0; + data[i++] = color; + }, + render: function(gl, program, data, params) { + var buffer; + + // Define attributes: + var positionLocation1 = + gl.getAttribLocation(program, 'a_pos1'), + positionLocation2 = + gl.getAttribLocation(program, 'a_pos2'), + thicknessLocation = + gl.getAttribLocation(program, 'a_thickness'), + targetSizeLocation = + gl.getAttribLocation(program, 'a_tSize'), + delayLocation = + gl.getAttribLocation(program, 'a_delay'), + minusLocation = + gl.getAttribLocation(program, 'a_minus'), + headLocation = + gl.getAttribLocation(program, 'a_head'), + headPositionLocation = + gl.getAttribLocation(program, 'a_headPosition'), + colorLocation = + gl.getAttribLocation(program, 'a_color'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'), + matrixHalfPiLocation = + gl.getUniformLocation(program, 'u_matrixHalfPi'), + matrixHalfPiMinusLocation = + gl.getUniformLocation(program, 'u_matrixHalfPiMinus'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + nodeRatioLocation = + gl.getUniformLocation(program, 'u_nodeRatio'), + arrowHeadLocation = + gl.getUniformLocation(program, 'u_arrowHead'), + scaleLocation = + gl.getUniformLocation(program, 'u_scale'); + + buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); + + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + params.ratio / Math.pow(params.ratio, params.settings('edgesPowRatio')) + ); + gl.uniform1f( + nodeRatioLocation, + Math.pow(params.ratio, params.settings('nodesPowRatio')) / + params.ratio + ); + gl.uniform1f(arrowHeadLocation, 5.0); + gl.uniform1f(scaleLocation, params.scalingRatio); + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + gl.uniformMatrix2fv( + matrixHalfPiLocation, + false, + sigma.utils.matrices.rotation(Math.PI / 2, true) + ); + gl.uniformMatrix2fv( + matrixHalfPiMinusLocation, + false, + sigma.utils.matrices.rotation(-Math.PI / 2, true) + ); + + gl.enableVertexAttribArray(positionLocation1); + gl.enableVertexAttribArray(positionLocation2); + gl.enableVertexAttribArray(thicknessLocation); + gl.enableVertexAttribArray(targetSizeLocation); + gl.enableVertexAttribArray(delayLocation); + gl.enableVertexAttribArray(minusLocation); + gl.enableVertexAttribArray(headLocation); + gl.enableVertexAttribArray(headPositionLocation); + gl.enableVertexAttribArray(colorLocation); + + gl.vertexAttribPointer(positionLocation1, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer(positionLocation2, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + gl.vertexAttribPointer(thicknessLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 16 + ); + gl.vertexAttribPointer(targetSizeLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 20 + ); + gl.vertexAttribPointer(delayLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 24 + ); + gl.vertexAttribPointer(minusLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 28 + ); + gl.vertexAttribPointer(headLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 32 + ); + gl.vertexAttribPointer(headPositionLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 36 + ); + gl.vertexAttribPointer(colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 40 + ); + + gl.drawArrays( + gl.TRIANGLES, + params.start || 0, + params.count || (data.length / this.ATTRIBUTES) + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_pos1;', + 'attribute vec2 a_pos2;', + 'attribute float a_thickness;', + 'attribute float a_tSize;', + 'attribute float a_delay;', + 'attribute float a_minus;', + 'attribute float a_head;', + 'attribute float a_headPosition;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform float u_nodeRatio;', + 'uniform float u_arrowHead;', + 'uniform float u_scale;', + 'uniform mat3 u_matrix;', + 'uniform mat2 u_matrixHalfPi;', + 'uniform mat2 u_matrixHalfPiMinus;', + + 'varying vec4 color;', + + 'void main() {', + // Find the good point: + 'vec2 pos = normalize(a_pos2 - a_pos1);', + + 'mat2 matrix = (1.0 - a_head) *', + '(', + 'a_minus * u_matrixHalfPiMinus +', + '(1.0 - a_minus) * u_matrixHalfPi', + ') + a_head * (', + 'a_headPosition * u_matrixHalfPiMinus * 0.6 +', + '(a_headPosition * a_headPosition - 1.0) * mat2(1.0)', + ');', + + 'pos = a_pos1 + (', + // Deal with body: + '(1.0 - a_head) * a_thickness * u_ratio * matrix * pos +', + // Deal with head: + 'a_head * u_arrowHead * a_thickness * u_ratio * matrix * pos +', + // Deal with delay: + 'a_delay * pos * (', + 'a_tSize / u_nodeRatio +', + 'u_arrowHead * a_thickness * u_ratio', + ')', + ');', + + // Scale from [[-1 1] [-1 1]] to the container: + 'gl_Position = vec4(', + '((u_matrix * vec3(pos, 1)).xy /', + 'u_resolution * 2.0 - 1.0) * vec2(1, -1),', + '0,', + '1', + ');', + + // Extract the color: + 'float c = a_color;', + 'color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;', + 'color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 color;', + + 'void main(void) {', + 'gl_FragColor = color;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.def.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.def.js new file mode 100644 index 0000000..6931bb5 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.def.js @@ -0,0 +1,258 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.edges'); + + /** + * This edge renderer will display edges as lines going from the source node + * to the target node. To deal with edge thicknesses, the lines are made of + * two triangles forming rectangles, with the gl.TRIANGLES drawing mode. + * + * It is expensive, since drawing a single edge requires 6 points, each + * having 7 attributes (source position, target position, thickness, color + * and a flag indicating which vertice of the rectangle it is). + */ + sigma.webgl.edges.def = { + POINTS: 6, + ATTRIBUTES: 7, + addEdge: function(edge, source, target, data, i, prefix, settings) { + var w = (edge[prefix + 'size'] || 1) / 2, + x1 = source[prefix + 'x'], + y1 = source[prefix + 'y'], + x2 = target[prefix + 'x'], + y2 = target[prefix + 'y'], + color = edge.color; + + if (!color) + switch (settings('edgeColor')) { + case 'source': + color = source.color || settings('defaultNodeColor'); + break; + case 'target': + color = target.color || settings('defaultNodeColor'); + break; + default: + color = settings('defaultEdgeColor'); + break; + } + + // Normalize color: + color = sigma.utils.floatColor(color); + + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = w; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = 1.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = w; + data[i++] = 0.0; + data[i++] = color; + + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = w; + data[i++] = 1.0; + data[i++] = color; + + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = w; + data[i++] = 0.0; + data[i++] = color; + }, + render: function(gl, program, data, params) { + var buffer; + + // Define attributes: + var colorLocation = + gl.getAttribLocation(program, 'a_color'), + positionLocation1 = + gl.getAttribLocation(program, 'a_position1'), + positionLocation2 = + gl.getAttribLocation(program, 'a_position2'), + thicknessLocation = + gl.getAttribLocation(program, 'a_thickness'), + minusLocation = + gl.getAttribLocation(program, 'a_minus'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'), + matrixHalfPiLocation = + gl.getUniformLocation(program, 'u_matrixHalfPi'), + matrixHalfPiMinusLocation = + gl.getUniformLocation(program, 'u_matrixHalfPiMinus'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + scaleLocation = + gl.getUniformLocation(program, 'u_scale'); + + buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); + + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + params.ratio / Math.pow(params.ratio, params.settings('edgesPowRatio')) + ); + gl.uniform1f(scaleLocation, params.scalingRatio); + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + gl.uniformMatrix2fv( + matrixHalfPiLocation, + false, + sigma.utils.matrices.rotation(Math.PI / 2, true) + ); + gl.uniformMatrix2fv( + matrixHalfPiMinusLocation, + false, + sigma.utils.matrices.rotation(-Math.PI / 2, true) + ); + + gl.enableVertexAttribArray(colorLocation); + gl.enableVertexAttribArray(positionLocation1); + gl.enableVertexAttribArray(positionLocation2); + gl.enableVertexAttribArray(thicknessLocation); + gl.enableVertexAttribArray(minusLocation); + + gl.vertexAttribPointer(positionLocation1, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer(positionLocation2, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + gl.vertexAttribPointer(thicknessLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 16 + ); + gl.vertexAttribPointer(minusLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 20 + ); + gl.vertexAttribPointer(colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 24 + ); + + gl.drawArrays( + gl.TRIANGLES, + params.start || 0, + params.count || (data.length / this.ATTRIBUTES) + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position1;', + 'attribute vec2 a_position2;', + 'attribute float a_thickness;', + 'attribute float a_minus;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform float u_scale;', + 'uniform mat3 u_matrix;', + 'uniform mat2 u_matrixHalfPi;', + 'uniform mat2 u_matrixHalfPiMinus;', + + 'varying vec4 color;', + + 'void main() {', + // Find the good point: + 'vec2 position = a_thickness * u_ratio *', + 'normalize(a_position2 - a_position1);', + + 'mat2 matrix = a_minus * u_matrixHalfPiMinus +', + '(1.0 - a_minus) * u_matrixHalfPi;', + + 'position = matrix * position + a_position1;', + + // Scale from [[-1 1] [-1 1]] to the container: + 'gl_Position = vec4(', + '((u_matrix * vec3(position, 1)).xy /', + 'u_resolution * 2.0 - 1.0) * vec2(1, -1),', + '0,', + '1', + ');', + + // Extract the color: + 'float c = a_color;', + 'color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;', + 'color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 color;', + + 'void main(void) {', + 'gl_FragColor = color;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.fast.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.fast.js new file mode 100644 index 0000000..48f56d7 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.fast.js @@ -0,0 +1,147 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.edges'); + + /** + * This edge renderer will display edges as lines with the gl.LINES display + * mode. Since this mode does not support well thickness, edges are all drawn + * with the same thickness (3px), independantly of the edge attributes or the + * zooming ratio. + */ + sigma.webgl.edges.fast = { + POINTS: 2, + ATTRIBUTES: 3, + addEdge: function(edge, source, target, data, i, prefix, settings) { + var w = (edge[prefix + 'size'] || 1) / 2, + x1 = source[prefix + 'x'], + y1 = source[prefix + 'y'], + x2 = target[prefix + 'x'], + y2 = target[prefix + 'y'], + color = edge.color; + + if (!color) + switch (settings('edgeColor')) { + case 'source': + color = source.color || settings('defaultNodeColor'); + break; + case 'target': + color = target.color || settings('defaultNodeColor'); + break; + default: + color = settings('defaultEdgeColor'); + break; + } + + // Normalize color: + color = sigma.utils.floatColor(color); + + data[i++] = x1; + data[i++] = y1; + data[i++] = color; + + data[i++] = x2; + data[i++] = y2; + data[i++] = color; + }, + render: function(gl, program, data, params) { + var buffer; + + // Define attributes: + var colorLocation = + gl.getAttribLocation(program, 'a_color'), + positionLocation = + gl.getAttribLocation(program, 'a_position'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'); + + buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.DYNAMIC_DRAW); + + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + + gl.enableVertexAttribArray(positionLocation); + gl.enableVertexAttribArray(colorLocation); + + gl.vertexAttribPointer(positionLocation, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer(colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + + gl.lineWidth(3); + gl.drawArrays( + gl.LINES, + params.start || 0, + params.count || (data.length / this.ATTRIBUTES) + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform mat3 u_matrix;', + + 'varying vec4 color;', + + 'void main() {', + // Scale from [[-1 1] [-1 1]] to the container: + 'gl_Position = vec4(', + '((u_matrix * vec3(a_position, 1)).xy /', + 'u_resolution * 2.0 - 1.0) * vec2(1, -1),', + '0,', + '1', + ');', + + // Extract the color: + 'float c = a_color;', + 'color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;', + 'color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 color;', + + 'void main(void) {', + 'gl_FragColor = color;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLine.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLine.js new file mode 100644 index 0000000..5f3d3bd --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLine.js @@ -0,0 +1,255 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.edges'); + + /** + * This will render edges as thick lines using four points translated + * orthogonally from the source & target's centers by half thickness. + * + * Rendering two triangles by using only four points is made possible through + * the use of indices. + * + * This method should be faster than the 6 points / 2 triangles approach and + * should handle thickness better than with gl.LINES. + * + * This version of the shader balances geometry computation evenly between + * the CPU & GPU (normals are computed on the CPU side). + */ + sigma.webgl.edges.thickLine = { + POINTS: 4, + ATTRIBUTES: 6, + addEdge: function(edge, source, target, data, i, prefix, settings) { + var thickness = (edge[prefix + 'size'] || 1), + x1 = source[prefix + 'x'], + y1 = source[prefix + 'y'], + x2 = target[prefix + 'x'], + y2 = target[prefix + 'y'], + color = edge.color; + + if (!color) + switch (settings('edgeColor')) { + case 'source': + color = source.color || settings('defaultNodeColor'); + break; + case 'target': + color = target.color || settings('defaultNodeColor'); + break; + default: + color = settings('defaultEdgeColor'); + break; + } + + // Normalize color: + color = sigma.utils.floatColor(color); + + // Computing normals: + var dx = x2 - x1, + dy = y2 - y1, + len = dx * dx + dy * dy, + normals; + + if (!len) { + normals = [0, 0]; + } + else { + len = 1 / Math.sqrt(len); + + var normals = [ + -dy * len, + dx * len + ]; + } + + // First point + data[i++] = x1; + data[i++] = y1; + data[i++] = normals[0]; + data[i++] = normals[1]; + data[i++] = thickness; + data[i++] = color; + + // First point flipped + data[i++] = x1; + data[i++] = y1; + data[i++] = -normals[0]; + data[i++] = -normals[1]; + data[i++] = thickness; + data[i++] = color; + + // Second point + data[i++] = x2; + data[i++] = y2; + data[i++] = normals[0]; + data[i++] = normals[1]; + data[i++] = thickness; + data[i++] = color; + + // Second point flipped + data[i++] = x2; + data[i++] = y2; + data[i++] = -normals[0]; + data[i++] = -normals[1]; + data[i++] = thickness; + data[i++] = color; + }, + computeIndices: function(data) { + var indices = new Uint16Array(data.length * 6), + c = 0, + i = 0, + j, + l; + + for (j = 0, l = data.length / this.ATTRIBUTES; i < l; i++) { + indices[c++] = i + 0; + indices[c++] = i + 1; + indices[c++] = i + 2; + indices[c++] = i + 2; + indices[c++] = i + 1; + indices[c++] = i + 3; + i += 3; + } + + return indices; + }, + render: function(gl, program, data, params) { + + // Define attributes: + var positionLocation = + gl.getAttribLocation(program, 'a_position'), + normalLocation = + gl.getAttribLocation(program, 'a_normal'), + thicknessLocation = + gl.getAttribLocation(program, 'a_thickness'), + colorLocation = + gl.getAttribLocation(program, 'a_color'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'); + + // Creating buffer: + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); + + // Binding uniforms: + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + params.ratio / Math.pow(params.ratio, params.settings('edgesPowRatio')) + ); + + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + + // Binding attributes: + gl.enableVertexAttribArray(positionLocation); + gl.enableVertexAttribArray(normalLocation); + gl.enableVertexAttribArray(thicknessLocation); + gl.enableVertexAttribArray(colorLocation); + + gl.vertexAttribPointer(positionLocation, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer(normalLocation, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + gl.vertexAttribPointer(thicknessLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 16 + ); + gl.vertexAttribPointer(colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 20 + ); + + // Creating indices buffer: + var indicesBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, params.indicesData, gl.STATIC_DRAW); + + // Drawing: + gl.drawElements( + gl.TRIANGLES, + params.indicesData.length, + gl.UNSIGNED_SHORT, + params.start || 0 + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position;', + 'attribute vec2 a_normal;', + 'attribute float a_thickness;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform mat3 u_matrix;', + + 'varying vec4 v_color;', + + 'void main() {', + + // Scale from [[-1 1] [-1 1]] to the container: + 'vec2 delta = vec2(a_normal * a_thickness / 2.0);', + 'vec2 position = (u_matrix * vec3(a_position + delta, 1)).xy;', + 'position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);', + + // Applying + 'gl_Position = vec4(position, 0, 1);', + 'gl_PointSize = 10.0;', + + // Extract the color: + 'float c = a_color;', + 'v_color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'v_color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'v_color.r = mod(c, 256.0); c = floor(c / 256.0); v_color /= 255.0;', + 'v_color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 v_color;', + + 'void main(void) {', + 'gl_FragColor = v_color;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineCPU.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineCPU.js new file mode 100644 index 0000000..0eda8bf --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineCPU.js @@ -0,0 +1,220 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.edges'); + + /** + * This will render edges as thick lines using four points translated + * orthogonally from the source & target's centers by half thickness. + * + * Rendering two triangles by using only four points is made possible through + * the use of indices. + * + * This method should be faster than the 6 points / 2 triangles approach and + * should handle thickness better than with gl.LINES. + * + * This version of the shader computes geometry on the CPU side to make + * the handled array buffer much lighter. + */ + sigma.webgl.edges.thickLineCPU = { + POINTS: 4, + ATTRIBUTES: 3, + addEdge: function(edge, source, target, data, i, prefix, settings) { + var thickness = (edge[prefix + 'size'] || 1) / 2, + x1 = source[prefix + 'x'], + y1 = source[prefix + 'y'], + x2 = target[prefix + 'x'], + y2 = target[prefix + 'y'], + color = edge.color; + + if (!color) + switch (settings('edgeColor')) { + case 'source': + color = source.color || settings('defaultNodeColor'); + break; + case 'target': + color = target.color || settings('defaultNodeColor'); + break; + default: + color = settings('defaultEdgeColor'); + break; + } + + // Normalize color: + color = sigma.utils.floatColor(color); + + // Computing normals: + var dx = x2 - x1, + dy = y2 - y1, + len = dx * dx + dy * dy, + normals; + + if (!len) { + normals = [0, 0]; + } + else { + len = 1 / Math.sqrt(len); + + var normals = [ + -dy * len * thickness, + dx * len * thickness + ]; + } + + // First point + data[i++] = x1 + normals[0]; + data[i++] = y1 + normals[1]; + data[i++] = color; + + // First point flipped + data[i++] = x1 - normals[0]; + data[i++] = y1 - normals[1]; + data[i++] = color; + + // Second point + data[i++] = x2 + normals[0]; + data[i++] = y2 + normals[1]; + data[i++] = color; + + // Second point flipped + data[i++] = x2 - normals[0]; + data[i++] = y2 - normals[1]; + data[i++] = color; + }, + computeIndices: function(data) { + var indices = new Uint16Array(data.length * 6), + c = 0, + i = 0, + j, + l; + + for (j = 0, l = data.length / this.ATTRIBUTES; i < l; i++) { + indices[c++] = i + 0; + indices[c++] = i + 1; + indices[c++] = i + 2; + indices[c++] = i + 2; + indices[c++] = i + 1; + indices[c++] = i + 3; + i += 3; + } + + return indices; + }, + render: function(gl, program, data, params) { + + // Define attributes: + var positionLocation = + gl.getAttribLocation(program, 'a_position'), + colorLocation = + gl.getAttribLocation(program, 'a_color'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'); + + // Creating buffer: + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); + + // Binding uniforms: + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + params.ratio / Math.pow(params.ratio, params.settings('edgesPowRatio')) + ); + + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + + // Binding attributes: + gl.enableVertexAttribArray(positionLocation); + gl.enableVertexAttribArray(colorLocation); + + gl.vertexAttribPointer(positionLocation, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer(colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + + // Creating indices buffer: + var indicesBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, params.indicesData, gl.STATIC_DRAW); + + // Drawing: + gl.drawElements( + gl.TRIANGLES, + params.indicesData.length, + gl.UNSIGNED_SHORT, + params.start || 0 + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform mat3 u_matrix;', + + 'varying vec4 v_color;', + + 'void main() {', + + // Scale from [[-1 1] [-1 1]] to the container: + 'vec2 position = (u_matrix * vec3(a_position, 1)).xy;', + 'position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);', + + // Applying + 'gl_Position = vec4(position, 0, 1);', + 'gl_PointSize = 10.0;', + + // Extract the color: + 'float c = a_color;', + 'v_color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'v_color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'v_color.r = mod(c, 256.0); c = floor(c / 256.0); v_color /= 255.0;', + 'v_color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 v_color;', + + 'void main(void) {', + 'gl_FragColor = v_color;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineGPU.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineGPU.js new file mode 100644 index 0000000..e34fe55 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.edges.thickLineGPU.js @@ -0,0 +1,255 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.edges'); + + /** + * This will render edges as thick lines using four points translated + * orthogonally from the source & target's centers by half thickness. + * + * Rendering two triangles by using only four points is made possible through + * the use of indices. + * + * This method should be faster than the 6 points / 2 triangles approach and + * should handle thickness better than with gl.LINES. + * + * This version of the shader computes geometry on the GPU side only, making + * the handled array buffer heavier but sparing costly computation to the + * CPU side. + */ + sigma.webgl.edges.thickLineGPU = { + POINTS: 4, + ATTRIBUTES: 7, + addEdge: function(edge, source, target, data, i, prefix, settings) { + var thickness = (edge[prefix + 'size'] || 1), + x1 = source[prefix + 'x'], + y1 = source[prefix + 'y'], + x2 = target[prefix + 'x'], + y2 = target[prefix + 'y'], + color = edge.color; + + if (!color) + switch (settings('edgeColor')) { + case 'source': + color = source.color || settings('defaultNodeColor'); + break; + case 'target': + color = target.color || settings('defaultNodeColor'); + break; + default: + color = settings('defaultEdgeColor'); + break; + } + + // Normalize color: + color = sigma.utils.floatColor(color); + + // First point + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = 1.0; + data[i++] = thickness; + data[i++] = color; + + // First point flipped + data[i++] = x1; + data[i++] = y1; + data[i++] = x2; + data[i++] = y2; + data[i++] = -1.0; + data[i++] = thickness; + data[i++] = color; + + // Second point + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = 1.0; + data[i++] = thickness; + data[i++] = color; + + // Second point flipped + data[i++] = x2; + data[i++] = y2; + data[i++] = x1; + data[i++] = y1; + data[i++] = -1.0; + data[i++] = thickness; + data[i++] = color; + }, + computeIndices: function(data) { + var indices = new Uint16Array(data.length * 6), + c = 0, + i = 0, + j, + l; + + for (j = 0, l = data.length / this.ATTRIBUTES; i < l; i++) { + indices[c++] = i + 0; + indices[c++] = i + 1; + indices[c++] = i + 2; + indices[c++] = i + 2; + indices[c++] = i + 1; + indices[c++] = i + 3; + i += 3; + } + + return indices; + }, + render: function(gl, program, data, params) { + + // Define attributes: + var position1Location = + gl.getAttribLocation(program, 'a_position1'), + position2Location = + gl.getAttribLocation(program, 'a_position2'), + directionLocation = + gl.getAttribLocation(program, 'a_direction'), + thicknessLocation = + gl.getAttribLocation(program, 'a_thickness'), + colorLocation = + gl.getAttribLocation(program, 'a_color'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'); + + // Creating buffer: + var buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.STATIC_DRAW); + + // Binding uniforms: + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + params.ratio / Math.pow(params.ratio, params.settings('edgesPowRatio')) + ); + + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + + // Binding attributes: + gl.enableVertexAttribArray(position1Location); + gl.enableVertexAttribArray(position2Location); + gl.enableVertexAttribArray(directionLocation); + gl.enableVertexAttribArray(thicknessLocation); + gl.enableVertexAttribArray(colorLocation); + + gl.vertexAttribPointer(position1Location, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer(position2Location, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + gl.vertexAttribPointer(directionLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 16 + ); + gl.vertexAttribPointer(thicknessLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 20 + ); + gl.vertexAttribPointer(colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 24 + ); + + // Creating indices buffer: + var indicesBuffer = gl.createBuffer(); + gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, indicesBuffer); + gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, params.indicesData, gl.STATIC_DRAW); + + // Drawing: + gl.drawElements( + gl.TRIANGLES, + params.indicesData.length, + gl.UNSIGNED_SHORT, + params.start || 0 + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position1;', + 'attribute vec2 a_position2;', + 'attribute float a_direction;', + 'attribute float a_thickness;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform mat3 u_matrix;', + + 'varying vec4 v_color;', + + 'void main() {', + + // Scale from [[-1 1] [-1 1]] to the container: + 'vec2 translation = a_position2 - a_position1;', + 'vec2 orthogonal = vec2(translation.y, -translation.x);', + 'vec2 delta = a_thickness / 2.0 * a_direction * normalize(orthogonal);', + 'vec2 position = (u_matrix * vec3(a_position1 + delta, 1)).xy;', + 'position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);', + + // Applying + 'gl_Position = vec4(position, 0, 1);', + 'gl_PointSize = 10.0;', + + // Extract the color: + 'float c = a_color;', + 'v_color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'v_color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'v_color.r = mod(c, 256.0); c = floor(c / 256.0); v_color /= 255.0;', + 'v_color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER, function(error) {console.log(error);} + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 v_color;', + + 'void main(void) {', + 'gl_FragColor = v_color;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.def.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.def.js new file mode 100644 index 0000000..d169713 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.def.js @@ -0,0 +1,201 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.nodes'); + + /** + * This node renderer will display nodes as discs, shaped in triangles with + * the gl.TRIANGLES display mode. So, to be more precise, to draw one node, + * it will store three times the center of node, with the color and the size, + * and an angle indicating which "corner" of the triangle to draw. + * + * The fragment shader does not deal with anti-aliasing, so make sure that + * you deal with it somewhere else in the code (by default, the WebGL + * renderer will oversample the rendering through the webglOversamplingRatio + * value). + */ + sigma.webgl.nodes.def = { + POINTS: 3, + ATTRIBUTES: 5, + addNode: function(node, data, i, prefix, settings) { + var color = sigma.utils.floatColor( + node.color || settings('defaultNodeColor') + ); + + data[i++] = node[prefix + 'x']; + data[i++] = node[prefix + 'y']; + data[i++] = node[prefix + 'size']; + data[i++] = color; + data[i++] = 0; + + data[i++] = node[prefix + 'x']; + data[i++] = node[prefix + 'y']; + data[i++] = node[prefix + 'size']; + data[i++] = color; + data[i++] = 2 * Math.PI / 3; + + data[i++] = node[prefix + 'x']; + data[i++] = node[prefix + 'y']; + data[i++] = node[prefix + 'size']; + data[i++] = color; + data[i++] = 4 * Math.PI / 3; + }, + render: function(gl, program, data, params) { + var buffer; + + // Define attributes: + var positionLocation = + gl.getAttribLocation(program, 'a_position'), + sizeLocation = + gl.getAttribLocation(program, 'a_size'), + colorLocation = + gl.getAttribLocation(program, 'a_color'), + angleLocation = + gl.getAttribLocation(program, 'a_angle'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + scaleLocation = + gl.getUniformLocation(program, 'u_scale'); + + buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.DYNAMIC_DRAW); + + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + 1 / Math.pow(params.ratio, params.settings('nodesPowRatio')) + ); + gl.uniform1f(scaleLocation, params.scalingRatio); + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + + gl.enableVertexAttribArray(positionLocation); + gl.enableVertexAttribArray(sizeLocation); + gl.enableVertexAttribArray(colorLocation); + gl.enableVertexAttribArray(angleLocation); + + gl.vertexAttribPointer( + positionLocation, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer( + sizeLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + gl.vertexAttribPointer( + colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 12 + ); + gl.vertexAttribPointer( + angleLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 16 + ); + + gl.drawArrays( + gl.TRIANGLES, + params.start || 0, + params.count || (data.length / this.ATTRIBUTES) + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position;', + 'attribute float a_size;', + 'attribute float a_color;', + 'attribute float a_angle;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform float u_scale;', + 'uniform mat3 u_matrix;', + + 'varying vec4 color;', + 'varying vec2 center;', + 'varying float radius;', + + 'void main() {', + // Multiply the point size twice: + 'radius = a_size * u_ratio;', + + // Scale from [[-1 1] [-1 1]] to the container: + 'vec2 position = (u_matrix * vec3(a_position, 1)).xy;', + // 'center = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);', + 'center = position * u_scale;', + 'center = vec2(center.x, u_scale * u_resolution.y - center.y);', + + 'position = position +', + '2.0 * radius * vec2(cos(a_angle), sin(a_angle));', + 'position = (position / u_resolution * 2.0 - 1.0) * vec2(1, -1);', + + 'radius = radius * u_scale;', + + 'gl_Position = vec4(position, 0, 1);', + + // Extract the color: + 'float c = a_color;', + 'color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;', + 'color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 color;', + 'varying vec2 center;', + 'varying float radius;', + + 'void main(void) {', + 'vec4 color0 = vec4(0.0, 0.0, 0.0, 0.0);', + + 'vec2 m = gl_FragCoord.xy - center;', + 'float diff = radius - sqrt(m.x * m.x + m.y * m.y);', + + // Here is how we draw a disc instead of a square: + 'if (diff > 0.0)', + 'gl_FragColor = color;', + 'else', + 'gl_FragColor = color0;', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.fast.js b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.fast.js new file mode 100644 index 0000000..2af7bb0 --- /dev/null +++ b/sigma.js-1.2.0/src/renderers/webgl/sigma.webgl.nodes.fast.js @@ -0,0 +1,176 @@ +;(function() { + 'use strict'; + + sigma.utils.pkg('sigma.webgl.nodes'); + + /** + * This node renderer will display nodes in the fastest way: Nodes are basic + * squares, drawn through the gl.POINTS drawing method. The size of the nodes + * are represented with the "gl_PointSize" value in the vertex shader. + * + * It is the fastest node renderer here since the buffer just takes one line + * to draw each node (with attributes "x", "y", "size" and "color"). + * + * Nevertheless, this method has some problems, especially due to some issues + * with the gl.POINTS: + * - First, if the center of a node is outside the scene, the point will not + * be drawn, even if it should be partly on screen. + * - I tried applying a fragment shader similar to the one in the default + * node renderer to display them as discs, but it did not work fine on + * some computers settings, filling the discs with weird gradients not + * depending on the actual color. + */ + sigma.webgl.nodes.fast = { + POINTS: 1, + ATTRIBUTES: 4, + addNode: function(node, data, i, prefix, settings) { + data[i++] = node[prefix + 'x']; + data[i++] = node[prefix + 'y']; + data[i++] = node[prefix + 'size']; + data[i++] = sigma.utils.floatColor( + node.color || settings('defaultNodeColor') + ); + }, + render: function(gl, program, data, params) { + var buffer; + + // Define attributes: + var positionLocation = + gl.getAttribLocation(program, 'a_position'), + sizeLocation = + gl.getAttribLocation(program, 'a_size'), + colorLocation = + gl.getAttribLocation(program, 'a_color'), + resolutionLocation = + gl.getUniformLocation(program, 'u_resolution'), + matrixLocation = + gl.getUniformLocation(program, 'u_matrix'), + ratioLocation = + gl.getUniformLocation(program, 'u_ratio'), + scaleLocation = + gl.getUniformLocation(program, 'u_scale'); + + buffer = gl.createBuffer(); + gl.bindBuffer(gl.ARRAY_BUFFER, buffer); + gl.bufferData(gl.ARRAY_BUFFER, data, gl.DYNAMIC_DRAW); + + gl.uniform2f(resolutionLocation, params.width, params.height); + gl.uniform1f( + ratioLocation, + 1 / Math.pow(params.ratio, params.settings('nodesPowRatio')) + ); + gl.uniform1f(scaleLocation, params.scalingRatio); + gl.uniformMatrix3fv(matrixLocation, false, params.matrix); + + gl.enableVertexAttribArray(positionLocation); + gl.enableVertexAttribArray(sizeLocation); + gl.enableVertexAttribArray(colorLocation); + + gl.vertexAttribPointer( + positionLocation, + 2, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 0 + ); + gl.vertexAttribPointer( + sizeLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 8 + ); + gl.vertexAttribPointer( + colorLocation, + 1, + gl.FLOAT, + false, + this.ATTRIBUTES * Float32Array.BYTES_PER_ELEMENT, + 12 + ); + + gl.drawArrays( + gl.POINTS, + params.start || 0, + params.count || (data.length / this.ATTRIBUTES) + ); + }, + initProgram: function(gl) { + var vertexShader, + fragmentShader, + program; + + vertexShader = sigma.utils.loadShader( + gl, + [ + 'attribute vec2 a_position;', + 'attribute float a_size;', + 'attribute float a_color;', + + 'uniform vec2 u_resolution;', + 'uniform float u_ratio;', + 'uniform float u_scale;', + 'uniform mat3 u_matrix;', + + 'varying vec4 color;', + + 'void main() {', + // Scale from [[-1 1] [-1 1]] to the container: + 'gl_Position = vec4(', + '((u_matrix * vec3(a_position, 1)).xy /', + 'u_resolution * 2.0 - 1.0) * vec2(1, -1),', + '0,', + '1', + ');', + + // Multiply the point size twice: + // - x SCALING_RATIO to correct the canvas scaling + // - x 2 to correct the formulae + 'gl_PointSize = a_size * u_ratio * u_scale * 2.0;', + + // Extract the color: + 'float c = a_color;', + 'color.b = mod(c, 256.0); c = floor(c / 256.0);', + 'color.g = mod(c, 256.0); c = floor(c / 256.0);', + 'color.r = mod(c, 256.0); c = floor(c / 256.0); color /= 255.0;', + 'color.a = 1.0;', + '}' + ].join('\n'), + gl.VERTEX_SHADER + ); + + fragmentShader = sigma.utils.loadShader( + gl, + [ + 'precision mediump float;', + + 'varying vec4 color;', + + 'void main(void) {', + 'float border = 0.01;', + 'float radius = 0.5;', + + 'vec4 color0 = vec4(0.0, 0.0, 0.0, 0.0);', + 'vec2 m = gl_PointCoord - vec2(0.5, 0.5);', + 'float dist = radius - sqrt(m.x * m.x + m.y * m.y);', + + 'float t = 0.0;', + 'if (dist > border)', + 't = 1.0;', + 'else if (dist > 0.0)', + 't = dist / border;', + + 'gl_FragColor = mix(color0, color, t);', + '}' + ].join('\n'), + gl.FRAGMENT_SHADER + ); + + program = sigma.utils.loadProgram(gl, [vertexShader, fragmentShader]); + + return program; + } + }; +})(); diff --git a/sigma.js-1.2.0/src/sigma.core.js b/sigma.js-1.2.0/src/sigma.core.js new file mode 100644 index 0000000..716a2bb --- /dev/null +++ b/sigma.js-1.2.0/src/sigma.core.js @@ -0,0 +1,739 @@ +;(function(undefined) { + 'use strict'; + + var __instances = {}; + + /** + * This is the sigma instances constructor. One instance of sigma represent + * one graph. It is possible to represent this grapĥ with several renderers + * at the same time. By default, the default renderer (WebGL + Canvas + * polyfill) will be used as the only renderer, with the container specified + * in the configuration. + * + * @param {?*} conf The configuration of the instance. There are a lot of + * different recognized forms to instantiate sigma, check + * example files, documentation in this file and unit + * tests to know more. + * @return {sigma} The fresh new sigma instance. + * + * Instanciating sigma: + * ******************** + * If no parameter is given to the constructor, the instance will be created + * without any renderer or camera. It will just instantiate the graph, and + * other modules will have to be instantiated through the public methods, + * like "addRenderer" etc: + * + * > s0 = new sigma(); + * > s0.addRenderer({ + * > type: 'canvas', + * > container: 'my-container-id' + * > }); + * + * In most of the cases, sigma will simply be used with the default renderer. + * Then, since the only required parameter is the DOM container, there are + * some simpler way to call the constructor. The four following calls do the + * exact same things: + * + * > s1 = new sigma('my-container-id'); + * > s2 = new sigma(document.getElementById('my-container-id')); + * > s3 = new sigma({ + * > container: document.getElementById('my-container-id') + * > }); + * > s4 = new sigma({ + * > renderers: [{ + * > container: document.getElementById('my-container-id') + * > }] + * > }); + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters, when calling the + * constructor with to top level configuration object (fourth case in the + * previous examples): + * + * {?string} id The id of the instance. It will be generated + * automatically if not specified. + * {?array} renderers An array containing objects describing renderers. + * {?object} graph An object containing an array of nodes and an array + * of edges, to avoid having to add them by hand later. + * {?object} settings An object containing instance specific settings that + * will override the default ones defined in the object + * sigma.settings. + */ + var sigma = function(conf) { + // Local variables: + // **************** + var i, + l, + a, + c, + o, + id; + + sigma.classes.dispatcher.extend(this); + + // Private attributes: + // ******************* + var _self = this, + _conf = conf || {}; + + // Little shortcut: + // **************** + // The configuration is supposed to have a list of the configuration + // objects for each renderer. + // - If there are no configuration at all, then nothing is done. + // - If there are no renderer list, the given configuration object will be + // considered as describing the first and only renderer. + // - If there are no renderer list nor "container" object, it will be + // considered as the container itself (a DOM element). + // - If the argument passed to sigma() is a string, it will be considered + // as the ID of the DOM container. + if ( + typeof _conf === 'string' || + _conf instanceof HTMLElement + ) + _conf = { + renderers: [_conf] + }; + else if (Object.prototype.toString.call(_conf) === '[object Array]') + _conf = { + renderers: _conf + }; + + // Also check "renderer" and "container" keys: + o = _conf.renderers || _conf.renderer || _conf.container; + if (!_conf.renderers || _conf.renderers.length === 0) + if ( + typeof o === 'string' || + o instanceof HTMLElement || + (typeof o === 'object' && 'container' in o) + ) + _conf.renderers = [o]; + + // Recense the instance: + if (_conf.id) { + if (__instances[_conf.id]) + throw 'sigma: Instance "' + _conf.id + '" already exists.'; + Object.defineProperty(this, 'id', { + value: _conf.id + }); + } else { + id = 0; + while (__instances[id]) + id++; + Object.defineProperty(this, 'id', { + value: '' + id + }); + } + __instances[this.id] = this; + + // Initialize settings function: + this.settings = new sigma.classes.configurable( + sigma.settings, + _conf.settings || {} + ); + + // Initialize locked attributes: + Object.defineProperty(this, 'graph', { + value: new sigma.classes.graph(this.settings), + configurable: true + }); + Object.defineProperty(this, 'middlewares', { + value: [], + configurable: true + }); + Object.defineProperty(this, 'cameras', { + value: {}, + configurable: true + }); + Object.defineProperty(this, 'renderers', { + value: {}, + configurable: true + }); + Object.defineProperty(this, 'renderersPerCamera', { + value: {}, + configurable: true + }); + Object.defineProperty(this, 'cameraFrames', { + value: {}, + configurable: true + }); + Object.defineProperty(this, 'camera', { + get: function() { + return this.cameras[0]; + } + }); + Object.defineProperty(this, 'events', { + value: [ + 'click', + 'rightClick', + 'clickStage', + 'doubleClickStage', + 'rightClickStage', + 'clickNode', + 'clickNodes', + 'doubleClickNode', + 'doubleClickNodes', + 'rightClickNode', + 'rightClickNodes', + 'overNode', + 'overNodes', + 'outNode', + 'outNodes', + 'downNode', + 'downNodes', + 'upNode', + 'upNodes' + ], + configurable: true + }); + + // Add a custom handler, to redispatch events from renderers: + this._handler = (function(e) { + var k, + data = {}; + + for (k in e.data) + data[k] = e.data[k]; + + data.renderer = e.target; + this.dispatchEvent(e.type, data); + }).bind(this); + + // Initialize renderers: + a = _conf.renderers || []; + for (i = 0, l = a.length; i < l; i++) + this.addRenderer(a[i]); + + // Initialize middlewares: + a = _conf.middlewares || []; + for (i = 0, l = a.length; i < l; i++) + this.middlewares.push( + typeof a[i] === 'string' ? + sigma.middlewares[a[i]] : + a[i] + ); + + // Check if there is already a graph to fill in: + if (typeof _conf.graph === 'object' && _conf.graph) { + this.graph.read(_conf.graph); + + // If a graph is given to the to the instance, the "refresh" method is + // directly called: + this.refresh(); + } + + // Deal with resize: + window.addEventListener('resize', function() { + if (_self.settings) + _self.refresh(); + }); + }; + + + + + /** + * This methods will instantiate and reference a new camera. If no id is + * specified, then an automatic id will be generated. + * + * @param {?string} id Eventually the camera id. + * @return {sigma.classes.camera} The fresh new camera instance. + */ + sigma.prototype.addCamera = function(id) { + var self = this, + camera; + + if (!arguments.length) { + id = 0; + while (this.cameras['' + id]) + id++; + id = '' + id; + } + + if (this.cameras[id]) + throw 'sigma.addCamera: The camera "' + id + '" already exists.'; + + camera = new sigma.classes.camera(id, this.graph, this.settings); + this.cameras[id] = camera; + + // Add a quadtree to the camera: + camera.quadtree = new sigma.classes.quad(); + + // Add an edgequadtree to the camera: + if (sigma.classes.edgequad !== undefined) { + camera.edgequadtree = new sigma.classes.edgequad(); + } + + camera.bind('coordinatesUpdated', function(e) { + self.renderCamera(camera, camera.isAnimated); + }); + + this.renderersPerCamera[id] = []; + + return camera; + }; + + /** + * This method kills a camera, and every renderer attached to it. + * + * @param {string|camera} v The camera to kill or its ID. + * @return {sigma} Returns the instance. + */ + sigma.prototype.killCamera = function(v) { + v = typeof v === 'string' ? this.cameras[v] : v; + + if (!v) + throw 'sigma.killCamera: The camera is undefined.'; + + var i, + l, + a = this.renderersPerCamera[v.id]; + + for (l = a.length, i = l - 1; i >= 0; i--) + this.killRenderer(a[i]); + + delete this.renderersPerCamera[v.id]; + delete this.cameraFrames[v.id]; + delete this.cameras[v.id]; + + if (v.kill) + v.kill(); + + return this; + }; + + /** + * This methods will instantiate and reference a new renderer. The "type" + * argument can be the constructor or its name in the "sigma.renderers" + * package. If no type is specified, then "sigma.renderers.def" will be used. + * If no id is specified, then an automatic id will be generated. + * + * @param {?object} options Eventually some options to give to the renderer + * constructor. + * @return {renderer} The fresh new renderer instance. + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters in the "options" + * object: + * + * {?string} id Eventually the renderer id. + * {?(function|string)} type Eventually the renderer constructor or its + * name in the "sigma.renderers" package. + * {?(camera|string)} camera Eventually the renderer camera or its + * id. + */ + sigma.prototype.addRenderer = function(options) { + var id, + fn, + camera, + renderer, + o = options || {}; + + // Polymorphism: + if (typeof o === 'string') + o = { + container: document.getElementById(o) + }; + else if (o instanceof HTMLElement) + o = { + container: o + }; + + // If the container still is a string, we get it by id + if (typeof o.container === 'string') + o.container = document.getElementById(o.container); + + // Reference the new renderer: + if (!('id' in o)) { + id = 0; + while (this.renderers['' + id]) + id++; + id = '' + id; + } else + id = o.id; + + if (this.renderers[id]) + throw 'sigma.addRenderer: The renderer "' + id + '" already exists.'; + + // Find the good constructor: + fn = typeof o.type === 'function' ? o.type : sigma.renderers[o.type]; + fn = fn || sigma.renderers.def; + + // Find the good camera: + camera = 'camera' in o ? + ( + o.camera instanceof sigma.classes.camera ? + o.camera : + this.cameras[o.camera] || this.addCamera(o.camera) + ) : + this.addCamera(); + + if (this.cameras[camera.id] !== camera) + throw 'sigma.addRenderer: The camera is not properly referenced.'; + + // Instantiate: + renderer = new fn(this.graph, camera, this.settings, o); + this.renderers[id] = renderer; + Object.defineProperty(renderer, 'id', { + value: id + }); + + // Bind events: + if (renderer.bind) + renderer.bind( + [ + 'click', + 'rightClick', + 'clickStage', + 'doubleClickStage', + 'rightClickStage', + 'clickNode', + 'clickNodes', + 'clickEdge', + 'clickEdges', + 'doubleClickNode', + 'doubleClickNodes', + 'doubleClickEdge', + 'doubleClickEdges', + 'rightClickNode', + 'rightClickNodes', + 'rightClickEdge', + 'rightClickEdges', + 'overNode', + 'overNodes', + 'overEdge', + 'overEdges', + 'outNode', + 'outNodes', + 'outEdge', + 'outEdges', + 'downNode', + 'downNodes', + 'downEdge', + 'downEdges', + 'upNode', + 'upNodes', + 'upEdge', + 'upEdges' + ], + this._handler + ); + + // Reference the renderer by its camera: + this.renderersPerCamera[camera.id].push(renderer); + + return renderer; + }; + + /** + * This method kills a renderer. + * + * @param {string|renderer} v The renderer to kill or its ID. + * @return {sigma} Returns the instance. + */ + sigma.prototype.killRenderer = function(v) { + v = typeof v === 'string' ? this.renderers[v] : v; + + if (!v) + throw 'sigma.killRenderer: The renderer is undefined.'; + + var a = this.renderersPerCamera[v.camera.id], + i = a.indexOf(v); + + if (i >= 0) + a.splice(i, 1); + + if (v.kill) + v.kill(); + + delete this.renderers[v.id]; + + return this; + }; + + + + + /** + * This method calls the "render" method of each renderer, with the same + * arguments than the "render" method, but will also check if the renderer + * has a "process" method, and call it if it exists. + * + * It is useful for quadtrees or WebGL processing, for instance. + * + * @param {?object} options Eventually some options to give to the refresh + * method. + * @return {sigma} Returns the instance itself. + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters in the "options" + * object: + * + * {?boolean} skipIndexation A flag specifying wether or not the refresh + * function should reindex the graph in the + * quadtrees or not (default: false). + */ + sigma.prototype.refresh = function(options) { + var i, + l, + k, + a, + c, + bounds, + prefix = 0; + + options = options || {}; + + // Call each middleware: + a = this.middlewares || []; + for (i = 0, l = a.length; i < l; i++) + a[i].call( + this, + (i === 0) ? '' : 'tmp' + prefix + ':', + (i === l - 1) ? 'ready:' : ('tmp' + (++prefix) + ':') + ); + + // Then, for each camera, call the "rescale" middleware, unless the + // settings specify not to: + for (k in this.cameras) { + c = this.cameras[k]; + if ( + c.settings('autoRescale') && + this.renderersPerCamera[c.id] && + this.renderersPerCamera[c.id].length + ) + sigma.middlewares.rescale.call( + this, + a.length ? 'ready:' : '', + c.readPrefix, + { + width: this.renderersPerCamera[c.id][0].width, + height: this.renderersPerCamera[c.id][0].height + } + ); + else + sigma.middlewares.copy.call( + this, + a.length ? 'ready:' : '', + c.readPrefix + ); + + if (!options.skipIndexation) { + // Find graph boundaries: + bounds = sigma.utils.getBoundaries( + this.graph, + c.readPrefix + ); + + // Refresh quadtree: + c.quadtree.index(this.graph.nodes(), { + prefix: c.readPrefix, + bounds: { + x: bounds.minX, + y: bounds.minY, + width: bounds.maxX - bounds.minX, + height: bounds.maxY - bounds.minY + } + }); + + // Refresh edgequadtree: + if ( + c.edgequadtree !== undefined && + c.settings('drawEdges') && + c.settings('enableEdgeHovering') + ) { + c.edgequadtree.index(this.graph, { + prefix: c.readPrefix, + bounds: { + x: bounds.minX, + y: bounds.minY, + width: bounds.maxX - bounds.minX, + height: bounds.maxY - bounds.minY + } + }); + } + } + } + + // Call each renderer: + a = Object.keys(this.renderers); + for (i = 0, l = a.length; i < l; i++) + if (this.renderers[a[i]].process) { + if (this.settings('skipErrors')) + try { + this.renderers[a[i]].process(); + } catch (e) { + console.log( + 'Warning: The renderer "' + a[i] + '" crashed on ".process()"' + ); + } + else + this.renderers[a[i]].process(); + } + + this.render(); + + return this; + }; + + /** + * This method calls the "render" method of each renderer. + * + * @return {sigma} Returns the instance itself. + */ + sigma.prototype.render = function() { + var i, + l, + a, + prefix = 0; + + // Call each renderer: + a = Object.keys(this.renderers); + for (i = 0, l = a.length; i < l; i++) + if (this.settings('skipErrors')) + try { + this.renderers[a[i]].render(); + } catch (e) { + if (this.settings('verbose')) + console.log( + 'Warning: The renderer "' + a[i] + '" crashed on ".render()"' + ); + } + else + this.renderers[a[i]].render(); + + return this; + }; + + /** + * This method calls the "render" method of each renderer that is bound to + * the specified camera. To improve the performances, if this method is + * called too often, the number of effective renderings is limitated to one + * per frame, unless you are using the "force" flag. + * + * @param {sigma.classes.camera} camera The camera to render. + * @param {?boolean} force If true, will render the camera + * directly. + * @return {sigma} Returns the instance itself. + */ + sigma.prototype.renderCamera = function(camera, force) { + var i, + l, + a, + self = this; + + if (force) { + a = this.renderersPerCamera[camera.id]; + for (i = 0, l = a.length; i < l; i++) + if (this.settings('skipErrors')) + try { + a[i].render(); + } catch (e) { + if (this.settings('verbose')) + console.log( + 'Warning: The renderer "' + a[i].id + '" crashed on ".render()"' + ); + } + else + a[i].render(); + } else { + if (!this.cameraFrames[camera.id]) { + a = this.renderersPerCamera[camera.id]; + for (i = 0, l = a.length; i < l; i++) + if (this.settings('skipErrors')) + try { + a[i].render(); + } catch (e) { + if (this.settings('verbose')) + console.log( + 'Warning: The renderer "' + + a[i].id + + '" crashed on ".render()"' + ); + } + else + a[i].render(); + + this.cameraFrames[camera.id] = requestAnimationFrame(function() { + delete self.cameraFrames[camera.id]; + }); + } + } + + return this; + }; + + /** + * This method calls the "kill" method of each module and destroys any + * reference from the instance. + */ + sigma.prototype.kill = function() { + var k; + + // Dispatching event + this.dispatchEvent('kill'); + + // Kill graph: + this.graph.kill(); + + // Kill middlewares: + delete this.middlewares; + + // Kill each renderer: + for (k in this.renderers) + this.killRenderer(this.renderers[k]); + + // Kill each camera: + for (k in this.cameras) + this.killCamera(this.cameras[k]); + + delete this.renderers; + delete this.cameras; + + // Kill everything else: + for (k in this) + if (this.hasOwnProperty(k)) + delete this[k]; + + delete __instances[this.id]; + }; + + + + + /** + * Returns a clone of the instances object or a specific running instance. + * + * @param {?string} id Eventually an instance ID. + * @return {object} The related instance or a clone of the instances + * object. + */ + sigma.instances = function(id) { + return arguments.length ? + __instances[id] : + sigma.utils.extend({}, __instances); + }; + + + + /** + * The current version of sigma: + */ + sigma.version = '1.2.0'; + + + + + /** + * EXPORT: + * ******* + */ + if (typeof this.sigma !== 'undefined') + throw 'An object called sigma is already in the global scope.'; + + this.sigma = sigma; + +}).call(this); diff --git a/sigma.js-1.2.0/src/sigma.export.js b/sigma.js-1.2.0/src/sigma.export.js new file mode 100644 index 0000000..2d15623 --- /dev/null +++ b/sigma.js-1.2.0/src/sigma.export.js @@ -0,0 +1,20 @@ +// Hardcoded export for the node.js version: +var sigma = this.sigma, + conrad = this.conrad; + +sigma.conrad = conrad; + +// Dirty polyfills to permit sigma usage in node +if (typeof HTMLElement === 'undefined') + HTMLElement = function() {}; + +if (typeof window === 'undefined') + window = { + addEventListener: function() {} + }; + +if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) + exports = module.exports = sigma; + exports.sigma = sigma; +} diff --git a/sigma.js-1.2.0/src/sigma.settings.js b/sigma.js-1.2.0/src/sigma.settings.js new file mode 100644 index 0000000..cee34b8 --- /dev/null +++ b/sigma.js-1.2.0/src/sigma.settings.js @@ -0,0 +1,251 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + // Packages initialization: + sigma.utils.pkg('sigma.settings'); + + var settings = { + /** + * GRAPH SETTINGS: + * *************** + */ + // {boolean} Indicates if the data have to be cloned in methods to add + // nodes or edges. + clone: true, + // {boolean} Indicates if nodes "id" values and edges "id", "source" and + // "target" values must be set as immutable. + immutable: true, + // {boolean} Indicates if sigma can log its errors and warnings. + verbose: false, + + + /** + * RENDERERS SETTINGS: + * ******************* + */ + // {string} + classPrefix: 'sigma', + // {string} + defaultNodeType: 'def', + // {string} + defaultEdgeType: 'def', + // {string} + defaultLabelColor: '#000', + // {string} + defaultEdgeColor: '#000', + // {string} + defaultNodeColor: '#000', + // {string} + defaultLabelSize: 14, + // {string} Indicates how to choose the edges color. Available values: + // "source", "target", "default" + edgeColor: 'source', + // {number} Defines the minimal edge's arrow display size. + minArrowSize: 0, + // {string} + font: 'arial', + // {string} Example: 'bold' + fontStyle: '', + // {string} Indicates how to choose the labels color. Available values: + // "node", "default" + labelColor: 'default', + // {string} Indicates how to choose the labels size. Available values: + // "fixed", "proportional" + labelSize: 'fixed', + // {string} The ratio between the font size of the label and the node size. + labelSizeRatio: 1, + // {number} The minimum size a node must have to see its label displayed. + labelThreshold: 8, + // {number} The oversampling factor used in WebGL renderer. + webglOversamplingRatio: 2, + // {number} The size of the border of hovered nodes. + borderSize: 0, + // {number} The default hovered node border's color. + defaultNodeBorderColor: '#000', + // {number} The hovered node's label font. If not specified, will heritate + // the "font" value. + hoverFont: '', + // {boolean} If true, then only one node can be hovered at a time. + singleHover: true, + // {string} Example: 'bold' + hoverFontStyle: '', + // {string} Indicates how to choose the hovered nodes shadow color. + // Available values: "node", "default" + labelHoverShadow: 'default', + // {string} + labelHoverShadowColor: '#000', + // {string} Indicates how to choose the hovered nodes color. + // Available values: "node", "default" + nodeHoverColor: 'node', + // {string} + defaultNodeHoverColor: '#000', + // {string} Indicates how to choose the hovered nodes background color. + // Available values: "node", "default" + labelHoverBGColor: 'default', + // {string} + defaultHoverLabelBGColor: '#fff', + // {string} Indicates how to choose the hovered labels color. + // Available values: "node", "default" + labelHoverColor: 'default', + // {string} + defaultLabelHoverColor: '#000', + // {string} Indicates how to choose the edges hover color. Available values: + // "edge", "default" + edgeHoverColor: 'edge', + // {number} The size multiplicator of hovered edges. + edgeHoverSizeRatio: 1, + // {string} + defaultEdgeHoverColor: '#000', + // {boolean} Indicates if the edge extremities must be hovered when the + // edge is hovered. + edgeHoverExtremities: false, + // {booleans} The different drawing modes: + // false: Layered not displayed. + // true: Layered displayed. + drawEdges: true, + drawNodes: true, + drawLabels: true, + drawEdgeLabels: false, + // {boolean} Indicates if the edges must be drawn in several frames or in + // one frame, as the nodes and labels are drawn. + batchEdgesDrawing: false, + // {boolean} Indicates if the edges must be hidden during dragging and + // animations. + hideEdgesOnMove: false, + // {numbers} The different batch sizes, when elements are displayed in + // several frames. + canvasEdgesBatchSize: 500, + webglEdgesBatchSize: 1000, + + + + + /** + * RESCALE SETTINGS: + * ***************** + */ + // {string} Indicates of to scale the graph relatively to its container. + // Available values: "inside", "outside" + scalingMode: 'inside', + // {number} The margin to keep around the graph. + sideMargin: 0, + // {number} Determine the size of the smallest and the biggest node / edges + // on the screen. This mapping makes easier to display the graph, + // avoiding too big nodes that take half of the screen, or too + // small ones that are not readable. If the two parameters are + // equals, then the minimal display size will be 0. And if they + // are both equal to 0, then there is no mapping, and the radius + // of the nodes will be their size. + minEdgeSize: 0.5, + maxEdgeSize: 1, + minNodeSize: 1, + maxNodeSize: 8, + + + + + /** + * CAPTORS SETTINGS: + * ***************** + */ + // {boolean} + touchEnabled: true, + // {boolean} + mouseEnabled: true, + // {boolean} + mouseWheelEnabled: true, + // {boolean} + doubleClickEnabled: true, + // {boolean} Defines whether the custom events such as "clickNode" can be + // used. + eventsEnabled: true, + // {number} Defines by how much multiplicating the zooming level when the + // user zooms with the mouse-wheel. + zoomingRatio: 1.7, + // {number} Defines by how much multiplicating the zooming level when the + // user zooms by double clicking. + doubleClickZoomingRatio: 2.2, + // {number} The minimum zooming level. + zoomMin: 0.0625, + // {number} The maximum zooming level. + zoomMax: 2, + // {number} The duration of animations following a mouse scrolling. + mouseZoomDuration: 200, + // {number} The duration of animations following a mouse double click. + doubleClickZoomDuration: 200, + // {number} The duration of animations following a mouse dropping. + mouseInertiaDuration: 200, + // {number} The inertia power (mouse captor). + mouseInertiaRatio: 3, + // {number} The duration of animations following a touch dropping. + touchInertiaDuration: 200, + // {number} The inertia power (touch captor). + touchInertiaRatio: 3, + // {number} The maximum time between two clicks to make it a double click. + doubleClickTimeout: 300, + // {number} The maximum time between two taps to make it a double tap. + doubleTapTimeout: 300, + // {number} The maximum time of dragging to trigger intertia. + dragTimeout: 200, + + + + + /** + * GLOBAL SETTINGS: + * **************** + */ + // {boolean} Determines whether the instance has to refresh itself + // automatically when a "resize" event is dispatched from the + // window object. + autoResize: true, + // {boolean} Determines whether the "rescale" middleware has to be called + // automatically for each camera on refresh. + autoRescale: true, + // {boolean} If set to false, the camera method "goTo" will basically do + // nothing. + enableCamera: true, + // {boolean} If set to false, the nodes cannot be hovered. + enableHovering: true, + // {boolean} If set to true, the edges can be hovered. + enableEdgeHovering: false, + // {number} The size of the area around the edges to activate hovering. + edgeHoverPrecision: 5, + // {boolean} If set to true, the rescale middleware will ignore node sizes + // to determine the graphs boundings. + rescaleIgnoreSize: false, + // {boolean} Determines if the core has to try to catch errors on + // rendering. + skipErrors: false, + + + + + /** + * CAMERA SETTINGS: + * **************** + */ + // {number} The power degrees applied to the nodes/edges size relatively to + // the zooming level. Basically: + // > onScreenR = Math.pow(zoom, nodesPowRatio) * R + // > onScreenT = Math.pow(zoom, edgesPowRatio) * T + nodesPowRatio: 0.5, + edgesPowRatio: 0.5, + + + + + /** + * ANIMATIONS SETTINGS: + * ******************** + */ + // {number} The default animation time. + animationsTime: 200 + }; + + // Export the previously designed settings: + sigma.settings = sigma.utils.extend(sigma.settings || {}, settings); +}).call(this); diff --git a/sigma.js-1.2.0/src/utils/sigma.polyfills.js b/sigma.js-1.2.0/src/utils/sigma.polyfills.js new file mode 100644 index 0000000..459b943 --- /dev/null +++ b/sigma.js-1.2.0/src/utils/sigma.polyfills.js @@ -0,0 +1,77 @@ +;(function(global) { + 'use strict'; + + /** + * http://paulirish.com/2011/requestanimationframe-for-smart-animating/ + * http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating + * requestAnimationFrame polyfill by Erik Möller. + * fixes from Paul Irish and Tino Zijdel + * MIT license + */ + var x, + lastTime = 0, + vendors = ['ms', 'moz', 'webkit', 'o']; + + for (x = 0; x < vendors.length && !global.requestAnimationFrame; x++) { + global.requestAnimationFrame = + global[vendors[x] + 'RequestAnimationFrame']; + global.cancelAnimationFrame = + global[vendors[x] + 'CancelAnimationFrame'] || + global[vendors[x] + 'CancelRequestAnimationFrame']; + } + + if (!global.requestAnimationFrame) + global.requestAnimationFrame = function(callback, element) { + var currTime = new Date().getTime(), + timeToCall = Math.max(0, 16 - (currTime - lastTime)), + id = global.setTimeout( + function() { + callback(currTime + timeToCall); + }, + timeToCall + ); + + lastTime = currTime + timeToCall; + return id; + }; + + if (!global.cancelAnimationFrame) + global.cancelAnimationFrame = function(id) { + clearTimeout(id); + }; + + /** + * Function.prototype.bind polyfill found on MDN. + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind#Compatibility + * Public domain + */ + if (!Function.prototype.bind) + Function.prototype.bind = function(oThis) { + if (typeof this !== 'function') + // Closest thing possible to the ECMAScript 5 internal IsCallable + // function: + throw new TypeError( + 'Function.prototype.bind - what is trying to be bound is not callable' + ); + + var aArgs = Array.prototype.slice.call(arguments, 1), + fToBind = this, + fNOP, + fBound; + + fNOP = function() {}; + fBound = function() { + return fToBind.apply( + this instanceof fNOP && oThis ? + this : + oThis, + aArgs.concat(Array.prototype.slice.call(arguments)) + ); + }; + + fNOP.prototype = this.prototype; + fBound.prototype = new fNOP(); + + return fBound; + }; +})(this); diff --git a/sigma.js-1.2.0/src/utils/sigma.utils.js b/sigma.js-1.2.0/src/utils/sigma.utils.js new file mode 100644 index 0000000..98c59a4 --- /dev/null +++ b/sigma.js-1.2.0/src/utils/sigma.utils.js @@ -0,0 +1,1022 @@ +;(function(undefined) { + 'use strict'; + + if (typeof sigma === 'undefined') + throw 'sigma is not declared'; + + var _root = this; + + // Initialize packages: + sigma.utils = sigma.utils || {}; + + /** + * MISC UTILS: + */ + /** + * This function takes any number of objects as arguments, copies from each + * of these objects each pair key/value into a new object, and finally + * returns this object. + * + * The arguments are parsed from the last one to the first one, such that + * when several objects have keys in common, the "earliest" object wins. + * + * Example: + * ******** + * > var o1 = { + * > a: 1, + * > b: 2, + * > c: '3' + * > }, + * > o2 = { + * > c: '4', + * > d: [ 5 ] + * > }; + * > sigma.utils.extend(o1, o2); + * > // Returns: { + * > // a: 1, + * > // b: 2, + * > // c: '3', + * > // d: [ 5 ] + * > // }; + * + * @param {object+} Any number of objects. + * @return {object} The merged object. + */ + sigma.utils.extend = function() { + var i, + k, + res = {}, + l = arguments.length; + + for (i = l - 1; i >= 0; i--) + for (k in arguments[i]) + res[k] = arguments[i][k]; + + return res; + }; + + /** + * A short "Date.now()" polyfill. + * + * @return {Number} The current time (in ms). + */ + sigma.utils.dateNow = function() { + return Date.now ? Date.now() : new Date().getTime(); + }; + + /** + * Takes a package name as parameter and checks at each lebel if it exists, + * and if it does not, creates it. + * + * Example: + * ******** + * > sigma.utils.pkg('a.b.c'); + * > a.b.c; + * > // Object {}; + * > + * > sigma.utils.pkg('a.b.d'); + * > a.b; + * > // Object { c: {}, d: {} }; + * + * @param {string} pkgName The name of the package to create/find. + * @return {object} The related package. + */ + sigma.utils.pkg = function(pkgName) { + return (pkgName || '').split('.').reduce(function(context, objName) { + return (objName in context) ? + context[objName] : + (context[objName] = {}); + }, _root); + }; + + /** + * Returns a unique incremental number ID. + * + * Example: + * ******** + * > sigma.utils.id(); + * > // 1; + * > + * > sigma.utils.id(); + * > // 2; + * > + * > sigma.utils.id(); + * > // 3; + * + * @param {string} pkgName The name of the package to create/find. + * @return {object} The related package. + */ + sigma.utils.id = (function() { + var i = 0; + return function() { + return ++i; + }; + })(); + + /** + * This function takes an hexa color (for instance "#ffcc00" or "#fc0") or a + * rgb / rgba color (like "rgb(255,255,12)" or "rgba(255,255,12,1)") and + * returns an integer equal to "r * 255 * 255 + g * 255 + b", to gain some + * memory in the data given to WebGL shaders. + * + * Note that the function actually caches its results for better performance. + * + * @param {string} val The hexa or rgba color. + * @return {number} The number value. + */ + var floatColorCache = {}; + + sigma.utils.floatColor = function(val) { + + // Is the color already computed? + if (floatColorCache[val]) + return floatColorCache[val]; + + var original = val, + r = 0, + g = 0, + b = 0; + + if (val[0] === '#') { + val = val.slice(1); + + if (val.length === 3) { + r = parseInt(val.charAt(0) + val.charAt(0), 16); + g = parseInt(val.charAt(1) + val.charAt(1), 16); + b = parseInt(val.charAt(2) + val.charAt(2), 16); + } + else { + r = parseInt(val.charAt(0) + val.charAt(1), 16); + g = parseInt(val.charAt(2) + val.charAt(3), 16); + b = parseInt(val.charAt(4) + val.charAt(5), 16); + } + } else if (val.match(/^ *rgba? *\(/)) { + val = val.match( + /^ *rgba? *\( *([0-9]*) *, *([0-9]*) *, *([0-9]*) *(,.*)?\) *$/ + ); + r = +val[1]; + g = +val[2]; + b = +val[3]; + } + + var color = ( + r * 256 * 256 + + g * 256 + + b + ); + + // Caching the color + floatColorCache[original] = color; + + return color; + }; + + /** + * Perform a zoom into a camera, with or without animation, to the + * coordinates indicated using a specified ratio. + * + * Recognized parameters: + * ********************** + * Here is the exhaustive list of every accepted parameters in the animation + * object: + * + * {?number} duration An amount of time that means the duration of the + * animation. If this parameter doesn't exist the + * zoom will be performed without animation. + * {?function} onComplete A function to perform it after the animation. It + * will be performed even if there is no duration. + * + * @param {camera} The camera where perform the zoom. + * @param {x} The X coordiantion where the zoom goes. + * @param {y} The Y coordiantion where the zoom goes. + * @param {ratio} The ratio to apply it to the current camera ratio. + * @param {?animation} A dictionary with options for a possible animation. + */ + sigma.utils.zoomTo = function(camera, x, y, ratio, animation) { + var settings = camera.settings, + count, + newRatio, + animationSettings, + coordinates; + + // Create the newRatio dealing with min / max: + newRatio = Math.max( + settings('zoomMin'), + Math.min( + settings('zoomMax'), + camera.ratio * ratio + ) + ); + + // Check that the new ratio is different from the initial one: + if (newRatio !== camera.ratio) { + // Create the coordinates variable: + ratio = newRatio / camera.ratio; + coordinates = { + x: x * (1 - ratio) + camera.x, + y: y * (1 - ratio) + camera.y, + ratio: newRatio + }; + + if (animation && animation.duration) { + // Complete the animation setings: + count = sigma.misc.animation.killAll(camera); + animation = sigma.utils.extend( + animation, + { + easing: count ? 'quadraticOut' : 'quadraticInOut' + } + ); + + sigma.misc.animation.camera(camera, coordinates, animation); + } else { + camera.goTo(coordinates); + if (animation && animation.onComplete) + animation.onComplete(); + } + } + }; + + /** + * Return the control point coordinates for a quadratic bezier curve. + * + * @param {number} x1 The X coordinate of the start point. + * @param {number} y1 The Y coordinate of the start point. + * @param {number} x2 The X coordinate of the end point. + * @param {number} y2 The Y coordinate of the end point. + * @return {x,y} The control point coordinates. + */ + sigma.utils.getQuadraticControlPoint = function(x1, y1, x2, y2) { + return { + x: (x1 + x2) / 2 + (y2 - y1) / 4, + y: (y1 + y2) / 2 + (x1 - x2) / 4 + }; + }; + + /** + * Compute the coordinates of the point positioned + * at length t in the quadratic bezier curve. + * + * @param {number} t In [0,1] the step percentage to reach + * the point in the curve from the context point. + * @param {number} x1 The X coordinate of the context point. + * @param {number} y1 The Y coordinate of the context point. + * @param {number} x2 The X coordinate of the ending point. + * @param {number} y2 The Y coordinate of the ending point. + * @param {number} xi The X coordinate of the control point. + * @param {number} yi The Y coordinate of the control point. + * @return {object} {x,y}. + */ + sigma.utils.getPointOnQuadraticCurve = function(t, x1, y1, x2, y2, xi, yi) { + // http://stackoverflow.com/a/5634528 + return { + x: Math.pow(1 - t, 2) * x1 + 2 * (1 - t) * t * xi + Math.pow(t, 2) * x2, + y: Math.pow(1 - t, 2) * y1 + 2 * (1 - t) * t * yi + Math.pow(t, 2) * y2 + }; + }; + + /** + * Compute the coordinates of the point positioned + * at length t in the cubic bezier curve. + * + * @param {number} t In [0,1] the step percentage to reach + * the point in the curve from the context point. + * @param {number} x1 The X coordinate of the context point. + * @param {number} y1 The Y coordinate of the context point. + * @param {number} x2 The X coordinate of the end point. + * @param {number} y2 The Y coordinate of the end point. + * @param {number} cx The X coordinate of the first control point. + * @param {number} cy The Y coordinate of the first control point. + * @param {number} dx The X coordinate of the second control point. + * @param {number} dy The Y coordinate of the second control point. + * @return {object} {x,y} The point at t. + */ + sigma.utils.getPointOnBezierCurve = + function(t, x1, y1, x2, y2, cx, cy, dx, dy) { + // http://stackoverflow.com/a/15397596 + // Blending functions: + var B0_t = Math.pow(1 - t, 3), + B1_t = 3 * t * Math.pow(1 - t, 2), + B2_t = 3 * Math.pow(t, 2) * (1 - t), + B3_t = Math.pow(t, 3); + + return { + x: (B0_t * x1) + (B1_t * cx) + (B2_t * dx) + (B3_t * x2), + y: (B0_t * y1) + (B1_t * cy) + (B2_t * dy) + (B3_t * y2) + }; + }; + + /** + * Return the coordinates of the two control points for a self loop (i.e. + * where the start point is also the end point) computed as a cubic bezier + * curve. + * + * @param {number} x The X coordinate of the node. + * @param {number} y The Y coordinate of the node. + * @param {number} size The node size. + * @return {x1,y1,x2,y2} The coordinates of the two control points. + */ + sigma.utils.getSelfLoopControlPoints = function(x , y, size) { + return { + x1: x - size * 7, + y1: y, + x2: x, + y2: y + size * 7 + }; + }; + + /** + * Return the euclidian distance between two points of a plane + * with an orthonormal basis. + * + * @param {number} x1 The X coordinate of the first point. + * @param {number} y1 The Y coordinate of the first point. + * @param {number} x2 The X coordinate of the second point. + * @param {number} y2 The Y coordinate of the second point. + * @return {number} The euclidian distance. + */ + sigma.utils.getDistance = function(x0, y0, x1, y1) { + return Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)); + }; + + /** + * Return the coordinates of the intersection points of two circles. + * + * @param {number} x0 The X coordinate of center location of the first + * circle. + * @param {number} y0 The Y coordinate of center location of the first + * circle. + * @param {number} r0 The radius of the first circle. + * @param {number} x1 The X coordinate of center location of the second + * circle. + * @param {number} y1 The Y coordinate of center location of the second + * circle. + * @param {number} r1 The radius of the second circle. + * @return {xi,yi} The coordinates of the intersection points. + */ + sigma.utils.getCircleIntersection = function(x0, y0, r0, x1, y1, r1) { + // http://stackoverflow.com/a/12219802 + var a, dx, dy, d, h, rx, ry, x2, y2; + + // dx and dy are the vertical and horizontal distances between the circle + // centers: + dx = x1 - x0; + dy = y1 - y0; + + // Determine the straight-line distance between the centers: + d = Math.sqrt((dy * dy) + (dx * dx)); + + // Check for solvability: + if (d > (r0 + r1)) { + // No solution. circles do not intersect. + return false; + } + if (d < Math.abs(r0 - r1)) { + // No solution. one circle is contained in the other. + return false; + } + + //'point 2' is the point where the line through the circle intersection + // points crosses the line between the circle centers. + + // Determine the distance from point 0 to point 2: + a = ((r0 * r0) - (r1 * r1) + (d * d)) / (2.0 * d); + + // Determine the coordinates of point 2: + x2 = x0 + (dx * a / d); + y2 = y0 + (dy * a / d); + + // Determine the distance from point 2 to either of the intersection + // points: + h = Math.sqrt((r0 * r0) - (a * a)); + + // Determine the offsets of the intersection points from point 2: + rx = -dy * (h / d); + ry = dx * (h / d); + + // Determine the absolute intersection points: + var xi = x2 + rx; + var xi_prime = x2 - rx; + var yi = y2 + ry; + var yi_prime = y2 - ry; + + return {xi: xi, xi_prime: xi_prime, yi: yi, yi_prime: yi_prime}; + }; + + /** + * Check if a point is on a line segment. + * + * @param {number} x The X coordinate of the point to check. + * @param {number} y The Y coordinate of the point to check. + * @param {number} x1 The X coordinate of the line start point. + * @param {number} y1 The Y coordinate of the line start point. + * @param {number} x2 The X coordinate of the line end point. + * @param {number} y2 The Y coordinate of the line end point. + * @param {number} epsilon The precision (consider the line thickness). + * @return {boolean} True if point is "close to" the line + * segment, false otherwise. + */ + sigma.utils.isPointOnSegment = function(x, y, x1, y1, x2, y2, epsilon) { + // http://stackoverflow.com/a/328122 + var crossProduct = Math.abs((y - y1) * (x2 - x1) - (x - x1) * (y2 - y1)), + d = sigma.utils.getDistance(x1, y1, x2, y2), + nCrossProduct = crossProduct / d; // normalized cross product + + return (nCrossProduct < epsilon && + Math.min(x1, x2) <= x && x <= Math.max(x1, x2) && + Math.min(y1, y2) <= y && y <= Math.max(y1, y2)); + }; + + /** + * Check if a point is on a quadratic bezier curve segment with a thickness. + * + * @param {number} x The X coordinate of the point to check. + * @param {number} y The Y coordinate of the point to check. + * @param {number} x1 The X coordinate of the curve start point. + * @param {number} y1 The Y coordinate of the curve start point. + * @param {number} x2 The X coordinate of the curve end point. + * @param {number} y2 The Y coordinate of the curve end point. + * @param {number} cpx The X coordinate of the curve control point. + * @param {number} cpy The Y coordinate of the curve control point. + * @param {number} epsilon The precision (consider the line thickness). + * @return {boolean} True if (x,y) is on the curve segment, + * false otherwise. + */ + sigma.utils.isPointOnQuadraticCurve = + function(x, y, x1, y1, x2, y2, cpx, cpy, epsilon) { + // Fails if the point is too far from the extremities of the segment, + // preventing for more costly computation: + var dP1P2 = sigma.utils.getDistance(x1, y1, x2, y2); + if (Math.abs(x - x1) > dP1P2 || Math.abs(y - y1) > dP1P2) { + return false; + } + + var dP1 = sigma.utils.getDistance(x, y, x1, y1), + dP2 = sigma.utils.getDistance(x, y, x2, y2), + t = 0.5, + r = (dP1 < dP2) ? -0.01 : 0.01, + rThreshold = 0.001, + i = 100, + pt = sigma.utils.getPointOnQuadraticCurve(t, x1, y1, x2, y2, cpx, cpy), + dt = sigma.utils.getDistance(x, y, pt.x, pt.y), + old_dt; + + // This algorithm minimizes the distance from the point to the curve. It + // find the optimal t value where t=0 is the start point and t=1 is the end + // point of the curve, starting from t=0.5. + // It terminates because it runs a maximum of i interations. + while (i-- > 0 && + t >= 0 && t <= 1 && + (dt > epsilon) && + (r > rThreshold || r < -rThreshold)) { + old_dt = dt; + pt = sigma.utils.getPointOnQuadraticCurve(t, x1, y1, x2, y2, cpx, cpy); + dt = sigma.utils.getDistance(x, y, pt.x, pt.y); + + if (dt > old_dt) { + // not the right direction: + // halfstep in the opposite direction + r = -r / 2; + t += r; + } + else if (t + r < 0 || t + r > 1) { + // oops, we've gone too far: + // revert with a halfstep + r = r / 2; + dt = old_dt; + } + else { + // progress: + t += r; + } + } + + return dt < epsilon; + }; + + + /** + * Check if a point is on a cubic bezier curve segment with a thickness. + * + * @param {number} x The X coordinate of the point to check. + * @param {number} y The Y coordinate of the point to check. + * @param {number} x1 The X coordinate of the curve start point. + * @param {number} y1 The Y coordinate of the curve start point. + * @param {number} x2 The X coordinate of the curve end point. + * @param {number} y2 The Y coordinate of the curve end point. + * @param {number} cpx1 The X coordinate of the 1st curve control point. + * @param {number} cpy1 The Y coordinate of the 1st curve control point. + * @param {number} cpx2 The X coordinate of the 2nd curve control point. + * @param {number} cpy2 The Y coordinate of the 2nd curve control point. + * @param {number} epsilon The precision (consider the line thickness). + * @return {boolean} True if (x,y) is on the curve segment, + * false otherwise. + */ + sigma.utils.isPointOnBezierCurve = + function(x, y, x1, y1, x2, y2, cpx1, cpy1, cpx2, cpy2, epsilon) { + // Fails if the point is too far from the extremities of the segment, + // preventing for more costly computation: + var dP1CP1 = sigma.utils.getDistance(x1, y1, cpx1, cpy1); + if (Math.abs(x - x1) > dP1CP1 || Math.abs(y - y1) > dP1CP1) { + return false; + } + + var dP1 = sigma.utils.getDistance(x, y, x1, y1), + dP2 = sigma.utils.getDistance(x, y, x2, y2), + t = 0.5, + r = (dP1 < dP2) ? -0.01 : 0.01, + rThreshold = 0.001, + i = 100, + pt = sigma.utils.getPointOnBezierCurve( + t, x1, y1, x2, y2, cpx1, cpy1, cpx2, cpy2), + dt = sigma.utils.getDistance(x, y, pt.x, pt.y), + old_dt; + + // This algorithm minimizes the distance from the point to the curve. It + // find the optimal t value where t=0 is the start point and t=1 is the end + // point of the curve, starting from t=0.5. + // It terminates because it runs a maximum of i interations. + while (i-- > 0 && + t >= 0 && t <= 1 && + (dt > epsilon) && + (r > rThreshold || r < -rThreshold)) { + old_dt = dt; + pt = sigma.utils.getPointOnBezierCurve( + t, x1, y1, x2, y2, cpx1, cpy1, cpx2, cpy2); + dt = sigma.utils.getDistance(x, y, pt.x, pt.y); + + if (dt > old_dt) { + // not the right direction: + // halfstep in the opposite direction + r = -r / 2; + t += r; + } + else if (t + r < 0 || t + r > 1) { + // oops, we've gone too far: + // revert with a halfstep + r = r / 2; + dt = old_dt; + } + else { + // progress: + t += r; + } + } + + return dt < epsilon; + }; + + + /** + * ************ + * EVENTS UTILS: + * ************ + */ + /** + * Here are some useful functions to unify extraction of the information we + * need with mouse events and touch events, from different browsers: + */ + + /** + * Extract the local X position from a mouse or touch event. + * + * @param {event} e A mouse or touch event. + * @return {number} The local X value of the mouse. + */ + sigma.utils.getX = function(e) { + return ( + (e.offsetX !== undefined && e.offsetX) || + (e.layerX !== undefined && e.layerX) || + (e.clientX !== undefined && e.clientX) + ); + }; + + /** + * Extract the local Y position from a mouse or touch event. + * + * @param {event} e A mouse or touch event. + * @return {number} The local Y value of the mouse. + */ + sigma.utils.getY = function(e) { + return ( + (e.offsetY !== undefined && e.offsetY) || + (e.layerY !== undefined && e.layerY) || + (e.clientY !== undefined && e.clientY) + ); + }; + + /** + * The pixel ratio of the screen. Taking zoom into account + * + * @return {number} Pixel ratio of the screen + */ + sigma.utils.getPixelRatio = function() { + var ratio = 1; + if (window.screen.deviceXDPI !== undefined && + window.screen.logicalXDPI !== undefined && + window.screen.deviceXDPI > window.screen.logicalXDPI) { + ratio = window.screen.systemXDPI / window.screen.logicalXDPI; + } + else if (window.devicePixelRatio !== undefined) { + ratio = window.devicePixelRatio; + } + return ratio; + }; + + /** + * Extract the width from a mouse or touch event. + * + * @param {event} e A mouse or touch event. + * @return {number} The width of the event's target. + */ + sigma.utils.getWidth = function(e) { + var w = (!e.target.ownerSVGElement) ? + e.target.width : + e.target.ownerSVGElement.width; + + return ( + (typeof w === 'number' && w) || + (w !== undefined && w.baseVal !== undefined && w.baseVal.value) + ); + }; + + /** + * Extract the center from a mouse or touch event. + * + * @param {event} e A mouse or touch event. + * @return {object} The center of the event's target. + */ + sigma.utils.getCenter = function(e) { + var ratio = e.target.namespaceURI.indexOf('svg') !== -1 ? 1 : + sigma.utils.getPixelRatio(); + return { + x: sigma.utils.getWidth(e) / (2 * ratio), + y: sigma.utils.getHeight(e) / (2 * ratio) + }; + }; + + /** + * Convert mouse coords to sigma coords + * + * @param {event} e A mouse or touch event. + * @param {number?} x The x coord to convert + * @param {number?} x The y coord to convert + * + * @return {object} The standardized event + */ + sigma.utils.mouseCoords = function(e, x, y) { + x = x || sigma.utils.getX(e); + y = y || sigma.utils.getY(e); + return { + x: x - sigma.utils.getCenter(e).x, + y: y - sigma.utils.getCenter(e).y, + clientX: e.clientX, + clientY: e.clientY, + ctrlKey: e.ctrlKey, + metaKey: e.metaKey, + altKey: e.altKey, + shiftKey: e.shiftKey + }; + }; + + /** + * Extract the height from a mouse or touch event. + * + * @param {event} e A mouse or touch event. + * @return {number} The height of the event's target. + */ + sigma.utils.getHeight = function(e) { + var h = (!e.target.ownerSVGElement) ? + e.target.height : + e.target.ownerSVGElement.height; + + return ( + (typeof h === 'number' && h) || + (h !== undefined && h.baseVal !== undefined && h.baseVal.value) + ); + }; + + /** + * Extract the wheel delta from a mouse or touch event. + * + * @param {event} e A mouse or touch event. + * @return {number} The wheel delta of the mouse. + */ + sigma.utils.getDelta = function(e) { + return ( + (e.wheelDelta !== undefined && e.wheelDelta) || + (e.detail !== undefined && -e.detail) + ); + }; + + /** + * Returns the offset of a DOM element. + * + * @param {DOMElement} dom The element to retrieve the position. + * @return {object} The offset of the DOM element (top, left). + */ + sigma.utils.getOffset = function(dom) { + var left = 0, + top = 0; + + while (dom) { + top = top + parseInt(dom.offsetTop); + left = left + parseInt(dom.offsetLeft); + dom = dom.offsetParent; + } + + return { + top: top, + left: left + }; + }; + + /** + * Simulates a "double click" event. + * + * @param {HTMLElement} target The event target. + * @param {string} type The event type. + * @param {function} callback The callback to execute. + */ + sigma.utils.doubleClick = function(target, type, callback) { + var clicks = 0, + self = this, + handlers; + + target._doubleClickHandler = target._doubleClickHandler || {}; + target._doubleClickHandler[type] = target._doubleClickHandler[type] || []; + handlers = target._doubleClickHandler[type]; + + handlers.push(function(e) { + clicks++; + + if (clicks === 2) { + clicks = 0; + return callback(e); + } else if (clicks === 1) { + setTimeout(function() { + clicks = 0; + }, sigma.settings.doubleClickTimeout); + } + }); + + target.addEventListener(type, handlers[handlers.length - 1], false); + }; + + /** + * Unbind simulated "double click" events. + * + * @param {HTMLElement} target The event target. + * @param {string} type The event type. + */ + sigma.utils.unbindDoubleClick = function(target, type) { + var handler, + handlers = (target._doubleClickHandler || {})[type] || []; + + while ((handler = handlers.pop())) { + target.removeEventListener(type, handler); + } + + delete (target._doubleClickHandler || {})[type]; + }; + + + + + /** + * Here are just some of the most basic easing functions, used for the + * animated camera "goTo" calls. + * + * If you need some more easings functions, don't hesitate to add them to + * sigma.utils.easings. But I will not add some more here or merge PRs + * containing, because I do not want sigma sources full of overkill and never + * used stuff... + */ + sigma.utils.easings = sigma.utils.easings || {}; + sigma.utils.easings.linearNone = function(k) { + return k; + }; + sigma.utils.easings.quadraticIn = function(k) { + return k * k; + }; + sigma.utils.easings.quadraticOut = function(k) { + return k * (2 - k); + }; + sigma.utils.easings.quadraticInOut = function(k) { + if ((k *= 2) < 1) + return 0.5 * k * k; + return - 0.5 * (--k * (k - 2) - 1); + }; + sigma.utils.easings.cubicIn = function(k) { + return k * k * k; + }; + sigma.utils.easings.cubicOut = function(k) { + return --k * k * k + 1; + }; + sigma.utils.easings.cubicInOut = function(k) { + if ((k *= 2) < 1) + return 0.5 * k * k * k; + return 0.5 * ((k -= 2) * k * k + 2); + }; + + + + + /** + * ************ + * WEBGL UTILS: + * ************ + */ + /** + * Loads a WebGL shader and returns it. + * + * @param {WebGLContext} gl The WebGLContext to use. + * @param {string} shaderSource The shader source. + * @param {number} shaderType The type of shader. + * @param {function(string): void} error Callback for errors. + * @return {WebGLShader} The created shader. + */ + sigma.utils.loadShader = function(gl, shaderSource, shaderType, error) { + var compiled, + shader = gl.createShader(shaderType); + + // Load the shader source + gl.shaderSource(shader, shaderSource); + + // Compile the shader + gl.compileShader(shader); + + // Check the compile status + compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS); + + // If something went wrong: + if (!compiled) { + if (error) { + error( + 'Error compiling shader "' + shader + '":' + + gl.getShaderInfoLog(shader) + ); + } + + gl.deleteShader(shader); + return null; + } + + return shader; + }; + + /** + * Creates a program, attaches shaders, binds attrib locations, links the + * program and calls useProgram. + * + * @param {Array.<WebGLShader>} shaders The shaders to attach. + * @param {Array.<string>} attribs The attribs names. + * @param {Array.<number>} locations The locations for the attribs. + * @param {function(string): void} error Callback for errors. + * @return {WebGLProgram} The created program. + */ + sigma.utils.loadProgram = function(gl, shaders, attribs, loc, error) { + var i, + linked, + program = gl.createProgram(); + + for (i = 0; i < shaders.length; ++i) + gl.attachShader(program, shaders[i]); + + if (attribs) + for (i = 0; i < attribs.length; ++i) + gl.bindAttribLocation( + program, + locations ? locations[i] : i, + opt_attribs[i] + ); + + gl.linkProgram(program); + + // Check the link status + linked = gl.getProgramParameter(program, gl.LINK_STATUS); + if (!linked) { + if (error) + error('Error in program linking: ' + gl.getProgramInfoLog(program)); + + gl.deleteProgram(program); + return null; + } + + return program; + }; + + + + + /** + * ********* + * MATRICES: + * ********* + * The following utils are just here to help generating the transformation + * matrices for the WebGL renderers. + */ + sigma.utils.pkg('sigma.utils.matrices'); + + /** + * The returns a 3x3 translation matrix. + * + * @param {number} dx The X translation. + * @param {number} dy The Y translation. + * @return {array} Returns the matrix. + */ + sigma.utils.matrices.translation = function(dx, dy) { + return [ + 1, 0, 0, + 0, 1, 0, + dx, dy, 1 + ]; + }; + + /** + * The returns a 3x3 or 2x2 rotation matrix. + * + * @param {number} angle The rotation angle. + * @param {boolean} m2 If true, the function will return a 2x2 matrix. + * @return {array} Returns the matrix. + */ + sigma.utils.matrices.rotation = function(angle, m2) { + var cos = Math.cos(angle), + sin = Math.sin(angle); + + return m2 ? [ + cos, -sin, + sin, cos + ] : [ + cos, -sin, 0, + sin, cos, 0, + 0, 0, 1 + ]; + }; + + /** + * The returns a 3x3 or 2x2 homothetic transformation matrix. + * + * @param {number} ratio The scaling ratio. + * @param {boolean} m2 If true, the function will return a 2x2 matrix. + * @return {array} Returns the matrix. + */ + sigma.utils.matrices.scale = function(ratio, m2) { + return m2 ? [ + ratio, 0, + 0, ratio + ] : [ + ratio, 0, 0, + 0, ratio, 0, + 0, 0, 1 + ]; + }; + + /** + * The returns a 3x3 or 2x2 homothetic transformation matrix. + * + * @param {array} a The first matrix. + * @param {array} b The second matrix. + * @param {boolean} m2 If true, the function will assume both matrices are + * 2x2. + * @return {array} Returns the matrix. + */ + sigma.utils.matrices.multiply = function(a, b, m2) { + var l = m2 ? 2 : 3, + a00 = a[0 * l + 0], + a01 = a[0 * l + 1], + a02 = a[0 * l + 2], + a10 = a[1 * l + 0], + a11 = a[1 * l + 1], + a12 = a[1 * l + 2], + a20 = a[2 * l + 0], + a21 = a[2 * l + 1], + a22 = a[2 * l + 2], + b00 = b[0 * l + 0], + b01 = b[0 * l + 1], + b02 = b[0 * l + 2], + b10 = b[1 * l + 0], + b11 = b[1 * l + 1], + b12 = b[1 * l + 2], + b20 = b[2 * l + 0], + b21 = b[2 * l + 1], + b22 = b[2 * l + 2]; + + return m2 ? [ + a00 * b00 + a01 * b10, + a00 * b01 + a01 * b11, + a10 * b00 + a11 * b10, + a10 * b01 + a11 * b11 + ] : [ + a00 * b00 + a01 * b10 + a02 * b20, + a00 * b01 + a01 * b11 + a02 * b21, + a00 * b02 + a01 * b12 + a02 * b22, + a10 * b00 + a11 * b10 + a12 * b20, + a10 * b01 + a11 * b11 + a12 * b21, + a10 * b02 + a11 * b12 + a12 * b22, + a20 * b00 + a21 * b10 + a22 * b20, + a20 * b01 + a21 * b11 + a22 * b21, + a20 * b02 + a21 * b12 + a22 * b22 + ]; + }; +}).call(this); diff --git a/sigma.js-1.2.0/test/qunit/qunit.css b/sigma.js-1.2.0/test/qunit/qunit.css new file mode 100644 index 0000000..616c766 --- /dev/null +++ b/sigma.js-1.2.0/test/qunit/qunit.css @@ -0,0 +1,244 @@ +/** + * QUnit v1.12.0pre - A JavaScript Unit Testing Framework + * + * http://qunitjs.com + * + * Copyright 2012 jQuery Foundation and other contributors + * Released under the MIT license. + * http://jquery.org/license + */ + +/** Font Family and Sizes */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult { + font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif; +} + +#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; } +#qunit-tests { font-size: smaller; } + + +/** Resets */ + +#qunit-tests, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter { + margin: 0; + padding: 0; +} + + +/** Header */ + +#qunit-header { + padding: 0.5em 0 0.5em 1em; + + color: #8699a4; + background-color: #0d3349; + + font-size: 1.5em; + line-height: 1em; + font-weight: normal; + + border-radius: 5px 5px 0 0; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-top-right-radius: 5px; + -webkit-border-top-left-radius: 5px; +} + +#qunit-header a { + text-decoration: none; + color: #c2ccd1; +} + +#qunit-header a:hover, +#qunit-header a:focus { + color: #fff; +} + +#qunit-testrunner-toolbar label { + display: inline-block; + padding: 0 .5em 0 .1em; +} + +#qunit-banner { + height: 5px; +} + +#qunit-testrunner-toolbar { + padding: 0.5em 0 0.5em 2em; + color: #5E740B; + background-color: #eee; + overflow: hidden; +} + +#qunit-userAgent { + padding: 0.5em 0 0.5em 2.5em; + background-color: #2b81af; + color: #fff; + text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px; +} + +#qunit-modulefilter-container { + float: right; +} + +/** Tests: Pass/Fail */ + +#qunit-tests { + list-style-position: inside; +} + +#qunit-tests li { + padding: 0.4em 0.5em 0.4em 2.5em; + border-bottom: 1px solid #fff; + list-style-position: inside; +} + +#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { + display: none; +} + +#qunit-tests li strong { + cursor: pointer; +} + +#qunit-tests li a { + padding: 0.5em; + color: #c2ccd1; + text-decoration: none; +} +#qunit-tests li a:hover, +#qunit-tests li a:focus { + color: #000; +} + +#qunit-tests li .runtime { + float: right; + font-size: smaller; +} + +.qunit-assert-list { + margin-top: 0.5em; + padding: 0.5em; + + background-color: #fff; + + border-radius: 5px; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; +} + +.qunit-collapsed { + display: none; +} + +#qunit-tests table { + border-collapse: collapse; + margin-top: .2em; +} + +#qunit-tests th { + text-align: right; + vertical-align: top; + padding: 0 .5em 0 0; +} + +#qunit-tests td { + vertical-align: top; +} + +#qunit-tests pre { + margin: 0; + white-space: pre-wrap; + word-wrap: break-word; +} + +#qunit-tests del { + background-color: #e0f2be; + color: #374e0c; + text-decoration: none; +} + +#qunit-tests ins { + background-color: #ffcaca; + color: #500; + text-decoration: none; +} + +/*** Test Counts */ + +#qunit-tests b.counts { color: black; } +#qunit-tests b.passed { color: #5E740B; } +#qunit-tests b.failed { color: #710909; } + +#qunit-tests li li { + padding: 5px; + background-color: #fff; + border-bottom: none; + list-style-position: inside; +} + +/*** Passing Styles */ + +#qunit-tests li li.pass { + color: #3c510c; + background-color: #fff; + border-left: 10px solid #C6E746; +} + +#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; } +#qunit-tests .pass .test-name { color: #366097; } + +#qunit-tests .pass .test-actual, +#qunit-tests .pass .test-expected { color: #999999; } + +#qunit-banner.qunit-pass { background-color: #C6E746; } + +/*** Failing Styles */ + +#qunit-tests li li.fail { + color: #710909; + background-color: #fff; + border-left: 10px solid #EE5757; + white-space: pre; +} + +#qunit-tests > li:last-child { + border-radius: 0 0 5px 5px; + -moz-border-radius: 0 0 5px 5px; + -webkit-border-bottom-right-radius: 5px; + -webkit-border-bottom-left-radius: 5px; +} + +#qunit-tests .fail { color: #000000; background-color: #EE5757; } +#qunit-tests .fail .test-name, +#qunit-tests .fail .module-name { color: #000000; } + +#qunit-tests .fail .test-actual { color: #EE5757; } +#qunit-tests .fail .test-expected { color: green; } + +#qunit-banner.qunit-fail { background-color: #EE5757; } + + +/** Result */ + +#qunit-testresult { + padding: 0.5em 0.5em 0.5em 2.5em; + + color: #2b81af; + background-color: #D2E0E6; + + border-bottom: 1px solid white; +} +#qunit-testresult .module-name { + font-weight: bold; +} + +/** Fixture */ + +#qunit-fixture { + position: absolute; + top: -10000px; + left: -10000px; + width: 1000px; + height: 1000px; +} diff --git a/sigma.js-1.2.0/test/qunit/qunit.js b/sigma.js-1.2.0/test/qunit/qunit.js new file mode 100644 index 0000000..8dedee4 --- /dev/null +++ b/sigma.js-1.2.0/test/qunit/qunit.js @@ -0,0 +1,2212 @@ +/** + * QUnit v1.12.0pre - A JavaScript Unit Testing Framework + * + * http://qunitjs.com + * + * Copyright 2013 jQuery Foundation and other contributors + * Released under the MIT license. + * https://jquery.org/license/ + */ + +(function( window ) { + +var QUnit, + assert, + config, + onErrorFnPrev, + testId = 0, + fileName = (sourceFromStacktrace( 0 ) || "" ).replace(/(:\d+)+\)?/, "").replace(/.+\//, ""), + toString = Object.prototype.toString, + hasOwn = Object.prototype.hasOwnProperty, + // Keep a local reference to Date (GH-283) + Date = window.Date, + setTimeout = window.setTimeout, + defined = { + setTimeout: typeof window.setTimeout !== "undefined", + sessionStorage: (function() { + var x = "qunit-test-string"; + try { + sessionStorage.setItem( x, x ); + sessionStorage.removeItem( x ); + return true; + } catch( e ) { + return false; + } + }()) + }, + /** + * Provides a normalized error string, correcting an issue + * with IE 7 (and prior) where Error.prototype.toString is + * not properly implemented + * + * Based on http://es5.github.com/#x15.11.4.4 + * + * @param {String|Error} error + * @return {String} error message + */ + errorString = function( error ) { + var name, message, + errorString = error.toString(); + if ( errorString.substring( 0, 7 ) === "[object" ) { + name = error.name ? error.name.toString() : "Error"; + message = error.message ? error.message.toString() : ""; + if ( name && message ) { + return name + ": " + message; + } else if ( name ) { + return name; + } else if ( message ) { + return message; + } else { + return "Error"; + } + } else { + return errorString; + } + }, + /** + * Makes a clone of an object using only Array or Object as base, + * and copies over the own enumerable properties. + * + * @param {Object} obj + * @return {Object} New object with only the own properties (recursively). + */ + objectValues = function( obj ) { + // Grunt 0.3.x uses an older version of jshint that still has jshint/jshint#392. + /*jshint newcap: false */ + var key, val, + vals = QUnit.is( "array", obj ) ? [] : {}; + for ( key in obj ) { + if ( hasOwn.call( obj, key ) ) { + val = obj[key]; + vals[key] = val === Object(val) ? objectValues(val) : val; + } + } + return vals; + }; + +function Test( settings ) { + extend( this, settings ); + this.assertions = []; + this.testNumber = ++Test.count; +} + +Test.count = 0; + +Test.prototype = { + init: function() { + var a, b, li, + tests = id( "qunit-tests" ); + + if ( tests ) { + b = document.createElement( "strong" ); + b.innerHTML = this.nameHtml; + + // `a` initialized at top of scope + a = document.createElement( "a" ); + a.innerHTML = "Rerun"; + a.href = QUnit.url({ testNumber: this.testNumber }); + + li = document.createElement( "li" ); + li.appendChild( b ); + li.appendChild( a ); + li.className = "running"; + li.id = this.id = "qunit-test-output" + testId++; + + tests.appendChild( li ); + } + }, + setup: function() { + if ( + // Emit moduleStart when we're switching from one module to another + this.module !== config.previousModule || + // They could be equal (both undefined) but if the previousModule property doesn't + // yet exist it means this is the first test in a suite that isn't wrapped in a + // module, in which case we'll just emit a moduleStart event for 'undefined'. + // Without this, reporters can get testStart before moduleStart which is a problem. + !hasOwn.call( config, "previousModule" ) + ) { + if ( hasOwn.call( config, "previousModule" ) ) { + runLoggingCallbacks( "moduleDone", QUnit, { + name: config.previousModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + }); + } + config.previousModule = this.module; + config.moduleStats = { all: 0, bad: 0 }; + runLoggingCallbacks( "moduleStart", QUnit, { + name: this.module + }); + } + + config.current = this; + + this.testEnvironment = extend({ + setup: function() {}, + teardown: function() {} + }, this.moduleTestEnvironment ); + + this.started = +new Date(); + runLoggingCallbacks( "testStart", QUnit, { + name: this.testName, + module: this.module + }); + + /*jshint camelcase:false */ + + + /** + * Expose the current test environment. + * + * @deprecated since 1.12.0: Use QUnit.config.current.testEnvironment instead. + */ + QUnit.current_testEnvironment = this.testEnvironment; + + /*jshint camelcase:true */ + + if ( !config.pollution ) { + saveGlobal(); + } + if ( config.notrycatch ) { + this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert ); + return; + } + try { + this.testEnvironment.setup.call( this.testEnvironment, QUnit.assert ); + } catch( e ) { + QUnit.pushFailure( "Setup failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) ); + } + }, + run: function() { + config.current = this; + + var running = id( "qunit-testresult" ); + + if ( running ) { + running.innerHTML = "Running: <br/>" + this.nameHtml; + } + + if ( this.async ) { + QUnit.stop(); + } + + this.callbackStarted = +new Date(); + + if ( config.notrycatch ) { + this.callback.call( this.testEnvironment, QUnit.assert ); + this.callbackRuntime = +new Date() - this.callbackStarted; + return; + } + + try { + this.callback.call( this.testEnvironment, QUnit.assert ); + this.callbackRuntime = +new Date() - this.callbackStarted; + } catch( e ) { + this.callbackRuntime = +new Date() - this.callbackStarted; + + QUnit.pushFailure( "Died on test #" + (this.assertions.length + 1) + " " + this.stack + ": " + ( e.message || e ), extractStacktrace( e, 0 ) ); + // else next test will carry the responsibility + saveGlobal(); + + // Restart the tests if they're blocking + if ( config.blocking ) { + QUnit.start(); + } + } + }, + teardown: function() { + config.current = this; + if ( config.notrycatch ) { + if ( typeof this.callbackRuntime === "undefined" ) { + this.callbackRuntime = +new Date() - this.callbackStarted; + } + this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert ); + return; + } else { + try { + this.testEnvironment.teardown.call( this.testEnvironment, QUnit.assert ); + } catch( e ) { + QUnit.pushFailure( "Teardown failed on " + this.testName + ": " + ( e.message || e ), extractStacktrace( e, 1 ) ); + } + } + checkPollution(); + }, + finish: function() { + config.current = this; + if ( config.requireExpects && this.expected === null ) { + QUnit.pushFailure( "Expected number of assertions to be defined, but expect() was not called.", this.stack ); + } else if ( this.expected !== null && this.expected !== this.assertions.length ) { + QUnit.pushFailure( "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run", this.stack ); + } else if ( this.expected === null && !this.assertions.length ) { + QUnit.pushFailure( "Expected at least one assertion, but none were run - call expect(0) to accept zero assertions.", this.stack ); + } + + var i, assertion, a, b, time, li, ol, + test = this, + good = 0, + bad = 0, + tests = id( "qunit-tests" ); + + this.runtime = +new Date() - this.started; + config.stats.all += this.assertions.length; + config.moduleStats.all += this.assertions.length; + + if ( tests ) { + ol = document.createElement( "ol" ); + ol.className = "qunit-assert-list"; + + for ( i = 0; i < this.assertions.length; i++ ) { + assertion = this.assertions[i]; + + li = document.createElement( "li" ); + li.className = assertion.result ? "pass" : "fail"; + li.innerHTML = assertion.message || ( assertion.result ? "okay" : "failed" ); + ol.appendChild( li ); + + if ( assertion.result ) { + good++; + } else { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + + // store result when possible + if ( QUnit.config.reorder && defined.sessionStorage ) { + if ( bad ) { + sessionStorage.setItem( "qunit-test-" + this.module + "-" + this.testName, bad ); + } else { + sessionStorage.removeItem( "qunit-test-" + this.module + "-" + this.testName ); + } + } + + if ( bad === 0 ) { + addClass( ol, "qunit-collapsed" ); + } + + // `b` initialized at top of scope + b = document.createElement( "strong" ); + b.innerHTML = this.nameHtml + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>"; + + addEvent(b, "click", function() { + var next = b.parentNode.lastChild, + collapsed = hasClass( next, "qunit-collapsed" ); + ( collapsed ? removeClass : addClass )( next, "qunit-collapsed" ); + }); + + addEvent(b, "dblclick", function( e ) { + var target = e && e.target ? e.target : window.event.srcElement; + if ( target.nodeName.toLowerCase() === "span" || target.nodeName.toLowerCase() === "b" ) { + target = target.parentNode; + } + if ( window.location && target.nodeName.toLowerCase() === "strong" ) { + window.location = QUnit.url({ testNumber: test.testNumber }); + } + }); + + // `time` initialized at top of scope + time = document.createElement( "span" ); + time.className = "runtime"; + time.innerHTML = this.runtime + " ms"; + + // `li` initialized at top of scope + li = id( this.id ); + li.className = bad ? "fail" : "pass"; + li.removeChild( li.firstChild ); + a = li.firstChild; + li.appendChild( b ); + li.appendChild( a ); + li.appendChild( time ); + li.appendChild( ol ); + + } else { + for ( i = 0; i < this.assertions.length; i++ ) { + if ( !this.assertions[i].result ) { + bad++; + config.stats.bad++; + config.moduleStats.bad++; + } + } + } + + runLoggingCallbacks( "testDone", QUnit, { + name: this.testName, + module: this.module, + failed: bad, + passed: this.assertions.length - bad, + total: this.assertions.length, + duration: this.runtime + }); + + QUnit.reset(); + + config.current = undefined; + }, + + queue: function() { + var bad, + test = this; + + synchronize(function() { + test.init(); + }); + function run() { + // each of these can by async + synchronize(function() { + test.setup(); + }); + synchronize(function() { + test.run(); + }); + synchronize(function() { + test.teardown(); + }); + synchronize(function() { + test.finish(); + }); + } + + // `bad` initialized at top of scope + // defer when previous test run passed, if storage is available + bad = QUnit.config.reorder && defined.sessionStorage && + +sessionStorage.getItem( "qunit-test-" + this.module + "-" + this.testName ); + + if ( bad ) { + run(); + } else { + synchronize( run, true ); + } + } +}; + +// Root QUnit object. +// `QUnit` initialized at top of scope +QUnit = { + + // call on start of module test to prepend name to all tests + module: function( name, testEnvironment ) { + config.currentModule = name; + config.currentModuleTestEnvironment = testEnvironment; + config.modules[name] = true; + }, + + asyncTest: function( testName, expected, callback ) { + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + QUnit.test( testName, expected, callback, true ); + }, + + test: function( testName, expected, callback, async ) { + var test, + nameHtml = "<span class='test-name'>" + escapeText( testName ) + "</span>"; + + if ( arguments.length === 2 ) { + callback = expected; + expected = null; + } + + if ( config.currentModule ) { + nameHtml = "<span class='module-name'>" + escapeText( config.currentModule ) + "</span>: " + nameHtml; + } + + test = new Test({ + nameHtml: nameHtml, + testName: testName, + expected: expected, + async: async, + callback: callback, + module: config.currentModule, + moduleTestEnvironment: config.currentModuleTestEnvironment, + stack: sourceFromStacktrace( 2 ) + }); + + if ( !validTest( test ) ) { + return; + } + + test.queue(); + }, + + // Specify the number of expected assertions to guarantee that failed test (no assertions are run at all) don't slip through. + expect: function( asserts ) { + if (arguments.length === 1) { + config.current.expected = asserts; + } else { + return config.current.expected; + } + }, + + start: function( count ) { + // QUnit hasn't been initialized yet. + // Note: RequireJS (et al) may delay onLoad + if ( config.semaphore === undefined ) { + QUnit.begin(function() { + // This is triggered at the top of QUnit.load, push start() to the event loop, to allow QUnit.load to finish first + setTimeout(function() { + QUnit.start( count ); + }); + }); + return; + } + + config.semaphore -= count || 1; + // don't start until equal number of stop-calls + if ( config.semaphore > 0 ) { + return; + } + // ignore if start is called more often then stop + if ( config.semaphore < 0 ) { + config.semaphore = 0; + QUnit.pushFailure( "Called start() while already started (QUnit.config.semaphore was 0 already)", null, sourceFromStacktrace(2) ); + return; + } + // A slight delay, to avoid any current callbacks + if ( defined.setTimeout ) { + setTimeout(function() { + if ( config.semaphore > 0 ) { + return; + } + if ( config.timeout ) { + clearTimeout( config.timeout ); + } + + config.blocking = false; + process( true ); + }, 13); + } else { + config.blocking = false; + process( true ); + } + }, + + stop: function( count ) { + config.semaphore += count || 1; + config.blocking = true; + + if ( config.testTimeout && defined.setTimeout ) { + clearTimeout( config.timeout ); + config.timeout = setTimeout(function() { + QUnit.ok( false, "Test timed out" ); + config.semaphore = 1; + QUnit.start(); + }, config.testTimeout ); + } + } +}; + +// `assert` initialized at top of scope +// Assert helpers +// All of these must either call QUnit.push() or manually do: +// - runLoggingCallbacks( "log", .. ); +// - config.current.assertions.push({ .. }); +// We attach it to the QUnit object *after* we expose the public API, +// otherwise `assert` will become a global variable in browsers (#341). +assert = { + /** + * Asserts rough true-ish result. + * @name ok + * @function + * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); + */ + ok: function( result, msg ) { + if ( !config.current ) { + throw new Error( "ok() assertion outside test context, was " + sourceFromStacktrace(2) ); + } + result = !!result; + msg = msg || (result ? "okay" : "failed" ); + + var source, + details = { + module: config.current.module, + name: config.current.testName, + result: result, + message: msg + }; + + msg = "<span class='test-message'>" + escapeText( msg ) + "</span>"; + + if ( !result ) { + source = sourceFromStacktrace( 2 ); + if ( source ) { + details.source = source; + msg += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr></table>"; + } + } + runLoggingCallbacks( "log", QUnit, details ); + config.current.assertions.push({ + result: result, + message: msg + }); + }, + + /** + * Assert that the first two arguments are equal, with an optional message. + * Prints out both actual and expected values. + * @name equal + * @function + * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" ); + */ + equal: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + QUnit.push( expected == actual, actual, expected, message ); + }, + + /** + * @name notEqual + * @function + */ + notEqual: function( actual, expected, message ) { + /*jshint eqeqeq:false */ + QUnit.push( expected != actual, actual, expected, message ); + }, + + /** + * @name propEqual + * @function + */ + propEqual: function( actual, expected, message ) { + actual = objectValues(actual); + expected = objectValues(expected); + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name notPropEqual + * @function + */ + notPropEqual: function( actual, expected, message ) { + actual = objectValues(actual); + expected = objectValues(expected); + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name deepEqual + * @function + */ + deepEqual: function( actual, expected, message ) { + QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name notDeepEqual + * @function + */ + notDeepEqual: function( actual, expected, message ) { + QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); + }, + + /** + * @name strictEqual + * @function + */ + strictEqual: function( actual, expected, message ) { + QUnit.push( expected === actual, actual, expected, message ); + }, + + /** + * @name notStrictEqual + * @function + */ + notStrictEqual: function( actual, expected, message ) { + QUnit.push( expected !== actual, actual, expected, message ); + }, + + "throws": function( block, expected, message ) { + var actual, + expectedOutput = expected, + ok = false; + + // 'expected' is optional + if ( typeof expected === "string" ) { + message = expected; + expected = null; + } + + config.current.ignoreGlobalErrors = true; + try { + block.call( config.current.testEnvironment ); + } catch (e) { + actual = e; + } + config.current.ignoreGlobalErrors = false; + + if ( actual ) { + // we don't want to validate thrown error + if ( !expected ) { + ok = true; + expectedOutput = null; + // expected is a regexp + } else if ( QUnit.objectType( expected ) === "regexp" ) { + ok = expected.test( errorString( actual ) ); + // expected is a constructor + } else if ( actual instanceof expected ) { + ok = true; + // expected is a validation function which returns true is validation passed + } else if ( expected.call( {}, actual ) === true ) { + expectedOutput = null; + ok = true; + } + + QUnit.push( ok, actual, expectedOutput, message ); + } else { + QUnit.pushFailure( message, null, "No exception was thrown." ); + } + } +}; + +/** + * @deprecated since 1.8.0 + * Kept assertion helpers in root for backwards compatibility. + */ +extend( QUnit, assert ); + +/** + * @deprecated since 1.9.0 + * Kept root "raises()" for backwards compatibility. + * (Note that we don't introduce assert.raises). + */ +QUnit.raises = assert[ "throws" ]; + +/** + * @deprecated since 1.0.0, replaced with error pushes since 1.3.0 + * Kept to avoid TypeErrors for undefined methods. + */ +QUnit.equals = function() { + QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" ); +}; +QUnit.same = function() { + QUnit.push( false, false, false, "QUnit.same has been deprecated since 2009 (e88049a0), use QUnit.deepEqual instead" ); +}; + +// We want access to the constructor's prototype +(function() { + function F() {} + F.prototype = QUnit; + QUnit = new F(); + // Make F QUnit's constructor so that we can add to the prototype later + QUnit.constructor = F; +}()); + +/** + * Config object: Maintain internal state + * Later exposed as QUnit.config + * `config` initialized at top of scope + */ +config = { + // The queue of tests to run + queue: [], + + // block until document ready + blocking: true, + + // when enabled, show only failing tests + // gets persisted through sessionStorage and can be changed in UI via checkbox + hidepassed: false, + + // by default, run previously failed tests first + // very useful in combination with "Hide passed tests" checked + reorder: true, + + // by default, modify document.title when suite is done + altertitle: true, + + // when enabled, all tests must call expect() + requireExpects: false, + + // add checkboxes that are persisted in the query-string + // when enabled, the id is set to `true` as a `QUnit.config` property + urlConfig: [ + { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings." + }, + { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings." + } + ], + + // Set of all modules. + modules: {}, + + // logging callback queues + begin: [], + done: [], + log: [], + testStart: [], + testDone: [], + moduleStart: [], + moduleDone: [] +}; + +// Export global variables, unless an 'exports' object exists, +// in that case we assume we're in CommonJS (dealt with on the bottom of the script) +if ( typeof exports === "undefined" ) { + extend( window, QUnit.constructor.prototype ); + + // Expose QUnit object + window.QUnit = QUnit; +} + +// Initialize more QUnit.config and QUnit.urlParams +(function() { + var i, + location = window.location || { search: "", protocol: "file:" }, + params = location.search.slice( 1 ).split( "&" ), + length = params.length, + urlParams = {}, + current; + + if ( params[ 0 ] ) { + for ( i = 0; i < length; i++ ) { + current = params[ i ].split( "=" ); + current[ 0 ] = decodeURIComponent( current[ 0 ] ); + // allow just a key to turn on a flag, e.g., test.html?noglobals + current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true; + urlParams[ current[ 0 ] ] = current[ 1 ]; + } + } + + QUnit.urlParams = urlParams; + + // String search anywhere in moduleName+testName + config.filter = urlParams.filter; + + // Exact match of the module name + config.module = urlParams.module; + + config.testNumber = parseInt( urlParams.testNumber, 10 ) || null; + + // Figure out if we're running the tests from a server or not + QUnit.isLocal = location.protocol === "file:"; +}()); + +// Extend QUnit object, +// these after set here because they should not be exposed as global functions +extend( QUnit, { + assert: assert, + + config: config, + + // Initialize the configuration options + init: function() { + extend( config, { + stats: { all: 0, bad: 0 }, + moduleStats: { all: 0, bad: 0 }, + started: +new Date(), + updateRate: 1000, + blocking: false, + autostart: true, + autorun: false, + filter: "", + queue: [], + semaphore: 1 + }); + + var tests, banner, result, + qunit = id( "qunit" ); + + if ( qunit ) { + qunit.innerHTML = + "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" + + "<h2 id='qunit-banner'></h2>" + + "<div id='qunit-testrunner-toolbar'></div>" + + "<h2 id='qunit-userAgent'></h2>" + + "<ol id='qunit-tests'></ol>"; + } + + tests = id( "qunit-tests" ); + banner = id( "qunit-banner" ); + result = id( "qunit-testresult" ); + + if ( tests ) { + tests.innerHTML = ""; + } + + if ( banner ) { + banner.className = ""; + } + + if ( result ) { + result.parentNode.removeChild( result ); + } + + if ( tests ) { + result = document.createElement( "p" ); + result.id = "qunit-testresult"; + result.className = "result"; + tests.parentNode.insertBefore( result, tests ); + result.innerHTML = "Running...<br/> "; + } + }, + + // Resets the test setup. Useful for tests that modify the DOM. + /* + DEPRECATED: Use multiple tests instead of resetting inside a test. + Use testStart or testDone for custom cleanup. + This method will throw an error in 2.0, and will be removed in 2.1 + */ + reset: function() { + var fixture = id( "qunit-fixture" ); + if ( fixture ) { + fixture.innerHTML = config.fixture; + } + }, + + // Trigger an event on an element. + // @example triggerEvent( document.body, "click" ); + triggerEvent: function( elem, type, event ) { + if ( document.createEvent ) { + event = document.createEvent( "MouseEvents" ); + event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView, + 0, 0, 0, 0, 0, false, false, false, false, 0, null); + + elem.dispatchEvent( event ); + } else if ( elem.fireEvent ) { + elem.fireEvent( "on" + type ); + } + }, + + // Safe object type checking + is: function( type, obj ) { + return QUnit.objectType( obj ) === type; + }, + + objectType: function( obj ) { + if ( typeof obj === "undefined" ) { + return "undefined"; + // consider: typeof null === object + } + if ( obj === null ) { + return "null"; + } + + var match = toString.call( obj ).match(/^\[object\s(.*)\]$/), + type = match && match[1] || ""; + + switch ( type ) { + case "Number": + if ( isNaN(obj) ) { + return "nan"; + } + return "number"; + case "String": + case "Boolean": + case "Array": + case "Date": + case "RegExp": + case "Function": + return type.toLowerCase(); + } + if ( typeof obj === "object" ) { + return "object"; + } + return undefined; + }, + + push: function( result, actual, expected, message ) { + if ( !config.current ) { + throw new Error( "assertion outside test context, was " + sourceFromStacktrace() ); + } + + var output, source, + details = { + module: config.current.module, + name: config.current.testName, + result: result, + message: message, + actual: actual, + expected: expected + }; + + message = escapeText( message ) || ( result ? "okay" : "failed" ); + message = "<span class='test-message'>" + message + "</span>"; + output = message; + + if ( !result ) { + expected = escapeText( QUnit.jsDump.parse(expected) ); + actual = escapeText( QUnit.jsDump.parse(actual) ); + output += "<table><tr class='test-expected'><th>Expected: </th><td><pre>" + expected + "</pre></td></tr>"; + + if ( actual !== expected ) { + output += "<tr class='test-actual'><th>Result: </th><td><pre>" + actual + "</pre></td></tr>"; + output += "<tr class='test-diff'><th>Diff: </th><td><pre>" + QUnit.diff( expected, actual ) + "</pre></td></tr>"; + } + + source = sourceFromStacktrace(); + + if ( source ) { + details.source = source; + output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>"; + } + + output += "</table>"; + } + + runLoggingCallbacks( "log", QUnit, details ); + + config.current.assertions.push({ + result: !!result, + message: output + }); + }, + + pushFailure: function( message, source, actual ) { + if ( !config.current ) { + throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) ); + } + + var output, + details = { + module: config.current.module, + name: config.current.testName, + result: false, + message: message + }; + + message = escapeText( message ) || "error"; + message = "<span class='test-message'>" + message + "</span>"; + output = message; + + output += "<table>"; + + if ( actual ) { + output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeText( actual ) + "</pre></td></tr>"; + } + + if ( source ) { + details.source = source; + output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeText( source ) + "</pre></td></tr>"; + } + + output += "</table>"; + + runLoggingCallbacks( "log", QUnit, details ); + + config.current.assertions.push({ + result: false, + message: output + }); + }, + + url: function( params ) { + params = extend( extend( {}, QUnit.urlParams ), params ); + var key, + querystring = "?"; + + for ( key in params ) { + if ( hasOwn.call( params, key ) ) { + querystring += encodeURIComponent( key ) + "=" + + encodeURIComponent( params[ key ] ) + "&"; + } + } + return window.location.protocol + "//" + window.location.host + + window.location.pathname + querystring.slice( 0, -1 ); + }, + + extend: extend, + id: id, + addEvent: addEvent, + addClass: addClass, + hasClass: hasClass, + removeClass: removeClass + // load, equiv, jsDump, diff: Attached later +}); + +/** + * @deprecated: Created for backwards compatibility with test runner that set the hook function + * into QUnit.{hook}, instead of invoking it and passing the hook function. + * QUnit.constructor is set to the empty F() above so that we can add to it's prototype here. + * Doing this allows us to tell if the following methods have been overwritten on the actual + * QUnit object. + */ +extend( QUnit.constructor.prototype, { + + // Logging callbacks; all receive a single argument with the listed properties + // run test/logs.html for any related changes + begin: registerLoggingCallback( "begin" ), + + // done: { failed, passed, total, runtime } + done: registerLoggingCallback( "done" ), + + // log: { result, actual, expected, message } + log: registerLoggingCallback( "log" ), + + // testStart: { name } + testStart: registerLoggingCallback( "testStart" ), + + // testDone: { name, failed, passed, total, duration } + testDone: registerLoggingCallback( "testDone" ), + + // moduleStart: { name } + moduleStart: registerLoggingCallback( "moduleStart" ), + + // moduleDone: { name, failed, passed, total } + moduleDone: registerLoggingCallback( "moduleDone" ) +}); + +if ( typeof document === "undefined" || document.readyState === "complete" ) { + config.autorun = true; +} + +QUnit.load = function() { + runLoggingCallbacks( "begin", QUnit, {} ); + + // Initialize the config, saving the execution queue + var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, + urlConfigCheckboxesContainer, urlConfigCheckboxes, moduleFilter, + numModules = 0, + moduleNames = [], + moduleFilterHtml = "", + urlConfigHtml = "", + oldconfig = extend( {}, config ); + + QUnit.init(); + extend(config, oldconfig); + + config.blocking = false; + + len = config.urlConfig.length; + + for ( i = 0; i < len; i++ ) { + val = config.urlConfig[i]; + if ( typeof val === "string" ) { + val = { + id: val, + label: val, + tooltip: "[no tooltip available]" + }; + } + config[ val.id ] = QUnit.urlParams[ val.id ]; + urlConfigHtml += "<input id='qunit-urlconfig-" + escapeText( val.id ) + + "' name='" + escapeText( val.id ) + + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + + " title='" + escapeText( val.tooltip ) + + "'><label for='qunit-urlconfig-" + escapeText( val.id ) + + "' title='" + escapeText( val.tooltip ) + "'>" + val.label + "</label>"; + } + for ( i in config.modules ) { + if ( config.modules.hasOwnProperty( i ) ) { + moduleNames.push(i); + } + } + numModules = moduleNames.length; + moduleNames.sort( function( a, b ) { + return a.localeCompare( b ); + }); + moduleFilterHtml += "<label for='qunit-modulefilter'>Module: </label><select id='qunit-modulefilter' name='modulefilter'><option value='' " + + ( config.module === undefined ? "selected='selected'" : "" ) + + ">< All Modules ></option>"; + + + for ( i = 0; i < numModules; i++) { + moduleFilterHtml += "<option value='" + escapeText( encodeURIComponent(moduleNames[i]) ) + "' " + + ( config.module === moduleNames[i] ? "selected='selected'" : "" ) + + ">" + escapeText(moduleNames[i]) + "</option>"; + } + moduleFilterHtml += "</select>"; + + // `userAgent` initialized at top of scope + userAgent = id( "qunit-userAgent" ); + if ( userAgent ) { + userAgent.innerHTML = navigator.userAgent; + } + + // `banner` initialized at top of scope + banner = id( "qunit-header" ); + if ( banner ) { + banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> "; + } + + // `toolbar` initialized at top of scope + toolbar = id( "qunit-testrunner-toolbar" ); + if ( toolbar ) { + // `filter` initialized at top of scope + filter = document.createElement( "input" ); + filter.type = "checkbox"; + filter.id = "qunit-filter-pass"; + + addEvent( filter, "click", function() { + var tmp, + ol = document.getElementById( "qunit-tests" ); + + if ( filter.checked ) { + ol.className = ol.className + " hidepass"; + } else { + tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " "; + ol.className = tmp.replace( / hidepass /, " " ); + } + if ( defined.sessionStorage ) { + if (filter.checked) { + sessionStorage.setItem( "qunit-filter-passed-tests", "true" ); + } else { + sessionStorage.removeItem( "qunit-filter-passed-tests" ); + } + } + }); + + if ( config.hidepassed || defined.sessionStorage && sessionStorage.getItem( "qunit-filter-passed-tests" ) ) { + filter.checked = true; + // `ol` initialized at top of scope + ol = document.getElementById( "qunit-tests" ); + ol.className = ol.className + " hidepass"; + } + toolbar.appendChild( filter ); + + // `label` initialized at top of scope + label = document.createElement( "label" ); + label.setAttribute( "for", "qunit-filter-pass" ); + label.setAttribute( "title", "Only show tests and assertions that fail. Stored in sessionStorage." ); + label.innerHTML = "Hide passed tests"; + toolbar.appendChild( label ); + + urlConfigCheckboxesContainer = document.createElement("span"); + urlConfigCheckboxesContainer.innerHTML = urlConfigHtml; + urlConfigCheckboxes = urlConfigCheckboxesContainer.getElementsByTagName("input"); + // For oldIE support: + // * Add handlers to the individual elements instead of the container + // * Use "click" instead of "change" + // * Fallback from event.target to event.srcElement + addEvents( urlConfigCheckboxes, "click", function( event ) { + var params = {}, + target = event.target || event.srcElement; + params[ target.name ] = target.checked ? true : undefined; + window.location = QUnit.url( params ); + }); + toolbar.appendChild( urlConfigCheckboxesContainer ); + + if (numModules > 1) { + moduleFilter = document.createElement( "span" ); + moduleFilter.setAttribute( "id", "qunit-modulefilter-container" ); + moduleFilter.innerHTML = moduleFilterHtml; + addEvent( moduleFilter.lastChild, "change", function() { + var selectBox = moduleFilter.getElementsByTagName("select")[0], + selectedModule = decodeURIComponent(selectBox.options[selectBox.selectedIndex].value); + + window.location = QUnit.url({ + module: ( selectedModule === "" ) ? undefined : selectedModule, + // Remove any existing filters + filter: undefined, + testNumber: undefined + }); + }); + toolbar.appendChild(moduleFilter); + } + } + + // `main` initialized at top of scope + main = id( "qunit-fixture" ); + if ( main ) { + config.fixture = main.innerHTML; + } + + if ( config.autostart ) { + QUnit.start(); + } +}; + +addEvent( window, "load", QUnit.load ); + +// `onErrorFnPrev` initialized at top of scope +// Preserve other handlers +onErrorFnPrev = window.onerror; + +// Cover uncaught exceptions +// Returning true will suppress the default browser handler, +// returning false will let it run. +window.onerror = function ( error, filePath, linerNr ) { + var ret = false; + if ( onErrorFnPrev ) { + ret = onErrorFnPrev( error, filePath, linerNr ); + } + + // Treat return value as window.onerror itself does, + // Only do our handling if not suppressed. + if ( ret !== true ) { + if ( QUnit.config.current ) { + if ( QUnit.config.current.ignoreGlobalErrors ) { + return true; + } + QUnit.pushFailure( error, filePath + ":" + linerNr ); + } else { + QUnit.test( "global failure", extend( function() { + QUnit.pushFailure( error, filePath + ":" + linerNr ); + }, { validTest: validTest } ) ); + } + return false; + } + + return ret; +}; + +function done() { + config.autorun = true; + + // Log the last module results + if ( config.currentModule ) { + runLoggingCallbacks( "moduleDone", QUnit, { + name: config.currentModule, + failed: config.moduleStats.bad, + passed: config.moduleStats.all - config.moduleStats.bad, + total: config.moduleStats.all + }); + } + delete config.previousModule; + + var i, key, + banner = id( "qunit-banner" ), + tests = id( "qunit-tests" ), + runtime = +new Date() - config.started, + passed = config.stats.all - config.stats.bad, + html = [ + "Tests completed in ", + runtime, + " milliseconds.<br/>", + "<span class='passed'>", + passed, + "</span> assertions of <span class='total'>", + config.stats.all, + "</span> passed, <span class='failed'>", + config.stats.bad, + "</span> failed." + ].join( "" ); + + if ( banner ) { + banner.className = ( config.stats.bad ? "qunit-fail" : "qunit-pass" ); + } + + if ( tests ) { + id( "qunit-testresult" ).innerHTML = html; + } + + if ( config.altertitle && typeof document !== "undefined" && document.title ) { + // show ✖ for good, ✔ for bad suite result in title + // use escape sequences in case file gets loaded with non-utf-8-charset + document.title = [ + ( config.stats.bad ? "\u2716" : "\u2714" ), + document.title.replace( /^[\u2714\u2716] /i, "" ) + ].join( " " ); + } + + // clear own sessionStorage items if all tests passed + if ( config.reorder && defined.sessionStorage && config.stats.bad === 0 ) { + // `key` & `i` initialized at top of scope + for ( i = 0; i < sessionStorage.length; i++ ) { + key = sessionStorage.key( i++ ); + if ( key.indexOf( "qunit-test-" ) === 0 ) { + sessionStorage.removeItem( key ); + } + } + } + + // scroll back to top to show results + if ( window.scrollTo ) { + window.scrollTo(0, 0); + } + + runLoggingCallbacks( "done", QUnit, { + failed: config.stats.bad, + passed: passed, + total: config.stats.all, + runtime: runtime + }); +} + +/** @return Boolean: true if this test should be ran */ +function validTest( test ) { + var include, + filter = config.filter && config.filter.toLowerCase(), + module = config.module && config.module.toLowerCase(), + fullName = (test.module + ": " + test.testName).toLowerCase(); + + // Internally-generated tests are always valid + if ( test.callback && test.callback.validTest === validTest ) { + delete test.callback.validTest; + return true; + } + + if ( config.testNumber ) { + return test.testNumber === config.testNumber; + } + + if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) { + return false; + } + + if ( !filter ) { + return true; + } + + include = filter.charAt( 0 ) !== "!"; + if ( !include ) { + filter = filter.slice( 1 ); + } + + // If the filter matches, we need to honour include + if ( fullName.indexOf( filter ) !== -1 ) { + return include; + } + + // Otherwise, do the opposite + return !include; +} + +// so far supports only Firefox, Chrome and Opera (buggy), Safari (for real exceptions) +// Later Safari and IE10 are supposed to support error.stack as well +// See also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Error/Stack +function extractStacktrace( e, offset ) { + offset = offset === undefined ? 3 : offset; + + var stack, include, i; + + if ( e.stacktrace ) { + // Opera + return e.stacktrace.split( "\n" )[ offset + 3 ]; + } else if ( e.stack ) { + // Firefox, Chrome + stack = e.stack.split( "\n" ); + if (/^error$/i.test( stack[0] ) ) { + stack.shift(); + } + if ( fileName ) { + include = []; + for ( i = offset; i < stack.length; i++ ) { + if ( stack[ i ].indexOf( fileName ) !== -1 ) { + break; + } + include.push( stack[ i ] ); + } + if ( include.length ) { + return include.join( "\n" ); + } + } + return stack[ offset ]; + } else if ( e.sourceURL ) { + // Safari, PhantomJS + // hopefully one day Safari provides actual stacktraces + // exclude useless self-reference for generated Error objects + if ( /qunit.js$/.test( e.sourceURL ) ) { + return; + } + // for actual exceptions, this is useful + return e.sourceURL + ":" + e.line; + } +} +function sourceFromStacktrace( offset ) { + try { + throw new Error(); + } catch ( e ) { + return extractStacktrace( e, offset ); + } +} + +/** + * Escape text for attribute or text content. + */ +function escapeText( s ) { + if ( !s ) { + return ""; + } + s = s + ""; + // Both single quotes and double quotes (for attributes) + return s.replace( /['"<>&]/g, function( s ) { + switch( s ) { + case "'": + return "'"; + case "\"": + return """; + case "<": + return "<"; + case ">": + return ">"; + case "&": + return "&"; + } + }); +} + +function synchronize( callback, last ) { + config.queue.push( callback ); + + if ( config.autorun && !config.blocking ) { + process( last ); + } +} + +function process( last ) { + function next() { + process( last ); + } + var start = new Date().getTime(); + config.depth = config.depth ? config.depth + 1 : 1; + + while ( config.queue.length && !config.blocking ) { + if ( !defined.setTimeout || config.updateRate <= 0 || ( ( new Date().getTime() - start ) < config.updateRate ) ) { + config.queue.shift()(); + } else { + setTimeout( next, 13 ); + break; + } + } + config.depth--; + if ( last && !config.blocking && !config.queue.length && config.depth === 0 ) { + done(); + } +} + +function saveGlobal() { + config.pollution = []; + + if ( config.noglobals ) { + for ( var key in window ) { + if ( hasOwn.call( window, key ) ) { + // in Opera sometimes DOM element ids show up here, ignore them + if ( /^qunit-test-output/.test( key ) ) { + continue; + } + config.pollution.push( key ); + } + } + } +} + +function checkPollution() { + var newGlobals, + deletedGlobals, + old = config.pollution; + + saveGlobal(); + + newGlobals = diff( config.pollution, old ); + if ( newGlobals.length > 0 ) { + QUnit.pushFailure( "Introduced global variable(s): " + newGlobals.join(", ") ); + } + + deletedGlobals = diff( old, config.pollution ); + if ( deletedGlobals.length > 0 ) { + QUnit.pushFailure( "Deleted global variable(s): " + deletedGlobals.join(", ") ); + } +} + +// returns a new Array with the elements that are in a but not in b +function diff( a, b ) { + var i, j, + result = a.slice(); + + for ( i = 0; i < result.length; i++ ) { + for ( j = 0; j < b.length; j++ ) { + if ( result[i] === b[j] ) { + result.splice( i, 1 ); + i--; + break; + } + } + } + return result; +} + +function extend( a, b ) { + for ( var prop in b ) { + if ( hasOwn.call( b, prop ) ) { + // Avoid "Member not found" error in IE8 caused by messing with window.constructor + if ( !( prop === "constructor" && a === window ) ) { + if ( b[ prop ] === undefined ) { + delete a[ prop ]; + } else { + a[ prop ] = b[ prop ]; + } + } + } + } + + return a; +} + +/** + * @param {HTMLElement} elem + * @param {string} type + * @param {Function} fn + */ +function addEvent( elem, type, fn ) { + // Standards-based browsers + if ( elem.addEventListener ) { + elem.addEventListener( type, fn, false ); + // IE + } else { + elem.attachEvent( "on" + type, fn ); + } +} + +/** + * @param {Array|NodeList} elems + * @param {string} type + * @param {Function} fn + */ +function addEvents( elems, type, fn ) { + var i = elems.length; + while ( i-- ) { + addEvent( elems[i], type, fn ); + } +} + +function hasClass( elem, name ) { + return (" " + elem.className + " ").indexOf(" " + name + " ") > -1; +} + +function addClass( elem, name ) { + if ( !hasClass( elem, name ) ) { + elem.className += (elem.className ? " " : "") + name; + } +} + +function removeClass( elem, name ) { + var set = " " + elem.className + " "; + // Class name may appear multiple times + while ( set.indexOf(" " + name + " ") > -1 ) { + set = set.replace(" " + name + " " , " "); + } + // If possible, trim it for prettiness, but not necessarily + elem.className = typeof set.trim === "function" ? set.trim() : set.replace(/^\s+|\s+$/g, ""); +} + +function id( name ) { + return !!( typeof document !== "undefined" && document && document.getElementById ) && + document.getElementById( name ); +} + +function registerLoggingCallback( key ) { + return function( callback ) { + config[key].push( callback ); + }; +} + +// Supports deprecated method of completely overwriting logging callbacks +function runLoggingCallbacks( key, scope, args ) { + var i, callbacks; + if ( QUnit.hasOwnProperty( key ) ) { + QUnit[ key ].call(scope, args ); + } else { + callbacks = config[ key ]; + for ( i = 0; i < callbacks.length; i++ ) { + callbacks[ i ].call( scope, args ); + } + } +} + +// Test for equality any JavaScript type. +// Author: Philippe Rathé <prathe@gmail.com> +QUnit.equiv = (function() { + + // Call the o related callback with the given arguments. + function bindCallbacks( o, callbacks, args ) { + var prop = QUnit.objectType( o ); + if ( prop ) { + if ( QUnit.objectType( callbacks[ prop ] ) === "function" ) { + return callbacks[ prop ].apply( callbacks, args ); + } else { + return callbacks[ prop ]; // or undefined + } + } + } + + // the real equiv function + var innerEquiv, + // stack to decide between skip/abort functions + callers = [], + // stack to avoiding loops from circular referencing + parents = [], + parentsB = [], + + getProto = Object.getPrototypeOf || function ( obj ) { + /*jshint camelcase:false */ + return obj.__proto__; + }, + callbacks = (function () { + + // for string, boolean, number and null + function useStrictEquality( b, a ) { + /*jshint eqeqeq:false */ + if ( b instanceof a.constructor || a instanceof b.constructor ) { + // to catch short annotation VS 'new' annotation of a + // declaration + // e.g. var i = 1; + // var j = new Number(1); + return a == b; + } else { + return a === b; + } + } + + return { + "string": useStrictEquality, + "boolean": useStrictEquality, + "number": useStrictEquality, + "null": useStrictEquality, + "undefined": useStrictEquality, + + "nan": function( b ) { + return isNaN( b ); + }, + + "date": function( b, a ) { + return QUnit.objectType( b ) === "date" && a.valueOf() === b.valueOf(); + }, + + "regexp": function( b, a ) { + return QUnit.objectType( b ) === "regexp" && + // the regex itself + a.source === b.source && + // and its modifiers + a.global === b.global && + // (gmi) ... + a.ignoreCase === b.ignoreCase && + a.multiline === b.multiline && + a.sticky === b.sticky; + }, + + // - skip when the property is a method of an instance (OOP) + // - abort otherwise, + // initial === would have catch identical references anyway + "function": function() { + var caller = callers[callers.length - 1]; + return caller !== Object && typeof caller !== "undefined"; + }, + + "array": function( b, a ) { + var i, j, len, loop, aCircular, bCircular; + + // b could be an object literal here + if ( QUnit.objectType( b ) !== "array" ) { + return false; + } + + len = a.length; + if ( len !== b.length ) { + // safe and faster + return false; + } + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + for ( i = 0; i < len; i++ ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if ( aCircular || bCircular ) { + if ( a[i] === b[i] || aCircular && bCircular ) { + loop = true; + } else { + parents.pop(); + parentsB.pop(); + return false; + } + } + } + if ( !loop && !innerEquiv(a[i], b[i]) ) { + parents.pop(); + parentsB.pop(); + return false; + } + } + parents.pop(); + parentsB.pop(); + return true; + }, + + "object": function( b, a ) { + /*jshint forin:false */ + var i, j, loop, aCircular, bCircular, + // Default to true + eq = true, + aProperties = [], + bProperties = []; + + // comparing constructors is more strict than using + // instanceof + if ( a.constructor !== b.constructor ) { + // Allow objects with no prototype to be equivalent to + // objects with Object as their constructor. + if ( !(( getProto(a) === null && getProto(b) === Object.prototype ) || + ( getProto(b) === null && getProto(a) === Object.prototype ) ) ) { + return false; + } + } + + // stack constructor before traversing properties + callers.push( a.constructor ); + + // track reference to avoid circular references + parents.push( a ); + parentsB.push( b ); + + // be strict: don't ensure hasOwnProperty and go deep + for ( i in a ) { + loop = false; + for ( j = 0; j < parents.length; j++ ) { + aCircular = parents[j] === a[i]; + bCircular = parentsB[j] === b[i]; + if ( aCircular || bCircular ) { + if ( a[i] === b[i] || aCircular && bCircular ) { + loop = true; + } else { + eq = false; + break; + } + } + } + aProperties.push(i); + if ( !loop && !innerEquiv(a[i], b[i]) ) { + eq = false; + break; + } + } + + parents.pop(); + parentsB.pop(); + callers.pop(); // unstack, we are done + + for ( i in b ) { + bProperties.push( i ); // collect b's properties + } + + // Ensures identical properties name + return eq && innerEquiv( aProperties.sort(), bProperties.sort() ); + } + }; + }()); + + innerEquiv = function() { // can take multiple arguments + var args = [].slice.apply( arguments ); + if ( args.length < 2 ) { + return true; // end transition + } + + return (function( a, b ) { + if ( a === b ) { + return true; // catch the most you can + } else if ( a === null || b === null || typeof a === "undefined" || + typeof b === "undefined" || + QUnit.objectType(a) !== QUnit.objectType(b) ) { + return false; // don't lose time with error prone cases + } else { + return bindCallbacks(a, callbacks, [ b, a ]); + } + + // apply transition with (1..n) arguments + }( args[0], args[1] ) && innerEquiv.apply( this, args.splice(1, args.length - 1 )) ); + }; + + return innerEquiv; +}()); + +/** + * jsDump Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | + * http://flesler.blogspot.com Licensed under BSD + * (http://www.opensource.org/licenses/bsd-license.php) Date: 5/15/2008 + * + * @projectDescription Advanced and extensible data dumping for Javascript. + * @version 1.0.0 + * @author Ariel Flesler + * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html} + */ +QUnit.jsDump = (function() { + function quote( str ) { + return "\"" + str.toString().replace( /"/g, "\\\"" ) + "\""; + } + function literal( o ) { + return o + ""; + } + function join( pre, arr, post ) { + var s = jsDump.separator(), + base = jsDump.indent(), + inner = jsDump.indent(1); + if ( arr.join ) { + arr = arr.join( "," + s + inner ); + } + if ( !arr ) { + return pre + post; + } + return [ pre, inner + arr, base + post ].join(s); + } + function array( arr, stack ) { + var i = arr.length, ret = new Array(i); + this.up(); + while ( i-- ) { + ret[i] = this.parse( arr[i] , undefined , stack); + } + this.down(); + return join( "[", ret, "]" ); + } + + var reName = /^function (\w+)/, + jsDump = { + // type is used mostly internally, you can fix a (custom)type in advance + parse: function( obj, type, stack ) { + stack = stack || [ ]; + var inStack, res, + parser = this.parsers[ type || this.typeOf(obj) ]; + + type = typeof parser; + inStack = inArray( obj, stack ); + + if ( inStack !== -1 ) { + return "recursion(" + (inStack - stack.length) + ")"; + } + if ( type === "function" ) { + stack.push( obj ); + res = parser.call( this, obj, stack ); + stack.pop(); + return res; + } + return ( type === "string" ) ? parser : this.parsers.error; + }, + typeOf: function( obj ) { + var type; + if ( obj === null ) { + type = "null"; + } else if ( typeof obj === "undefined" ) { + type = "undefined"; + } else if ( QUnit.is( "regexp", obj) ) { + type = "regexp"; + } else if ( QUnit.is( "date", obj) ) { + type = "date"; + } else if ( QUnit.is( "function", obj) ) { + type = "function"; + } else if ( typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined" ) { + type = "window"; + } else if ( obj.nodeType === 9 ) { + type = "document"; + } else if ( obj.nodeType ) { + type = "node"; + } else if ( + // native arrays + toString.call( obj ) === "[object Array]" || + // NodeList objects + ( typeof obj.length === "number" && typeof obj.item !== "undefined" && ( obj.length ? obj.item(0) === obj[0] : ( obj.item( 0 ) === null && typeof obj[0] === "undefined" ) ) ) + ) { + type = "array"; + } else if ( obj.constructor === Error.prototype.constructor ) { + type = "error"; + } else { + type = typeof obj; + } + return type; + }, + separator: function() { + return this.multiline ? this.HTML ? "<br />" : "\n" : this.HTML ? " " : " "; + }, + // extra can be a number, shortcut for increasing-calling-decreasing + indent: function( extra ) { + if ( !this.multiline ) { + return ""; + } + var chr = this.indentChar; + if ( this.HTML ) { + chr = chr.replace( /\t/g, " " ).replace( / /g, " " ); + } + return new Array( this.depth + ( extra || 0 ) ).join(chr); + }, + up: function( a ) { + this.depth += a || 1; + }, + down: function( a ) { + this.depth -= a || 1; + }, + setParser: function( name, parser ) { + this.parsers[name] = parser; + }, + // The next 3 are exposed so you can use them + quote: quote, + literal: literal, + join: join, + // + depth: 1, + // This is the list of parsers, to modify them, use jsDump.setParser + parsers: { + window: "[Window]", + document: "[Document]", + error: function(error) { + return "Error(\"" + error.message + "\")"; + }, + unknown: "[Unknown]", + "null": "null", + "undefined": "undefined", + "function": function( fn ) { + var ret = "function", + // functions never have name in IE + name = "name" in fn ? fn.name : (reName.exec(fn) || [])[1]; + + if ( name ) { + ret += " " + name; + } + ret += "( "; + + ret = [ ret, QUnit.jsDump.parse( fn, "functionArgs" ), "){" ].join( "" ); + return join( ret, QUnit.jsDump.parse(fn,"functionCode" ), "}" ); + }, + array: array, + nodelist: array, + "arguments": array, + object: function( map, stack ) { + /*jshint forin:false */ + var ret = [ ], keys, key, val, i; + QUnit.jsDump.up(); + keys = []; + for ( key in map ) { + keys.push( key ); + } + keys.sort(); + for ( i = 0; i < keys.length; i++ ) { + key = keys[ i ]; + val = map[ key ]; + ret.push( QUnit.jsDump.parse( key, "key" ) + ": " + QUnit.jsDump.parse( val, undefined, stack ) ); + } + QUnit.jsDump.down(); + return join( "{", ret, "}" ); + }, + node: function( node ) { + var len, i, val, + open = QUnit.jsDump.HTML ? "<" : "<", + close = QUnit.jsDump.HTML ? ">" : ">", + tag = node.nodeName.toLowerCase(), + ret = open + tag, + attrs = node.attributes; + + if ( attrs ) { + for ( i = 0, len = attrs.length; i < len; i++ ) { + val = attrs[i].nodeValue; + // IE6 includes all attributes in .attributes, even ones not explicitly set. + // Those have values like undefined, null, 0, false, "" or "inherit". + if ( val && val !== "inherit" ) { + ret += " " + attrs[i].nodeName + "=" + QUnit.jsDump.parse( val, "attribute" ); + } + } + } + ret += close; + + // Show content of TextNode or CDATASection + if ( node.nodeType === 3 || node.nodeType === 4 ) { + ret += node.nodeValue; + } + + return ret + open + "/" + tag + close; + }, + // function calls it internally, it's the arguments part of the function + functionArgs: function( fn ) { + var args, + l = fn.length; + + if ( !l ) { + return ""; + } + + args = new Array(l); + while ( l-- ) { + // 97 is 'a' + args[l] = String.fromCharCode(97+l); + } + return " " + args.join( ", " ) + " "; + }, + // object calls it internally, the key part of an item in a map + key: quote, + // function calls it internally, it's the content of the function + functionCode: "[code]", + // node calls it internally, it's an html attribute value + attribute: quote, + string: quote, + date: quote, + regexp: literal, + number: literal, + "boolean": literal + }, + // if true, entities are escaped ( <, >, \t, space and \n ) + HTML: false, + // indentation unit + indentChar: " ", + // if true, items in a collection, are separated by a \n, else just a space. + multiline: true + }; + + return jsDump; +}()); + +// from jquery.js +function inArray( elem, array ) { + if ( array.indexOf ) { + return array.indexOf( elem ); + } + + for ( var i = 0, length = array.length; i < length; i++ ) { + if ( array[ i ] === elem ) { + return i; + } + } + + return -1; +} + +/* + * Javascript Diff Algorithm + * By John Resig (http://ejohn.org/) + * Modified by Chu Alan "sprite" + * + * Released under the MIT license. + * + * More Info: + * http://ejohn.org/projects/javascript-diff-algorithm/ + * + * Usage: QUnit.diff(expected, actual) + * + * QUnit.diff( "the quick brown fox jumped over", "the quick fox jumps over" ) == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over" + */ +QUnit.diff = (function() { + /*jshint eqeqeq:false, eqnull:true */ + function diff( o, n ) { + var i, + ns = {}, + os = {}; + + for ( i = 0; i < n.length; i++ ) { + if ( !hasOwn.call( ns, n[i] ) ) { + ns[ n[i] ] = { + rows: [], + o: null + }; + } + ns[ n[i] ].rows.push( i ); + } + + for ( i = 0; i < o.length; i++ ) { + if ( !hasOwn.call( os, o[i] ) ) { + os[ o[i] ] = { + rows: [], + n: null + }; + } + os[ o[i] ].rows.push( i ); + } + + for ( i in ns ) { + if ( hasOwn.call( ns, i ) ) { + if ( ns[i].rows.length === 1 && hasOwn.call( os, i ) && os[i].rows.length === 1 ) { + n[ ns[i].rows[0] ] = { + text: n[ ns[i].rows[0] ], + row: os[i].rows[0] + }; + o[ os[i].rows[0] ] = { + text: o[ os[i].rows[0] ], + row: ns[i].rows[0] + }; + } + } + } + + for ( i = 0; i < n.length - 1; i++ ) { + if ( n[i].text != null && n[ i + 1 ].text == null && n[i].row + 1 < o.length && o[ n[i].row + 1 ].text == null && + n[ i + 1 ] == o[ n[i].row + 1 ] ) { + + n[ i + 1 ] = { + text: n[ i + 1 ], + row: n[i].row + 1 + }; + o[ n[i].row + 1 ] = { + text: o[ n[i].row + 1 ], + row: i + 1 + }; + } + } + + for ( i = n.length - 1; i > 0; i-- ) { + if ( n[i].text != null && n[ i - 1 ].text == null && n[i].row > 0 && o[ n[i].row - 1 ].text == null && + n[ i - 1 ] == o[ n[i].row - 1 ]) { + + n[ i - 1 ] = { + text: n[ i - 1 ], + row: n[i].row - 1 + }; + o[ n[i].row - 1 ] = { + text: o[ n[i].row - 1 ], + row: i - 1 + }; + } + } + + return { + o: o, + n: n + }; + } + + return function( o, n ) { + o = o.replace( /\s+$/, "" ); + n = n.replace( /\s+$/, "" ); + + var i, pre, + str = "", + out = diff( o === "" ? [] : o.split(/\s+/), n === "" ? [] : n.split(/\s+/) ), + oSpace = o.match(/\s+/g), + nSpace = n.match(/\s+/g); + + if ( oSpace == null ) { + oSpace = [ " " ]; + } + else { + oSpace.push( " " ); + } + + if ( nSpace == null ) { + nSpace = [ " " ]; + } + else { + nSpace.push( " " ); + } + + if ( out.n.length === 0 ) { + for ( i = 0; i < out.o.length; i++ ) { + str += "<del>" + out.o[i] + oSpace[i] + "</del>"; + } + } + else { + if ( out.n[0].text == null ) { + for ( n = 0; n < out.o.length && out.o[n].text == null; n++ ) { + str += "<del>" + out.o[n] + oSpace[n] + "</del>"; + } + } + + for ( i = 0; i < out.n.length; i++ ) { + if (out.n[i].text == null) { + str += "<ins>" + out.n[i] + nSpace[i] + "</ins>"; + } + else { + // `pre` initialized at top of scope + pre = ""; + + for ( n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++ ) { + pre += "<del>" + out.o[n] + oSpace[n] + "</del>"; + } + str += " " + out.n[i].text + nSpace[i] + pre; + } + } + } + + return str; + }; +}()); + +// for CommonJS environments, export everything +if ( typeof exports !== "undefined" ) { + extend( exports, QUnit.constructor.prototype ); +} + +// get at whatever the global object is, like window in browsers +}( (function() {return this;}.call()) )); diff --git a/sigma.js-1.2.0/test/unit.HITS.js b/sigma.js-1.2.0/test/unit.HITS.js new file mode 100644 index 0000000..b3edb3e --- /dev/null +++ b/sigma.js-1.2.0/test/unit.HITS.js @@ -0,0 +1,270 @@ +module('sigma.statistics.HITS'); + +// These tests are based on testing plan +// https://docs.google.com/file/d/0BznZHkruvUX6WkFBSmdEMWFReU0/edit +// read plugin documentation for more info +// read also for more context: https://github.com/jacomyal/sigma.js/issues/309#issuecomment-47554156 + +test('Stats computation', function() { + var a, + k, + opts = {}, + settings = new sigma.classes.configurable(opts), + stats, + graph1 = + { + 'nodes': [{id: 'n1'}], + 'edges': [] + }, + graph2 = + { + 'nodes': [{id: 'n1'},{id: 'n2'}], + 'edges': [ + {id:'e1', source:'n1', target:'n2'} + ] + }, + graph3 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'}], + 'edges': [] + }, + graph4 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'}], + 'edges': [ + {id:'e1', source:'n1', target:'n2'}, + {id:'e2', source:'n1', target:'n3'}, + {id:'e3', source:'n1', target:'n4'}, + {id:'e4', source:'n1', target:'n5'}, + {id:'e5', source:'n2', target:'n3'}, + {id:'e6', source:'n2', target:'n4'}, + {id:'e7', source:'n2', target:'n5'}, + {id:'e8', source:'n3', target:'n4'}, + {id:'e9', source:'n3', target:'n5'}, + {id:'e10', source:'n4', target:'n5'} + ] + }, + graph5 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'},{id: 'n6'}], + 'edges': [ + {id:'e1', source:'n1', target:'n2'}, + {id:'e2', source:'n1', target:'n3'}, + {id:'e3', source:'n1', target:'n4'}, + {id:'e4', source:'n1', target:'n5'}, + {id:'e5', source:'n1', target:'n6'} + ] + }, + graph6 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'}], + 'edges': [ + {id:'e1', source:'n1', target:'n1'}, + {id:'e2', source:'n1', target:'n2'}, + {id:'e3', source:'n2', target:'n3'}, + {id:'e4', source:'n3', target:'n3'} + ] + }, + graph7 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'}], + 'edges': [ + {id:'e1', source:'n1', target:'n4'}, + {id:'e2', source:'n1', target:'n5'}, + {id:'e3', source:'n2', target:'n4'}, + {id:'e4', source:'n2', target:'n5'}, + {id:'e5', source:'n3', target:'n4'}, + {id:'e6', source:'n3', target:'n5'} + ] + }, + graph8 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'},{id: 'n6'}], + 'edges': [ + {id:'e1', source:'n1', target:'n2'}, + {id:'e2', source:'n1', target:'n3'}, + {id:'e3', source:'n1', target:'n4'}, + {id:'e4', source:'n1', target:'n5'}, + {id:'e5', source:'n1', target:'n6'} + ] + }, + graph9 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'},{id: 'n6'}], + 'edges': [ + {id:'e1', source:'n2', target:'n1'}, + {id:'e2', source:'n3', target:'n1'}, + {id:'e3', source:'n4', target:'n1'}, + {id:'e4', source:'n5', target:'n1'}, + {id:'e5', source:'n3', target:'n6'}, + {id:'e6', source:'n4', target:'n6'}, + {id:'e7', source:'n5', target:'n6'} + ] + }, + graph10 = + { + 'nodes': [{id: 'n1'},{id: 'n2'},{id: 'n3'},{id: 'n4'},{id: 'n5'},{id: 'n6'}], + 'edges': [ + {id:'e1', source:'n1', target:'n5'}, + {id:'e2', source:'n2', target:'n5'}, + {id:'e3', source:'n3', target:'n5'}, + {id:'e4', source:'n4', target:'n5'}, + {id:'e5', source:'n5', target:'n6'} + ] + } + + // Initialize the graph: + var myGraph = new sigma.classes.graph(settings) + + // HITS: + // ****** + + myGraph.read(graph1) + + stats = myGraph.HITS(true) + + ok(stats['n1'].authority == 1, 'test 1.1') + ok(stats['n1'].hub == 1, 'test 1.2') + + myGraph.clear() + myGraph.read(graph2) + + stats = myGraph.HITS(true) + + equal( + stats['n1'].authority, + 0.5, + 'test 2' + ) + + myGraph.clear() + myGraph.read(graph3) + + stats = myGraph.HITS(true) + + ok(stats['n2'].hub == 0.2, 'test 3.1') + ok(stats['n3'].authority == 0.2, 'test 3.2') + + myGraph.clear() + myGraph.read(graph4) + + stats = myGraph.HITS(true) + + equal( + stats['n1'].hub, + 0.19999999999999998, + 'test 4.1' + ) + equal( + stats['n5'].authority, + 0.19999999999999998, + 'test 4.2' + ) + + myGraph.clear() + myGraph.read(graph5) + + stats = myGraph.HITS(true) + + ok( stats['n1'].hub > stats['n3'].hub, 'test 5.1') + + ok( stats['n1'].authority > stats['n4'].authority, 'test 5.2') + + myGraph.clear() + myGraph.read(graph6) + + var stats = myGraph.HITS(true) + + + ok( stats['n2'].hub > stats['n1'].hub, 'test 6') + + + myGraph.clear() + myGraph.read(graph7) + + stats = myGraph.HITS() + + equal( + stats['n1'].hub, + 0.3333333333333333, + 'test 7.1' + ) + equal( + stats['n4'].hub, + 0, + 'test 7.2' + ) + equal( + stats['n2'].authority, + 0, + 'test 7.3' + ) + equal( + stats['n5'].authority, + 0.5, + 'test 7.4' + ) + + myGraph.clear() + myGraph.read(graph8) + + stats = myGraph.HITS() + + equal( + stats['n1'].hub, + 1, + 'test 8.1' + ) + equal( + stats['n1'].authority, + 0, + 'test 8.2' + ) + equal( + stats['n3'].hub, + 0, + 'test 8.3' + ) + equal( + stats['n3'].authority, + 0.2, + 'test 8.4' + ) + + myGraph.clear() + myGraph.read(graph9) + + stats = myGraph.HITS() + + equal( + stats['n3'].hub, + stats['n5'].hub, + 'test 9.1' + ) + ok( stats['n3'].hub > stats['n2'].hub, 'test 9.2') + ok( stats['n1'].authority > stats['n6'].authority, 'test 9.3') + equal( + stats['n6'].hub, + 0, + 'test 9.4' + ) + equal( + stats['n3'].authority, + 0, + 'test 9.5' + ) + + myGraph.clear() + myGraph.read(graph10) + + stats = myGraph.HITS() + + equal( + stats['n1'].hub, + stats['n3'].hub, + 'test 10.1' + ) + ok( stats['n1'].hub > stats['n5'].hub, 'test 10.2') + ok( stats['n5'].authority > stats['n6'].authority, 'test 10.3') + +}); diff --git a/sigma.js-1.2.0/test/unit.animation.js b/sigma.js-1.2.0/test/unit.animation.js new file mode 100644 index 0000000..acd37b6 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.animation.js @@ -0,0 +1,117 @@ +module('sigma.misc.animation'); + +asyncTest('Camera animation', function() { + function approx(v) { + return Math.round(v * 10000) / 10000; + } + + var hasTestedFrame, + graph = new sigma.classes.graph(), + camera = new sigma.classes.camera('myCam', graph, sigma.classes.configurable(sigma.settings)); + + // Fill the graph: + graph.addNode({ + id: '0', + x: 1, + y: 2, + size: 1 + }).addNode({ + id: '1', + x: 2, + y: 1, + size: 1 + }).addNode({ + id: '2', + x: 1, + y: 0, + size: 1 + }); + + graph.addEdge({ + id: '0', + source: '0', + target: '1', + size: 1 + }); + + camera.applyView('', 'display:'); + + sigma.misc.animation.camera(camera, { + x: 2, + y: 1, + ratio: 2, + angle: Math.PI / 2 + }, { + duration: 50, + easing: function(k) { + return (k === 1) ? k : 0.5; + }, + onNewFrame: function() { + camera.applyView('', 'display:'); + + if (!hasTestedFrame) { + start(); + deepEqual( + graph.nodes().map(function(n) { + return { + x: approx(n['display:x']), + y: approx(n['display:y']), + size: approx(n['display:size']) + }; + }), + [ + { + size: approx(Math.pow(2 / 3, camera.settings('nodesPowRatio'))), + x: approx(Math.SQRT1_2), + y: approx(Math.SQRT1_2) + }, + { + size: approx(Math.pow(2 / 3, camera.settings('nodesPowRatio'))), + x: approx(Math.SQRT1_2), + y: -approx(Math.SQRT1_2) / 3 + }, + { + size: approx(Math.pow(2 / 3, camera.settings('nodesPowRatio'))), + x: -approx(Math.SQRT1_2) / 3, + y: -approx(Math.SQRT1_2) / 3 + } + ], + 'Animation\'s middle gives the good values.' + ); + stop(); + hasTestedFrame = true; + } + }, + onComplete: function() { + camera.applyView('', 'display:'); + start(); + deepEqual( + graph.nodes().map(function(n) { + return { + x: approx(n['display:x']), + y: approx(n['display:y']), + size: approx(n['display:size']) + }; + }), + [ + { + x: 0.5, + y: 0.5, + size: approx(Math.pow(0.5, camera.settings('nodesPowRatio'))) + }, + { + x: 0, + y: 0, + size: approx(Math.pow(0.5, camera.settings('nodesPowRatio'))) + }, + { + x: -0.5, + y: 0.5, + size: approx(Math.pow(0.5, camera.settings('nodesPowRatio'))) + } + ], + 'Animation\'s end gives the good values and custom easings work well.' + ); + } + }); +}); diff --git a/sigma.js-1.2.0/test/unit.camera.js b/sigma.js-1.2.0/test/unit.camera.js new file mode 100644 index 0000000..2cabfb9 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.camera.js @@ -0,0 +1,202 @@ +module('sigma.classes.camera'); + +test('Basic manipulation', function() { + var graph = new sigma.classes.graph(), + camera = new sigma.classes.camera('myCam', graph, sigma.classes.configurable(sigma.settings)); + + deepEqual( + [camera.x, camera.y, camera.ratio, camera.angle], + [0, 0, 1, 0], + 'Initial values for [x, y, angle, ratio] are [0, 0, 1, 0].' + ); + + camera.goTo({ + x: 1, + y: 2, + ratio: 3, + angle: 4 + }); + deepEqual( + [camera.x, camera.y, camera.ratio, camera.angle], + [1, 2, 3, 4], + '"goTo" with every parameters effectively updates them all.' + ); + + camera.goTo({ + x: 5 + }); + deepEqual( + [camera.x, camera.y, camera.ratio, camera.angle], + [5, 2, 3, 4], + '"goTo" with only some parameters effectively updates only them.' + ); + + throws( + function() { + camera.goTo({ + x: 'abc' + }); + }, + /Value for "x" is not a number./, + '"goTo" with a non-number value throws an error.' + ); + + throws( + function() { + camera.goTo({ + x: NaN + }); + }, + /Value for "x" is not a number./, + '"goTo" with NaN as a value throws an error.' + ); +}); + +test('Apply to a graph', function() { + function approx(v) { + return Math.round(v * 10000) / 10000; + } + + var graph = new sigma.classes.graph(), + camera = new sigma.classes.camera('myCam', graph, sigma.classes.configurable(sigma.settings)); + + // Fill the graph: + graph.addNode({ + id: '0', + x: 1, + y: 2, + size: 1 + }).addNode({ + id: '1', + x: 2, + y: 1, + size: 1 + }).addNode({ + id: '2', + x: 1, + y: 0, + size: 1 + }); + + graph.addEdge({ + id: '0', + source: '0', + target: '1', + size: 1 + }); + + camera.applyView('', 'display:'); + deepEqual( + graph.nodes().map(function(n) { + return { + x: n['display:x'], + y: n['display:y'], + size: n['display:size'] + }; + }), + graph.nodes().map(function(n) { + return { + x: n.x, + y: n.y, + size: n.size + }; + }), + 'Applying the camera\'s view to the graph does nothing when the camera is at the origin and the angle is 0' + ); + + camera.goTo({ + x: 2, + y: 1, + ratio: 2, + angle: Math.PI / 2 + }); + camera.applyView('', 'display:'); + deepEqual( + graph.nodes().map(function(n) { + return { + x: approx(n['display:x']), + y: approx(n['display:y']), + size: approx(n['display:size']) + }; + }), + [ + { + x: 0.5, + y: 0.5, + size: approx(Math.pow(0.5, camera.settings('nodesPowRatio'))) + }, + { + x: 0, + y: 0, + size: approx(Math.pow(0.5, camera.settings('nodesPowRatio'))) + }, + { + x: -0.5, + y: 0.5, + size: approx(Math.pow(0.5, camera.settings('nodesPowRatio'))) + } + ], + 'Applying the camera\'s view to the graph works after having moved the camera.' + ); +}); + +test('Position', function() { + function approx(v) { + return Math.round(v * 10000) / 10000; + } + + var pos, + camera = new sigma.classes.camera('myCam', undefined, sigma.classes.configurable(sigma.settings)); + + camera.goTo({ + x: 2, + y: 1, + ratio: 2, + angle: Math.PI / 2 + }); + pos = camera.graphPosition(1, 2); + deepEqual( + { x: approx(pos.x), y: approx(pos.y) }, + { x: 0.5, y: 0.5 }, + 'graphPosition works (test 1).' + ); + + camera.goTo({ + x: 0, + y: 2, + ratio: 0.5, + angle: -Math.PI / 2 + }); + pos = camera.graphPosition(1, 2); + deepEqual( + { x: approx(pos.x), y: approx(pos.y) }, + { x: 0, y: 2 }, + 'graphPosition works (test 2).' + ); + + camera.goTo({ + x: 2, + y: 1, + ratio: 2, + angle: Math.PI / 2 + }); + pos = camera.cameraPosition(0.5, 0.5); + deepEqual( + { x: approx(pos.x), y: approx(pos.y) }, + { x: 1, y: 2 }, + 'cameraPosition works (test 1).' + ); + + camera.goTo({ + x: 0, + y: 2, + ratio: 0.5, + angle: -Math.PI / 2 + }); + pos = camera.cameraPosition(0, 2); + deepEqual( + { x: approx(pos.x), y: approx(pos.y) }, + { x: 1, y: 2 }, + 'cameraPosition works (test 2).' + ); +}); diff --git a/sigma.js-1.2.0/test/unit.configurable.js b/sigma.js-1.2.0/test/unit.configurable.js new file mode 100644 index 0000000..5238412 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.configurable.js @@ -0,0 +1,42 @@ +module('sigma.classes.configurable'); + +test('Basic manipulation', function() { + var settings = new sigma.classes.configurable(); + settings('mySetting', 42); + deepEqual(settings('mySetting'), 42, 'First attribution works. (single key)'); + settings('mySetting', 123); + deepEqual(settings('mySetting'), 123, 'Overriding works. (single key)'); + settings({mySetting: 456}); + deepEqual(settings('mySetting'), 456, 'Overriding works. (multi keys)'); + + (settings({mySetting: 'abc'}, 'mySetting'), 'abc', 'Filtering works. (when key is present)'); + (settings({hisSetting: 'abc'}, 'mySetting'), 456, 'Filtering works. (when key is present)'); + + settings = new sigma.classes.configurable({mySetting: 42}); + deepEqual(settings('mySetting'), 42, 'Attribution works. (from the constructor)'); +}); + +test('Embed objects', function() { + var data = { key1: 'data', key2: 'data' }, + object = { key1: 'object' }, + settings = new sigma.classes.configurable(data), + embedSettings = settings.embedObjects(object); + + deepEqual(embedSettings('key2'), 'data', 'Embedded overriding works 1.'); + deepEqual(embedSettings('key1'), 'object', 'Embedded overriding works 2.'); + deepEqual(embedSettings({ key1: 'onthefly' }, 'key1'), 'onthefly', 'Embedded overriding works 3.'); +}); + +test('Deeply embed objects', function() { + var data = { key1: 'data', key2: 'data', key3: 'data' }, + object1 = { key1: 'object1', key2: 'object1' }, + object2 = { key1: 'object2' }, + settings = new sigma.classes.configurable(data), + embedSettings1 = settings.embedObjects(object1), + embedSettings2 = embedSettings1.embedObjects(object2); + + deepEqual(embedSettings2('key3'), 'data', 'Deeply embedded overriding works 1.'); + deepEqual(embedSettings2('key2'), 'object1', 'Deeply embedded overriding works 2.'); + deepEqual(embedSettings2('key1'), 'object2', 'Deeply embedded overriding works 3.'); + deepEqual(embedSettings2({ key1: 'onthefly' }, 'key1'), 'onthefly', 'Deeply embedded overriding works 4.'); +}); diff --git a/sigma.js-1.2.0/test/unit.core.js b/sigma.js-1.2.0/test/unit.core.js new file mode 100644 index 0000000..404e787 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.core.js @@ -0,0 +1,155 @@ +module('sigma.core.js'); +test('Constructor polymorphism', function() { + var s, + tmp = sigma.renderers.def, + dom = document.createElement('DIV'); + + // Let's add a temporary container: + dom.id = 'abc'; + document.body.appendChild(dom); + + // Custom renderer: + // We just need the options here. + sigma.renderers.def = function(_1, _2, _3, options) { + this.options = options; + }; + + s = new sigma(); + equal(Object.keys(s.renderers).length, 0, '"new sigma()" instantiate sigma without any renderer.'); + + s = new sigma('abc'); + deepEqual(s.renderers[0].options, { + container: dom + }, '"new sigma("abc")" instantiate the default renderer in the div #abc.'); + + s = new sigma(['abc']); + deepEqual(s.renderers[0].options, { + container: dom + }, '"new sigma(["abc"])" instantiate the default renderer in the div #abc.'); + + s = new sigma(document.getElementById('abc')); + deepEqual(s.renderers[0].options, { + container: dom + }, '"new sigma(document.getElementById("abc"))" instantiate the default renderer in the div #abc.'); + + s = new sigma({ + container: 'abc' + }); + deepEqual(s.renderers[0].options, { + container: dom + }, '"new sigma({ container: "abc" })" instantiate the default renderer in the div #abc.'); + + s = new sigma({ + container: document.getElementById('abc') + }); + deepEqual(s.renderers[0].options, { + container: dom + }, '"new sigma({ container: document.getElementById("abc") })" instantiate the default renderer in the div #abc.'); + + s = new sigma(['abc', 'abc']); + deepEqual([ + s.renderers[0].options, + s.renderers[1].options + ], [ + { container: dom }, + { container: dom } + ], '"new sigma(["abc", "abc"])" instantiate the default renderer in the div #abc twice.'); + + s = new sigma({ + renderers: [{ + container: document.getElementById('abc') + }] + }); + deepEqual(s.renderers[0].options, { + container: dom + }, '"new sigma({ renderers: [{ container: document.getElementById("abc") }] })" instantiate the default renderer in the div #abc.'); + + // Restore previous state: + sigma.renderers.def = tmp + document.body.removeChild(dom); + + throws(function() { + s = new sigma('abcd'); + }, /Container not found./, 'Trying to instantiate sigma with a string that is not the ID of an HTMLElement will throw an error.'); +}); + +test('Public methods', function() { + var s = new sigma(), + dom = document.createElement('DIV'); + + // Let's add a temporary container: + dom.id = 'abc'; + document.body.appendChild(dom); + + deepEqual( + [Object.keys(s.renderers), Object.keys(s.cameras)], + [[], []], + 'A sigma instance created without configuration has no camera nor renderer.' + ); + + // Adding and killing cameras and renderers: + var c1 = s.addCamera('0'), + c2 = s.addCamera('1'), + r1 = s.addRenderer({ container: dom, camera: c1, id: '0' }), + r2 = s.addRenderer({ container: dom, camera: c2, id: '1' }), + r3 = s.addRenderer({ container: dom, camera: c2, id: '2' }); + deepEqual( + [Object.keys(s.renderers), Object.keys(s.cameras)], + [['0', '1', '2'], ['0', '1']], + 'The cameras/renderers indexes are updated when adding cameras/renderers.' + ); + + s.killRenderer('2'); + deepEqual( + Object.keys(s.renderers), + ['0', '1'], + 'The renderers indexes are updated when killing renderers.' + ); + + s.killCamera('1'); + deepEqual( + [Object.keys(s.renderers), Object.keys(s.cameras)], + [['0'], ['0']], + 'The cameras/renderers indexes are updated when killing cameras.' + ); + + throws(function() { + s.killCamera('42'); + }, /The camera is undefined./, 'Killing a camera that does not exist throws an error.'); + + throws(function() { + s.killRenderer('42'); + }, /The renderer is undefined./, 'Killing a renderer that does not exist throws an error.'); + + s.killCamera('0'); + + // Checking a bit more deeply adding methods: + var c = s.addCamera('myCamera'), + r = s.addRenderer({ camera: c, container: dom, id: 'myRenderer' }); + deepEqual( + [Object.keys(s.renderers), Object.keys(s.cameras)], + [['myRenderer'], ['myCamera']], + 'The cameras/renderers adders work well with custom IDs.' + ); + + throws(function() { + s.addCamera('myCamera'); + }, /The camera "myCamera" already exists./, 'Adding a camera with an already existing ID throws an error.'); + + throws(function() { + s.addRenderer({ camera: c, container: dom, id: 'myRenderer' }); + }, /The renderer "myRenderer" already exists./, 'Adding a renderer with an already existing ID throws an error.'); + + // And check also some crazy side cases: + var c = s.addCamera(), + id = c.id; + + s.killCamera(id); + + throws(function() { + s.addRenderer({ camera: c, container: dom }); + }, /The camera is not properly referenced./, 'Adding a renderer with camera that is not referenced anymore throws an error.'); + + // Restore previous state: + document.body.removeChild(dom); +}); diff --git a/sigma.js-1.2.0/test/unit.dispatcher.js b/sigma.js-1.2.0/test/unit.dispatcher.js new file mode 100644 index 0000000..09fe8d2 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.dispatcher.js @@ -0,0 +1,98 @@ +module('sigma.classes.dispatcher'); + +test('Basics', function() { + // 1. Basics + var dispatched = 0, + instance = new sigma.classes.dispatcher(), + listener = function() { dispatched++; }; + + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'Dispatching an event with no listener does nothing.'); + + instance.bind('myEvent', listener); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 1, 'Dispatching an event with a listener executes the listener.'); + + instance.unbind('myEvent', listener); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 1, 'Dispatching an event with a listener than has been unbound does nothing.'); +}); + +test('API', function() { + // 1. "unbind" polymorphism + var dispatched = 0, + instance = new sigma.classes.dispatcher(), + listener = function() { dispatched++; }; + + instance.bind('myEvent', listener); + instance.unbind('myEvent', listener); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'unbind(event, handler) works.'); + + instance.bind('myEvent', listener); + instance.unbind('myEvent anotherEvent', listener); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'unbind("event1 event2", handler) works.'); + + instance.bind('myEvent', listener); + instance.unbind(' myEvent anotherEvent ', listener); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'unbind(" event1 event2 ", handler) works.'); + + instance.bind('myEvent', listener); + instance.unbind(['myEvent', 'anotherEvent'], listener); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'unbind(event, handler) works.'); + + instance.bind('myEvent', listener); + instance.unbind('myEvent'); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'unbind(event) works.'); + + instance.bind('myEvent', listener); + instance.unbind(); + instance.dispatchEvent('myEvent'); + strictEqual(dispatched, 0, 'unbind() works.'); + + // 2. "bind" polymorphism + var dispatched1 = 0, + dispatched2 = 0, + instance = new sigma.classes.dispatcher(), + listener1 = function() { dispatched1++; }, + listener2 = function() { dispatched2++; }; + + instance.bind('myEvent1', listener1); + instance.dispatchEvent('myEvent1'); + strictEqual(dispatched1, 1, 'bind(event, handler) works.'); + instance.unbind('myEvent1'); + dispatched1 = 0; + + instance.bind('myEvent1 myEvent2', listener1); + instance.dispatchEvent('myEvent1'); + instance.dispatchEvent('myEvent2'); + strictEqual(dispatched1, 2, 'bind("event1 event2", handler) works.'); + instance.unbind('myEvent1 myEvent2'); + dispatched1 = 0; + + instance.bind(' myEvent1 myEvent2 ', listener1); + instance.dispatchEvent('myEvent1'); + instance.dispatchEvent('myEvent2'); + strictEqual(dispatched1, 2, 'bind(" event1 event2 ", handler) works.'); + instance.unbind('myEvent1 myEvent2'); + dispatched1 = 0; + + instance.bind(['myEvent1', 'myEvent2'], listener1); + instance.dispatchEvent('myEvent1'); + instance.dispatchEvent('myEvent2'); + strictEqual(dispatched1, 2, 'bind(["event1", "event2"], handler) works.'); + instance.unbind('myEvent1 myEvent2'); + dispatched1 = 0; + + instance.bind({ myEvent1: listener1, myEvent2: listener2 }); + instance.dispatchEvent('myEvent1'); + instance.dispatchEvent('myEvent2'); + deepEqual([dispatched1, dispatched2], [1, 1], 'bind({ event1: listener1, event2: listener2, }, handler) works.'); + instance.unbind('myEvent1 myEvent2'); + dispatched1 = 0; + dispatched2 = 0; +}); diff --git a/sigma.js-1.2.0/test/unit.edgequad.js b/sigma.js-1.2.0/test/unit.edgequad.js new file mode 100644 index 0000000..a26596a --- /dev/null +++ b/sigma.js-1.2.0/test/unit.edgequad.js @@ -0,0 +1,205 @@ +module('sigma.classes.edgequad'); + +// Test Beginning +//================ +test('EdgeQuadTree', function() { + + // Helpers + //--------- + function getRandom(min, max) { + return min + Math.floor(Math.random() * (max - min + 1)); + } + + function generateRandomGraph(N, E) { + var nodes = [], + edges = []; + + for (var i = 0; i < N; i++) { + nodes.push({ + x: getRandom(4, 95), + y: getRandom(4, 95), + size: getRandom(1, 2), + data: 'Node#'+i, + id: i + }); + } + + for (var i = 0; i < E; i++) + edges.push({ + id: 'e' + i, + source: 'n' + (Math.random() * N | 0), + target: 'n' + (Math.random() * N | 0), + size: getRandom(1, 2) + }); + + return edges; + } + + function approx(v) { + return Math.round(v * 10000) / 10000; + } + + // Instanciation + //--------------- + var quad = new sigma.classes.edgequad(), + geom = quad._geom; + + // Geometry + //---------- + var rectangles = [ + {x1: 1, y1: 2, x2: 2, y2: 1, height: Math.sqrt(2)}, + {x1: 3, y1: 4, x2: 4, y2: 3, height: Math.sqrt(2)}, + {x1: 2, y1: 2, x2: 4, y2: 2, height: 1}, + {x1: 10, y1: 10, x2: 12, y2: 10, height: 2}, + {x1: 2, y1: 6, x2: 6, y2: 6, height: 4} + ]; + + var llc = geom.lowerLeftCoor(rectangles[0]); + + strictEqual(geom.isAxisAligned(rectangles[0]), false, 'Non Axis Aligned'); + strictEqual(geom.isAxisAligned(rectangles[2]), true, 'Axis Aligned'); + + var topCorners = {x1: 2, y1: 2, x2: 4, y2: 2, height: 2}; + deepEqual( + geom.axisAlignedTopPoints({x1: 2, y1: 2, x2: 4, y2: 2, height: 2}), + topCorners, + 'Non-rotated top points' + ); + + deepEqual( + geom.axisAlignedTopPoints({x1: 4, y1: 2, x2: 4, y2: 4, height: 2}), + topCorners, + 'Right shift top points' + ); + + deepEqual( + geom.axisAlignedTopPoints({x1: 2, y1: 4, x2: 2, y2: 2, height: 2}), + topCorners, + 'Left shift top points' + ); + + deepEqual( + geom.axisAlignedTopPoints({x1: 4, y1: 4, x2: 2, y2: 4, height: 2}), + topCorners, + 'Bottom\'s up top points' + ); + + deepEqual( + llc, + {x: 2, y: 3}, + 'Lower Left Corner' + ); + + deepEqual( + geom.lowerRightCoor(rectangles[0], llc), + {x: 3, y: 2}, + 'Lower Right Corner' + ); + + var projection = geom.projection({x: 2, y: 6}, {x: 3, y: 4}); + deepEqual( + {x: approx(projection.x), y: approx(projection.y)}, + {x: 3.6, y: 4.8}, + 'Projection' + ); + + var solutions = [ + [ + {x: 1, y: 2}, + {x: 2, y: 1}, + {x: 2, y: 3}, + {x: 3, y: 2} + ], + [ + {x: 3, y: 4}, + {x: 4, y: 3}, + {x: 4, y: 5}, + {x: 5, y: 4} + ], + [ + {x: 2, y: 2}, + {x: 4, y: 2}, + {x: 2, y: 3}, + {x: 4, y: 3} + ], + [ + {x: 10, y: 10}, + {x: 12, y: 10}, + {x: 10, y: 12}, + {x: 12, y: 12} + ], + [ + {x: 2, y: 6}, + {x: 6, y: 6}, + {x: 2, y: 10}, + {x: 6, y: 10} + ], + [ + {x: 2, y: 2}, + {x: 6, y: 2}, + {x: 2, y: 6}, + {x: 6, y: 6} + ] + ]; + + deepEqual( + geom.pointToSquare({x: 4, y: 4, size: 2}), + {x1: 2, y1: 2, x2: 6, y2: 2, height: 4}, + 'Point to Square' + ); + + rectangles.map(function(r, i) { + deepEqual( + geom.rectangleCorners(r), + solutions[i], + 'Rectangle Corners #'+i + ); + }); + + var cr = [ + geom.rectangleCorners({x1: 4, y1: 6, x2: 6, y2: 4, height: Math.sqrt(8)}), + geom.rectangleCorners({x1: 4, y1: 8, x2: 6, y2: 6, height: Math.sqrt(8)}), + geom.rectangleCorners({x1: 10, y1: 10, x2: 12, y2: 10, height: 2}), + geom.rectangleCorners({x1: 0, y1: 0, x2: 200, y2: 200, height: 200}), + geom.rectangleCorners({x1: 200, y1: 200, x2: 400, y2: 400, height: 200}) + ]; + + strictEqual(geom.collision(cr[0], cr[1]), true, 'Collision'); + strictEqual(geom.collision(cr[0], cr[2]), false, 'Non-Collision'); + strictEqual(geom.collision(cr[0], cr[3]), true, 'Containing Collision'); + strictEqual(geom.collision(cr[0], cr[4]), false, 'Outbounding Collision'); + + deepEqual( + geom.splitSquare({x: 0, y: 0, width: 100, height: 100}), + [ + [{x: 0, y: 0}, {x: 50, y: 0}, {x: 0, y: 50}, {x: 50, y: 50}], + [{x: 50, y: 0}, {x: 100, y: 0}, {x: 50, y: 50}, {x: 100, y: 50}], + [{x: 0, y: 50}, {x: 50, y: 50}, {x: 0, y: 100}, {x: 50, y: 100}], + [{x: 50, y: 50}, {x: 100, y: 50}, {x: 50, y: 100}, {x: 100, y: 100}] + ], + 'Split Square' + ); + + + // Quad Tree + //----------- + // var edges = generateRandomGraph(1000, 5000); + + // var tree = edgequad.index( + // edges, + // { + // bounds: { + // x: 0, + // y: 0, + // width: 100, + // height: 100 + // }, + // maxLevel: 8 + // } + // ); + + // console.log(tree); + // console.log(edgequad.point(34, 53)); + // console.log(edgequad.area({x1: 25, y1: 25, x2: 30, y2: 25, height: 10})); + // console.log(edgequad.area({x1: 0, y1: 0, x2: 100, y2: 0, height: 100}).length); +}); diff --git a/sigma.js-1.2.0/test/unit.graph.js b/sigma.js-1.2.0/test/unit.graph.js new file mode 100644 index 0000000..29d2fde --- /dev/null +++ b/sigma.js-1.2.0/test/unit.graph.js @@ -0,0 +1,777 @@ +module('sigma.classes.graph'); + +test('Basic manipulation', function() { + var a, + k, + opts = {}, + settings = new sigma.classes.configurable(opts), + graph = { + nodes: [ + { + id: 'n0', + label: 'Node 0', + myNodeAttr: 123 + }, + { + id: 'n1', + label: 'Node 1' + }, + { + id: 'n2', + label: 'Node 2' + }, + { + id: 'n3', + label: 'Node 3' + } + ], + edges: [ + { + id: 'e0', + source: 'n0', + target: 'n1', + myEdgeAttr: 123 + }, + { + id: 'e1', + source: 'n1', + target: 'n2' + }, + { + id: 'e2', + source: 'n1', + target: 'n3' + }, + { + id: 'e3', + source: 'n2', + target: 'n3' + }, + { + id: 'e4', + source: 'n2', + target: 'n2' + } + ] + }; + + // Initialize the graph: + var myGraph = new sigma.classes.graph(settings); + + opts.immutable = opts.clone = true; + myGraph.addNode(graph.nodes[0]); + opts.clone = false; + myGraph.addNode(graph.nodes[1]); + myGraph.addNode(graph.nodes[2]); + myGraph.addNode(graph.nodes[3]); + + opts.immutable = opts.clone = true; + myGraph.addEdge(graph.edges[0]); + opts.clone = false; + myGraph.addEdge(graph.edges[1]); + myGraph.addEdge(graph.edges[2]); + myGraph.addEdge(graph.edges[3]); + myGraph.addEdge(graph.edges[4]); + + // NODES: + // ****** + deepEqual( + graph.nodes[0], + myGraph.nodes(graph.nodes[0].id), + '"addNode" works and the node properties have been preserved.' + ); + + notStrictEqual( + graph.nodes[0], + myGraph.nodes(graph.nodes[0].id), + 'With {clone: true}, "addNode" creates a new object.' + ); + + equal( + graph.nodes[1], + myGraph.nodes(graph.nodes[1].id), + 'With {clone: false}, "addNode" keeps the same object.' + ); + + myGraph.nodes(graph.nodes[0].id).id = 'new_n0'; + strictEqual( + graph.nodes[0].id, + myGraph.nodes(graph.nodes[0].id).id, + 'With {immutable: true}, node ids in the graph are not writable.' + ); + + var node = myGraph.nodes(graph.nodes[1].id); + node.id = 'new_n0'; + strictEqual( + 'new_n0', + node.id, + 'With {immutable: false}, node ids in the graph are writable.' + ); + node.id = 'n1'; + + myGraph.nodes(graph.nodes[0].id).label = 'New node 0'; + strictEqual( + 'New node 0', + myGraph.nodes(graph.nodes[0].id).label, + 'Other node attributes are writable.' + ); + myGraph.nodes(graph.nodes[0].id).label = 'Node 0'; + + notStrictEqual( + myGraph.nodes(), + myGraph.nodes(), + '"nodes" without arguments returns a copy of the nodes array.' + ); + + strictEqual( + myGraph.nodes('unexisting_id'), + undefined, + '"nodes" with an unreferenced id returns undefined and does not throw an error.' + ); + + deepEqual( + myGraph.nodes(['n0', 'n1', 'n0']), + [graph.nodes[0], graph.nodes[1], graph.nodes[0]], + '"nodes" with a strings array as arguments returns the array of specified nodes.' + ); + + throws( + function() { + myGraph.nodes(['n0', 'n1', {}]); + }, + /nodes: Wrong arguments/, + '"nodes" with an array containing a non-string or non-number value throws an error.' + ); + + throws( + function() { + myGraph.addNode(graph.nodes[0]); + }, + /The node "n0" already exists./, + 'Adding an already existing node throws an error.' + ); + + myGraph.addNode({ id: 'prototype' }).addNode({ id: 'constructor' }); + ok( + myGraph.nodes('prototype') && myGraph.nodes('constructor'), + '"constructor" and "prototype" are valid node IDs.' + ); + myGraph.dropNode('prototype').dropNode('constructor'); + + + + // EDGES: + // ****** + deepEqual( + graph.edges[0], + myGraph.edges(graph.edges[0].id), + '"addEdge" works and the edge properties have been preserved.' + ); + + notStrictEqual( + graph.edges[0], + myGraph.edges(graph.edges[0].id), + 'With {clone: true}, "addEdge" creates a new object.' + ); + + equal( + graph.edges[1], + myGraph.edges(graph.edges[1].id), + 'With {clone: false}, "addEdge" keeps the same object.' + ); + + myGraph.edges(graph.edges[0].id).id = 'new_e0'; + myGraph.edges(graph.edges[0].id).source = 'undefined_node'; + myGraph.edges(graph.edges[0].id).target = 'undefined_node'; + deepEqual( + [ + graph.edges[0].id, + graph.edges[0].source, + graph.edges[0].target + ], + [ + myGraph.edges(graph.edges[0].id).id, + myGraph.edges(graph.edges[0].id).source, + myGraph.edges(graph.edges[0].id).target + ], + 'With {immutable: true}, edge sources, targets and ids in the graph are not writable.' + ); + + var edge = myGraph.edges(graph.edges[1].id); + edge.id = 'new_e0'; + edge.source = 'undefined_node'; + edge.target = 'undefined_node'; + deepEqual( + [ + 'new_e0', + 'undefined_node', + 'undefined_node' + ], + [ + edge.id, + edge.source, + edge.target + ], + 'With {immutable: false}, edge sources, targets and ids in the graph are writable.' + ); + edge.id = 'e1'; + edge.source = 'n1'; + edge.target = 'n2'; + + myGraph.edges(graph.edges[0].id).myEdgeAttr = 456; + strictEqual( + 456, + myGraph.edges(graph.edges[0].id).myEdgeAttr, + 'Other edge attributes are writable.' + ); + myGraph.edges(graph.edges[0].id).myEdgeAttr = 123; + + notStrictEqual( + myGraph.edges(), + myGraph.edges(), + '"edges" without arguments returns a copy of the edge array.' + ); + + strictEqual( + myGraph.edges('unexisting_id'), + undefined, + '"edges" with an unreferenced id returns undefined and does not throw an error.' + ); + + deepEqual( + myGraph.edges(['e0', 'e0']), + [graph.edges[0], graph.edges[0]], + '"edges" with a strings array as arguments returns the array of specified edge.' + ); + + throws( + function() { + myGraph.edges(['e0', {}]); + }, + /edges: Wrong arguments/, + '"edges" with an array containing a non-string or non-number value throws an error.' + ); + + throws( + function() { + myGraph.addEdge(graph.edges[0]); + }, + /The edge "e0" already exists./, + 'Adding an already existing edge throws an error.' + ); + + + + + // DROPING AND CLEARING: + // ********************* + myGraph.dropNode('n0'); + deepEqual( + myGraph.nodes().map(function(n) { return n.id }), + ['n1', 'n2', 'n3'], + '"dropNode" actually drops the node.' + ); + deepEqual( + myGraph.edges().map(function(e) { return e.id }), + ['e1', 'e2', 'e3', 'e4'], + '"dropNode" also kills the edges linked to the related nodes..' + ); + + throws( + function() { + myGraph.dropNode('n0'); + }, + /The node "n0" does not exist./, + 'Droping an unexisting node throws an error.' + ); + + myGraph.dropEdge('e1'); + deepEqual( + myGraph.edges().map(function(e) { return e.id }), + ['e2', 'e3', 'e4'], + '"dropEdge" actually drops the edge.' + ); + + myGraph.dropEdge('e4'); + deepEqual( + myGraph.edges().map(function(e) { return e.id }), + ['e2', 'e3'], + '"dropEdge" with a self loops works. (#286)' + ); + + throws( + function() { + myGraph.dropEdge('e1'); + }, + /The edge "e1" does not exist./, + 'Droping an unexisting edge throws an error.' + ); + + // Reinitialize the graph: + myGraph.addNode(graph.nodes[0]); + myGraph.addEdge(graph.edges[0]); + myGraph.addEdge(graph.edges[1]); + + myGraph.clear(); + deepEqual( + [myGraph.nodes(), myGraph.edges()], + [[], []], + '"clear" empties the nodes and edges arrays.' + ); + + myGraph = new sigma.classes.graph(); + myGraph.read(graph); + + deepEqual(myGraph.nodes(), graph.nodes, '"read" adds properly the nodes.'); + deepEqual(myGraph.edges(), graph.edges, '"read" adds properly the edges.'); +}); + +test('Methods and attached functions', function() { + var counter, + colorPalette = { Person: '#C3CBE1', Place: '#9BDEBD' }, + myGraph; + + counter = 0; + sigma.classes.graph.attach('addNode', 'counterInc', function() { + counter++; + }); + + sigma.classes.graph.attachBefore('addNode', 'applyNodeColorPalette', function(n) { + n.color = colorPalette[n.category]; + }); + + strictEqual( + false, + sigma.classes.graph.hasMethod('getNodeLabel'), + 'sigma.classes.hasMethod returns false if the method does not exist.' + ); + + sigma.classes.graph.addMethod('getNodeLabel', function(nId) { + return (this.nodesIndex[nId] || {}).label; + }); + + strictEqual( + true, + sigma.classes.graph.hasMethod('getNodeLabel'), + 'sigma.classes.hasMethod returns true if the method has been added with addMethod.' + ); + + strictEqual( + true, + sigma.classes.graph.hasMethod('hasMethod'), + 'sigma.classes.hasMethod returns true if the method is implemented in the core.' + ); + + myGraph = new sigma.classes.graph(); + myGraph.addNode({ id: 'n0', label: 'My node', category: 'Person' }); + strictEqual( + 1, + counter, + 'Attached functions are effectively executed when the anchor method is called.' + ); + strictEqual( + myGraph.nodes('n0').color, + '#C3CBE1', + 'Attached "before" functions are effectively executed before when the anchor method is called.' + ); + strictEqual( + myGraph.getNodeLabel('n0'), + 'My node', + 'Custom methods work, can have arguments, and have access to the data in their scope (through "this").' + ); + + throws( + function() { + sigma.classes.graph.attach('addNode', 'counterInc', function() {}); + }, + /A function "counterInc" is already attached to the method "addNode"/, + 'Attaching a function to a method when there is already a function attached to this method under the same key throws an error.' + ); + + throws( + function() { + sigma.classes.graph.attach('undefinedMethod', 'counterInc', function() {}); + }, + /The method "undefinedMethod" does not exist./, + 'Attaching a function to an unexisting method when throws an error.' + ); + + throws( + function() { + sigma.classes.graph.attachBefore('addNode', 'applyNodeColorPalette', function() {}); + }, + /A function "applyNodeColorPalette" is already attached to the method "addNode"/, + 'Attaching a "before" function to a method when there is already a "before" function attached to this method under the same key throws an error.' + ); + + throws( + function() { + sigma.classes.graph.attachBefore('undefinedMethod', 'applyNodeColorPalette', function() {}); + }, + /The method "undefinedMethod" does not exist./, + 'Attaching a "before" function to an unexisting method when throws an error.' + ); + + throws( + function() { + sigma.classes.graph.addMethod('getNodeLabel', function() {}); + }, + /The method "getNodeLabel" already exists./, + 'Attaching a method whose name is already referenced throws an error.' + ); +}); + +test('Builtin indexes', function() { + var graph = { + nodes: [ + { + id: 'n0', + label: 'Node 0', + myNodeAttr: 123 + }, + { + id: 'n1', + label: 'Node 1' + }, + { + id: 'n2', + label: 'Node 2' + } + ], + edges: [ + { + id: 'e0', + source: 'n0', + target: 'n1', + myEdgeAttr: 123 + }, + { + id: 'e1', + source: 'n1', + target: 'n2' + } + ] + }; + + sigma.classes.graph.addMethod('retrieveIndexes', function() { + return { + 'inIndex': this.inNeighborsIndex, + 'outIndex': this.outNeighborsIndex, + 'allIndex': this.allNeighborsIndex, + 'inCount': this.inNeighborsCount, + 'outCount': this.outNeighborsCount, + 'allCount': this.allNeighborsCount + } + }); + + var g = new sigma.classes.graph(); + g.read(graph); + + var index = g.retrieveIndexes(); + + deepEqual( + index['inIndex'], + { + n0: {}, + n1: { + n0: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + }, + n2: { + n1: { + e1: { + id: "e1", + source: "n1", + target: "n2" + } + } + } + }, + 'Incoming index up to date' + ); + + deepEqual( + index['inCount'], + { + n0: 0, + n1: 1, + n2: 1 + }, + 'Incoming count up to date' + ); + + deepEqual( + index['outIndex'], + { + n0: { + n1: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + }, + n1: { + n2: { + e1: { + id: "e1", + source: "n1", + target: "n2" + } + } + }, + n2: {} + }, + 'Outcoming index up to date' + ); + + deepEqual( + index['outCount'], + { + n0: 1, + n1: 1, + n2: 0 + }, + 'Outcoming count up to date' + ); + + deepEqual( + index['allIndex'], + { + n0: { + n1: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + }, + n1: { + n0: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + }, + n2: { + e1: { + id: "e1", + source: "n1", + target: "n2" + } + } + }, + n2: { + n1: { + e1: { + id: "e1", + source: "n1", + target: "n2" + } + } + } + }, + 'Full index up to date' + ); + + deepEqual( + index['allCount'], + { + n0: 1, + n1: 2, + n2: 1 + }, + 'Full count up to date' + ); + + g.dropNode('n2'); + + deepEqual( + index['inIndex'], + { + n0: {}, + n1: { + n0: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + } + }, + 'Incoming index up to date after having dropped a node' + ); + + deepEqual( + index['inCount'], + { + n0: 0, + n1: 1 + }, + 'Incoming count up to date after having dropped a node' + ); + + deepEqual( + index['outIndex'], + { + n0: { + n1: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + }, + n1: {} + }, + 'Outcoming index up to date after having dropped a node' + ); + + deepEqual( + index['outCount'], + { + n0: 1, + n1: 0 + }, + 'Outcoming count up to date after having dropped a node' + ); + + deepEqual( + index['allIndex'], + { + n0: { + n1: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + }, + n1: { + n0: { + e0: { + id: "e0", + myEdgeAttr: 123, + source: "n0", + target: "n1" + } + } + } + }, + 'Full index up to date after having dropped a node' + ); + + deepEqual( + index['allCount'], + { + n0: 1, + n1: 1 + }, + 'Full count up to date after having dropped a node' + ); + + g.dropEdge('e0'); + + deepEqual( + index['inIndex'], + { + n0: {}, + n1: {} + }, + 'Incoming index up to date after having dropped an edge' + ); + + deepEqual( + index['inCount'], + { + n0: 0, + n1: 0 + }, + 'Incoming count up to date after having dropped an edge' + ); + + deepEqual( + index['outIndex'], + { + n0: {}, + n1: {} + }, + 'Outcoming index up to date after having dropped an edge' + ); + + deepEqual( + index['outCount'], + { + n0: 0, + n1: 0 + }, + 'Outcoming count up to date after having dropped an edge' + ); + + deepEqual( + index['allIndex'], + { + n0: {}, + n1: {} + }, + 'Full index up to date after having dropped an edge' + ); + + deepEqual( + index['allCount'], + { + n0: 0, + n1: 0 + }, + 'Full count up to date after having dropped an edge' + ); +}); + +test('Custom indexes', function() { + var myGraph; + + sigma.classes.graph.addIndex('nodesCount', { + constructor: function() { + this.nodesCount = 0; + }, + addNode: function() { + this.nodesCount++; + }, + dropNode: function() { + this.nodesCount--; + }, + clear: function() { + this.nodesCount = 0; + } + }); + + sigma.classes.graph.addMethod('getNodesCount', function() { + return this.nodesCount; + }); + + myGraph = new sigma.classes.graph(); + myGraph.addNode({ id: 'n0' }).addNode({ id: 'n1' }).dropNode('n0'); + strictEqual( + 1, + myGraph.getNodesCount(), + 'Indexes work, and the scope is effectively shared with custom methods.' + ); +}); diff --git a/sigma.js-1.2.0/test/unit.html b/sigma.js-1.2.0/test/unit.html new file mode 100644 index 0000000..c614511 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.html @@ -0,0 +1,54 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="utf-8"> + <title>sigma.js | unit tests</title> + <link rel="stylesheet" href="qunit/qunit.css"> + <script src="../src/sigma.core.js"></script> + <script src="../src/conrad.js"></script> + <script src="../src/utils/sigma.utils.js"></script> + <script src="../src/utils/sigma.polyfills.js"></script> + <script src="../src/sigma.settings.js"></script> + <script src="../src/classes/sigma.classes.dispatcher.js"></script> + <script src="../src/classes/sigma.classes.configurable.js"></script> + <script src="../src/classes/sigma.classes.graph.js"></script> + <script src="../src/classes/sigma.classes.camera.js"></script> + <script src="../src/classes/sigma.classes.quad.js"></script> + <script src="../src/classes/sigma.classes.edgequad.js"></script> + <script src="../src/captors/sigma.captors.mouse.js"></script> + <script src="../src/captors/sigma.captors.touch.js"></script> + <script src="../src/renderers/sigma.renderers.canvas.js"></script> + <script src="../src/renderers/sigma.renderers.webgl.js"></script> + <script src="../src/renderers/sigma.renderers.def.js"></script> + <script src="../src/renderers/webgl/sigma.webgl.nodes.def.js"></script> + <script src="../src/renderers/webgl/sigma.webgl.nodes.fast.js"></script> + <script src="../src/renderers/webgl/sigma.webgl.edges.def.js"></script> + <script src="../src/renderers/webgl/sigma.webgl.edges.fast.js"></script> + <script src="../src/renderers/canvas/sigma.canvas.labels.def.js"></script> + <script src="../src/renderers/canvas/sigma.canvas.hovers.def.js"></script> + <script src="../src/renderers/canvas/sigma.canvas.nodes.def.js"></script> + <script src="../src/renderers/canvas/sigma.canvas.edges.def.js"></script> + <script src="../src/middlewares/sigma.middlewares.rescale.js"></script> + <script src="../src/middlewares/sigma.middlewares.copy.js"></script> + <script src="../src/misc/sigma.misc.animation.js"></script> + <script src="../src/misc/sigma.misc.bindEvents.js"></script> + <script src="../src/misc/sigma.misc.drawHovers.js"></script> + <script src="../plugins/sigma.plugins.filter/sigma.plugins.filter.js"></script> + <script src="../plugins/sigma.statistics.HITS/sigma.statistics.HITS.js"></script> +</head> +<body> + <div id="qunit"></div> + <script src="qunit/qunit.js"></script> + <script src="unit.dispatcher.js"></script> + <script src="unit.configurable.js"></script> + <script src="unit.graph.js"></script> + <script src="unit.camera.js"></script> + <script src="unit.quad.js"></script> + <script src="unit.edgequad.js"></script> + <script src="unit.animation.js"></script> + <script src="unit.utils.js"></script> + <script src="unit.core.js"></script> + <script src="unit.plugins.filter.js"></script> + <script src="unit.HITS.js"></script> +</body> +</html> diff --git a/sigma.js-1.2.0/test/unit.plugins.filter.js b/sigma.js-1.2.0/test/unit.plugins.filter.js new file mode 100644 index 0000000..b94aa62 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.plugins.filter.js @@ -0,0 +1,428 @@ +module('sigma.plugins.filter'); + +test('Custom graph methods', function() { + var myGraph = new sigma.classes.graph(); + myGraph.read({ + nodes: [ + { + id: 'n0', + label: 'Node 0', + myNodeAttr: 123 + }, + { + id: 'n1', + label: 'Node 1' + }, + { + id: 'n2', + label: 'Node 2' + }, + { + id: 'n3', + label: 'Node 3' + } + ], + edges: [ + { + id: 'e0', + source: 'n0', + target: 'n1', + myEdgeAttr: 123 + }, + { + id: 'e1', + source: 'n1', + target: 'n2' + }, + { + id: 'e2', + source: 'n1', + target: 'n3' + }, + { + id: 'e3', + source: 'n2', + target: 'n3' + } + ] + }); + + deepEqual( + myGraph.adjacentNodes('n0'), + [ myGraph.nodes('n1') ], + '"adjacentNodes" returns the adjacent nodes of a specified node' + ); + + deepEqual( + myGraph.adjacentEdges('n0'), + [ myGraph.edges('e0') ], + '"adjacentEdges" returns the adjacent edges of a specified node' + ); +}); + +test('API', function() { + var a, + k, + s = new sigma(), + filter, + graph = { + nodes: [ + { + id: 'n0', + label: 'Node 0', + myNodeAttr: 0 + }, + { + id: 'n1', + label: 'Node 1', + myNodeAttr: 1 + }, + { + id: 'n2', + label: 'Node 2', + myNodeAttr: 2 + }, + { + id: 'n3', + label: 'Node 3', + myNodeAttr: -1 + }, + { + id: 'n4', + label: 'Node 4' + } + ], + edges: [ + { + id: 'e0', + source: 'n0', + target: 'n1', + myEdgeAttr: 0 + }, + { + id: 'e1', + source: 'n1', + target: 'n2', + myEdgeAttr: 1 + }, + { + id: 'e2', + source: 'n1', + target: 'n3', + myEdgeAttr: 2 + }, + { + id: 'e3', + source: 'n2', + target: 'n3', + myEdgeAttr: -1 + }, + { + id: 'e4', + source: 'n0', + target: 'n0' + } + ] + }; + + // Initialize the filter: + filter = new sigma.plugins.filter(s); + + s.graph.read(graph); + + // helper function + function hiddenNodes() { + return s.graph.nodes().filter(function(n) { + return n.hidden; + }); + }; + + // helper function + function hiddenEdges() { + return s.graph.edges().filter(function(e) { + return e.hidden; + }); + }; + + // Show non-isolated nodes only + function degreePredicate(n) { + return this.degree(n.id) > 0; + }; + + // Show edges without the myEdgeAttr attribute or with myEdgeAttr > 1 + function myEdgeAttrPredicate(e) { + return e.myEdgeAttr === undefined || e.myEdgeAttr > 1; + }; + + // Register the filter + filter.nodesBy(degreePredicate, 'degree'); + + deepEqual( + hiddenNodes(), + [], + 'A "nodesBy" filter is not applied automatically' + ); + + // Apply the filter + filter.apply(); + + deepEqual( + hiddenNodes(), + [ s.graph.nodes('n4') ], + '"apply" applies a nodesBy filter' + ); + + // Undo this filter + filter.undo('degree').apply(); + + deepEqual( + hiddenNodes(), + [], + '"undo(a)" undoes the specified filter' + ); + + // Register another filter + filter.neighborsOf('n0').apply(); + + deepEqual( + hiddenNodes(), + [s.graph.nodes('n2') , s.graph.nodes('n3') , s.graph.nodes('n4') ], + '"neighborsOf" hides all nodes which are not linked to the specified node' + ); + + + // Undo all filters + filter.undo().apply(); + + // Register an edge filter + filter + .edgesBy(myEdgeAttrPredicate) + .apply(); + + deepEqual( + hiddenEdges(), + [s.graph.edges('e0'), s.graph.edges('e1'), s.graph.edges('e3')], + '"apply" applies an edgesBy filter' + ); + + + // Register two filters and apply them + filter + .nodesBy(degreePredicate) + .edgesBy(myEdgeAttrPredicate) + .apply(); + + // Undo all filters + filter.undo().apply(); + + deepEqual( + hiddenNodes().concat(hiddenEdges()), + [], + 'All filters are undone at once' + ); + + + // Register two filters and apply them + filter + .nodesBy(degreePredicate, 'degree') + .edgesBy(myEdgeAttrPredicate, 'attr') + .apply(); + + deepEqual( + filter.export().map(function(o) { return o.key }), + ['degree', 'attr'], + 'The filters chain is exported' + ); + + + // Clear the filters chain + filter.clear(); + + deepEqual( + filter.export(), + [], + 'The filters chain is cleared' + ); + + // Undo all filters + filter.undo().apply(); + + + // nodesBy X > undo > nodesBy Y > apply + filter + .nodesBy(degreePredicate, 'degree0') + .undo() + .nodesBy(function(n) { + return this.degree(n.id) > 1; + }, 'degree1') + .apply(); + + deepEqual( + hiddenNodes(), + [s.graph.nodes('n4') ], + '"undo" undoes the filters before it in the chain, and not the filters after it' + ); + + + // Call "apply" multiple times + filter.apply().apply(); + + deepEqual( + hiddenNodes(), + [s.graph.nodes('n4') ], + '"apply" is called multiple times' + ); + + + // Call "undo" with multiple arguments + filter + .nodesBy(degreePredicate, 'degree0') + .undo('degree0', 'degree1') + .apply(); + + deepEqual( + hiddenNodes(), + [], + '"undo" is called with multiple arguments' + ); + + + // Import an empty chain + filter.import([]); + + strictEqual( + filter.export().length, + 0, + 'The empty chain is imported' + ); + + + // Import a chain of filters + var chain = [ + { + key: 'my-filter', + predicate: degreePredicate, + processor: 'filter.processors.nodes' + } + ]; + + filter.import(chain).apply(); + + deepEqual( + filter.export().map(function(o) { + return { + key: o.key, + predicate: o.predicate.toString(), + processor: o.processor + }; + }), + [{ + key: 'my-filter', + predicate: degreePredicate.toString(), + processor: 'filter.processors.nodes' + }], + 'The filters chain is imported' + ); + + + // export > import > export + var dumpedChain = filter.import(filter.export()).export(); + + deepEqual( + chain.map(function(o) { + return { + key: o.key, + predicate: o.predicate.toString(), + processor: o.processor + }; + }), + dumpedChain.map(function(o) { + return { + key: o.key, + predicate: o.predicate.toString(), + processor: o.processor + }; + }), + 'The exported filters chain is imported' + ); + + + // check chain duplication + filter.clear(); + + strictEqual( + dumpedChain.length, + 1, + 'The exported chain is a deep copy of the internal chain' + ); + + + // check chain duplication + filter.import(chain); + chain.length = 0; + degreePredicate = null; + + deepEqual( + filter.export().map(function(o) { + return { + key: o.key, + predicate: o.predicate.toString().replace(/\s+/g, ' '), + processor: o.processor + }; + }), + [ + { + key: 'my-filter', + predicate: function degreePredicate(n) { + return this.degree(n.id) > 0; + }.toString().replace(/\s+/g, ' '), + processor: 'filter.processors.nodes' + } + ], + 'The internal chain is a deep copy of the imported chain' + ); + + + throws( + function() { + filter.nodesBy(function() {}, 5); + }, + /The filter key \"5\" must be a string./, + '"nodesBy" with a wrong key type throws an error.' + ); + + throws( + function() { + filter.edgesBy(function() {}, ''); + }, + /The filter key must be a non-empty string./, + '"edgesBy" with a wrong key type throws an error.' + ); + + throws( + function() { + filter.neighborsOf(0); + }, + /The node id \"0\" must be a string./, + '"neighborsOf" with a wrong node id type throws an error.' + ); + + throws( + function() { + filter.neighborsOf(''); + }, + /The node id must be a non-empty string./, + '"neighborsOf" with a wrong node id type throws an error.' + ); + + throws( + function() { + filter + .nodesBy(function() {}, "a") + .edgesBy(function() {}, "a"); + }, + /The filter \"a\" already exists./, + 'Registering two filters with the same key throws an error.' + ); + +}); diff --git a/sigma.js-1.2.0/test/unit.quad.js b/sigma.js-1.2.0/test/unit.quad.js new file mode 100644 index 0000000..8d0f6f3 --- /dev/null +++ b/sigma.js-1.2.0/test/unit.quad.js @@ -0,0 +1,196 @@ +module('sigma.classes.quad'); + +// Test Beginning +//================ +test('QuadTree', function() { + + // Helpers + //--------- + function getRandom(min, max) { + return min + Math.floor(Math.random() * (max - min + 1)); + } + + function generateRandomGraph(nb) { + var nodes = []; + + for (var i = 0; i < nb; i++) { + nodes.push({ + x: getRandom(4, 95), + y: getRandom(4, 95), + size: getRandom(1, 2), + data: 'Node#'+i, + id: i + }); + } + + return nodes; + } + + function approx(v) { + return Math.round(v * 10000) / 10000; + } + + // Instanciation + //--------------- + var quad = new sigma.classes.quad(), + geom = quad._geom; + + // Geometry + //---------- + var rectangles = [ + {x1: 1, y1: 2, x2: 2, y2: 1, height: Math.sqrt(2)}, + {x1: 3, y1: 4, x2: 4, y2: 3, height: Math.sqrt(2)}, + {x1: 2, y1: 2, x2: 4, y2: 2, height: 1}, + {x1: 10, y1: 10, x2: 12, y2: 10, height: 2}, + {x1: 2, y1: 6, x2: 6, y2: 6, height: 4} + ]; + + var llc = geom.lowerLeftCoor(rectangles[0]); + + strictEqual(geom.isAxisAligned(rectangles[0]), false, 'Non Axis Aligned'); + strictEqual(geom.isAxisAligned(rectangles[2]), true, 'Axis Aligned'); + + var topCorners = {x1: 2, y1: 2, x2: 4, y2: 2, height: 2}; + deepEqual( + geom.axisAlignedTopPoints({x1: 2, y1: 2, x2: 4, y2: 2, height: 2}), + topCorners, + 'Non-rotated top points' + ); + + deepEqual( + geom.axisAlignedTopPoints({x1: 4, y1: 2, x2: 4, y2: 4, height: 2}), + topCorners, + 'Right shift top points' + ); + + deepEqual( + geom.axisAlignedTopPoints({x1: 2, y1: 4, x2: 2, y2: 2, height: 2}), + topCorners, + 'Left shift top points' + ); + + deepEqual( + geom.axisAlignedTopPoints({x1: 4, y1: 4, x2: 2, y2: 4, height: 2}), + topCorners, + 'Bottom\'s up top points' + ); + + deepEqual( + llc, + {x: 2, y: 3}, + 'Lower Left Corner' + ); + + deepEqual( + geom.lowerRightCoor(rectangles[0], llc), + {x: 3, y: 2}, + 'Lower Right Corner' + ); + + var projection = geom.projection({x: 2, y: 6}, {x: 3, y: 4}); + deepEqual( + {x: approx(projection.x), y: approx(projection.y)}, + {x: 3.6, y: 4.8}, + 'Projection' + ); + + var solutions = [ + [ + {x: 1, y: 2}, + {x: 2, y: 1}, + {x: 2, y: 3}, + {x: 3, y: 2} + ], + [ + {x: 3, y: 4}, + {x: 4, y: 3}, + {x: 4, y: 5}, + {x: 5, y: 4} + ], + [ + {x: 2, y: 2}, + {x: 4, y: 2}, + {x: 2, y: 3}, + {x: 4, y: 3} + ], + [ + {x: 10, y: 10}, + {x: 12, y: 10}, + {x: 10, y: 12}, + {x: 12, y: 12} + ], + [ + {x: 2, y: 6}, + {x: 6, y: 6}, + {x: 2, y: 10}, + {x: 6, y: 10} + ], + [ + {x: 2, y: 2}, + {x: 6, y: 2}, + {x: 2, y: 6}, + {x: 6, y: 6} + ] + ]; + + deepEqual( + geom.pointToSquare({x: 4, y: 4, size: 2}), + {x1: 2, y1: 2, x2: 6, y2: 2, height: 4}, + 'Point to Square' + ); + + rectangles.map(function(r, i) { + deepEqual( + geom.rectangleCorners(r), + solutions[i], + 'Rectangle Corners #'+i + ); + }); + + var cr = [ + geom.rectangleCorners({x1: 4, y1: 6, x2: 6, y2: 4, height: Math.sqrt(8)}), + geom.rectangleCorners({x1: 4, y1: 8, x2: 6, y2: 6, height: Math.sqrt(8)}), + geom.rectangleCorners({x1: 10, y1: 10, x2: 12, y2: 10, height: 2}), + geom.rectangleCorners({x1: 0, y1: 0, x2: 200, y2: 200, height: 200}), + geom.rectangleCorners({x1: 200, y1: 200, x2: 400, y2: 400, height: 200}) + ]; + + strictEqual(geom.collision(cr[0], cr[1]), true, 'Collision'); + strictEqual(geom.collision(cr[0], cr[2]), false, 'Non-Collision'); + strictEqual(geom.collision(cr[0], cr[3]), true, 'Containing Collision'); + strictEqual(geom.collision(cr[0], cr[4]), false, 'Outbounding Collision'); + + deepEqual( + geom.splitSquare({x: 0, y: 0, width: 100, height: 100}), + [ + [{x: 0, y: 0}, {x: 50, y: 0}, {x: 0, y: 50}, {x: 50, y: 50}], + [{x: 50, y: 0}, {x: 100, y: 0}, {x: 50, y: 50}, {x: 100, y: 50}], + [{x: 0, y: 50}, {x: 50, y: 50}, {x: 0, y: 100}, {x: 50, y: 100}], + [{x: 50, y: 50}, {x: 100, y: 50}, {x: 50, y: 100}, {x: 100, y: 100}] + ], + 'Split Square' + ); + + + // Quad Tree + //----------- + // var nodes = generateRandomGraph(1000); + + // var tree = quad.index( + // nodes, + // { + // bounds: { + // x: 0, + // y: 0, + // width: 100, + // height: 100 + // }, + // maxLevel: 4 + // } + // ); + + // console.log(tree); + // console.log(quad.point(34, 53)); + // console.log(quad.area({x1: 25, y1: 25, x2: 30, y2: 25, height: 10})); + // console.log(quad.area({x1: 0, y1: 0, x2: 100, y2: 0, height: 100}).length); +}); diff --git a/sigma.js-1.2.0/test/unit.utils.js b/sigma.js-1.2.0/test/unit.utils.js new file mode 100644 index 0000000..24d5dec --- /dev/null +++ b/sigma.js-1.2.0/test/unit.utils.js @@ -0,0 +1,26 @@ +module('sigma.utils'); +test('Float color', function() { + var floatColor = sigma.utils.floatColor; + + var inputs = [ + '#FF0', + '#D1D1D1', + '#d1d1d1', + 'rgb(234, 245, 298)', + 'rgba(234, 245, 298, 0.1)', + 'rgba(234, 245, 298, .1)' + ]; + + var outputs = [ + 16776960, + 13750737, + 13750737, + 15398442, + 15398442, + 15398442 + ]; + + inputs.forEach(function(input, i) { + strictEqual(floatColor(input), outputs[i]); + }); +}); -- GitLab