From 03a3cb578bc33a06e0c27ed1d91bb79c32e673f4 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 12 Dec 2018 17:49:40 -0500 Subject: [PATCH 01/39] merge @Plotly/d3-sankey into plotly.js (es6 -> es5, tests in jasmine) --- package-lock.json | 10 - package.json | 4 +- src/traces/sankey/d3-sankey.js | 356 ++++++++++++++++++++ src/traces/sankey/render.js | 2 +- test/jasmine/tests/sankey_d3_sankey_test.js | 106 ++++++ 5 files changed, 466 insertions(+), 12 deletions(-) create mode 100644 src/traces/sankey/d3-sankey.js create mode 100644 test/jasmine/tests/sankey_d3_sankey_test.js diff --git a/package-lock.json b/package-lock.json index 4cc24650b6d..494ba124b4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,16 +117,6 @@ "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, - "@plotly/d3-sankey": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.5.1.tgz", - "integrity": "sha512-uMToNGexOSLG0hBm+uAzElfFW0Pt2utgJ//puL5nuerNnPnRTTe3Un7XFVcWqRhvXEViF00Xq/8wGoA8i8eZJA==", - "requires": { - "d3-array": "1", - "d3-collection": "1", - "d3-interpolate": "1" - } - }, "@types/bluebird": { "version": "3.5.24", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.24.tgz", diff --git a/package.json b/package.json index ba09779f6fc..4611dc2072d 100644 --- a/package.json +++ b/package.json @@ -56,8 +56,10 @@ ] }, "dependencies": { + "d3-array": "1", + "d3-collection": "1", + "d3-interpolate": "1", "3d-view": "^2.0.0", - "@plotly/d3-sankey": "^0.5.1", "alpha-shape": "^1.0.0", "array-range": "^1.0.1", "canvas-fit": "^1.5.0", diff --git a/src/traces/sankey/d3-sankey.js b/src/traces/sankey/d3-sankey.js new file mode 100644 index 00000000000..c2dbbb89f23 --- /dev/null +++ b/src/traces/sankey/d3-sankey.js @@ -0,0 +1,356 @@ +/** +Copyright 2015, Mike Bostock +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the author nor the names of contributors may be used to + endorse or promote products derived from this software without specific prior + written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +*/ + +/** +The following is a fork of https://github.com/plotly/d3-sankey which itself +was a fork of https://github.com/d3/d3-sankey from Mike Bostock. +*/ + +'use strict'; + +var d3array = require('d3-array'); +var ascending = d3array.ascending; +var min = d3array.min; +var sum = d3array.sum; +var max = d3array.max; +var nest = require('d3-collection').nest; +var interpolateNumber = require('d3-interpolate').interpolateNumber; + +module.exports = function() { + var sankey = {}, + nodeWidth = 24, + nodePadding = 8, + size = [1, 1], + nodes = [], + links = [], + maxPaddedSpace = 2 / 3; // Defined as a fraction of the total available space + + sankey.nodeWidth = function(_) { + if(!arguments.length) return nodeWidth; + nodeWidth = +_; + return sankey; + }; + + sankey.nodePadding = function(_) { + if(!arguments.length) return nodePadding; + nodePadding = +_; + return sankey; + }; + + sankey.nodes = function(_) { + if(!arguments.length) return nodes; + nodes = _; + return sankey; + }; + + sankey.links = function(_) { + if(!arguments.length) return links; + links = _; + return sankey; + }; + + sankey.size = function(_) { + if(!arguments.length) return size; + size = _; + return sankey; + }; + + sankey.layout = function(iterations) { + computeNodeLinks(); + computeNodeValues(); + computeNodeBreadths(); + computeNodeDepths(iterations); + computeLinkDepths(); + return sankey; + }; + + sankey.relayout = function() { + computeLinkDepths(); + return sankey; + }; + + sankey.link = function() { + var curvature = 0.5; + + function link(d) { + var x0 = d.source.x + d.source.dx, + x1 = d.target.x, + xi = interpolateNumber(x0, x1), + x2 = xi(curvature), + x3 = xi(1 - curvature), + y0a = d.source.y + d.sy, + y0b = y0a + d.dy, + y1a = d.target.y + d.ty, + y1b = y1a + d.dy; + return 'M' + x0 + ',' + y0a + + 'C' + x2 + ',' + y0a + + ' ' + x3 + ',' + y1a + + ' ' + x1 + ',' + y1a + + 'L' + x1 + ',' + y1b + + 'C' + x3 + ',' + y1b + + ' ' + x2 + ',' + y0b + + ' ' + x0 + ',' + y0b + + 'Z'; + } + + link.curvature = function(_) { + if(!arguments.length) return curvature; + curvature = +_; + return link; + }; + + return link; + }; + + // Populate the sourceLinks and targetLinks for each node. + // Also, if the source and target are not objects, assume they are indices. + function computeNodeLinks() { + nodes.forEach(function(node) { + node.sourceLinks = []; + node.targetLinks = []; + }); + links.forEach(function(link, i) { + var source = link.source, + target = link.target; + if(typeof source === 'number') source = link.source = nodes[link.source]; + if(typeof target === 'number') target = link.target = nodes[link.target]; + link.originalIndex = i; + source.sourceLinks.push(link); + target.targetLinks.push(link); + }); + } + + // Compute the value (size) of each node by summing the associated links. + function computeNodeValues() { + nodes.forEach(function(node) { + node.value = Math.max( + sum(node.sourceLinks, value), + sum(node.targetLinks, value) + ); + }); + } + + // Iteratively assign the breadth (x-position) for each node. + // Nodes are assigned the maximum breadth of incoming neighbors plus one; + // nodes with no incoming links are assigned breadth zero, while + // nodes with no outgoing links are assigned the maximum breadth. + function computeNodeBreadths() { + var remainingNodes = nodes, + nextNodes, + x = 0; + + function processNode(node) { + node.x = x; + node.dx = nodeWidth; + node.sourceLinks.forEach(function(link) { + if(nextNodes.indexOf(link.target) < 0) { + nextNodes.push(link.target); + } + }); + } + + while(remainingNodes.length) { + nextNodes = []; + remainingNodes.forEach(processNode); + remainingNodes = nextNodes; + ++x; + } + + // + moveSinksRight(x); + scaleNodeBreadths((size[0] - nodeWidth) / (x - 1)); + } + + // function moveSourcesRight() { + // nodes.forEach(function(node) { + // if (!node.targetLinks.length) { + // node.x = min(node.sourceLinks, function(d) { return d.target.x; }) - 1; + // } + // }); + // } + + function moveSinksRight(x) { + nodes.forEach(function(node) { + if(!node.sourceLinks.length) { + node.x = x - 1; + } + }); + } + + function scaleNodeBreadths(kx) { + nodes.forEach(function(node) { + node.x *= kx; + }); + } + + function computeNodeDepths(iterations) { + var nodesByBreadth = nest() + .key(function(d) { return d.x; }) + .sortKeys(ascending) + .entries(nodes) + .map(function(d) { return d.values; }); + + // + initializeNodeDepth(); + resolveCollisions(); + for(var alpha = 1; iterations > 0; --iterations) { + relaxRightToLeft(alpha *= 0.99); + resolveCollisions(); + relaxLeftToRight(alpha); + resolveCollisions(); + } + + function initializeNodeDepth() { + var L = max(nodesByBreadth, function(nodes) { + return nodes.length; + }); + var maxNodePadding = maxPaddedSpace * size[1] / (L - 1); + if(nodePadding > maxNodePadding) nodePadding = maxNodePadding; + var ky = min(nodesByBreadth, function(nodes) { + return (size[1] - (nodes.length - 1) * nodePadding) / sum(nodes, value); + }); + + nodesByBreadth.forEach(function(nodes) { + nodes.forEach(function(node, i) { + node.y = i; + node.dy = node.value * ky; + }); + }); + + links.forEach(function(link) { + link.dy = link.value * ky; + }); + } + + function relaxLeftToRight(alpha) { + nodesByBreadth.forEach(function(nodes) { + nodes.forEach(function(node) { + if(node.targetLinks.length) { + var y = sum(node.targetLinks, weightedSource) / sum(node.targetLinks, value); + node.y += (y - center(node)) * alpha; + } + }); + }); + + function weightedSource(link) { + return center(link.source) * link.value; + } + } + + function relaxRightToLeft(alpha) { + nodesByBreadth.slice().reverse().forEach(function(nodes) { + nodes.forEach(function(node) { + if(node.sourceLinks.length) { + var y = sum(node.sourceLinks, weightedTarget) / sum(node.sourceLinks, value); + node.y += (y - center(node)) * alpha; + } + }); + }); + + function weightedTarget(link) { + return center(link.target) * link.value; + } + } + + function resolveCollisions() { + nodesByBreadth.forEach(function(nodes) { + var node, + dy, + y0 = 0, + n = nodes.length, + i; + + // Push any overlapping nodes down. + nodes.sort(ascendingDepth); + for(i = 0; i < n; ++i) { + node = nodes[i]; + dy = y0 - node.y; + if(dy > 0) node.y += dy; + y0 = node.y + node.dy + nodePadding; + } + + // If the bottommost node goes outside the bounds, push it back up. + dy = y0 - nodePadding - size[1]; + if(dy > 0) { + y0 = node.y -= dy; + + // Push any overlapping nodes back up. + for(i = n - 2; i >= 0; --i) { + node = nodes[i]; + dy = node.y + node.dy + nodePadding - y0; + if(dy > 0) node.y -= dy; + y0 = node.y; + } + } + }); + } + + function ascendingDepth(a, b) { + return a.y - b.y; + } + } + + function computeLinkDepths() { + nodes.forEach(function(node) { + node.sourceLinks.sort(ascendingTargetDepth); + node.targetLinks.sort(ascendingSourceDepth); + }); + nodes.forEach(function(node) { + var sy = 0, ty = 0; + node.sourceLinks.forEach(function(link) { + link.sy = sy; + sy += link.dy; + }); + node.targetLinks.forEach(function(link) { + link.ty = ty; + ty += link.dy; + }); + }); + + function ascendingSourceDepth(a, b) { + return (a.source.y - b.source.y) || (a.originalIndex - b.originalIndex); + } + + function ascendingTargetDepth(a, b) { + return (a.target.y - b.target.y) || (a.originalIndex - b.originalIndex); + } + } + + function center(node) { + return node.y + node.dy / 2; + } + + function value(link) { + return link.value; + } + + return sankey; +}; diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 2ec53241b9c..0a02dd41d9f 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -13,7 +13,7 @@ var d3 = require('d3'); var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); -var d3sankey = require('@plotly/d3-sankey').sankey; +var d3sankey = require('./d3-sankey.js'); var d3Force = require('d3-force'); var Lib = require('../../lib'); var isArrayOrTypedArray = Lib.isArrayOrTypedArray; diff --git a/test/jasmine/tests/sankey_d3_sankey_test.js b/test/jasmine/tests/sankey_d3_sankey_test.js new file mode 100644 index 00000000000..874d4175591 --- /dev/null +++ b/test/jasmine/tests/sankey_d3_sankey_test.js @@ -0,0 +1,106 @@ +// var Plotly = require('@lib/index'); +// var attributes = require('@src/traces/sankey/attributes'); + +var d3sankey = require('@src/traces/sankey/d3-sankey'); + +var graph = { + 'nodes': [{ + 'node': 0, + 'name': 'node0' + }, { + 'node': 1, + 'name': 'node1' + }, { + 'node': 2, + 'name': 'node2' + }, { + 'node': 3, + 'name': 'node3' + }, { + 'node': 4, + 'name': 'node4' + }], + 'links': [{ + 'source': 0, + 'target': 2, + 'value': 2 + }, { + 'source': 1, + 'target': 2, + 'value': 2 + }, { + 'source': 1, + 'target': 3, + 'value': 2 + }, { + 'source': 0, + 'target': 4, + 'value': 2 + }, { + 'source': 2, + 'target': 3, + 'value': 2 + }, { + 'source': 2, + 'target': 4, + 'value': 2 + }, { + 'source': 3, + 'target': 4, + 'value': 4 + }] +}; + + +describe('d3-sankey', function() { + var margin = { + top: 10, + right: 10, + bottom: 10, + left: 10 + }, + width = 1200 - margin.left - margin.right, + height = 740 - margin.top - margin.bottom; + + var s; + + beforeEach(function() { + s = d3sankey() + .nodeWidth(36) + .nodePadding(10) + .nodes(graph.nodes) + .links(graph.links) + .size([width, height]) + .layout(32); + }); + + it('controls the width of nodes', function() { + expect(s.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); + }); + + it('controls the padding between nodes', function() { + expect(s.nodePadding()).toEqual(10, 'incorrect nodePadding'); + }); + + it('controls the padding between nodes', function() { + expect(s.nodePadding()).toEqual(10, 'incorrect nodePadding'); + }); + + it('keep a list of nodes', function() { + var node_names = s.nodes().map(function(obj) { + return obj.name; + }); + expect(node_names).toEqual(['node0', 'node1', 'node2', 'node3', 'node4']); + }); + + it('keep a list of links', function() { + var link_widths = s.links().map(function(obj) { + return obj.dy; + }); + expect(link_widths).toEqual([177.5, 177.5, 177.5, 177.5, 177.5, 177.5, 355]); + }); + + it('controls the size of the figure', function() { + expect(s.size()).toEqual([1180, 720], 'incorrect size'); + }); +}); From 2504dc3b6910fcc0ad335794c675a9a23b5923d6 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 12 Dec 2018 17:59:57 -0500 Subject: [PATCH 02/39] fix header for d3-sankey.js --- src/traces/sankey/d3-sankey.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/traces/sankey/d3-sankey.js b/src/traces/sankey/d3-sankey.js index c2dbbb89f23..87a5587a1ed 100644 --- a/src/traces/sankey/d3-sankey.js +++ b/src/traces/sankey/d3-sankey.js @@ -1,3 +1,11 @@ +/** +* Copyright 2012-2018, Plotly, Inc. +* All rights reserved. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ + /** Copyright 2015, Mike Bostock All rights reserved. From fd19907c44a6486aea3fb4b38293a2520a38df35 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Thu, 13 Dec 2018 17:05:32 -0500 Subject: [PATCH 03/39] move data conversion into its own function and run in calc() phase --- src/traces/sankey/calc.js | 8 +- src/traces/sankey/convert-to-d3-sankey.js | 77 ++++++++++++++++ src/traces/sankey/render.js | 107 ++++------------------ 3 files changed, 103 insertions(+), 89 deletions(-) create mode 100644 src/traces/sankey/convert-to-d3-sankey.js diff --git a/src/traces/sankey/calc.js b/src/traces/sankey/calc.js index e9dc3bc0270..8aaee62f8c3 100644 --- a/src/traces/sankey/calc.js +++ b/src/traces/sankey/calc.js @@ -12,6 +12,8 @@ var tarjan = require('strongly-connected-components'); var Lib = require('../../lib'); var wrap = require('../../lib/gup').wrap; +var convertToD3Sankey = require('./convert-to-d3-sankey'); + function circularityPresent(nodeList, sources, targets) { var nodeLen = nodeList.length; @@ -48,8 +50,10 @@ module.exports = function calc(gd, trace) { trace.node.color = []; } + var result = convertToD3Sankey(trace); + return wrap({ - link: trace.link, - node: trace.node + _nodes: result.nodes, + _links: result.links }); }; diff --git a/src/traces/sankey/convert-to-d3-sankey.js b/src/traces/sankey/convert-to-d3-sankey.js new file mode 100644 index 00000000000..f5ba897106c --- /dev/null +++ b/src/traces/sankey/convert-to-d3-sankey.js @@ -0,0 +1,77 @@ +/** +* Copyright 2012-2018, Plotly, Inc. +* All rights reserved. +* +* This source code is licensed under the MIT license found in the +* LICENSE file in the root directory of this source tree. +*/ + +'use strict'; + +var Lib = require('../../lib'); +var isArrayOrTypedArray = Lib.isArrayOrTypedArray; +var isIndex = Lib.isIndex; + +module.exports = function(trace) { + var nodeSpec = trace.node; + var linkSpec = trace.link; + + var links = []; + var hasLinkColorArray = isArrayOrTypedArray(linkSpec.color); + var linkedNodes = {}; + + var nodeCount = nodeSpec.label.length; + var i; + for(i = 0; i < linkSpec.value.length; i++) { + var val = linkSpec.value[i]; + // remove negative values, but keep zeros with special treatment + var source = linkSpec.source[i]; + var target = linkSpec.target[i]; + if(!(val > 0 && isIndex(source, nodeCount) && isIndex(target, nodeCount))) { + continue; + } + + source = +source; + target = +target; + linkedNodes[source] = linkedNodes[target] = true; + + links.push({ + pointNumber: i, + label: linkSpec.label[i], + color: hasLinkColorArray ? linkSpec.color[i] : linkSpec.color, + source: source, + target: target, + value: +val + }); + } + + var hasNodeColorArray = isArrayOrTypedArray(nodeSpec.color); + var nodes = []; + var removedNodes = false; + var nodeIndices = {}; + + for(i = 0; i < nodeCount; i++) { + if(linkedNodes[i]) { + var l = nodeSpec.label[i]; + nodeIndices[i] = nodes.length; + nodes.push({ + pointNumber: i, + label: l, + color: hasNodeColorArray ? nodeSpec.color[i] : nodeSpec.color + }); + } else removedNodes = true; + } + + // need to re-index links now, since we didn't put all the nodes in + if(removedNodes) { + for(i = 0; i < links.length; i++) { + links[i].source = nodeIndices[links[i].source]; + links[i].target = nodeIndices[links[i].target]; + } + } + + return { + links: links, + nodes: nodes + }; +}; diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 0a02dd41d9f..42520ddd4fd 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -16,8 +16,6 @@ var Drawing = require('../../components/drawing'); var d3sankey = require('./d3-sankey.js'); var d3Force = require('d3-force'); var Lib = require('../../lib'); -var isArrayOrTypedArray = Lib.isArrayOrTypedArray; -var isIndex = Lib.isIndex; var gup = require('../../lib/gup'); var keyFun = gup.keyFun; var repeat = gup.repeat; @@ -67,78 +65,18 @@ function switchToSankeyFormat(nodes) { // view models function sankeyModel(layout, d, traceIndex) { - var trace = unwrap(d).trace; + var calcData = unwrap(d); + var trace = calcData.trace; var domain = trace.domain; - var nodeSpec = trace.node; - var linkSpec = trace.link; - var arrangement = trace.arrangement; var horizontal = trace.orientation === 'h'; var nodePad = trace.node.pad; var nodeThickness = trace.node.thickness; - var nodeLineColor = trace.node.line.color; - var nodeLineWidth = trace.node.line.width; - var linkLineColor = trace.link.line.color; - var linkLineWidth = trace.link.line.width; - var valueFormat = trace.valueformat; - var valueSuffix = trace.valuesuffix; - var textFont = trace.textfont; var width = layout.width * (domain.x[1] - domain.x[0]); var height = layout.height * (domain.y[1] - domain.y[0]); - var links = []; - var hasLinkColorArray = isArrayOrTypedArray(linkSpec.color); - var linkedNodes = {}; - - var nodeCount = nodeSpec.label.length; - var i; - for(i = 0; i < linkSpec.value.length; i++) { - var val = linkSpec.value[i]; - // remove negative values, but keep zeros with special treatment - var source = linkSpec.source[i]; - var target = linkSpec.target[i]; - if(!(val > 0 && isIndex(source, nodeCount) && isIndex(target, nodeCount))) { - continue; - } - - source = +source; - target = +target; - linkedNodes[source] = linkedNodes[target] = true; - - links.push({ - pointNumber: i, - label: linkSpec.label[i], - color: hasLinkColorArray ? linkSpec.color[i] : linkSpec.color, - source: source, - target: target, - value: +val - }); - } - - var hasNodeColorArray = isArrayOrTypedArray(nodeSpec.color); - var nodes = []; - var removedNodes = false; - var nodeIndices = {}; - for(i = 0; i < nodeCount; i++) { - if(linkedNodes[i]) { - var l = nodeSpec.label[i]; - nodeIndices[i] = nodes.length; - nodes.push({ - pointNumber: i, - label: l, - color: hasNodeColorArray ? nodeSpec.color[i] : nodeSpec.color - }); - } - else removedNodes = true; - } - - // need to re-index links now, since we didn't put all the nodes in - if(removedNodes) { - for(i = 0; i < links.length; i++) { - links[i].source = nodeIndices[links[i].source]; - links[i].target = nodeIndices[links[i].target]; - } - } + var nodes = calcData._nodes; + var links = calcData._links; var sankey = d3sankey() .size(horizontal ? [width, height] : [height, width]) @@ -152,13 +90,6 @@ function sankeyModel(layout, d, traceIndex) { Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.'); } - var node, sankeyNodes = sankey.nodes(); - for(var n = 0; n < sankeyNodes.length; n++) { - node = sankeyNodes[n]; - node.width = width; - node.height = height; - } - switchToForceFormat(nodes); return { @@ -168,21 +99,21 @@ function sankeyModel(layout, d, traceIndex) { horizontal: horizontal, width: width, height: height, - nodePad: nodePad, - nodeLineColor: nodeLineColor, - nodeLineWidth: nodeLineWidth, - linkLineColor: linkLineColor, - linkLineWidth: linkLineWidth, - valueFormat: valueFormat, - valueSuffix: valueSuffix, - textFont: textFont, + nodePad: trace.node.pad, + nodeLineColor: trace.node.line.color, + nodeLineWidth: trace.node.line.width, + linkLineColor: trace.link.line.color, + linkLineWidth: trace.link.line.width, + valueFormat: trace.valueformat, + valueSuffix: trace.valuesuffix, + textFont: trace.textfont, translateX: domain.x[0] * layout.width + layout.margin.l, translateY: layout.height - domain.y[1] * layout.height + layout.margin.t, dragParallel: horizontal ? height : width, dragPerpendicular: horizontal ? width : height, nodes: nodes, links: links, - arrangement: arrangement, + arrangement: trace.arrangement, sankey: sankey, forceLayouts: {}, interactionState: { @@ -454,12 +385,14 @@ function snappingForce(sankeyNode, forceKey, nodes, d) { } // scene graph -module.exports = function(svg, styledData, layout, callbacks) { +module.exports = function(svg, calcData, layout, callbacks) { + + var styledData = calcData + .filter(function(d) {return unwrap(d).trace.visible;}) + .map(sankeyModel.bind(null, layout)); + var sankey = svg.selectAll('.' + c.cn.sankey) - .data(styledData - .filter(function(d) {return unwrap(d).trace.visible;}) - .map(sankeyModel.bind(null, layout)), - keyFun); + .data(styledData, keyFun); sankey.exit() .remove(); From bde2a79fecac0a68119cd3aaae807bb55cd6dcdf Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Thu, 13 Dec 2018 17:07:38 -0500 Subject: [PATCH 04/39] refactor d3-sankey to look more similar to upstream --- src/traces/sankey/d3-sankey.js | 100 ++++++++++++++++++--------------- 1 file changed, 54 insertions(+), 46 deletions(-) diff --git a/src/traces/sankey/d3-sankey.js b/src/traces/sankey/d3-sankey.js index 87a5587a1ed..1d606da4e50 100644 --- a/src/traces/sankey/d3-sankey.js +++ b/src/traces/sankey/d3-sankey.js @@ -52,24 +52,54 @@ var max = d3array.max; var nest = require('d3-collection').nest; var interpolateNumber = require('d3-interpolate').interpolateNumber; +// sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths +function ascendingSourceDepth(a, b) { + return ascendingBreadth(a.source, b.source) || (a.originalIndex - b.originalIndex); +} + +// sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths +function ascendingTargetDepth(a, b) { + return ascendingBreadth(a.target, b.target) || (a.originalIndex - b.originalIndex); +} + +function ascendingBreadth(a, b) { + return a.y - b.y; +} + +function value(d) { + return d.value; +} + +function nodeCenter(node) { + return node.y + node.dy / 2; +} + +function weightedSource(link) { + return nodeCenter(link.source) * link.value; +} + +function weightedTarget(link) { + return nodeCenter(link.target) * link.value; +} + module.exports = function() { var sankey = {}, - nodeWidth = 24, - nodePadding = 8, + dx = 24, // nodeWidth + py = 8, // nodePadding size = [1, 1], nodes = [], links = [], maxPaddedSpace = 2 / 3; // Defined as a fraction of the total available space sankey.nodeWidth = function(_) { - if(!arguments.length) return nodeWidth; - nodeWidth = +_; + if(!arguments.length) return dx; + dx = +_; return sankey; }; sankey.nodePadding = function(_) { - if(!arguments.length) return nodePadding; - nodePadding = +_; + if(!arguments.length) return py; + py = +_; return sankey; }; @@ -94,14 +124,14 @@ module.exports = function() { sankey.layout = function(iterations) { computeNodeLinks(); computeNodeValues(); - computeNodeBreadths(); - computeNodeDepths(iterations); - computeLinkDepths(); + computeNodeDepths(); + computeNodeBreadths(iterations); + computeLinkBreadths(); return sankey; }; sankey.relayout = function() { - computeLinkDepths(); + computeLinkBreadths(); return sankey; }; @@ -170,14 +200,15 @@ module.exports = function() { // Nodes are assigned the maximum breadth of incoming neighbors plus one; // nodes with no incoming links are assigned breadth zero, while // nodes with no outgoing links are assigned the maximum breadth. - function computeNodeBreadths() { + function computeNodeDepths() { var remainingNodes = nodes, nextNodes, x = 0; function processNode(node) { + node.depth = x; node.x = x; - node.dx = nodeWidth; + node.dx = dx; node.sourceLinks.forEach(function(link) { if(nextNodes.indexOf(link.target) < 0) { nextNodes.push(link.target); @@ -194,7 +225,7 @@ module.exports = function() { // moveSinksRight(x); - scaleNodeBreadths((size[0] - nodeWidth) / (x - 1)); + scaleNodeBreadths((size[0] - dx) / (x - 1)); } // function moveSourcesRight() { @@ -208,6 +239,7 @@ module.exports = function() { function moveSinksRight(x) { nodes.forEach(function(node) { if(!node.sourceLinks.length) { + node.depth = x - 1; node.x = x - 1; } }); @@ -219,7 +251,7 @@ module.exports = function() { }); } - function computeNodeDepths(iterations) { + function computeNodeBreadths(iterations) { var nodesByBreadth = nest() .key(function(d) { return d.x; }) .sortKeys(ascending) @@ -241,9 +273,9 @@ module.exports = function() { return nodes.length; }); var maxNodePadding = maxPaddedSpace * size[1] / (L - 1); - if(nodePadding > maxNodePadding) nodePadding = maxNodePadding; + if(py > maxNodePadding) py = maxNodePadding; var ky = min(nodesByBreadth, function(nodes) { - return (size[1] - (nodes.length - 1) * nodePadding) / sum(nodes, value); + return (size[1] - (nodes.length - 1) * py) / sum(nodes, value); }); nodesByBreadth.forEach(function(nodes) { @@ -263,14 +295,10 @@ module.exports = function() { nodes.forEach(function(node) { if(node.targetLinks.length) { var y = sum(node.targetLinks, weightedSource) / sum(node.targetLinks, value); - node.y += (y - center(node)) * alpha; + node.y += (y - nodeCenter(node)) * alpha; } }); }); - - function weightedSource(link) { - return center(link.source) * link.value; - } } function relaxRightToLeft(alpha) { @@ -278,14 +306,10 @@ module.exports = function() { nodes.forEach(function(node) { if(node.sourceLinks.length) { var y = sum(node.sourceLinks, weightedTarget) / sum(node.sourceLinks, value); - node.y += (y - center(node)) * alpha; + node.y += (y - nodeCenter(node)) * alpha; } }); }); - - function weightedTarget(link) { - return center(link.target) * link.value; - } } function resolveCollisions() { @@ -302,18 +326,18 @@ module.exports = function() { node = nodes[i]; dy = y0 - node.y; if(dy > 0) node.y += dy; - y0 = node.y + node.dy + nodePadding; + y0 = node.y + node.dy + py; } // If the bottommost node goes outside the bounds, push it back up. - dy = y0 - nodePadding - size[1]; + dy = y0 - py - size[1]; if(dy > 0) { y0 = node.y -= dy; // Push any overlapping nodes back up. for(i = n - 2; i >= 0; --i) { node = nodes[i]; - dy = node.y + node.dy + nodePadding - y0; + dy = node.y + node.dy + py - y0; if(dy > 0) node.y -= dy; y0 = node.y; } @@ -326,7 +350,7 @@ module.exports = function() { } } - function computeLinkDepths() { + function computeLinkBreadths() { nodes.forEach(function(node) { node.sourceLinks.sort(ascendingTargetDepth); node.targetLinks.sort(ascendingSourceDepth); @@ -342,22 +366,6 @@ module.exports = function() { ty += link.dy; }); }); - - function ascendingSourceDepth(a, b) { - return (a.source.y - b.source.y) || (a.originalIndex - b.originalIndex); - } - - function ascendingTargetDepth(a, b) { - return (a.target.y - b.target.y) || (a.originalIndex - b.originalIndex); - } - } - - function center(node) { - return node.y + node.dy / 2; - } - - function value(link) { - return link.value; } return sankey; From 5f89d78ced2a73dbe31952bc2e6fdb8c54259032 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Thu, 13 Dec 2018 17:49:41 -0500 Subject: [PATCH 05/39] fix indentation --- src/traces/sankey/convert-to-d3-sankey.js | 4 +- src/traces/sankey/d3-sankey.js | 46 ++++++++++------------- 2 files changed, 21 insertions(+), 29 deletions(-) diff --git a/src/traces/sankey/convert-to-d3-sankey.js b/src/traces/sankey/convert-to-d3-sankey.js index f5ba897106c..98ec340061d 100644 --- a/src/traces/sankey/convert-to-d3-sankey.js +++ b/src/traces/sankey/convert-to-d3-sankey.js @@ -24,7 +24,7 @@ module.exports = function(trace) { var i; for(i = 0; i < linkSpec.value.length; i++) { var val = linkSpec.value[i]; - // remove negative values, but keep zeros with special treatment + // remove negative values, but keep zeros with special treatment var source = linkSpec.source[i]; var target = linkSpec.target[i]; if(!(val > 0 && isIndex(source, nodeCount) && isIndex(target, nodeCount))) { @@ -62,7 +62,7 @@ module.exports = function(trace) { } else removedNodes = true; } - // need to re-index links now, since we didn't put all the nodes in + // need to re-index links now, since we didn't put all the nodes in if(removedNodes) { for(i = 0; i < links.length; i++) { links[i].source = nodeIndices[links[i].source]; diff --git a/src/traces/sankey/d3-sankey.js b/src/traces/sankey/d3-sankey.js index 1d606da4e50..c1ee9bc2f2a 100644 --- a/src/traces/sankey/d3-sankey.js +++ b/src/traces/sankey/d3-sankey.js @@ -149,14 +149,14 @@ module.exports = function() { y1a = d.target.y + d.ty, y1b = y1a + d.dy; return 'M' + x0 + ',' + y0a + - 'C' + x2 + ',' + y0a + - ' ' + x3 + ',' + y1a + - ' ' + x1 + ',' + y1a + - 'L' + x1 + ',' + y1b + - 'C' + x3 + ',' + y1b + - ' ' + x2 + ',' + y0b + - ' ' + x0 + ',' + y0b + - 'Z'; + 'C' + x2 + ',' + y0a + + ' ' + x3 + ',' + y1a + + ' ' + x1 + ',' + y1a + + 'L' + x1 + ',' + y1b + + 'C' + x3 + ',' + y1b + + ' ' + x2 + ',' + y0b + + ' ' + x0 + ',' + y0b + + 'Z'; } link.curvature = function(_) { @@ -168,8 +168,8 @@ module.exports = function() { return link; }; - // Populate the sourceLinks and targetLinks for each node. - // Also, if the source and target are not objects, assume they are indices. + // Populate the sourceLinks and targetLinks for each node. + // Also, if the source and target are not objects, assume they are indices. function computeNodeLinks() { nodes.forEach(function(node) { node.sourceLinks = []; @@ -186,7 +186,7 @@ module.exports = function() { }); } - // Compute the value (size) of each node by summing the associated links. + // Compute the value (size) of each node by summing the associated links. function computeNodeValues() { nodes.forEach(function(node) { node.value = Math.max( @@ -196,10 +196,10 @@ module.exports = function() { }); } - // Iteratively assign the breadth (x-position) for each node. - // Nodes are assigned the maximum breadth of incoming neighbors plus one; - // nodes with no incoming links are assigned breadth zero, while - // nodes with no outgoing links are assigned the maximum breadth. + // Iteratively assign the breadth (x-position) for each node. + // Nodes are assigned the maximum breadth of incoming neighbors plus one; + // nodes with no incoming links are assigned breadth zero, while + // nodes with no outgoing links are assigned the maximum breadth. function computeNodeDepths() { var remainingNodes = nodes, nextNodes, @@ -228,14 +228,6 @@ module.exports = function() { scaleNodeBreadths((size[0] - dx) / (x - 1)); } - // function moveSourcesRight() { - // nodes.forEach(function(node) { - // if (!node.targetLinks.length) { - // node.x = min(node.sourceLinks, function(d) { return d.target.x; }) - 1; - // } - // }); - // } - function moveSinksRight(x) { nodes.forEach(function(node) { if(!node.sourceLinks.length) { @@ -258,7 +250,7 @@ module.exports = function() { .entries(nodes) .map(function(d) { return d.values; }); - // + // initializeNodeDepth(); resolveCollisions(); for(var alpha = 1; iterations > 0; --iterations) { @@ -320,7 +312,7 @@ module.exports = function() { n = nodes.length, i; - // Push any overlapping nodes down. + // Push any overlapping nodes down. nodes.sort(ascendingDepth); for(i = 0; i < n; ++i) { node = nodes[i]; @@ -329,12 +321,12 @@ module.exports = function() { y0 = node.y + node.dy + py; } - // If the bottommost node goes outside the bounds, push it back up. + // If the bottommost node goes outside the bounds, push it back up. dy = y0 - py - size[1]; if(dy > 0) { y0 = node.y -= dy; - // Push any overlapping nodes back up. + // Push any overlapping nodes back up. for(i = n - 2; i >= 0; --i) { node = nodes[i]; dy = node.y + node.dy + py - y0; From 1ad958662804895ffbc76cbe3d6d00e927576153 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 14 Dec 2018 22:36:00 -0500 Subject: [PATCH 06/39] updating to d3-sankey 0.7.1 --- package-lock.json | 23 +++ package.json | 7 +- src/traces/sankey/render.js | 372 ++++++++++++++++++------------------ 3 files changed, 216 insertions(+), 186 deletions(-) diff --git a/package-lock.json b/package-lock.json index 494ba124b4d..07b41d78297 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2222,11 +2222,34 @@ "d3-color": "1" } }, + "d3-path": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.7.tgz", + "integrity": "sha512-q0cW1RpvA5c5ma2rch62mX8AYaiLX0+bdaSM2wxSU9tXjU4DNvkx9qiUvjkuWCj3p22UO/hlPivujqMiR9PDzA==" + }, "d3-quadtree": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, + "d3-sankey": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.7.1.tgz", + "integrity": "sha1-0imDImj8aaf+yEgD6WwiVqYUxSE=", + "requires": { + "d3-array": "1", + "d3-collection": "1", + "d3-shape": "^1.2.0" + } + }, + "d3-shape": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.2.tgz", + "integrity": "sha512-hUGEozlKecFZ2bOSNt7ENex+4Tk9uc/m0TtTEHBvitCBxUNjhzm5hS2GrrVRD/ae4IylSmxGeqX5tWC2rASMlQ==", + "requires": { + "d3-path": "1" + } + }, "d3-timer": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.7.tgz", diff --git a/package.json b/package.json index 4611dc2072d..6d4bf466eed 100644 --- a/package.json +++ b/package.json @@ -56,9 +56,6 @@ ] }, "dependencies": { - "d3-array": "1", - "d3-collection": "1", - "d3-interpolate": "1", "3d-view": "^2.0.0", "alpha-shape": "^1.0.0", "array-range": "^1.0.1", @@ -67,7 +64,11 @@ "convex-hull": "^1.0.3", "country-regex": "^1.1.0", "d3": "^3.5.12", + "d3-array": "1", + "d3-collection": "1", "d3-force": "^1.0.6", + "d3-interpolate": "1", + "d3-sankey": "^0.7.1", "delaunay-triangulate": "^1.1.6", "es6-promise": "^3.0.2", "fast-isnumeric": "^1.1.2", diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 42520ddd4fd..7f21862a011 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -13,7 +13,8 @@ var d3 = require('d3'); var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); -var d3sankey = require('./d3-sankey.js'); +var d3sankey = require('d3-sankey'); +var d3sankeyLinkHorizontal = require('d3').sankeyLinkHorizontal; var d3Force = require('d3-force'); var Lib = require('../../lib'); var gup = require('../../lib/gup'); @@ -78,13 +79,14 @@ function sankeyModel(layout, d, traceIndex) { var nodes = calcData._nodes; var links = calcData._links; - var sankey = d3sankey() + var sankey = d3sankey + .sankey() + .iterations(c.sankeyIterations) .size(horizontal ? [width, height] : [height, width]) .nodeWidth(nodeThickness) .nodePadding(nodePad) .nodes(nodes) - .links(links) - .layout(c.sankeyIterations); + .links(links); if(sankey.nodePadding() < nodePad) { Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.'); @@ -111,8 +113,6 @@ function sankeyModel(layout, d, traceIndex) { translateY: layout.height - domain.y[1] * layout.height + layout.margin.t, dragParallel: horizontal ? height : width, dragPerpendicular: horizontal ? width : height, - nodes: nodes, - links: links, arrangement: trace.arrangement, sankey: sankey, forceLayouts: {}, @@ -123,20 +123,21 @@ function sankeyModel(layout, d, traceIndex) { }; } -function linkModel(uniqueKeys, d, l) { +function linkModel(d, l, i) { var tc = tinycolor(l.color); var basicKey = l.source.label + '|' + l.target.label; - var foundKey = uniqueKeys[basicKey]; - uniqueKeys[basicKey] = (foundKey || 0) + 1; - var key = basicKey + '__' + uniqueKeys[basicKey]; + // var foundKey = uniqueKeys[basicKey]; + // uniqueKeys[basicKey] = (foundKey || 0) + 1; + // var key = basicKey + '__' + uniqueKeys[basicKey]; // for event data l.trace = d.trace; l.curveNumber = d.trace.index; return { - key: key, + key: basicKey, traceId: d.key, + pointNumber: l.pointNumber, link: l, tinyColorHue: Color.tinyRGB(tc), tinyColorAlpha: tc.getAlpha(), @@ -149,25 +150,38 @@ function linkModel(uniqueKeys, d, l) { }; } -function nodeModel(uniqueKeys, d, n) { +function linkPath() { + return d3sankey.sankeyLinkHorizontal() + .source(function(d) { return [d.link.source.x1, d.link.y0];}) + .target(function(d) { return [d.link.target.x0, d.link.y1];}); +} + +function nodeModel(d, n, i) { var tc = tinycolor(n.color), zoneThicknessPad = c.nodePadAcross, zoneLengthPad = d.nodePad / 2, - visibleThickness = n.dx, - visibleLength = Math.max(0.5, n.dy); + visibleThickness = n.x1 - n.x0, + visibleLength = Math.max(0.5, (n.y1 - n.y0)); var basicKey = n.label; - var foundKey = uniqueKeys[basicKey]; - uniqueKeys[basicKey] = (foundKey || 0) + 1; - var key = basicKey + '__' + uniqueKeys[basicKey]; + // var foundKey = uniqueKeys[basicKey]; + // uniqueKeys[basicKey] = (foundKey || 0) + 1; + // var key = basicKey + '__' + uniqueKeys[basicKey]; // for event data n.trace = d.trace; n.curveNumber = d.trace.index; + // additionnal coordinates + n.dx = n.x1 - n.x0; + n.dy = n.y1 - n.y0; return { - key: key, - traceId: d.key, + x0: n.x0, + x1: n.x1, + y0: n.y0, + y1: n.y1, + key: basicKey, + traceId: basicKey, node: n, nodePad: d.nodePad, nodeLineColor: d.nodeLineColor, @@ -192,7 +206,7 @@ function nodeModel(uniqueKeys, d, n) { valueSuffix: d.valueSuffix, sankey: d.sankey, arrangement: d.arrangement, - uniqueNodeLabelPathId: [d.guid, d.key, key].join(' '), + uniqueNodeLabelPathId: [d.guid, d.key].join(' '), interactionState: d.interactionState }; } @@ -202,33 +216,28 @@ function nodeModel(uniqueKeys, d, n) { function updateNodePositions(sankeyNode) { sankeyNode .attr('transform', function(d) { - return 'translate(' + d.node.x.toFixed(3) + ', ' + (d.node.y - d.node.dy / 2).toFixed(3) + ')'; + return 'translate(' + d.x0.toFixed(3) + ', ' + (d.y0).toFixed(3) + ')'; }); } -function linkPath(d) { - var nodes = d.sankey.nodes(); - switchToSankeyFormat(nodes); - var result = d.sankey.link()(d.link); - switchToForceFormat(nodes); - return result; -} - function updateNodeShapes(sankeyNode) { sankeyNode.call(updateNodePositions); } function updateShapes(sankeyNode, sankeyLink) { sankeyNode.call(updateNodeShapes); - sankeyLink.attr('d', linkPath); + sankeyLink.attr('d', linkPath()); } function sizeNode(rect) { - rect.attr('width', function(d) {return d.visibleWidth;}) - .attr('height', function(d) {return d.visibleHeight;}); + rect + // .attr('x', function(d) {return d.x0;}) + // .attr('y', function(d) {return d.y0;}) + .attr('width', function(d) {return d.x1 - d.x0;}) + .attr('height', function(d) {return d.y1 - d.y0;}); } -function salientEnough(d) {return d.link.dy > 1 || d.linkLineWidth > 0;} +function salientEnough(d) {return (d.y0 - d.y1) > 1 || d.linkLineWidth > 0;} function sankeyTransform(d) { var offset = 'translate(' + d.translateX + ',' + d.translateY + ')'; @@ -250,139 +259,139 @@ function textFlip(d) {return d.horizontal ? 'scale(1 1)' : 'scale(-1 1)';} function nodeTextColor(d) {return d.darkBackground && !d.horizontal ? 'rgb(255,255,255)' : 'rgb(0,0,0)';} function nodeTextOffset(d) {return d.horizontal && d.left ? '100%' : '0%';} -// event handling - -function attachPointerEvents(selection, sankey, eventSet) { - selection - .on('.basic', null) // remove any preexisting handlers - .on('mouseover.basic', function(d) { - if(!d.interactionState.dragInProgress) { - eventSet.hover(this, d, sankey); - d.interactionState.hovered = [this, d]; - } - }) - .on('mousemove.basic', function(d) { - if(!d.interactionState.dragInProgress) { - eventSet.follow(this, d); - d.interactionState.hovered = [this, d]; - } - }) - .on('mouseout.basic', function(d) { - if(!d.interactionState.dragInProgress) { - eventSet.unhover(this, d, sankey); - d.interactionState.hovered = false; - } - }) - .on('click.basic', function(d) { - if(d.interactionState.hovered) { - eventSet.unhover(this, d, sankey); - d.interactionState.hovered = false; - } - if(!d.interactionState.dragInProgress) { - eventSet.select(this, d, sankey); - } - }); -} - -function attachDragHandler(sankeyNode, sankeyLink, callbacks) { - - var dragBehavior = d3.behavior.drag() - - .origin(function(d) {return d.node;}) - - .on('dragstart', function(d) { - if(d.arrangement === 'fixed') return; - Lib.raiseToTop(this); - d.interactionState.dragInProgress = d.node; - saveCurrentDragPosition(d.node); - if(d.interactionState.hovered) { - callbacks.nodeEvents.unhover.apply(0, d.interactionState.hovered); - d.interactionState.hovered = false; - } - if(d.arrangement === 'snap') { - var forceKey = d.traceId + '|' + Math.floor(d.node.originalX); - if(d.forceLayouts[forceKey]) { - d.forceLayouts[forceKey].alpha(1); - } else { // make a forceLayout iff needed - attachForce(sankeyNode, forceKey, d); - } - startForce(sankeyNode, sankeyLink, d, forceKey); - } - }) - - .on('drag', function(d) { - if(d.arrangement === 'fixed') return; - var x = d3.event.x; - var y = d3.event.y; - if(d.arrangement === 'snap') { - d.node.x = x; - d.node.y = y; - } else { - if(d.arrangement === 'freeform') { - d.node.x = x; - } - d.node.y = Math.max(d.node.dy / 2, Math.min(d.size - d.node.dy / 2, y)); - } - saveCurrentDragPosition(d.node); - if(d.arrangement !== 'snap') { - d.sankey.relayout(); - updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); - } - }) - - .on('dragend', function(d) { - d.interactionState.dragInProgress = false; - }); - - sankeyNode - .on('.drag', null) // remove possible previous handlers - .call(dragBehavior); -} - -function attachForce(sankeyNode, forceKey, d) { - var nodes = d.sankey.nodes().filter(function(n) {return n.originalX === d.node.originalX;}); - d.forceLayouts[forceKey] = d3Force.forceSimulation(nodes) - .alphaDecay(0) - .force('collide', d3Force.forceCollide() - .radius(function(n) {return n.dy / 2 + d.nodePad / 2;}) - .strength(1) - .iterations(c.forceIterations)) - .force('constrain', snappingForce(sankeyNode, forceKey, nodes, d)) - .stop(); -} - -function startForce(sankeyNode, sankeyLink, d, forceKey) { - window.requestAnimationFrame(function faster() { - for(var i = 0; i < c.forceTicksPerFrame; i++) { - d.forceLayouts[forceKey].tick(); - } - d.sankey.relayout(); - updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); - if(d.forceLayouts[forceKey].alpha() > 0) { - window.requestAnimationFrame(faster); - } - }); -} - -function snappingForce(sankeyNode, forceKey, nodes, d) { - return function _snappingForce() { - var maxVelocity = 0; - for(var i = 0; i < nodes.length; i++) { - var n = nodes[i]; - if(n === d.interactionState.dragInProgress) { // constrain node position to the dragging pointer - n.x = n.lastDraggedX; - n.y = n.lastDraggedY; - } else { - n.vx = (n.originalX - n.x) / c.forceTicksPerFrame; // snap to layer - n.y = Math.min(d.size - n.dy / 2, Math.max(n.dy / 2, n.y)); // constrain to extent - } - maxVelocity = Math.max(maxVelocity, Math.abs(n.vx), Math.abs(n.vy)); - } - if(!d.interactionState.dragInProgress && maxVelocity < 0.1 && d.forceLayouts[forceKey].alpha() > 0) { - d.forceLayouts[forceKey].alpha(0); - } - }; -} +// // event handling +// +// function attachPointerEvents(selection, sankey, eventSet) { +// selection +// .on('.basic', null) // remove any preexisting handlers +// .on('mouseover.basic', function(d) { +// if(!d.interactionState.dragInProgress) { +// eventSet.hover(this, d, sankey); +// d.interactionState.hovered = [this, d]; +// } +// }) +// .on('mousemove.basic', function(d) { +// if(!d.interactionState.dragInProgress) { +// eventSet.follow(this, d); +// d.interactionState.hovered = [this, d]; +// } +// }) +// .on('mouseout.basic', function(d) { +// if(!d.interactionState.dragInProgress) { +// eventSet.unhover(this, d, sankey); +// d.interactionState.hovered = false; +// } +// }) +// .on('click.basic', function(d) { +// if(d.interactionState.hovered) { +// eventSet.unhover(this, d, sankey); +// d.interactionState.hovered = false; +// } +// if(!d.interactionState.dragInProgress) { +// eventSet.select(this, d, sankey); +// } +// }); +// } +// +// function attachDragHandler(sankeyNode, sankeyLink, callbacks) { +// +// var dragBehavior = d3.behavior.drag() +// +// .origin(function(d) {return d.node;}) +// +// .on('dragstart', function(d) { +// if(d.arrangement === 'fixed') return; +// Lib.raiseToTop(this); +// d.interactionState.dragInProgress = d.node; +// saveCurrentDragPosition(d.node); +// if(d.interactionState.hovered) { +// callbacks.nodeEvents.unhover.apply(0, d.interactionState.hovered); +// d.interactionState.hovered = false; +// } +// if(d.arrangement === 'snap') { +// var forceKey = d.traceId + '|' + Math.floor(d.node.originalX); +// if(d.forceLayouts[forceKey]) { +// d.forceLayouts[forceKey].alpha(1); +// } else { // make a forceLayout iff needed +// attachForce(sankeyNode, forceKey, d); +// } +// startForce(sankeyNode, sankeyLink, d, forceKey); +// } +// }) +// +// .on('drag', function(d) { +// if(d.arrangement === 'fixed') return; +// var x = d3.event.x; +// var y = d3.event.y; +// if(d.arrangement === 'snap') { +// d.node.x = x; +// d.node.y = y; +// } else { +// if(d.arrangement === 'freeform') { +// d.node.x = x; +// } +// d.node.y = Math.max(d.node.dy / 2, Math.min(d.size - d.node.dy / 2, y)); +// } +// saveCurrentDragPosition(d.node); +// if(d.arrangement !== 'snap') { +// d.sankey.relayout(); +// updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); +// } +// }) +// +// .on('dragend', function(d) { +// d.interactionState.dragInProgress = false; +// }); +// +// sankeyNode +// .on('.drag', null) // remove possible previous handlers +// .call(dragBehavior); +// } +// +// function attachForce(sankeyNode, forceKey, d) { +// var nodes = d.sankey.nodes().filter(function(n) {return n.originalX === d.node.originalX;}); +// d.forceLayouts[forceKey] = d3Force.forceSimulation(nodes) +// .alphaDecay(0) +// .force('collide', d3Force.forceCollide() +// .radius(function(n) {return n.dy / 2 + d.nodePad / 2;}) +// .strength(1) +// .iterations(c.forceIterations)) +// .force('constrain', snappingForce(sankeyNode, forceKey, nodes, d)) +// .stop(); +// } +// +// function startForce(sankeyNode, sankeyLink, d, forceKey) { +// window.requestAnimationFrame(function faster() { +// for(var i = 0; i < c.forceTicksPerFrame; i++) { +// d.forceLayouts[forceKey].tick(); +// } +// d.sankey.relayout(); +// updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); +// if(d.forceLayouts[forceKey].alpha() > 0) { +// window.requestAnimationFrame(faster); +// } +// }); +// } +// +// function snappingForce(sankeyNode, forceKey, nodes, d) { +// return function _snappingForce() { +// var maxVelocity = 0; +// for(var i = 0; i < nodes.length; i++) { +// var n = nodes[i]; +// if(n === d.interactionState.dragInProgress) { // constrain node position to the dragging pointer +// n.x = n.lastDraggedX; +// n.y = n.lastDraggedY; +// } else { +// n.vx = (n.originalX - n.x) / c.forceTicksPerFrame; // snap to layer +// n.y = Math.min(d.size - n.dy / 2, Math.max(n.dy / 2, n.y)); // constrain to extent +// } +// maxVelocity = Math.max(maxVelocity, Math.abs(n.vx), Math.abs(n.vy)); +// } +// if(!d.interactionState.dragInProgress && maxVelocity < 0.1 && d.forceLayouts[forceKey].alpha() > 0) { +// d.forceLayouts[forceKey].alpha(0); +// } +// }; +// } // scene graph module.exports = function(svg, calcData, layout, callbacks) { @@ -420,18 +429,15 @@ module.exports = function(svg, calcData, layout, callbacks) { .style('fill', 'none'); var sankeyLink = sankeyLinks.selectAll('.' + c.cn.sankeyLink) - .data(function(d) { - var uniqueKeys = {}; - return d.sankey.links() + .data(function(d) { + return d.sankey().links .filter(function(l) {return l.value;}) - .map(linkModel.bind(null, uniqueKeys, d)); - }, keyFun); - - sankeyLink.enter() - .append('path') - .classed(c.cn.sankeyLink, true) - .attr('d', linkPath) - .call(attachPointerEvents, sankey, callbacks.linkEvents); + .map(linkModel.bind(null, d)); + }, keyFun) + sankeyLink + .enter().append('path') + .attr('d', linkPath()); + // .call(attachPointerEvents, sankey, callbacks.linkEvents); sankeyLink .style('stroke', function(d) { @@ -445,8 +451,8 @@ module.exports = function(svg, calcData, layout, callbacks) { .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); sankeyLink.transition() - .ease(c.ease).duration(c.duration) - .attr('d', linkPath); + .ease(c.ease).duration(c.duration) + .attr('d', linkPath()); sankeyLink.exit().transition() .ease(c.ease).duration(c.duration) @@ -471,22 +477,22 @@ module.exports = function(svg, calcData, layout, callbacks) { var sankeyNode = sankeyNodeSet.selectAll('.' + c.cn.sankeyNode) .data(function(d) { - var nodes = d.sankey.nodes(); + var nodes = d.sankey().nodes; var uniqueKeys = {}; persistOriginalPlace(nodes); return nodes .filter(function(n) {return n.value;}) - .map(nodeModel.bind(null, uniqueKeys, d)); + .map(nodeModel.bind(null, d)); }, keyFun); sankeyNode.enter() .append('g') .classed(c.cn.sankeyNode, true) .call(updateNodePositions) - .call(attachPointerEvents, sankey, callbacks.nodeEvents); + //.call(attachPointerEvents, sankey, callbacks.nodeEvents); sankeyNode - .call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink + //.call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink sankeyNode.transition() .ease(c.ease).duration(c.duration) From ee7088adec59aeab81ea582e570bc967ed8c023d Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 17 Dec 2018 15:52:43 -0500 Subject: [PATCH 07/39] generate link path appropriately, reattach mouse events --- src/traces/sankey/render.js | 98 ++++++++++++++++++++----------------- 1 file changed, 52 insertions(+), 46 deletions(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 7f21862a011..43be8bd01f2 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -126,6 +126,7 @@ function sankeyModel(layout, d, traceIndex) { function linkModel(d, l, i) { var tc = tinycolor(l.color); var basicKey = l.source.label + '|' + l.target.label; + var key = basicKey + '__' + i; // var foundKey = uniqueKeys[basicKey]; // uniqueKeys[basicKey] = (foundKey || 0) + 1; // var key = basicKey + '__' + uniqueKeys[basicKey]; @@ -135,7 +136,7 @@ function linkModel(d, l, i) { l.curveNumber = d.trace.index; return { - key: basicKey, + key: key, traceId: d.key, pointNumber: l.pointNumber, link: l, @@ -166,7 +167,7 @@ function nodeModel(d, n, i) { var basicKey = n.label; // var foundKey = uniqueKeys[basicKey]; // uniqueKeys[basicKey] = (foundKey || 0) + 1; - // var key = basicKey + '__' + uniqueKeys[basicKey]; + var key = basicKey + '__' + i; // for event data n.trace = d.trace; @@ -180,8 +181,8 @@ function nodeModel(d, n, i) { x1: n.x1, y0: n.y0, y1: n.y1, - key: basicKey, - traceId: basicKey, + key: key, + traceId: d.key, node: n, nodePad: d.nodePad, nodeLineColor: d.nodeLineColor, @@ -237,7 +238,7 @@ function sizeNode(rect) { .attr('height', function(d) {return d.y1 - d.y0;}); } -function salientEnough(d) {return (d.y0 - d.y1) > 1 || d.linkLineWidth > 0;} +function salientEnough(d) {return (d.y0 - d.y1) > 1 || d.link.width > 0 || d.linkLineWidth > 0;} function sankeyTransform(d) { var offset = 'translate(' + d.translateX + ',' + d.translateY + ')'; @@ -260,38 +261,38 @@ function nodeTextColor(d) {return d.darkBackground && !d.horizontal ? 'rgb(255,2 function nodeTextOffset(d) {return d.horizontal && d.left ? '100%' : '0%';} // // event handling -// -// function attachPointerEvents(selection, sankey, eventSet) { -// selection -// .on('.basic', null) // remove any preexisting handlers -// .on('mouseover.basic', function(d) { -// if(!d.interactionState.dragInProgress) { -// eventSet.hover(this, d, sankey); -// d.interactionState.hovered = [this, d]; -// } -// }) -// .on('mousemove.basic', function(d) { -// if(!d.interactionState.dragInProgress) { -// eventSet.follow(this, d); -// d.interactionState.hovered = [this, d]; -// } -// }) -// .on('mouseout.basic', function(d) { -// if(!d.interactionState.dragInProgress) { -// eventSet.unhover(this, d, sankey); -// d.interactionState.hovered = false; -// } -// }) -// .on('click.basic', function(d) { -// if(d.interactionState.hovered) { -// eventSet.unhover(this, d, sankey); -// d.interactionState.hovered = false; -// } -// if(!d.interactionState.dragInProgress) { -// eventSet.select(this, d, sankey); -// } -// }); -// } + +function attachPointerEvents(selection, sankey, eventSet) { + selection + .on('.basic', null) // remove any preexisting handlers + .on('mouseover.basic', function(d) { + if(!d.interactionState.dragInProgress) { + eventSet.hover(this, d, sankey); + d.interactionState.hovered = [this, d]; + } + }) + .on('mousemove.basic', function(d) { + if(!d.interactionState.dragInProgress) { + eventSet.follow(this, d); + d.interactionState.hovered = [this, d]; + } + }) + .on('mouseout.basic', function(d) { + if(!d.interactionState.dragInProgress) { + eventSet.unhover(this, d, sankey); + d.interactionState.hovered = false; + } + }) + .on('click.basic', function(d) { + if(d.interactionState.hovered) { + eventSet.unhover(this, d, sankey); + d.interactionState.hovered = false; + } + if(!d.interactionState.dragInProgress) { + eventSet.select(this, d, sankey); + } + }); +} // // function attachDragHandler(sankeyNode, sankeyLink, callbacks) { // @@ -433,22 +434,27 @@ module.exports = function(svg, calcData, layout, callbacks) { return d.sankey().links .filter(function(l) {return l.value;}) .map(linkModel.bind(null, d)); - }, keyFun) + }, keyFun); + sankeyLink .enter().append('path') - .attr('d', linkPath()); - // .call(attachPointerEvents, sankey, callbacks.linkEvents); + .classed(c.cn.sankeyLink, true) + .attr('d', linkPath()) + .call(attachPointerEvents, sankey, callbacks.linkEvents); sankeyLink .style('stroke', function(d) { - return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; + // return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; + return d.tinyColorHue; }) .style('stroke-opacity', function(d) { - return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; + // return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; + return d.tinyColorAlpha; }) - .style('stroke-width', function(d) {return salientEnough(d) ? d.linkLineWidth : 1;}) - .style('fill', function(d) {return d.tinyColorHue;}) - .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); + .style('stroke-width', function(d) {return salientEnough(d) ? d.link.width : 1;}); + // Uncomment the following if the link isn't a simple SVG path element + // .style('fill', function(d) {return d.tinyColorHue;}) + // .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); sankeyLink.transition() .ease(c.ease).duration(c.duration) @@ -489,7 +495,7 @@ module.exports = function(svg, calcData, layout, callbacks) { .append('g') .classed(c.cn.sankeyNode, true) .call(updateNodePositions) - //.call(attachPointerEvents, sankey, callbacks.nodeEvents); + .call(attachPointerEvents, sankey, callbacks.nodeEvents); sankeyNode //.call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink From 5418d25c757e77963d0aa7e1eedc39ff64cbab09 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Wed, 19 Dec 2018 17:27:09 -0500 Subject: [PATCH 08/39] fix dragging, snapping, pushing and pass all tests --- package-lock.json | 5 +- package.json | 2 +- src/traces/sankey/d3-sankey.js | 364 ----------------- src/traces/sankey/render.js | 377 ++++++++++-------- test/image/baselines/sankey_large_padding.png | Bin 52187 -> 52384 bytes test/jasmine/tests/sankey_d3_sankey_test.js | 13 +- 6 files changed, 214 insertions(+), 547 deletions(-) delete mode 100644 src/traces/sankey/d3-sankey.js diff --git a/package-lock.json b/package-lock.json index 07b41d78297..9cb0763e50f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2233,9 +2233,8 @@ "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, "d3-sankey": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.7.1.tgz", - "integrity": "sha1-0imDImj8aaf+yEgD6WwiVqYUxSE=", + "version": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", + "from": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", "requires": { "d3-array": "1", "d3-collection": "1", diff --git a/package.json b/package.json index 6d4bf466eed..6ff9698aae3 100644 --- a/package.json +++ b/package.json @@ -64,11 +64,11 @@ "convex-hull": "^1.0.3", "country-regex": "^1.1.0", "d3": "^3.5.12", + "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", "d3-array": "1", "d3-collection": "1", "d3-force": "^1.0.6", "d3-interpolate": "1", - "d3-sankey": "^0.7.1", "delaunay-triangulate": "^1.1.6", "es6-promise": "^3.0.2", "fast-isnumeric": "^1.1.2", diff --git a/src/traces/sankey/d3-sankey.js b/src/traces/sankey/d3-sankey.js deleted file mode 100644 index c1ee9bc2f2a..00000000000 --- a/src/traces/sankey/d3-sankey.js +++ /dev/null @@ -1,364 +0,0 @@ -/** -* Copyright 2012-2018, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -/** -Copyright 2015, Mike Bostock -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - -* Neither the name of the author nor the names of contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -*/ - -/** -The following is a fork of https://github.com/plotly/d3-sankey which itself -was a fork of https://github.com/d3/d3-sankey from Mike Bostock. -*/ - -'use strict'; - -var d3array = require('d3-array'); -var ascending = d3array.ascending; -var min = d3array.min; -var sum = d3array.sum; -var max = d3array.max; -var nest = require('d3-collection').nest; -var interpolateNumber = require('d3-interpolate').interpolateNumber; - -// sort links' breadth (ie top to bottom in a column), based on their source nodes' breadths -function ascendingSourceDepth(a, b) { - return ascendingBreadth(a.source, b.source) || (a.originalIndex - b.originalIndex); -} - -// sort links' breadth (ie top to bottom in a column), based on their target nodes' breadths -function ascendingTargetDepth(a, b) { - return ascendingBreadth(a.target, b.target) || (a.originalIndex - b.originalIndex); -} - -function ascendingBreadth(a, b) { - return a.y - b.y; -} - -function value(d) { - return d.value; -} - -function nodeCenter(node) { - return node.y + node.dy / 2; -} - -function weightedSource(link) { - return nodeCenter(link.source) * link.value; -} - -function weightedTarget(link) { - return nodeCenter(link.target) * link.value; -} - -module.exports = function() { - var sankey = {}, - dx = 24, // nodeWidth - py = 8, // nodePadding - size = [1, 1], - nodes = [], - links = [], - maxPaddedSpace = 2 / 3; // Defined as a fraction of the total available space - - sankey.nodeWidth = function(_) { - if(!arguments.length) return dx; - dx = +_; - return sankey; - }; - - sankey.nodePadding = function(_) { - if(!arguments.length) return py; - py = +_; - return sankey; - }; - - sankey.nodes = function(_) { - if(!arguments.length) return nodes; - nodes = _; - return sankey; - }; - - sankey.links = function(_) { - if(!arguments.length) return links; - links = _; - return sankey; - }; - - sankey.size = function(_) { - if(!arguments.length) return size; - size = _; - return sankey; - }; - - sankey.layout = function(iterations) { - computeNodeLinks(); - computeNodeValues(); - computeNodeDepths(); - computeNodeBreadths(iterations); - computeLinkBreadths(); - return sankey; - }; - - sankey.relayout = function() { - computeLinkBreadths(); - return sankey; - }; - - sankey.link = function() { - var curvature = 0.5; - - function link(d) { - var x0 = d.source.x + d.source.dx, - x1 = d.target.x, - xi = interpolateNumber(x0, x1), - x2 = xi(curvature), - x3 = xi(1 - curvature), - y0a = d.source.y + d.sy, - y0b = y0a + d.dy, - y1a = d.target.y + d.ty, - y1b = y1a + d.dy; - return 'M' + x0 + ',' + y0a + - 'C' + x2 + ',' + y0a + - ' ' + x3 + ',' + y1a + - ' ' + x1 + ',' + y1a + - 'L' + x1 + ',' + y1b + - 'C' + x3 + ',' + y1b + - ' ' + x2 + ',' + y0b + - ' ' + x0 + ',' + y0b + - 'Z'; - } - - link.curvature = function(_) { - if(!arguments.length) return curvature; - curvature = +_; - return link; - }; - - return link; - }; - - // Populate the sourceLinks and targetLinks for each node. - // Also, if the source and target are not objects, assume they are indices. - function computeNodeLinks() { - nodes.forEach(function(node) { - node.sourceLinks = []; - node.targetLinks = []; - }); - links.forEach(function(link, i) { - var source = link.source, - target = link.target; - if(typeof source === 'number') source = link.source = nodes[link.source]; - if(typeof target === 'number') target = link.target = nodes[link.target]; - link.originalIndex = i; - source.sourceLinks.push(link); - target.targetLinks.push(link); - }); - } - - // Compute the value (size) of each node by summing the associated links. - function computeNodeValues() { - nodes.forEach(function(node) { - node.value = Math.max( - sum(node.sourceLinks, value), - sum(node.targetLinks, value) - ); - }); - } - - // Iteratively assign the breadth (x-position) for each node. - // Nodes are assigned the maximum breadth of incoming neighbors plus one; - // nodes with no incoming links are assigned breadth zero, while - // nodes with no outgoing links are assigned the maximum breadth. - function computeNodeDepths() { - var remainingNodes = nodes, - nextNodes, - x = 0; - - function processNode(node) { - node.depth = x; - node.x = x; - node.dx = dx; - node.sourceLinks.forEach(function(link) { - if(nextNodes.indexOf(link.target) < 0) { - nextNodes.push(link.target); - } - }); - } - - while(remainingNodes.length) { - nextNodes = []; - remainingNodes.forEach(processNode); - remainingNodes = nextNodes; - ++x; - } - - // - moveSinksRight(x); - scaleNodeBreadths((size[0] - dx) / (x - 1)); - } - - function moveSinksRight(x) { - nodes.forEach(function(node) { - if(!node.sourceLinks.length) { - node.depth = x - 1; - node.x = x - 1; - } - }); - } - - function scaleNodeBreadths(kx) { - nodes.forEach(function(node) { - node.x *= kx; - }); - } - - function computeNodeBreadths(iterations) { - var nodesByBreadth = nest() - .key(function(d) { return d.x; }) - .sortKeys(ascending) - .entries(nodes) - .map(function(d) { return d.values; }); - - // - initializeNodeDepth(); - resolveCollisions(); - for(var alpha = 1; iterations > 0; --iterations) { - relaxRightToLeft(alpha *= 0.99); - resolveCollisions(); - relaxLeftToRight(alpha); - resolveCollisions(); - } - - function initializeNodeDepth() { - var L = max(nodesByBreadth, function(nodes) { - return nodes.length; - }); - var maxNodePadding = maxPaddedSpace * size[1] / (L - 1); - if(py > maxNodePadding) py = maxNodePadding; - var ky = min(nodesByBreadth, function(nodes) { - return (size[1] - (nodes.length - 1) * py) / sum(nodes, value); - }); - - nodesByBreadth.forEach(function(nodes) { - nodes.forEach(function(node, i) { - node.y = i; - node.dy = node.value * ky; - }); - }); - - links.forEach(function(link) { - link.dy = link.value * ky; - }); - } - - function relaxLeftToRight(alpha) { - nodesByBreadth.forEach(function(nodes) { - nodes.forEach(function(node) { - if(node.targetLinks.length) { - var y = sum(node.targetLinks, weightedSource) / sum(node.targetLinks, value); - node.y += (y - nodeCenter(node)) * alpha; - } - }); - }); - } - - function relaxRightToLeft(alpha) { - nodesByBreadth.slice().reverse().forEach(function(nodes) { - nodes.forEach(function(node) { - if(node.sourceLinks.length) { - var y = sum(node.sourceLinks, weightedTarget) / sum(node.sourceLinks, value); - node.y += (y - nodeCenter(node)) * alpha; - } - }); - }); - } - - function resolveCollisions() { - nodesByBreadth.forEach(function(nodes) { - var node, - dy, - y0 = 0, - n = nodes.length, - i; - - // Push any overlapping nodes down. - nodes.sort(ascendingDepth); - for(i = 0; i < n; ++i) { - node = nodes[i]; - dy = y0 - node.y; - if(dy > 0) node.y += dy; - y0 = node.y + node.dy + py; - } - - // If the bottommost node goes outside the bounds, push it back up. - dy = y0 - py - size[1]; - if(dy > 0) { - y0 = node.y -= dy; - - // Push any overlapping nodes back up. - for(i = n - 2; i >= 0; --i) { - node = nodes[i]; - dy = node.y + node.dy + py - y0; - if(dy > 0) node.y -= dy; - y0 = node.y; - } - } - }); - } - - function ascendingDepth(a, b) { - return a.y - b.y; - } - } - - function computeLinkBreadths() { - nodes.forEach(function(node) { - node.sourceLinks.sort(ascendingTargetDepth); - node.targetLinks.sort(ascendingSourceDepth); - }); - nodes.forEach(function(node) { - var sy = 0, ty = 0; - node.sourceLinks.forEach(function(link) { - link.sy = sy; - sy += link.dy; - }); - node.targetLinks.forEach(function(link) { - link.ty = ty; - ty += link.dy; - }); - }); - } - - return sankey; -}; diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 43be8bd01f2..87a5b9f486c 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -14,54 +14,13 @@ var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); var d3sankey = require('d3-sankey'); -var d3sankeyLinkHorizontal = require('d3').sankeyLinkHorizontal; var d3Force = require('d3-force'); var Lib = require('../../lib'); var gup = require('../../lib/gup'); var keyFun = gup.keyFun; var repeat = gup.repeat; var unwrap = gup.unwrap; - -// basic data utilities - -function persistOriginalPlace(nodes) { - var i, distinctLayerPositions = []; - for(i = 0; i < nodes.length; i++) { - nodes[i].originalX = nodes[i].x; - nodes[i].originalY = nodes[i].y; - if(distinctLayerPositions.indexOf(nodes[i].x) === -1) { - distinctLayerPositions.push(nodes[i].x); - } - } - distinctLayerPositions.sort(function(a, b) {return a - b;}); - for(i = 0; i < nodes.length; i++) { - nodes[i].originalLayerIndex = distinctLayerPositions.indexOf(nodes[i].originalX); - nodes[i].originalLayer = nodes[i].originalLayerIndex / (distinctLayerPositions.length - 1); - } -} - -function saveCurrentDragPosition(d) { - d.lastDraggedX = d.x; - d.lastDraggedY = d.y; -} - -function sameLayer(d) { - return function(n) {return n.node.originalX === d.node.originalX;}; -} - -function switchToForceFormat(nodes) { - // force uses x, y as centers - for(var i = 0; i < nodes.length; i++) { - nodes[i].y = nodes[i].y + nodes[i].dy / 2; - } -} - -function switchToSankeyFormat(nodes) { - // sankey uses x, y as top left - for(var i = 0; i < nodes.length; i++) { - nodes[i].y = nodes[i].y - nodes[i].dy / 2; - } -} +var interpolateNumber = require('d3-interpolate').interpolateNumber; // view models @@ -88,12 +47,11 @@ function sankeyModel(layout, d, traceIndex) { .nodes(nodes) .links(links); + var graph = sankey(); if(sankey.nodePadding() < nodePad) { Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.'); } - switchToForceFormat(nodes); - return { key: traceIndex, trace: trace, @@ -115,6 +73,7 @@ function sankeyModel(layout, d, traceIndex) { dragPerpendicular: horizontal ? width : height, arrangement: trace.arrangement, sankey: sankey, + graph: graph, forceLayouts: {}, interactionState: { dragInProgress: false, @@ -127,9 +86,6 @@ function linkModel(d, l, i) { var tc = tinycolor(l.color); var basicKey = l.source.label + '|' + l.target.label; var key = basicKey + '__' + i; - // var foundKey = uniqueKeys[basicKey]; - // uniqueKeys[basicKey] = (foundKey || 0) + 1; - // var key = basicKey + '__' + uniqueKeys[basicKey]; // for event data l.trace = d.trace; @@ -152,9 +108,29 @@ function linkModel(d, l, i) { } function linkPath() { - return d3sankey.sankeyLinkHorizontal() - .source(function(d) { return [d.link.source.x1, d.link.y0];}) - .target(function(d) { return [d.link.target.x0, d.link.y1];}); + var curvature = 0.5; + + function shape(d) { + var x0 = d.link.source.x1, + x1 = d.link.target.x0, + xi = interpolateNumber(x0, x1), + x2 = xi(curvature), + x3 = xi(1 - curvature), + y0a = d.link.y0 - d.link.width / 2, + y0b = d.link.y0 + d.link.width / 2, + y1a = d.link.y1 - d.link.width / 2, + y1b = d.link.y1 + d.link.width / 2; + return 'M' + x0 + ',' + y0a + + 'C' + x2 + ',' + y0a + + ' ' + x3 + ',' + y1a + + ' ' + x1 + ',' + y1a + + 'L' + x1 + ',' + y1b + + 'C' + x3 + ',' + y1b + + ' ' + x2 + ',' + y0b + + ' ' + x0 + ',' + y0b + + 'Z'; + } + return shape; } function nodeModel(d, n, i) { @@ -165,8 +141,6 @@ function nodeModel(d, n, i) { visibleLength = Math.max(0.5, (n.y1 - n.y0)); var basicKey = n.label; - // var foundKey = uniqueKeys[basicKey]; - // uniqueKeys[basicKey] = (foundKey || 0) + 1; var key = basicKey + '__' + i; // for event data @@ -176,11 +150,8 @@ function nodeModel(d, n, i) { // additionnal coordinates n.dx = n.x1 - n.x0; n.dy = n.y1 - n.y0; + return { - x0: n.x0, - x1: n.x1, - y0: n.y0, - y1: n.y1, key: key, traceId: d.key, node: n, @@ -206,8 +177,9 @@ function nodeModel(d, n, i) { valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, + graph: d.sankey(), arrangement: d.arrangement, - uniqueNodeLabelPathId: [d.guid, d.key].join(' '), + uniqueNodeLabelPathId: [d.guid, d.key, key].join('_'), interactionState: d.interactionState }; } @@ -217,7 +189,7 @@ function nodeModel(d, n, i) { function updateNodePositions(sankeyNode) { sankeyNode .attr('transform', function(d) { - return 'translate(' + d.x0.toFixed(3) + ', ' + (d.y0).toFixed(3) + ')'; + return 'translate(' + d.node.x0.toFixed(3) + ', ' + (d.node.y0).toFixed(3) + ')'; }); } @@ -232,13 +204,11 @@ function updateShapes(sankeyNode, sankeyLink) { function sizeNode(rect) { rect - // .attr('x', function(d) {return d.x0;}) - // .attr('y', function(d) {return d.y0;}) - .attr('width', function(d) {return d.x1 - d.x0;}) - .attr('height', function(d) {return d.y1 - d.y0;}); + .attr('width', function(d) {return d.node.x1 - d.node.x0;}) + .attr('height', function(d) {return d.visibleHeight;}); } -function salientEnough(d) {return (d.y0 - d.y1) > 1 || d.link.width > 0 || d.linkLineWidth > 0;} +function salientEnough(d) {return (d.link.width > 1 || d.linkLineWidth > 0);} function sankeyTransform(d) { var offset = 'translate(' + d.translateX + ',' + d.translateY + ')'; @@ -293,106 +263,171 @@ function attachPointerEvents(selection, sankey, eventSet) { } }); } -// -// function attachDragHandler(sankeyNode, sankeyLink, callbacks) { -// -// var dragBehavior = d3.behavior.drag() -// -// .origin(function(d) {return d.node;}) -// -// .on('dragstart', function(d) { -// if(d.arrangement === 'fixed') return; -// Lib.raiseToTop(this); -// d.interactionState.dragInProgress = d.node; -// saveCurrentDragPosition(d.node); -// if(d.interactionState.hovered) { -// callbacks.nodeEvents.unhover.apply(0, d.interactionState.hovered); -// d.interactionState.hovered = false; -// } -// if(d.arrangement === 'snap') { -// var forceKey = d.traceId + '|' + Math.floor(d.node.originalX); -// if(d.forceLayouts[forceKey]) { -// d.forceLayouts[forceKey].alpha(1); -// } else { // make a forceLayout iff needed -// attachForce(sankeyNode, forceKey, d); -// } -// startForce(sankeyNode, sankeyLink, d, forceKey); -// } -// }) -// -// .on('drag', function(d) { -// if(d.arrangement === 'fixed') return; -// var x = d3.event.x; -// var y = d3.event.y; -// if(d.arrangement === 'snap') { -// d.node.x = x; -// d.node.y = y; -// } else { -// if(d.arrangement === 'freeform') { -// d.node.x = x; -// } -// d.node.y = Math.max(d.node.dy / 2, Math.min(d.size - d.node.dy / 2, y)); -// } -// saveCurrentDragPosition(d.node); -// if(d.arrangement !== 'snap') { -// d.sankey.relayout(); -// updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); -// } -// }) -// -// .on('dragend', function(d) { -// d.interactionState.dragInProgress = false; -// }); -// -// sankeyNode -// .on('.drag', null) // remove possible previous handlers -// .call(dragBehavior); -// } -// -// function attachForce(sankeyNode, forceKey, d) { -// var nodes = d.sankey.nodes().filter(function(n) {return n.originalX === d.node.originalX;}); -// d.forceLayouts[forceKey] = d3Force.forceSimulation(nodes) -// .alphaDecay(0) -// .force('collide', d3Force.forceCollide() -// .radius(function(n) {return n.dy / 2 + d.nodePad / 2;}) -// .strength(1) -// .iterations(c.forceIterations)) -// .force('constrain', snappingForce(sankeyNode, forceKey, nodes, d)) -// .stop(); -// } -// -// function startForce(sankeyNode, sankeyLink, d, forceKey) { -// window.requestAnimationFrame(function faster() { -// for(var i = 0; i < c.forceTicksPerFrame; i++) { -// d.forceLayouts[forceKey].tick(); -// } -// d.sankey.relayout(); -// updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); -// if(d.forceLayouts[forceKey].alpha() > 0) { -// window.requestAnimationFrame(faster); -// } -// }); -// } -// -// function snappingForce(sankeyNode, forceKey, nodes, d) { -// return function _snappingForce() { -// var maxVelocity = 0; -// for(var i = 0; i < nodes.length; i++) { -// var n = nodes[i]; -// if(n === d.interactionState.dragInProgress) { // constrain node position to the dragging pointer -// n.x = n.lastDraggedX; -// n.y = n.lastDraggedY; -// } else { -// n.vx = (n.originalX - n.x) / c.forceTicksPerFrame; // snap to layer -// n.y = Math.min(d.size - n.dy / 2, Math.max(n.dy / 2, n.y)); // constrain to extent -// } -// maxVelocity = Math.max(maxVelocity, Math.abs(n.vx), Math.abs(n.vy)); -// } -// if(!d.interactionState.dragInProgress && maxVelocity < 0.1 && d.forceLayouts[forceKey].alpha() > 0) { -// d.forceLayouts[forceKey].alpha(0); -// } -// }; -// } + +function attachDragHandler(sankeyNode, sankeyLink, callbacks) { + var dragBehavior = d3.behavior.drag() + .origin(function(d) { + return { + x: d.node.x0, + y: d.node.y0 + }; + }) + + .on('dragstart', function(d) { + if(d.arrangement === 'fixed') return; + Lib.raiseToTop(this); + d.interactionState.dragInProgress = d.node; + + saveCurrentDragPosition(d.node); + if(d.interactionState.hovered) { + callbacks.nodeEvents.unhover.apply(0, d.interactionState.hovered); + d.interactionState.hovered = false; + } + if(d.arrangement === 'snap') { + var forceKey = d.traceId + '|' + d.key; + if(d.forceLayouts[forceKey]) { + d.forceLayouts[forceKey].alpha(1); + } else { // make a forceLayout if needed + attachForce(sankeyNode, forceKey, d); + } + startForce(sankeyNode, sankeyLink, d, forceKey); + } + }) + + .on('drag', function(d) { + if(d.arrangement === 'fixed') return; + var x = d3.event.x; + var y = d3.event.y; + if(d.arrangement === 'snap') { + d.node.x0 = x - d.visibleWidth / 2; + d.node.x1 = x + d.visibleWidth / 2; + d.node.y0 = y - d.visibleHeight / 2; + d.node.y1 = y + d.visibleHeight / 2; + } else { + if(d.arrangement === 'freeform') { + d.node.x0 = x - d.visibleWidth / 2; + d.node.x1 = x + d.visibleWidth / 2; + // d.x0 = x; + } + // d.node.y = Math.max(d.node.dy / 2, Math.min(d.size - d.node.dy / 2, y)); + d.node.y0 = Math.max(0, Math.min(d.size - d.visibleHeight, y)); + d.node.y1 = d.node.y0 + d.visibleHeight; + } + + saveCurrentDragPosition(d.node); + if(d.arrangement !== 'snap') { + d.sankey.update(d.graph); + updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); + } + }) + + .on('dragend', function(d) { + d.interactionState.dragInProgress = false; + }); + + sankeyNode + .on('.drag', null) // remove possible previous handlers + .call(dragBehavior); +} + +function attachForce(sankeyNode, forceKey, d) { + // Attach force to nodes in the same column (same x coordinate) + switchToForceFormat(d.graph.nodes); + var nodes = d.graph.nodes.filter(function(n) {return n.originalX === d.node.originalX;}); + d.forceLayouts[forceKey] = d3Force.forceSimulation(nodes) + .alphaDecay(0) + .force('collide', d3Force.forceCollide() + .radius(function(n) {return n.dy / 2 + d.nodePad / 2;}) + .strength(1) + .iterations(c.forceIterations)) + .force('constrain', snappingForce(sankeyNode, forceKey, nodes, d)) + .stop(); +} + +function startForce(sankeyNode, sankeyLink, d, forceKey) { + window.requestAnimationFrame(function faster() { + var i; + for(i = 0; i < c.forceTicksPerFrame; i++) { + d.forceLayouts[forceKey].tick(); + } + + var nodes = d.graph.nodes; + switchToSankeyFormat(nodes); + + d.sankey.update(d.graph); + updateShapes(sankeyNode.filter(sameLayer(d)), sankeyLink); + + if(d.forceLayouts[forceKey].alpha() > 0) { + window.requestAnimationFrame(faster); + } + }); +} + +function snappingForce(sankeyNode, forceKey, nodes, d) { + return function _snappingForce() { + var maxVelocity = 0; + for(var i = 0; i < nodes.length; i++) { + var n = nodes[i]; + if(n === d.interactionState.dragInProgress) { // constrain node position to the dragging pointer + n.x = n.lastDraggedX; + n.y = n.lastDraggedY; + } else { + n.vx = (n.originalX - n.x) / c.forceTicksPerFrame; // snap to layer + n.y = Math.min(d.size - n.dy / 2, Math.max(n.dy / 2, n.y)); // constrain to extent + } + maxVelocity = Math.max(maxVelocity, Math.abs(n.vx), Math.abs(n.vy)); + } + if(!d.interactionState.dragInProgress && maxVelocity < 0.1 && d.forceLayouts[forceKey].alpha() > 0) { + d.forceLayouts[forceKey].alpha(0); + } + }; +} + +// basic data utilities + +function persistOriginalPlace(nodes) { + var i, distinctLayerPositions = []; + for(i = 0; i < nodes.length; i++) { + nodes[i].originalX = (nodes[i].x0 + nodes[i].x1) / 2; + nodes[i].originalY = (nodes[i].y0 + nodes[i].y1) / 2; + if(distinctLayerPositions.indexOf(nodes[i].originalX) === -1) { + distinctLayerPositions.push(nodes[i].originalX); + } + } + distinctLayerPositions.sort(function(a, b) {return a - b;}); + for(i = 0; i < nodes.length; i++) { + nodes[i].originalLayerIndex = distinctLayerPositions.indexOf(nodes[i].originalX); + nodes[i].originalLayer = nodes[i].originalLayerIndex / (distinctLayerPositions.length - 1); + } +} + +function saveCurrentDragPosition(d) { + d.lastDraggedX = d.x0 + d.dx / 2; + d.lastDraggedY = d.y0 + d.dy / 2; +} + +function sameLayer(d) { + return function(n) {return n.node.originalX === d.node.originalX;}; +} + +function switchToForceFormat(nodes) { + // force uses x, y as centers + for(var i = 0; i < nodes.length; i++) { + nodes[i].y = nodes[i].y0 + nodes[i].dy / 2; + nodes[i].x = nodes[i].x0 + nodes[i].dx / 2; + } +} + +function switchToSankeyFormat(nodes) { + // sankey uses x0, x1, y0, y1 + for(var i = 0; i < nodes.length; i++) { + nodes[i].y0 = nodes[i].y - nodes[i].dy / 2; + nodes[i].y1 = nodes[i].y0 + nodes[i].dy; + + nodes[i].x0 = nodes[i].x - nodes[i].dx / 2; + nodes[i].x1 = nodes[i].x0 + nodes[i].dx; + } +} // scene graph module.exports = function(svg, calcData, layout, callbacks) { @@ -444,17 +479,14 @@ module.exports = function(svg, calcData, layout, callbacks) { sankeyLink .style('stroke', function(d) { - // return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; - return d.tinyColorHue; + return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; }) .style('stroke-opacity', function(d) { - // return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; - return d.tinyColorAlpha; + return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; }) - .style('stroke-width', function(d) {return salientEnough(d) ? d.link.width : 1;}); - // Uncomment the following if the link isn't a simple SVG path element - // .style('fill', function(d) {return d.tinyColorHue;}) - // .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); + .style('stroke-width', function(d) {return salientEnough(d) ? d.linkLineWidth : 1;}) + .style('fill', function(d) {return d.tinyColorHue;}) + .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); sankeyLink.transition() .ease(c.ease).duration(c.duration) @@ -484,7 +516,6 @@ module.exports = function(svg, calcData, layout, callbacks) { var sankeyNode = sankeyNodeSet.selectAll('.' + c.cn.sankeyNode) .data(function(d) { var nodes = d.sankey().nodes; - var uniqueKeys = {}; persistOriginalPlace(nodes); return nodes .filter(function(n) {return n.value;}) @@ -498,7 +529,7 @@ module.exports = function(svg, calcData, layout, callbacks) { .call(attachPointerEvents, sankey, callbacks.nodeEvents); sankeyNode - //.call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink + .call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink sankeyNode.transition() .ease(c.ease).duration(c.duration) diff --git a/test/image/baselines/sankey_large_padding.png b/test/image/baselines/sankey_large_padding.png index 38d263f799df4f8cec4bec6b2230daaed14601b9..b27b24c12eb8b973a2d0a24fbbee0ccd269d5a9d 100644 GIT binary patch delta 24190 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 P23{tHrwz*W9HRaU?>FuU delta 24043 zcmZ5|WmHsO*e@}_&_g#2-QC>{(%mgcS%e6OZUt$i5tNb?5E*Ka5JZ%aQecn}si7P0 z;s4%ut-J0Q7K<>_%BXptPcX!0&3mln zLJ7%AjV8zW0%ueGqASX#4ik;pd`wG5sp+9%@)?4wAu1wXQgXra2e>AAJm0+Ywsy;6 z(xLs-q1H0ks^_$3G2--h`(F2DA-1OhIlL1mRNrK}iasYvjhP*FTq+6OGtp-97~O>c zx@xXlGYu>`0yeIhxX_(xD&wB#a!0kbI@ z8iq+=u0x6#q3k?pcJg^Gie)JL=`UM>fr<}n%jztXlyBagcJKN7_QmFC$`|yKVmRTw zk(ld6gM`~7B6AEmLJmGTc-%nOXpSIZgAp?WPTe~PW&6rF3VU6$MaZ(Z6)PN~$AbB2 z*VQZVDNTl5r5=@?lwrFn#=cWG8cB%S*KL2>X_vpa`?YpHpIrBlu`xZe+|*6frWEmj zOCL?5lNviir5>Rcq1caA3xzp2`3O%Il@o<`m?KAL*#44Q1aHqal>xx*O`F`|4{esX zA8)i7%HozY)?b{;2W`{hk}&4wlICAG$v8{)>A$c@P#FFoz4Tn%yhMtZvE9z!%I5jQ z{vP!>hM^QR*WZ3N1b**i{oR)q!V<_PA1kWaRa0sdugFX$%1BAbE`fQDWd97=o(r^J zkIoIA;|tqZzLxUy$!CBg%-_8+W!fCdt1!ububsx6z!OC zqjLnh8_6!4|4rfH zo%kNxBT$JAK^OVfAvO}m6Asa_(rC2h^B!o|FTXHs9ap|Zd^fjm;zO*8#!0|%ZqNRt z*%eO)?ab$w6Wa7*seLok36Qc4Wk*!!sZQ|JN7BeK_=HN;YuhMj@u9AlV@L(=`^|sw zUY8F>>Yotm2w0nT?S28cOFkqAx%W9UVEv+(^1Yua<+!b%{yOYHHlSHbL45sfGgP&y z$LviR`zlIM%BN=+jx4}X*x`f3s%*l0$rZeZLmET%-|1lW*+GyM^R%Ypa7$#$Kj>!H z(S-i{qaE>a1&ZR3l_Zgfs}Q@_+??h`a!&=;%)oVWAzre$(*P^_gM?&DOQ(EL;ZtEt zTrT|ZizECO4AO1HX86MSbZGrIf7L>Ag`NE8=uPn(Sc=qG&d}4bDym?~s&Rs1vZk9s zOIMeBu8$^-fWt1N-o~hsjsm%={?L^LPmv6sMO!Z1As-4?Q23^38hWI(SB@ z&E021^pyYo4A5kgyT0T4Z#!_Lo!rMQv$#muFf0nV-g1iKG(Ii9aIr3a_sQ0UIKx0I z-modyS)%ix!rotADxO%IA$Um*ROl_L;fOQV zjq#F_cj%Mtxk)tpZ}5a8jujb(1YWqQ_=0sdPrBn#Lsf2nrE)WelR0bJ)ZVTQGrWrj z=yt4QE0TCt8KtTl{??9OMrreq%c$7b66b;^pANAvFB`nj9#C?+`042u@_5E6z>-mt zHC+gc4YA2qxpQ|wDtT(^3C@)BZcijyY@Dz9-_k@%|6C1uH{n zMM@+z;FFHG{9RSX!E6>WCZR$8o1QZ5fkIHFF(iCbEMJuNx=xF;fBrU)2?Sth)9@SQ zUjn0$@3xs-hNpei4bT3cTP2m1cJcEBD=Sg??WzLA?%Qbb@9+;S~v^&|C≪* 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 Ul9HNaD Date: Sun, 6 Jan 2019 21:40:31 -0500 Subject: [PATCH 09/39] initial rough integration of d3-sankey-circular --- package-lock.json | 10 +++ package.json | 1 + src/traces/sankey/calc.js | 11 +-- src/traces/sankey/render.js | 84 +++++++++++++---------- test/image/baselines/sankey_circular.png | Bin 0 -> 32752 bytes test/image/mocks/sankey_circular.json | 30 ++++++++ 6 files changed, 91 insertions(+), 45 deletions(-) create mode 100644 test/image/baselines/sankey_circular.png create mode 100644 test/image/mocks/sankey_circular.json diff --git a/package-lock.json b/package-lock.json index 9cb0763e50f..116b120b78e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2241,6 +2241,16 @@ "d3-shape": "^1.2.0" } }, + "d3-sankey-circular": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.26.0.tgz", + "integrity": "sha512-kr5q2q/aHIzqPhNk7X/UsxLxssOWTxUkgkWqsP6AHFsqRx4FmLkfunBOIK3PfEEH8uCD0FGbk0oFudOK1RKDCA==", + "requires": { + "d3-array": "^1.2.1", + "d3-collection": "^1.0.4", + "d3-shape": "^1.2.0" + } + }, "d3-shape": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.2.2.tgz", diff --git a/package.json b/package.json index 6ff9698aae3..cf191ac74da 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", + "d3-sankey-circular": "^0.26.0", "d3-array": "1", "d3-collection": "1", "d3-force": "^1.0.6", diff --git a/src/traces/sankey/calc.js b/src/traces/sankey/calc.js index 8aaee62f8c3..f7aa0079826 100644 --- a/src/traces/sankey/calc.js +++ b/src/traces/sankey/calc.js @@ -39,15 +39,8 @@ function circularityPresent(nodeList, sources, targets) { module.exports = function calc(gd, trace) { - if(circularityPresent(trace.node.label, trace.link.source, trace.link.target)) { - Lib.error('Circularity is present in the Sankey data. Removing all nodes and links.'); - trace.link.label = []; - trace.link.source = []; - trace.link.target = []; - trace.link.value = []; - trace.link.color = []; - trace.node.label = []; - trace.node.color = []; + if(!circularityPresent(trace.node.label, trace.link.source, trace.link.target)) { + // TODO: swap to original sankey engine } var result = convertToD3Sankey(trace); diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 87a5b9f486c..2a73b59c432 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -13,14 +13,16 @@ var d3 = require('d3'); var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); -var d3sankey = require('d3-sankey'); +// TODO: allow swapping Sankey engine +// var d3Sankey = require('d3-sankey'); +var d3SankeyCircular = require('d3-sankey-circular'); var d3Force = require('d3-force'); var Lib = require('../../lib'); var gup = require('../../lib/gup'); var keyFun = gup.keyFun; var repeat = gup.repeat; var unwrap = gup.unwrap; -var interpolateNumber = require('d3-interpolate').interpolateNumber; +// var interpolateNumber = require('d3-interpolate').interpolateNumber; // view models @@ -38,12 +40,13 @@ function sankeyModel(layout, d, traceIndex) { var nodes = calcData._nodes; var links = calcData._links; - var sankey = d3sankey - .sankey() + var sankey = d3SankeyCircular + .sankeyCircular() .iterations(c.sankeyIterations) .size(horizontal ? [width, height] : [height, width]) .nodeWidth(nodeThickness) .nodePadding(nodePad) + .circularLinkGap(2) .nodes(nodes) .links(links); @@ -108,29 +111,34 @@ function linkModel(d, l, i) { } function linkPath() { - var curvature = 0.5; - - function shape(d) { - var x0 = d.link.source.x1, - x1 = d.link.target.x0, - xi = interpolateNumber(x0, x1), - x2 = xi(curvature), - x3 = xi(1 - curvature), - y0a = d.link.y0 - d.link.width / 2, - y0b = d.link.y0 + d.link.width / 2, - y1a = d.link.y1 - d.link.width / 2, - y1b = d.link.y1 + d.link.width / 2; - return 'M' + x0 + ',' + y0a + - 'C' + x2 + ',' + y0a + - ' ' + x3 + ',' + y1a + - ' ' + x1 + ',' + y1a + - 'L' + x1 + ',' + y1b + - 'C' + x3 + ',' + y1b + - ' ' + x2 + ',' + y0b + - ' ' + x0 + ',' + y0b + - 'Z'; + function circular(d) { + return d.link.path; } - return shape; + + return circular; + // var curvature = 0.5; + + // function shape(d) { + // var x0 = d.link.source.x1, + // x1 = d.link.target.x0, + // xi = interpolateNumber(x0, x1), + // x2 = xi(curvature), + // x3 = xi(1 - curvature), + // y0a = d.link.y0 - d.link.width / 2, + // y0b = d.link.y0 + d.link.width / 2, + // y1a = d.link.y1 - d.link.width / 2, + // y1b = d.link.y1 + d.link.width / 2; + // return 'M' + x0 + ',' + y0a + + // 'C' + x2 + ',' + y0a + + // ' ' + x3 + ',' + y1a + + // ' ' + x1 + ',' + y1a + + // 'L' + x1 + ',' + y1b + + // 'C' + x3 + ',' + y1b + + // ' ' + x2 + ',' + y0b + + // ' ' + x0 + ',' + y0b + + // 'Z'; + // } + // return shape; } function nodeModel(d, n, i) { @@ -177,7 +185,7 @@ function nodeModel(d, n, i) { valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, - graph: d.sankey(), + graph: d.sankey.graph, arrangement: d.arrangement, uniqueNodeLabelPathId: [d.guid, d.key, key].join('_'), interactionState: d.interactionState @@ -466,7 +474,8 @@ module.exports = function(svg, calcData, layout, callbacks) { var sankeyLink = sankeyLinks.selectAll('.' + c.cn.sankeyLink) .data(function(d) { - return d.sankey().links + var links = d.graph.links; + return links .filter(function(l) {return l.value;}) .map(linkModel.bind(null, d)); }, keyFun); @@ -479,14 +488,17 @@ module.exports = function(svg, calcData, layout, callbacks) { sankeyLink .style('stroke', function(d) { - return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; + return d.tinyColorHue; + // return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; }) .style('stroke-opacity', function(d) { - return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; + return d.tinyColorAlpha; + // return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; }) - .style('stroke-width', function(d) {return salientEnough(d) ? d.linkLineWidth : 1;}) - .style('fill', function(d) {return d.tinyColorHue;}) - .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); + // .style('stroke-width', function(d) {return salientEnough(d) ? d.linkLineWidth : 1;}) + //.style('fill', function(d) {return d.link.color;}) + //.style('fill-opacity', function(d) {return d.tinyColorAlpha;}) + .style('stroke-width', function(d) {return d.link.width;}); sankeyLink.transition() .ease(c.ease).duration(c.duration) @@ -515,7 +527,7 @@ module.exports = function(svg, calcData, layout, callbacks) { var sankeyNode = sankeyNodeSet.selectAll('.' + c.cn.sankeyNode) .data(function(d) { - var nodes = d.sankey().nodes; + var nodes = d.graph.nodes; persistOriginalPlace(nodes); return nodes .filter(function(n) {return n.value;}) @@ -528,8 +540,8 @@ module.exports = function(svg, calcData, layout, callbacks) { .call(updateNodePositions) .call(attachPointerEvents, sankey, callbacks.nodeEvents); - sankeyNode - .call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink + // sankeyNode + // .call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink sankeyNode.transition() .ease(c.ease).duration(c.duration) diff --git a/test/image/baselines/sankey_circular.png b/test/image/baselines/sankey_circular.png new file mode 100644 index 0000000000000000000000000000000000000000..cc88fd36f61de4b1e5adb614904ae9aeb6422a1a GIT binary patch literal 32752 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 Date: Mon, 7 Jan 2019 15:27:27 -0500 Subject: [PATCH 10/39] implement dragging --- package-lock.json | 5 ++--- package.json | 2 +- src/traces/sankey/render.js | 13 +++++++++---- test/image/baselines/sankey_circular.png | Bin 32752 -> 30931 bytes test/image/mocks/sankey_circular.json | 8 ++------ 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/package-lock.json b/package-lock.json index 116b120b78e..471a58d4f8f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2242,9 +2242,8 @@ } }, "d3-sankey-circular": { - "version": "0.26.0", - "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.26.0.tgz", - "integrity": "sha512-kr5q2q/aHIzqPhNk7X/UsxLxssOWTxUkgkWqsP6AHFsqRx4FmLkfunBOIK3PfEEH8uCD0FGbk0oFudOK1RKDCA==", + "version": "git://github.com/antoinerg/d3-sankey-circular.git#a298acf674f0a9c7158243d45814cd8060dad728", + "from": "git://github.com/antoinerg/d3-sankey-circular.git#a298acf674f0a9c7158243d45814cd8060dad728", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", diff --git a/package.json b/package.json index cf191ac74da..2fdf22066e7 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "d3-sankey-circular": "^0.26.0", + "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#a298acf674f0a9c7158243d45814cd8060dad728", "d3-array": "1", "d3-collection": "1", "d3-force": "^1.0.6", diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 2a73b59c432..b4479548df5 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -48,9 +48,13 @@ function sankeyModel(layout, d, traceIndex) { .nodePadding(nodePad) .circularLinkGap(2) .nodes(nodes) - .links(links); + .links(links) + .nodeId(function(d) { + return d.pointNumber; + }); var graph = sankey(); + if(sankey.nodePadding() < nodePad) { Lib.warn('node.pad was reduced to ', sankey.nodePadding(), ' to fit within the figure.'); } @@ -160,6 +164,7 @@ function nodeModel(d, n, i) { n.dy = n.y1 - n.y0; return { + index: n.pointNumber, key: key, traceId: d.key, node: n, @@ -185,7 +190,7 @@ function nodeModel(d, n, i) { valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, - graph: d.sankey.graph, + graph: d.graph, arrangement: d.arrangement, uniqueNodeLabelPathId: [d.guid, d.key, key].join('_'), interactionState: d.interactionState @@ -540,8 +545,8 @@ module.exports = function(svg, calcData, layout, callbacks) { .call(updateNodePositions) .call(attachPointerEvents, sankey, callbacks.nodeEvents); - // sankeyNode - // .call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink + sankeyNode + .call(attachDragHandler, sankeyLink, callbacks); // has to be here as it binds sankeyLink sankeyNode.transition() .ease(c.ease).duration(c.duration) diff --git a/test/image/baselines/sankey_circular.png b/test/image/baselines/sankey_circular.png index cc88fd36f61de4b1e5adb614904ae9aeb6422a1a..8b0773282c7e3a2ca2cea9a1ddad5a656d3b1c30 100644 GIT binary patch literal 30931 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 literal 32752 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 Date: Mon, 7 Jan 2019 17:14:06 -0500 Subject: [PATCH 11/39] fallback to d3-sankey if no circularity is present --- src/traces/sankey/calc.js | 7 +- src/traces/sankey/convert-to-d3-sankey.js | 5 +- src/traces/sankey/render.js | 109 +++++++++------- test/jasmine/tests/sankey_d3_sankey_test.js | 7 ++ test/jasmine/tests/sankey_test.js | 132 ++++++++++---------- 5 files changed, 142 insertions(+), 118 deletions(-) diff --git a/src/traces/sankey/calc.js b/src/traces/sankey/calc.js index f7aa0079826..da0b8cadafd 100644 --- a/src/traces/sankey/calc.js +++ b/src/traces/sankey/calc.js @@ -38,14 +38,15 @@ function circularityPresent(nodeList, sources, targets) { } module.exports = function calc(gd, trace) { - - if(!circularityPresent(trace.node.label, trace.link.source, trace.link.target)) { - // TODO: swap to original sankey engine + var circular = false; + if(circularityPresent(trace.node.label, trace.link.source, trace.link.target)) { + circular = true; } var result = convertToD3Sankey(trace); return wrap({ + circular: circular, _nodes: result.nodes, _links: result.links }); diff --git a/src/traces/sankey/convert-to-d3-sankey.js b/src/traces/sankey/convert-to-d3-sankey.js index 98ec340061d..ae528fa4378 100644 --- a/src/traces/sankey/convert-to-d3-sankey.js +++ b/src/traces/sankey/convert-to-d3-sankey.js @@ -35,9 +35,12 @@ module.exports = function(trace) { target = +target; linkedNodes[source] = linkedNodes[target] = true; + var label = ''; + if(linkSpec.label && linkSpec.label[i]) label = linkSpec.label[i]; + links.push({ pointNumber: i, - label: linkSpec.label[i], + label: label, color: hasLinkColorArray ? linkSpec.color[i] : linkSpec.color, source: source, target: target, diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index b4479548df5..b22b2e807ad 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -13,8 +13,7 @@ var d3 = require('d3'); var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); -// TODO: allow swapping Sankey engine -// var d3Sankey = require('d3-sankey'); +var d3Sankey = require('d3-sankey'); var d3SankeyCircular = require('d3-sankey-circular'); var d3Force = require('d3-force'); var Lib = require('../../lib'); @@ -22,7 +21,7 @@ var gup = require('../../lib/gup'); var keyFun = gup.keyFun; var repeat = gup.repeat; var unwrap = gup.unwrap; -// var interpolateNumber = require('d3-interpolate').interpolateNumber; +var interpolateNumber = require('d3-interpolate').interpolateNumber; // view models @@ -40,18 +39,26 @@ function sankeyModel(layout, d, traceIndex) { var nodes = calcData._nodes; var links = calcData._links; - var sankey = d3SankeyCircular - .sankeyCircular() - .iterations(c.sankeyIterations) - .size(horizontal ? [width, height] : [height, width]) - .nodeWidth(nodeThickness) - .nodePadding(nodePad) - .circularLinkGap(2) - .nodes(nodes) - .links(links) - .nodeId(function(d) { - return d.pointNumber; - }); + var circular = calcData.circular; + var sankey; + if(circular) { + sankey = d3SankeyCircular + .sankeyCircular() + .circularLinkGap(2) + .nodeId(function(d) { + return d.pointNumber; + }); + } else { + sankey = d3Sankey.sankey(); + } + + sankey + .iterations(c.sankeyIterations) + .size(horizontal ? [width, height] : [height, width]) + .nodeWidth(nodeThickness) + .nodePadding(nodePad) + .nodes(nodes) + .links(links); var graph = sankey(); @@ -60,6 +67,7 @@ function sankeyModel(layout, d, traceIndex) { } return { + circular: circular, key: traceIndex, trace: trace, guid: Math.floor(1e12 * (1 + Math.random())), @@ -99,6 +107,7 @@ function linkModel(d, l, i) { l.curveNumber = d.trace.index; return { + circular: d.circular, key: key, traceId: d.key, pointNumber: l.pointNumber, @@ -115,34 +124,32 @@ function linkModel(d, l, i) { } function linkPath() { - function circular(d) { - return d.link.path; + var curvature = 0.5; + function path(d) { + if(d.circular) { + return d.link.path; + } else { + var x0 = d.link.source.x1, + x1 = d.link.target.x0, + xi = interpolateNumber(x0, x1), + x2 = xi(curvature), + x3 = xi(1 - curvature), + y0a = d.link.y0 - d.link.width / 2, + y0b = d.link.y0 + d.link.width / 2, + y1a = d.link.y1 - d.link.width / 2, + y1b = d.link.y1 + d.link.width / 2; + return 'M' + x0 + ',' + y0a + + 'C' + x2 + ',' + y0a + + ' ' + x3 + ',' + y1a + + ' ' + x1 + ',' + y1a + + 'L' + x1 + ',' + y1b + + 'C' + x3 + ',' + y1b + + ' ' + x2 + ',' + y0b + + ' ' + x0 + ',' + y0b + + 'Z'; + } } - - return circular; - // var curvature = 0.5; - - // function shape(d) { - // var x0 = d.link.source.x1, - // x1 = d.link.target.x0, - // xi = interpolateNumber(x0, x1), - // x2 = xi(curvature), - // x3 = xi(1 - curvature), - // y0a = d.link.y0 - d.link.width / 2, - // y0b = d.link.y0 + d.link.width / 2, - // y1a = d.link.y1 - d.link.width / 2, - // y1b = d.link.y1 + d.link.width / 2; - // return 'M' + x0 + ',' + y0a + - // 'C' + x2 + ',' + y0a + - // ' ' + x3 + ',' + y1a + - // ' ' + x1 + ',' + y1a + - // 'L' + x1 + ',' + y1b + - // 'C' + x3 + ',' + y1b + - // ' ' + x2 + ',' + y0b + - // ' ' + x0 + ',' + y0b + - // 'Z'; - // } - // return shape; + return path; } function nodeModel(d, n, i) { @@ -493,17 +500,23 @@ module.exports = function(svg, calcData, layout, callbacks) { sankeyLink .style('stroke', function(d) { + if(!d.circular) return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; return d.tinyColorHue; - // return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; }) .style('stroke-opacity', function(d) { + if(!d.circular) return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; return d.tinyColorAlpha; - // return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; }) - // .style('stroke-width', function(d) {return salientEnough(d) ? d.linkLineWidth : 1;}) - //.style('fill', function(d) {return d.link.color;}) - //.style('fill-opacity', function(d) {return d.tinyColorAlpha;}) - .style('stroke-width', function(d) {return d.link.width;}); + .style('fill', function(d) { + if(!d.circular) return d.tinyColorHue; + }) + .style('fill-opacity', function(d) { + if(!d.circular) return d.tinyColorAlpha; + }) + .style('stroke-width', function(d) { + if(d.circular) return d.link.width; + return salientEnough(d) ? d.linkLineWidth : 1; + }); sankeyLink.transition() .ease(c.ease).duration(c.duration) diff --git a/test/jasmine/tests/sankey_d3_sankey_test.js b/test/jasmine/tests/sankey_d3_sankey_test.js index 41ee87abf9f..378325d9d64 100644 --- a/test/jasmine/tests/sankey_d3_sankey_test.js +++ b/test/jasmine/tests/sankey_d3_sankey_test.js @@ -94,6 +94,13 @@ describe('d3-sankey', function() { expect(node_names).toEqual(['node0', 'node1', 'node2', 'node3', 'node4']); }); + it('keep a list of nodes with x values', function() { + var node_names = s().nodes.map(function(obj) { + return Math.floor(obj.x0); + }); + expect(node_names).toEqual([0, 0, 381, 762, 1144]); + }); + it('keep a list of links', function() { var link_widths = s().links.map(function(obj) { return (obj.width); diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index 4f881126619..7c8c7843610 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -239,72 +239,72 @@ describe('sankey tests', function() { }); }); - describe('sankey calc', function() { - - function _calc(trace) { - var gd = { data: [trace] }; - - supplyAllDefaults(gd); - var fullTrace = gd._fullData[0]; - Sankey.calc(gd, fullTrace); - return fullTrace; - } - - var base = { type: 'sankey' }; - - describe('remove nodes if encountering circularity', function() { - var errors; - - beforeEach(function() { - errors = []; - spyOn(Lib, 'error').and.callFake(function(msg) { - errors.push(msg); - }); - }); - - it('removing a single self-pointing node', function() { - expect(errors.length).toBe(0); - - var fullTrace = _calc(Lib.extendDeep({}, base, { - node: { - label: ['a'] - }, - link: { - value: [1], - source: [0], - target: [0] - } - })); - - expect(fullTrace.node.label).toEqual([], 'node label(s) removed'); - expect(fullTrace.link.value).toEqual([], 'link value(s) removed'); - expect(fullTrace.link.source).toEqual([], 'link source(s) removed'); - expect(fullTrace.link.target).toEqual([], 'link target(s) removed'); - expect(errors.length).toBe(1); - }); - - it('removing everything if detecting a circle', function() { - expect(errors.length).toBe(0); - - var fullTrace = _calc(Lib.extendDeep({}, base, { - node: { - label: ['a', 'b', 'c', 'd', 'e'] - }, - link: { - value: [1, 1, 1, 1, 1, 1, 1, 1], - source: [0, 1, 2, 3], - target: [1, 2, 0, 4] - } - })); - - expect(fullTrace.node.label).toEqual([], 'node label(s) removed'); - expect(fullTrace.link.value).toEqual([], 'link value(s) removed'); - expect(fullTrace.link.source).toEqual([], 'link source(s) removed'); - expect(fullTrace.link.target).toEqual([], 'link target(s) removed'); - expect(errors.length).toBe(1); - }); - }); - }); + // describe('sankey calc', function() { + // + // function _calc(trace) { + // var gd = { data: [trace] }; + // + // supplyAllDefaults(gd); + // var fullTrace = gd._fullData[0]; + // Sankey.calc(gd, fullTrace); + // return fullTrace; + // } + // + // var base = { type: 'sankey' }; + // + // describe('remove nodes if encountering circularity', function() { + // var errors; + // + // beforeEach(function() { + // errors = []; + // spyOn(Lib, 'error').and.callFake(function(msg) { + // errors.push(msg); + // }); + // }); + // + // it('removing a single self-pointing node', function() { + // expect(errors.length).toBe(0); + // + // var fullTrace = _calc(Lib.extendDeep({}, base, { + // node: { + // label: ['a'] + // }, + // link: { + // value: [1], + // source: [0], + // target: [0] + // } + // })); + // + // expect(fullTrace.node.label).toEqual([], 'node label(s) removed'); + // expect(fullTrace.link.value).toEqual([], 'link value(s) removed'); + // expect(fullTrace.link.source).toEqual([], 'link source(s) removed'); + // expect(fullTrace.link.target).toEqual([], 'link target(s) removed'); + // expect(errors.length).toBe(1); + // }); + // + // it('removing everything if detecting a circle', function() { + // expect(errors.length).toBe(0); + // + // var fullTrace = _calc(Lib.extendDeep({}, base, { + // node: { + // label: ['a', 'b', 'c', 'd', 'e'] + // }, + // link: { + // value: [1, 1, 1, 1, 1, 1, 1, 1], + // source: [0, 1, 2, 3], + // target: [1, 2, 0, 4] + // } + // })); + // + // expect(fullTrace.node.label).toEqual([], 'node label(s) removed'); + // expect(fullTrace.link.value).toEqual([], 'link value(s) removed'); + // expect(fullTrace.link.source).toEqual([], 'link source(s) removed'); + // expect(fullTrace.link.target).toEqual([], 'link target(s) removed'); + // expect(errors.length).toBe(1); + // }); + // }); + // }); describe('lifecycle methods', function() { afterEach(destroyGraphDiv); From ed87295ab3711dfb01e36071a9d9090fba7ef06e Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 8 Jan 2019 14:28:55 -0500 Subject: [PATCH 12/39] testing features of d3-sankey-circular --- .../tests/sankey_d3_sankey_circular_test.js | 74 +++++++++++++++++++ test/jasmine/tests/sankey_d3_sankey_test.js | 2 +- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 test/jasmine/tests/sankey_d3_sankey_circular_test.js diff --git a/test/jasmine/tests/sankey_d3_sankey_circular_test.js b/test/jasmine/tests/sankey_d3_sankey_circular_test.js new file mode 100644 index 00000000000..b25c91fc21b --- /dev/null +++ b/test/jasmine/tests/sankey_d3_sankey_circular_test.js @@ -0,0 +1,74 @@ +// var Plotly = require('@lib/index'); +// var attributes = require('@src/traces/sankey/attributes'); + +var d3SankeyCircular = require('d3-sankey-circular'); +var mockCircular = require('@mocks/sankey_circular.json'); +var convertToD3Sankey = require('@src/traces/sankey/convert-to-d3-sankey'); + +describe('d3-sankey-ciruclar', function() { + var data, sankey, graph; + + beforeEach(function() { + data = convertToD3Sankey(mockCircular.data[0]); + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .circularLinkGap(2) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); + + function checkArray(key, result) { + var value = graph.nodes.map(function(obj) { + return obj[key]; + }); + expect(value).toEqual(result, 'invalid property named ' + key); + } + + function checkRoundedArray(key, result, msg) { + var value = graph.nodes.map(function(obj) { + return Math.round(obj[key]); + }); + expect(value).toEqual(result, msg); + } + + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(2, 'there are two circular links'); + }); + + it('keep a list of nodes with positions in integer (col, height)', function() { + checkArray('column', [0, 0, 2, 3, 1, 1]); + checkArray('height', [1, 3, 1, 0, 2, 0]); + }); + + it('keep a list of nodes with positions in x and y', function() { + checkRoundedArray('x0', [72, 72, 267, 365, 169, 169]); + checkRoundedArray('y0', [303, 86, 72, 109, 86, 359]); + }); + + it('supports column reordering', function() { + var reorder = [ 2, 2, 1, 1, 0, 0 ]; + + var a = graph.nodes[0].x0; + sankey.nodeAlign(function(node) { + return reorder[node.pointNumber]; + }); + graph = sankey(); + checkArray('column', [2, 2, 1, 1, 0, 0]); + checkArray('height', [1, 3, 1, 0, 2, 0]); + var b = graph.nodes[0].x0; + expect(a).not.toEqual(b); + }); + +}); diff --git a/test/jasmine/tests/sankey_d3_sankey_test.js b/test/jasmine/tests/sankey_d3_sankey_test.js index d8097dbb4de..14023b781bf 100644 --- a/test/jasmine/tests/sankey_d3_sankey_test.js +++ b/test/jasmine/tests/sankey_d3_sankey_test.js @@ -94,7 +94,7 @@ describe('d3-sankey', function() { expect(nodeNames).toEqual(['node0', 'node1', 'node2', 'node3', 'node4']); }); - it('keep a list of nodes with x values', function() { + it('keep a list of nodes with x values', function() { var nodeNames = s().nodes.map(function(obj) { return Math.floor(obj.x0); }); From c1404fb57c64c6f3ab7b1b223e651e17687b00d7 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 8 Jan 2019 14:52:49 -0500 Subject: [PATCH 13/39] change stroke-opacity on hover --- src/traces/sankey/plot.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/traces/sankey/plot.js b/src/traces/sankey/plot.js index 65611bf7b82..d0b84b381da 100644 --- a/src/traces/sankey/plot.js +++ b/src/traces/sankey/plot.js @@ -73,12 +73,14 @@ function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { var label = sankeyLink.datum().link.label; sankeyLink.style('fill-opacity', 0.4); + sankeyLink.style('stroke-opacity', 0.4); if(label) { ownTrace(sankey, d) .selectAll('.' + cn.sankeyLink) .filter(function(l) {return l.link.label === label;}) - .style('fill-opacity', 0.4); + .style('fill-opacity', 0.4) + .style('stroke-opacity', 0.4); } if(visitNodes) { @@ -94,12 +96,13 @@ function linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) { var label = sankeyLink.datum().link.label; sankeyLink.style('fill-opacity', function(d) {return d.tinyColorAlpha;}); - + sankeyLink.style('stroke-opacity', function(d) {return d.tinyColorAlpha;}); if(label) { ownTrace(sankey, d) .selectAll('.' + cn.sankeyLink) .filter(function(l) {return l.link.label === label;}) - .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); + .style('fill-opacity', function(d) {return d.tinyColorAlpha;}) + .style('stroke-opacity', function(d) {return d.tinyColorAlpha;}); } if(visitNodes) { From d268b7364134809b6dacbcc4c09a2d22928f0d7e Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 8 Jan 2019 17:51:38 -0500 Subject: [PATCH 14/39] use index as unique identifier for nodes --- src/traces/sankey/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index f7034f700bf..83d996a4913 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -46,7 +46,7 @@ function sankeyModel(layout, d, traceIndex) { .sankeyCircular() .circularLinkGap(2) .nodeId(function(d) { - return d.pointNumber; + return d.index; }); } else { sankey = d3Sankey.sankey(); From 09d2aa6366c7b28f12c92a08b0a1e87515ec65a9 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 12:23:11 -0500 Subject: [PATCH 15/39] delete tests dealing with removal of circular nodes --- test/jasmine/tests/sankey_test.js | 105 +++++++++++------------------- 1 file changed, 39 insertions(+), 66 deletions(-) diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index 3ebaa185279..d4c9ca8bae9 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -239,72 +239,45 @@ describe('sankey tests', function() { }); }); - // describe('sankey calc', function() { - // - // function _calc(trace) { - // var gd = { data: [trace] }; - // - // supplyAllDefaults(gd); - // var fullTrace = gd._fullData[0]; - // Sankey.calc(gd, fullTrace); - // return fullTrace; - // } - // - // var base = { type: 'sankey' }; - // - // describe('remove nodes if encountering circularity', function() { - // var errors; - // - // beforeEach(function() { - // errors = []; - // spyOn(Lib, 'error').and.callFake(function(msg) { - // errors.push(msg); - // }); - // }); - // - // it('removing a single self-pointing node', function() { - // expect(errors.length).toBe(0); - // - // var fullTrace = _calc(Lib.extendDeep({}, base, { - // node: { - // label: ['a'] - // }, - // link: { - // value: [1], - // source: [0], - // target: [0] - // } - // })); - // - // expect(fullTrace.node.label).toEqual([], 'node label(s) removed'); - // expect(fullTrace.link.value).toEqual([], 'link value(s) removed'); - // expect(fullTrace.link.source).toEqual([], 'link source(s) removed'); - // expect(fullTrace.link.target).toEqual([], 'link target(s) removed'); - // expect(errors.length).toBe(1); - // }); - // - // it('removing everything if detecting a circle', function() { - // expect(errors.length).toBe(0); - // - // var fullTrace = _calc(Lib.extendDeep({}, base, { - // node: { - // label: ['a', 'b', 'c', 'd', 'e'] - // }, - // link: { - // value: [1, 1, 1, 1, 1, 1, 1, 1], - // source: [0, 1, 2, 3], - // target: [1, 2, 0, 4] - // } - // })); - // - // expect(fullTrace.node.label).toEqual([], 'node label(s) removed'); - // expect(fullTrace.link.value).toEqual([], 'link value(s) removed'); - // expect(fullTrace.link.source).toEqual([], 'link source(s) removed'); - // expect(fullTrace.link.target).toEqual([], 'link target(s) removed'); - // expect(errors.length).toBe(1); - // }); - // }); - // }); + describe('sankey calc', function() { + function _calc(trace) { + var gd = { data: [trace] }; + + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + var base = { type: 'sankey' }; + + it('detects circularity', function() { + var calcData = _calc(Lib.extendDeep({}, base, { + node: { + label: ['a', 'b', 'c', 'd', 'e'] + }, + link: { + value: [1, 1, 1, 1, 1, 1, 1, 1], + source: [0, 1, 2, 3], + target: [1, 2, 0, 4] + } + })); + expect(calcData[0].circular).toBeTruthy(); + }); + + it('detects the absence of circularity', function() { + var calcData = _calc(Lib.extendDeep({}, base, { + node: { + label: ['a', 'b', 'c', 'd', 'e'] + }, + link: { + value: [1, 1, 1, 1, 1, 1, 1, 1], + source: [0, 1, 2, 3], + target: [1, 2, 4, 4] + } + })); + expect(calcData[0].circular).toBe(false); + }); + }); describe('lifecycle methods', function() { afterEach(destroyGraphDiv); From 3e5b160b2fe14562807bda41e44fbb64787184cf Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 13:51:03 -0500 Subject: [PATCH 16/39] on update, change circular link type based on nodes' position --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 8d81539628c..99883f4d445 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#a298acf674f0a9c7158243d45814cd8060dad728", + "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#b5c91d5db820f31b2ff0f21e6a29becb835de32d", "d3-array": "1", "d3-collection": "1", "d3-force": "^1.0.6", From 3ed9ba5e9556f90ae1e411e6ecc2eb7d1b6f32c9 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 14:38:56 -0500 Subject: [PATCH 17/39] circular-sankey, sort links per node on update --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 99883f4d445..72d098114ef 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#b5c91d5db820f31b2ff0f21e6a29becb835de32d", + "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#e5760737ef64afade7906bd018149bf1da080e2d", "d3-array": "1", "d3-collection": "1", "d3-force": "^1.0.6", From 00e5d281ea5701477eea1ec3efaf675316aada8a Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 14:52:48 -0500 Subject: [PATCH 18/39] change node's identifier --- src/traces/sankey/render.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 83d996a4913..533aa2bbafe 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -38,15 +38,16 @@ function sankeyModel(layout, d, traceIndex) { var nodes = calcData._nodes; var links = calcData._links; - var circular = calcData.circular; + + // Select Sankey generator var sankey; if(circular) { sankey = d3SankeyCircular .sankeyCircular() .circularLinkGap(2) .nodeId(function(d) { - return d.index; + return d.pointNumber; }); } else { sankey = d3Sankey.sankey(); From f63e2b5e81ce462866f1518d20d427368bfb81c1 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 16:01:56 -0500 Subject: [PATCH 19/39] update tests for Sankey generators --- .../tests/sankey_d3_sankey_circular_test.js | 6 +- test/jasmine/tests/sankey_d3_sankey_test.js | 56 ++++++++++++------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/test/jasmine/tests/sankey_d3_sankey_circular_test.js b/test/jasmine/tests/sankey_d3_sankey_circular_test.js index b25c91fc21b..e7d10526f7f 100644 --- a/test/jasmine/tests/sankey_d3_sankey_circular_test.js +++ b/test/jasmine/tests/sankey_d3_sankey_circular_test.js @@ -47,8 +47,8 @@ describe('d3-sankey-ciruclar', function() { expect(circularLinks.length).toEqual(2, 'there are two circular links'); }); - it('keep a list of nodes with positions in integer (col, height)', function() { - checkArray('column', [0, 0, 2, 3, 1, 1]); + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray('depth', [0, 0, 2, 3, 1, 1]); checkArray('height', [1, 3, 1, 0, 2, 0]); }); @@ -60,6 +60,8 @@ describe('d3-sankey-ciruclar', function() { it('supports column reordering', function() { var reorder = [ 2, 2, 1, 1, 0, 0 ]; + checkArray('column', [0, 0, 2, 3, 1, 1]); + var a = graph.nodes[0].x0; sankey.nodeAlign(function(node) { return reorder[node.pointNumber]; diff --git a/test/jasmine/tests/sankey_d3_sankey_test.js b/test/jasmine/tests/sankey_d3_sankey_test.js index 14023b781bf..a330c921e02 100644 --- a/test/jasmine/tests/sankey_d3_sankey_test.js +++ b/test/jasmine/tests/sankey_d3_sankey_test.js @@ -3,7 +3,7 @@ var d3sankey = require('d3-sankey'); -var graph = { +var data = { 'nodes': [{ 'node': 0, 'name': 'node0' @@ -53,6 +53,8 @@ var graph = { describe('d3-sankey', function() { + var sankey; + var graph; var margin = { top: 10, right: 10, @@ -62,53 +64,67 @@ describe('d3-sankey', function() { var width = 1200 - margin.left - margin.right; var height = 740 - margin.top - margin.bottom; - var s; - beforeEach(function() { - s = d3sankey + sankey = d3sankey .sankey() .nodeWidth(36) .nodePadding(10) - .nodes(graph.nodes) - .links(graph.links) + .nodes(data.nodes) + .links(data.links) .size([width, height]) .iterations(32); + + graph = sankey(); }); + function checkArray(key, result) { + var value = graph.nodes.map(function(obj) { + return obj[key]; + }); + expect(value).toEqual(result, 'invalid property named ' + key); + } + + function checkRoundedArray(key, result) { + var value = graph.nodes.map(function(obj) { + return Math.round(obj[key]); + }); + expect(value).toEqual(result, 'invalid property named ' + key); + } + it('controls the width of nodes', function() { - expect(s.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); + expect(sankey.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); }); it('controls the padding between nodes', function() { - expect(s.nodePadding()).toEqual(10, 'incorrect nodePadding'); + expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); }); it('controls the padding between nodes', function() { - expect(s.nodePadding()).toEqual(10, 'incorrect nodePadding'); + expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); }); it('keep a list of nodes', function() { - var nodeNames = s().nodes.map(function(obj) { - return obj.name; - }); - expect(nodeNames).toEqual(['node0', 'node1', 'node2', 'node3', 'node4']); + checkArray('name', ['node0', 'node1', 'node2', 'node3', 'node4']); }); - it('keep a list of nodes with x values', function() { - var nodeNames = s().nodes.map(function(obj) { - return Math.floor(obj.x0); - }); - expect(nodeNames).toEqual([0, 0, 381, 762, 1144]); + it('keep a list of nodes with x and y values', function() { + checkRoundedArray('x0', [0, 0, 381, 763, 1144]); + checkRoundedArray('y0', [0, 365, 184, 253, 0]); + }); + + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray('depth', [0, 0, 1, 2, 3]); + checkArray('height', [3, 3, 2, 1, 0]); }); it('keep a list of links', function() { - var linkWidths = s().links.map(function(obj) { + var linkWidths = sankey().links.map(function(obj) { return (obj.width); }); expect(linkWidths).toEqual([177.5, 177.5, 177.5, 177.5, 177.5, 177.5, 355]); }); it('controls the size of the figure', function() { - expect(s.size()).toEqual([1180, 720], 'incorrect size'); + expect(sankey.size()).toEqual([1180, 720], 'incorrect size'); }); }); From 6fb3fb4e68649398fa3c91c32cc1f337f35d457b Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 17:12:31 -0500 Subject: [PATCH 20/39] document that link.line.(width|color) is not supported with circularity --- src/traces/sankey/attributes.js | 6 ++++-- src/traces/sankey/render.js | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/traces/sankey/attributes.js b/src/traces/sankey/attributes.js index 905901c7bd3..b9f46ffc471 100644 --- a/src/traces/sankey/attributes.js +++ b/src/traces/sankey/attributes.js @@ -177,7 +177,8 @@ var attrs = module.exports = overrideAll({ dflt: colorAttrs.defaultLine, arrayOk: true, description: [ - 'Sets the color of the `line` around each `link`.' + 'Sets the color of the `line` around each `link`.', + 'Note that in the presence of circular links this attribute is ignored.' ].join(' ') }, width: { @@ -187,7 +188,8 @@ var attrs = module.exports = overrideAll({ dflt: 0, arrayOk: true, description: [ - 'Sets the width (in px) of the `line` around each `link`.' + 'Sets the width (in px) of the `line` around each `link`.', + 'Note that in the presence of circular links this attribute is ignored.' ].join(' ') } }, diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 533aa2bbafe..265cf096c1e 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -128,7 +128,7 @@ function linkPath() { var curvature = 0.5; function path(d) { if(d.circular) { - return d.link.path; + return d.link.path; // TODO: turn this into a closed path to support link.line.(width|color) } else { var x0 = d.link.source.x1; var x1 = d.link.target.x0; From 51085c41c6f3a0eede8da65e59a1be2e43ca256a Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 14 Jan 2019 18:54:03 -0500 Subject: [PATCH 21/39] add mocks and baselines for circular Sankey --- test/image/baselines/sankey_circular.png | Bin 30931 -> 30885 bytes .../baselines/sankey_circular_process.png | Bin 0 -> 81250 bytes test/image/mocks/sankey_circular.json | 2 +- test/image/mocks/sankey_circular_process.json | 20 ++++++++++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/image/baselines/sankey_circular_process.png create mode 100644 test/image/mocks/sankey_circular_process.json diff --git a/test/image/baselines/sankey_circular.png b/test/image/baselines/sankey_circular.png index 8b0773282c7e3a2ca2cea9a1ddad5a656d3b1c30..3eba8e8eaeb4c1ce7b6063b228b2251e90d61177 100644 GIT binary patch literal 30885 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 D>{uYE literal 30931 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 diff --git a/test/image/baselines/sankey_circular_process.png b/test/image/baselines/sankey_circular_process.png new file mode 100644 index 0000000000000000000000000000000000000000..87940fe9892e7cad2a2a0d8bf804395d5f48674d GIT binary patch literal 81250 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 literal 0 HcmV?d00001 diff --git a/test/image/mocks/sankey_circular.json b/test/image/mocks/sankey_circular.json index d76c7a554e2..a8b454f5997 100644 --- a/test/image/mocks/sankey_circular.json +++ b/test/image/mocks/sankey_circular.json @@ -3,7 +3,7 @@ { "type": "sankey", "node": { - "pad": 1, + "pad": 5, "label": ["0", "1", "2", "3", "4", "5", "6"] }, "link": { diff --git a/test/image/mocks/sankey_circular_process.json b/test/image/mocks/sankey_circular_process.json new file mode 100644 index 00000000000..06afb1e113e --- /dev/null +++ b/test/image/mocks/sankey_circular_process.json @@ -0,0 +1,20 @@ +{ + "data": [{ + "type": "sankey", + "node": { + "pad": 5, + "label": ["startA", "startB", "process1", "process2", "process3", "process4", "process5", "process6", "process7", "process8", "process9", "process10", "process11", "process12", "process13", "process14", "process15", "process16", "finishA", "finishB"] + }, + "link": { + "source": [0, 0, 0, 1, 1, 2, 5, 3, 2, 6, 7, 5, 7, 5, 4, 4, 16, 14, 8, 9, 9, 17, 9, 12, 5, 13, 8, 16, 11, 11, 15, 10, 17, 10, 16, 16, 12], + "target": [9, 6, 7, 2, 6, 5, 2, 8, 4, 2, 0, 3, 9, 1, 3, 1, 14, 10, 1, 2, 17, 10, 12, 11, 13, 12, 16, 15, 14, 17, 19, 18, 9, 19, 19, 18, 16], + "value": [20, 20, 20, 15, 15, 30, 10, 35, 20, 20, 5, 5, 15, 5, 15, 5, 10, 10, 20, 10, 10, 10, 25, 20, 10, 10, 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 25] + } + }], + "layout": { + "title": "Example process", + "margin": {"t": 100, "b": 0, "l": 25, "r": 25}, + "width": 1000, + "height": 800 + } +} From 9ca4d5db4dbefa284e43ad5786b7397beb742c23 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 15:29:08 -0500 Subject: [PATCH 22/39] use tomshanley/d3-circular-sankey now that our changes got merged in --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index ab41fca8ab6..cb1544cde4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2337,8 +2337,8 @@ } }, "d3-sankey-circular": { - "version": "git://github.com/antoinerg/d3-sankey-circular.git#a298acf674f0a9c7158243d45814cd8060dad728", - "from": "git://github.com/antoinerg/d3-sankey-circular.git#a298acf674f0a9c7158243d45814cd8060dad728", + "version": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", + "from": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", diff --git a/package.json b/package.json index 72d098114ef..ead2869dc08 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#e5760737ef64afade7906bd018149bf1da080e2d", + "d3-sankey-circular": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", "d3-array": "1", "d3-collection": "1", "d3-force": "^1.0.6", From d1d852ab3a4270d3b7a847ba84b6b0ae5e43e967 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 15:35:47 -0500 Subject: [PATCH 23/39] render circular links as closed paths --- src/traces/sankey/attributes.js | 6 +- src/traces/sankey/plot.js | 8 +- src/traces/sankey/render.js | 134 ++++++++++++++++-- .../baselines/sankey_circular_process.png | Bin 81250 -> 115067 bytes test/image/mocks/sankey_circular_process.json | 8 ++ 5 files changed, 137 insertions(+), 19 deletions(-) diff --git a/src/traces/sankey/attributes.js b/src/traces/sankey/attributes.js index b9f46ffc471..905901c7bd3 100644 --- a/src/traces/sankey/attributes.js +++ b/src/traces/sankey/attributes.js @@ -177,8 +177,7 @@ var attrs = module.exports = overrideAll({ dflt: colorAttrs.defaultLine, arrayOk: true, description: [ - 'Sets the color of the `line` around each `link`.', - 'Note that in the presence of circular links this attribute is ignored.' + 'Sets the color of the `line` around each `link`.' ].join(' ') }, width: { @@ -188,8 +187,7 @@ var attrs = module.exports = overrideAll({ dflt: 0, arrayOk: true, description: [ - 'Sets the width (in px) of the `line` around each `link`.', - 'Note that in the presence of circular links this attribute is ignored.' + 'Sets the width (in px) of the `line` around each `link`.' ].join(' ') } }, diff --git a/src/traces/sankey/plot.js b/src/traces/sankey/plot.js index d0b84b381da..5ec3c4e4910 100644 --- a/src/traces/sankey/plot.js +++ b/src/traces/sankey/plot.js @@ -73,14 +73,12 @@ function linkHoveredStyle(d, sankey, visitNodes, sankeyLink) { var label = sankeyLink.datum().link.label; sankeyLink.style('fill-opacity', 0.4); - sankeyLink.style('stroke-opacity', 0.4); if(label) { ownTrace(sankey, d) .selectAll('.' + cn.sankeyLink) .filter(function(l) {return l.link.label === label;}) - .style('fill-opacity', 0.4) - .style('stroke-opacity', 0.4); + .style('fill-opacity', 0.4); } if(visitNodes) { @@ -96,13 +94,11 @@ function linkNonHoveredStyle(d, sankey, visitNodes, sankeyLink) { var label = sankeyLink.datum().link.label; sankeyLink.style('fill-opacity', function(d) {return d.tinyColorAlpha;}); - sankeyLink.style('stroke-opacity', function(d) {return d.tinyColorAlpha;}); if(label) { ownTrace(sankey, d) .selectAll('.' + cn.sankeyLink) .filter(function(l) {return l.link.label === label;}) - .style('fill-opacity', function(d) {return d.tinyColorAlpha;}) - .style('stroke-opacity', function(d) {return d.tinyColorAlpha;}); + .style('fill-opacity', function(d) {return d.tinyColorAlpha;}); } if(visitNodes) { diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 265cf096c1e..b4b4e22dfcc 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -124,11 +124,130 @@ function linkModel(d, l, i) { }; } +function createCircularClosedPathString(link) { + // Using coordinates computed by d3-sankey-circular + var pathString = ''; + var offset = link.width / 2; + var coords = link.circularPathData; + if(link.circularLinkType === 'top') { + // Top path + pathString = + // start at the left of the target node + 'M ' + + coords.targetX + ' ' + (coords.targetY + offset) + ' ' + + 'L' + + coords.rightInnerExtent + ' ' + (coords.targetY + offset) + + 'A' + + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 1 ' + + (coords.rightFullExtent - offset) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + + 'L' + + (coords.rightFullExtent - offset) + ' ' + coords.verticalRightInnerExtent + + 'A' + + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 1 ' + + coords.rightInnerExtent + ' ' + (coords.verticalFullExtent - offset) + + 'L' + + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + + 'A' + + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftLargeArcRadius + offset) + ' 0 0 1 ' + + (coords.leftFullExtent + offset) + ' ' + coords.verticalLeftInnerExtent + + 'L' + + (coords.leftFullExtent + offset) + ' ' + (coords.sourceY - coords.leftSmallArcRadius) + + 'A' + + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftSmallArcRadius + offset) + ' 0 0 1 ' + + coords.leftInnerExtent + ' ' + (coords.sourceY + offset) + + 'L' + + coords.sourceX + ' ' + (coords.sourceY + offset) + + + // Walking back + 'L' + + coords.sourceX + ' ' + (coords.sourceY - offset) + + 'L' + + coords.leftInnerExtent + ' ' + (coords.sourceY - offset) + + 'A' + + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftSmallArcRadius - offset) + ' 0 0 0 ' + + (coords.leftFullExtent - offset) + ' ' + (coords.sourceY - coords.leftSmallArcRadius) + + 'L' + + (coords.leftFullExtent - offset) + ' ' + coords.verticalLeftInnerExtent + + 'A' + + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 0 ' + + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + + 'L' + + coords.rightInnerExtent + ' ' + (coords.verticalFullExtent + offset) + + 'A' + + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 0 ' + + (coords.rightFullExtent + offset) + ' ' + coords.verticalRightInnerExtent + + 'L' + + (coords.rightFullExtent + offset) + ' ' + (coords.targetY - coords.rightSmallArcRadius) + + 'A' + + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 0 ' + + coords.rightInnerExtent + ' ' + (coords.targetY - offset) + + 'L' + + coords.targetX + ' ' + (coords.targetY - offset) + + 'Z'; + } else { + // Bottom path + pathString = + // start at the left of the target node + 'M ' + + coords.targetX + ' ' + (coords.targetY - offset) + ' ' + + 'L' + + coords.rightInnerExtent + ' ' + (coords.targetY - offset) + + 'A' + + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightSmallArcRadius + offset) + ' 0 0 0 ' + + (coords.rightFullExtent - offset) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + + 'L' + + (coords.rightFullExtent - offset) + ' ' + coords.verticalRightInnerExtent + + 'A' + + (coords.rightLargeArcRadius + offset) + ' ' + (coords.rightLargeArcRadius + offset) + ' 0 0 0 ' + + coords.rightInnerExtent + ' ' + (coords.verticalFullExtent + offset) + + 'L' + + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent + offset) + + 'A' + + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftLargeArcRadius + offset) + ' 0 0 0 ' + + (coords.leftFullExtent + offset) + ' ' + coords.verticalLeftInnerExtent + + 'L' + + (coords.leftFullExtent + offset) + ' ' + (coords.sourceY + coords.leftSmallArcRadius) + + 'A' + + (coords.leftLargeArcRadius + offset) + ' ' + (coords.leftSmallArcRadius + offset) + ' 0 0 0 ' + + coords.leftInnerExtent + ' ' + (coords.sourceY - offset) + + 'L' + + coords.sourceX + ' ' + (coords.sourceY - offset) + + + // Walking back + 'L' + + coords.sourceX + ' ' + (coords.sourceY + offset) + + 'L' + + coords.leftInnerExtent + ' ' + (coords.sourceY + offset) + + 'A' + + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftSmallArcRadius - offset) + ' 0 0 1 ' + + (coords.leftFullExtent - offset) + ' ' + (coords.sourceY + coords.leftSmallArcRadius) + + 'L' + + (coords.leftFullExtent - offset) + ' ' + coords.verticalLeftInnerExtent + + 'A' + + (coords.leftLargeArcRadius - offset) + ' ' + (coords.leftLargeArcRadius - offset) + ' 0 0 1 ' + + coords.leftInnerExtent + ' ' + (coords.verticalFullExtent - offset) + + 'L' + + coords.rightInnerExtent + ' ' + (coords.verticalFullExtent - offset) + + 'A' + + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightLargeArcRadius - offset) + ' 0 0 1 ' + + (coords.rightFullExtent + offset) + ' ' + coords.verticalRightInnerExtent + + 'L' + + (coords.rightFullExtent + offset) + ' ' + (coords.targetY + coords.rightSmallArcRadius) + + 'A' + + (coords.rightLargeArcRadius - offset) + ' ' + (coords.rightSmallArcRadius - offset) + ' 0 0 1 ' + + coords.rightInnerExtent + ' ' + (coords.targetY + offset) + + 'L' + + coords.targetX + ' ' + (coords.targetY + offset) + + 'Z'; + } + return pathString; +} + function linkPath() { var curvature = 0.5; function path(d) { - if(d.circular) { - return d.link.path; // TODO: turn this into a closed path to support link.line.(width|color) + if(d.link.circular) { + return createCircularClosedPathString(d.link); } else { var x0 = d.link.source.x1; var x1 = d.link.target.x0; @@ -502,21 +621,18 @@ module.exports = function(svg, calcData, layout, callbacks) { sankeyLink .style('stroke', function(d) { - if(!d.circular) return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; - return d.tinyColorHue; + return salientEnough(d) ? Color.tinyRGB(tinycolor(d.linkLineColor)) : d.tinyColorHue; }) .style('stroke-opacity', function(d) { - if(!d.circular) return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; - return d.tinyColorAlpha; + return salientEnough(d) ? Color.opacity(d.linkLineColor) : d.tinyColorAlpha; }) .style('fill', function(d) { - if(!d.circular) return d.tinyColorHue; + return d.tinyColorHue; }) .style('fill-opacity', function(d) { - if(!d.circular) return d.tinyColorAlpha; + return d.tinyColorAlpha; }) .style('stroke-width', function(d) { - if(d.circular) return d.link.width; return salientEnough(d) ? d.linkLineWidth : 1; }); diff --git a/test/image/baselines/sankey_circular_process.png b/test/image/baselines/sankey_circular_process.png index 87940fe9892e7cad2a2a0d8bf804395d5f48674d..82ce1f2e0747aeba530dae270fd68142c561eba0 100644 GIT binary patch literal 115067 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 literal 81250 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 diff --git a/test/image/mocks/sankey_circular_process.json b/test/image/mocks/sankey_circular_process.json index 06afb1e113e..6e04c9392e4 100644 --- a/test/image/mocks/sankey_circular_process.json +++ b/test/image/mocks/sankey_circular_process.json @@ -2,10 +2,18 @@ "data": [{ "type": "sankey", "node": { + "line": { + "width": 1, + "color": "black" + }, "pad": 5, "label": ["startA", "startB", "process1", "process2", "process3", "process4", "process5", "process6", "process7", "process8", "process9", "process10", "process11", "process12", "process13", "process14", "process15", "process16", "finishA", "finishB"] }, "link": { + "line": { + "width": 1, + "color": "black" + }, "source": [0, 0, 0, 1, 1, 2, 5, 3, 2, 6, 7, 5, 7, 5, 4, 4, 16, 14, 8, 9, 9, 17, 9, 12, 5, 13, 8, 16, 11, 11, 15, 10, 17, 10, 16, 16, 12], "target": [9, 6, 7, 2, 6, 5, 2, 8, 4, 2, 0, 3, 9, 1, 3, 1, 14, 10, 1, 2, 17, 10, 12, 11, 13, 12, 16, 15, 14, 17, 19, 18, 9, 19, 19, 18, 16], "value": [20, 20, 20, 15, 15, 30, 10, 35, 20, 20, 5, 5, 15, 5, 15, 5, 10, 10, 20, 10, 10, 10, 25, 20, 10, 10, 15, 10, 10, 10, 10, 10, 10, 10, 10, 10, 25] From 2382d74841ebab760a8be7876dc601efe3967fdd Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 15:45:27 -0500 Subject: [PATCH 24/39] update sankey_circular baseline --- test/image/baselines/sankey_circular.png | Bin 30885 -> 30992 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/test/image/baselines/sankey_circular.png b/test/image/baselines/sankey_circular.png index 3eba8e8eaeb4c1ce7b6063b228b2251e90d61177..f2ba831b652e094609c55349afb67d3824aba9ed 100644 GIT binary patch literal 30992 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 literal 30885 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 D>{uYE From 04a186c55523373f7b87eb505bc7c02865ee8be4 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 16:05:28 -0500 Subject: [PATCH 25/39] move function defined in convert-to-d3-sankey.js into calc.js --- src/traces/sankey/calc.js | 71 +++++++++++++++++++- src/traces/sankey/convert-to-d3-sankey.js | 80 ----------------------- 2 files changed, 70 insertions(+), 81 deletions(-) delete mode 100644 src/traces/sankey/convert-to-d3-sankey.js diff --git a/src/traces/sankey/calc.js b/src/traces/sankey/calc.js index 4989366c4f4..8e9a5756517 100644 --- a/src/traces/sankey/calc.js +++ b/src/traces/sankey/calc.js @@ -12,7 +12,76 @@ var tarjan = require('strongly-connected-components'); var Lib = require('../../lib'); var wrap = require('../../lib/gup').wrap; -var convertToD3Sankey = require('./convert-to-d3-sankey'); +var isArrayOrTypedArray = Lib.isArrayOrTypedArray; +var isIndex = Lib.isIndex; + + +function convertToD3Sankey(trace) { + var nodeSpec = trace.node; + var linkSpec = trace.link; + + var links = []; + var hasLinkColorArray = isArrayOrTypedArray(linkSpec.color); + var linkedNodes = {}; + + var nodeCount = nodeSpec.label.length; + var i; + for(i = 0; i < linkSpec.value.length; i++) { + var val = linkSpec.value[i]; + // remove negative values, but keep zeros with special treatment + var source = linkSpec.source[i]; + var target = linkSpec.target[i]; + if(!(val > 0 && isIndex(source, nodeCount) && isIndex(target, nodeCount))) { + continue; + } + + source = +source; + target = +target; + linkedNodes[source] = linkedNodes[target] = true; + + var label = ''; + if(linkSpec.label && linkSpec.label[i]) label = linkSpec.label[i]; + + links.push({ + pointNumber: i, + label: label, + color: hasLinkColorArray ? linkSpec.color[i] : linkSpec.color, + source: source, + target: target, + value: +val + }); + } + + var hasNodeColorArray = isArrayOrTypedArray(nodeSpec.color); + var nodes = []; + var removedNodes = false; + var nodeIndices = {}; + + for(i = 0; i < nodeCount; i++) { + if(linkedNodes[i]) { + var l = nodeSpec.label[i]; + nodeIndices[i] = nodes.length; + nodes.push({ + pointNumber: i, + label: l, + color: hasNodeColorArray ? nodeSpec.color[i] : nodeSpec.color + }); + } else removedNodes = true; + } + + // need to re-index links now, since we didn't put all the nodes in + if(removedNodes) { + for(i = 0; i < links.length; i++) { + links[i].source = nodeIndices[links[i].source]; + links[i].target = nodeIndices[links[i].target]; + } + } + + return { + links: links, + nodes: nodes + }; +} function circularityPresent(nodeList, sources, targets) { diff --git a/src/traces/sankey/convert-to-d3-sankey.js b/src/traces/sankey/convert-to-d3-sankey.js deleted file mode 100644 index cdb5c36c3e9..00000000000 --- a/src/traces/sankey/convert-to-d3-sankey.js +++ /dev/null @@ -1,80 +0,0 @@ -/** -* Copyright 2012-2019, Plotly, Inc. -* All rights reserved. -* -* This source code is licensed under the MIT license found in the -* LICENSE file in the root directory of this source tree. -*/ - -'use strict'; - -var Lib = require('../../lib'); -var isArrayOrTypedArray = Lib.isArrayOrTypedArray; -var isIndex = Lib.isIndex; - -module.exports = function(trace) { - var nodeSpec = trace.node; - var linkSpec = trace.link; - - var links = []; - var hasLinkColorArray = isArrayOrTypedArray(linkSpec.color); - var linkedNodes = {}; - - var nodeCount = nodeSpec.label.length; - var i; - for(i = 0; i < linkSpec.value.length; i++) { - var val = linkSpec.value[i]; - // remove negative values, but keep zeros with special treatment - var source = linkSpec.source[i]; - var target = linkSpec.target[i]; - if(!(val > 0 && isIndex(source, nodeCount) && isIndex(target, nodeCount))) { - continue; - } - - source = +source; - target = +target; - linkedNodes[source] = linkedNodes[target] = true; - - var label = ''; - if(linkSpec.label && linkSpec.label[i]) label = linkSpec.label[i]; - - links.push({ - pointNumber: i, - label: label, - color: hasLinkColorArray ? linkSpec.color[i] : linkSpec.color, - source: source, - target: target, - value: +val - }); - } - - var hasNodeColorArray = isArrayOrTypedArray(nodeSpec.color); - var nodes = []; - var removedNodes = false; - var nodeIndices = {}; - - for(i = 0; i < nodeCount; i++) { - if(linkedNodes[i]) { - var l = nodeSpec.label[i]; - nodeIndices[i] = nodes.length; - nodes.push({ - pointNumber: i, - label: l, - color: hasNodeColorArray ? nodeSpec.color[i] : nodeSpec.color - }); - } else removedNodes = true; - } - - // need to re-index links now, since we didn't put all the nodes in - if(removedNodes) { - for(i = 0; i < links.length; i++) { - links[i].source = nodeIndices[links[i].source]; - links[i].target = nodeIndices[links[i].target]; - } - } - - return { - links: links, - nodes: nodes - }; -}; From dee73b87c23f4667992718d97251be27385f823b Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 16:12:59 -0500 Subject: [PATCH 26/39] remove npm packages not used --- package.json | 2 -- 1 file changed, 2 deletions(-) diff --git a/package.json b/package.json index ead2869dc08..384014f71da 100644 --- a/package.json +++ b/package.json @@ -67,8 +67,6 @@ "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", "d3-sankey-circular": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", - "d3-array": "1", - "d3-collection": "1", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", From b3bcdd6b9cd224a569622a8caf0ff29de9770f3c Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 16:23:55 -0500 Subject: [PATCH 27/39] improve style --- src/traces/sankey/render.js | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index b4b4e22dfcc..a465f4ff5c5 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -276,8 +276,10 @@ function nodeModel(d, n, i) { var tc = tinycolor(n.color); var zoneThicknessPad = c.nodePadAcross; var zoneLengthPad = d.nodePad / 2; - var visibleThickness = n.x1 - n.x0; - var visibleLength = Math.max(0.5, (n.y1 - n.y0)); + n.dx = n.x1 - n.x0; + n.dy = n.y1 - n.y0; + var visibleThickness = n.dx; + var visibleLength = Math.max(0.5, n.dy); var basicKey = n.label; var key = basicKey + '__' + i; @@ -286,10 +288,6 @@ function nodeModel(d, n, i) { n.trace = d.trace; n.curveNumber = d.trace.index; - // additionnal coordinates - n.dx = n.x1 - n.x0; - n.dy = n.y1 - n.y0; - return { index: n.pointNumber, key: key, @@ -370,7 +368,7 @@ function textFlip(d) {return d.horizontal ? 'scale(1 1)' : 'scale(-1 1)';} function nodeTextColor(d) {return d.darkBackground && !d.horizontal ? 'rgb(255,255,255)' : 'rgb(0,0,0)';} function nodeTextOffset(d) {return d.horizontal && d.left ? '100%' : '0%';} -// // event handling +// event handling function attachPointerEvents(selection, sankey, eventSet) { selection @@ -447,9 +445,7 @@ function attachDragHandler(sankeyNode, sankeyLink, callbacks) { if(d.arrangement === 'freeform') { d.node.x0 = x - d.visibleWidth / 2; d.node.x1 = x + d.visibleWidth / 2; - // d.x0 = x; } - // d.node.y = Math.max(d.node.dy / 2, Math.min(d.size - d.node.dy / 2, y)); d.node.y0 = Math.max(0, Math.min(d.size - d.visibleHeight, y)); d.node.y1 = d.node.y0 + d.visibleHeight; } From 4539d285285ebb22d6d2ce9ddd300e9e1de03b60 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 16:40:01 -0500 Subject: [PATCH 28/39] combine all sankey tests into a single file --- .../tests/sankey_d3_sankey_circular_test.js | 76 ------- test/jasmine/tests/sankey_d3_sankey_test.js | 130 ----------- test/jasmine/tests/sankey_test.js | 209 ++++++++++++++++++ 3 files changed, 209 insertions(+), 206 deletions(-) delete mode 100644 test/jasmine/tests/sankey_d3_sankey_circular_test.js delete mode 100644 test/jasmine/tests/sankey_d3_sankey_test.js diff --git a/test/jasmine/tests/sankey_d3_sankey_circular_test.js b/test/jasmine/tests/sankey_d3_sankey_circular_test.js deleted file mode 100644 index e7d10526f7f..00000000000 --- a/test/jasmine/tests/sankey_d3_sankey_circular_test.js +++ /dev/null @@ -1,76 +0,0 @@ -// var Plotly = require('@lib/index'); -// var attributes = require('@src/traces/sankey/attributes'); - -var d3SankeyCircular = require('d3-sankey-circular'); -var mockCircular = require('@mocks/sankey_circular.json'); -var convertToD3Sankey = require('@src/traces/sankey/convert-to-d3-sankey'); - -describe('d3-sankey-ciruclar', function() { - var data, sankey, graph; - - beforeEach(function() { - data = convertToD3Sankey(mockCircular.data[0]); - sankey = d3SankeyCircular - .sankeyCircular() - .iterations(32) - .circularLinkGap(2) - .nodePadding(10) - .size([500, 500]) - .nodeId(function(d) { - return d.pointNumber; - }) - .nodes(data.nodes) - .links(data.links); - - graph = sankey(); - }); - - function checkArray(key, result) { - var value = graph.nodes.map(function(obj) { - return obj[key]; - }); - expect(value).toEqual(result, 'invalid property named ' + key); - } - - function checkRoundedArray(key, result, msg) { - var value = graph.nodes.map(function(obj) { - return Math.round(obj[key]); - }); - expect(value).toEqual(result, msg); - } - - it('creates a graph with circular links', function() { - expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); - var circularLinks = graph.links.filter(function(link) { - return link.circular; - }); - expect(circularLinks.length).toEqual(2, 'there are two circular links'); - }); - - it('keep a list of nodes with positions in integer (depth, height)', function() { - checkArray('depth', [0, 0, 2, 3, 1, 1]); - checkArray('height', [1, 3, 1, 0, 2, 0]); - }); - - it('keep a list of nodes with positions in x and y', function() { - checkRoundedArray('x0', [72, 72, 267, 365, 169, 169]); - checkRoundedArray('y0', [303, 86, 72, 109, 86, 359]); - }); - - it('supports column reordering', function() { - var reorder = [ 2, 2, 1, 1, 0, 0 ]; - - checkArray('column', [0, 0, 2, 3, 1, 1]); - - var a = graph.nodes[0].x0; - sankey.nodeAlign(function(node) { - return reorder[node.pointNumber]; - }); - graph = sankey(); - checkArray('column', [2, 2, 1, 1, 0, 0]); - checkArray('height', [1, 3, 1, 0, 2, 0]); - var b = graph.nodes[0].x0; - expect(a).not.toEqual(b); - }); - -}); diff --git a/test/jasmine/tests/sankey_d3_sankey_test.js b/test/jasmine/tests/sankey_d3_sankey_test.js deleted file mode 100644 index a330c921e02..00000000000 --- a/test/jasmine/tests/sankey_d3_sankey_test.js +++ /dev/null @@ -1,130 +0,0 @@ -// var Plotly = require('@lib/index'); -// var attributes = require('@src/traces/sankey/attributes'); - -var d3sankey = require('d3-sankey'); - -var data = { - 'nodes': [{ - 'node': 0, - 'name': 'node0' - }, { - 'node': 1, - 'name': 'node1' - }, { - 'node': 2, - 'name': 'node2' - }, { - 'node': 3, - 'name': 'node3' - }, { - 'node': 4, - 'name': 'node4' - }], - 'links': [{ - 'source': 0, - 'target': 2, - 'value': 2 - }, { - 'source': 1, - 'target': 2, - 'value': 2 - }, { - 'source': 1, - 'target': 3, - 'value': 2 - }, { - 'source': 0, - 'target': 4, - 'value': 2 - }, { - 'source': 2, - 'target': 3, - 'value': 2 - }, { - 'source': 2, - 'target': 4, - 'value': 2 - }, { - 'source': 3, - 'target': 4, - 'value': 4 - }] -}; - - -describe('d3-sankey', function() { - var sankey; - var graph; - var margin = { - top: 10, - right: 10, - bottom: 10, - left: 10 - }; - var width = 1200 - margin.left - margin.right; - var height = 740 - margin.top - margin.bottom; - - beforeEach(function() { - sankey = d3sankey - .sankey() - .nodeWidth(36) - .nodePadding(10) - .nodes(data.nodes) - .links(data.links) - .size([width, height]) - .iterations(32); - - graph = sankey(); - }); - - function checkArray(key, result) { - var value = graph.nodes.map(function(obj) { - return obj[key]; - }); - expect(value).toEqual(result, 'invalid property named ' + key); - } - - function checkRoundedArray(key, result) { - var value = graph.nodes.map(function(obj) { - return Math.round(obj[key]); - }); - expect(value).toEqual(result, 'invalid property named ' + key); - } - - it('controls the width of nodes', function() { - expect(sankey.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); - }); - - it('controls the padding between nodes', function() { - expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); - }); - - it('controls the padding between nodes', function() { - expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); - }); - - it('keep a list of nodes', function() { - checkArray('name', ['node0', 'node1', 'node2', 'node3', 'node4']); - }); - - it('keep a list of nodes with x and y values', function() { - checkRoundedArray('x0', [0, 0, 381, 763, 1144]); - checkRoundedArray('y0', [0, 365, 184, 253, 0]); - }); - - it('keep a list of nodes with positions in integer (depth, height)', function() { - checkArray('depth', [0, 0, 1, 2, 3]); - checkArray('height', [3, 3, 2, 1, 0]); - }); - - it('keep a list of links', function() { - var linkWidths = sankey().links.map(function(obj) { - return (obj.width); - }); - expect(linkWidths).toEqual([177.5, 177.5, 177.5, 177.5, 177.5, 177.5, 355]); - }); - - it('controls the size of the figure', function() { - expect(sankey.size()).toEqual([1180, 720], 'incorrect size'); - }); -}); diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index d4c9ca8bae9..40f13d37fef 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -2,8 +2,11 @@ var Plotly = require('@lib/index'); var attributes = require('@src/traces/sankey/attributes'); var Lib = require('@src/lib'); var d3 = require('d3'); +var d3sankey = require('d3-sankey'); +var d3SankeyCircular = require('d3-sankey-circular'); var mock = require('@mocks/sankey_energy.json'); var mockDark = require('@mocks/sankey_energy_dark.json'); +var mockCircular = require('@mocks/sankey_circular.json'); var Sankey = require('@src/traces/sankey'); var createGraphDiv = require('../assets/create_graph_div'); @@ -904,3 +907,209 @@ function assertNoLabel() { var g = d3.selectAll('.hovertext'); expect(g.size()).toBe(0); } + +describe('d3-sankey', function() { + var data = { + 'nodes': [{ + 'node': 0, + 'name': 'node0' + }, { + 'node': 1, + 'name': 'node1' + }, { + 'node': 2, + 'name': 'node2' + }, { + 'node': 3, + 'name': 'node3' + }, { + 'node': 4, + 'name': 'node4' + }], + 'links': [{ + 'source': 0, + 'target': 2, + 'value': 2 + }, { + 'source': 1, + 'target': 2, + 'value': 2 + }, { + 'source': 1, + 'target': 3, + 'value': 2 + }, { + 'source': 0, + 'target': 4, + 'value': 2 + }, { + 'source': 2, + 'target': 3, + 'value': 2 + }, { + 'source': 2, + 'target': 4, + 'value': 2 + }, { + 'source': 3, + 'target': 4, + 'value': 4 + }] + }; + var sankey; + var graph; + var margin = { + top: 10, + right: 10, + bottom: 10, + left: 10 + }; + var width = 1200 - margin.left - margin.right; + var height = 740 - margin.top - margin.bottom; + + beforeEach(function() { + sankey = d3sankey + .sankey() + .nodeWidth(36) + .nodePadding(10) + .nodes(data.nodes) + .links(data.links) + .size([width, height]) + .iterations(32); + + graph = sankey(); + }); + + function checkArray(key, result) { + var value = graph.nodes.map(function(obj) { + return obj[key]; + }); + expect(value).toEqual(result, 'invalid property named ' + key); + } + + function checkRoundedArray(key, result) { + var value = graph.nodes.map(function(obj) { + return Math.round(obj[key]); + }); + expect(value).toEqual(result, 'invalid property named ' + key); + } + + it('controls the width of nodes', function() { + expect(sankey.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); + }); + + it('controls the padding between nodes', function() { + expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); + }); + + it('controls the padding between nodes', function() { + expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); + }); + + it('keep a list of nodes', function() { + checkArray('name', ['node0', 'node1', 'node2', 'node3', 'node4']); + }); + + it('keep a list of nodes with x and y values', function() { + checkRoundedArray('x0', [0, 0, 381, 763, 1144]); + checkRoundedArray('y0', [0, 365, 184, 253, 0]); + }); + + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray('depth', [0, 0, 1, 2, 3]); + checkArray('height', [3, 3, 2, 1, 0]); + }); + + it('keep a list of links', function() { + var linkWidths = sankey().links.map(function(obj) { + return (obj.width); + }); + expect(linkWidths).toEqual([177.5, 177.5, 177.5, 177.5, 177.5, 177.5, 355]); + }); + + it('controls the size of the figure', function() { + expect(sankey.size()).toEqual([1180, 720], 'incorrect size'); + }); +}); + +describe('d3-sankey-ciruclar', function() { + var data, sankey, graph; + + function _calc(trace) { + var gd = { data: [trace] }; + + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + beforeEach(function() { + data = _calc(mockCircular.data[0]); + data = { + nodes: data[0]._nodes, + links: data[0]._links + }; + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .circularLinkGap(2) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); + + function checkArray(key, result) { + var value = graph.nodes.map(function(obj) { + return obj[key]; + }); + expect(value).toEqual(result, 'invalid property named ' + key); + } + + function checkRoundedArray(key, result, msg) { + var value = graph.nodes.map(function(obj) { + return Math.round(obj[key]); + }); + expect(value).toEqual(result, msg); + } + + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(2, 'there are two circular links'); + }); + + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray('depth', [0, 0, 2, 3, 1, 1]); + checkArray('height', [1, 3, 1, 0, 2, 0]); + }); + + it('keep a list of nodes with positions in x and y', function() { + checkRoundedArray('x0', [72, 72, 267, 365, 169, 169]); + checkRoundedArray('y0', [303, 86, 72, 109, 86, 359]); + }); + + it('supports column reordering', function() { + var reorder = [ 2, 2, 1, 1, 0, 0 ]; + + checkArray('column', [0, 0, 2, 3, 1, 1]); + + var a = graph.nodes[0].x0; + sankey.nodeAlign(function(node) { + return reorder[node.pointNumber]; + }); + graph = sankey(); + checkArray('column', [2, 2, 1, 1, 0, 0]); + checkArray('height', [1, 3, 1, 0, 2, 0]); + var b = graph.nodes[0].x0; + expect(a).not.toEqual(b); + }); + +}); From 225d3103f2d3ecd8782bc70f8b095bba4b2d7693 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Fri, 18 Jan 2019 18:04:28 -0500 Subject: [PATCH 29/39] position hover label above circular links --- src/traces/sankey/plot.js | 17 ++++++++++++----- src/traces/sankey/render.js | 1 + 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/traces/sankey/plot.js b/src/traces/sankey/plot.js index 5ec3c4e4910..cc04eb441ed 100644 --- a/src/traces/sankey/plot.js +++ b/src/traces/sankey/plot.js @@ -151,16 +151,23 @@ module.exports = function plot(gd, calcData) { var obj = d.link.trace.link; if(obj.hoverinfo === 'none' || obj.hoverinfo === 'skip') return; var rootBBox = gd._fullLayout._paperdiv.node().getBoundingClientRect(); - var boundingBox = element.getBoundingClientRect(); - var hoverCenterX = boundingBox.left + boundingBox.width / 2; - var hoverCenterY = boundingBox.top + boundingBox.height / 2; + var hoverCenterX; + var hoverCenterY; + if(d.link.circular) { + hoverCenterX = (d.link.circularPathData.leftInnerExtent + d.link.circularPathData.rightInnerExtent) / 2 + d.parent.translateX; + hoverCenterY = d.link.circularPathData.verticalFullExtent + d.parent.translateY; + } else { + var boundingBox = element.getBoundingClientRect(); + hoverCenterX = boundingBox.left + boundingBox.width / 2 - rootBBox.left; + hoverCenterY = boundingBox.top + boundingBox.height / 2 - rootBBox.top; + } var hovertemplateLabels = {valueLabel: d3.format(d.valueFormat)(d.link.value) + d.valueSuffix}; d.link.fullData = d.link.trace; var tooltip = Fx.loneHover({ - x: hoverCenterX - rootBBox.left, - y: hoverCenterY - rootBBox.top, + x: hoverCenterX, + y: hoverCenterY, name: hovertemplateLabels.valueLabel, text: [ d.link.label || '', diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index a465f4ff5c5..0950da9128e 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -120,6 +120,7 @@ function linkModel(d, l, i) { valueFormat: d.valueFormat, valueSuffix: d.valueSuffix, sankey: d.sankey, + parent: d, interactionState: d.interactionState }; } From 9b36090c29089d6d143785d33d883413a4c2970f Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 22 Jan 2019 15:07:29 -0500 Subject: [PATCH 30/39] update d3-sankey-circular and test update() API --- package-lock.json | 4 +- package.json | 2 +- test/jasmine/tests/sankey_test.js | 380 +++++++++++++++++------------- 3 files changed, 215 insertions(+), 171 deletions(-) diff --git a/package-lock.json b/package-lock.json index cb1544cde4d..3862b3cfd59 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2337,8 +2337,8 @@ } }, "d3-sankey-circular": { - "version": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", - "from": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", + "version": "git://github.com/antoinerg/d3-sankey-circular.git#ad8c6e345583cb4ed2a5cb2353678fb6b2d54c71", + "from": "git://github.com/antoinerg/d3-sankey-circular.git#ad8c6e345583cb4ed2a5cb2353678fb6b2d54c71", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", diff --git a/package.json b/package.json index 384014f71da..57cc6f9a581 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "d3-sankey-circular": "git://github.com/tomshanley/d3-sankey-circular.git#e0be74d9bdec9ac0e4c8b4e9108922842715a7b1", + "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#ad8c6e345583cb4ed2a5cb2353678fb6b2d54c71", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index 40f13d37fef..5a551a1ea67 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -908,208 +908,252 @@ function assertNoLabel() { expect(g.size()).toBe(0); } -describe('d3-sankey', function() { - var data = { - 'nodes': [{ - 'node': 0, - 'name': 'node0' - }, { - 'node': 1, - 'name': 'node1' - }, { - 'node': 2, - 'name': 'node2' - }, { - 'node': 3, - 'name': 'node3' - }, { - 'node': 4, - 'name': 'node4' - }], - 'links': [{ - 'source': 0, - 'target': 2, - 'value': 2 - }, { - 'source': 1, - 'target': 2, - 'value': 2 - }, { - 'source': 1, - 'target': 3, - 'value': 2 - }, { - 'source': 0, - 'target': 4, - 'value': 2 - }, { - 'source': 2, - 'target': 3, - 'value': 2 - }, { - 'source': 2, - 'target': 4, - 'value': 2 - }, { - 'source': 3, - 'target': 4, - 'value': 4 - }] - }; - var sankey; - var graph; - var margin = { - top: 10, - right: 10, - bottom: 10, - left: 10 - }; - var width = 1200 - margin.left - margin.right; - var height = 740 - margin.top - margin.bottom; - - beforeEach(function() { - sankey = d3sankey - .sankey() - .nodeWidth(36) - .nodePadding(10) - .nodes(data.nodes) - .links(data.links) - .size([width, height]) - .iterations(32); - - graph = sankey(); - }); - - function checkArray(key, result) { - var value = graph.nodes.map(function(obj) { +describe('sankey layout generators', function() { + function checkArray(arr, key, result) { + var value = arr.map(function(obj) { return obj[key]; }); expect(value).toEqual(result, 'invalid property named ' + key); } - function checkRoundedArray(key, result) { - var value = graph.nodes.map(function(obj) { + function checkRoundedArray(arr, key, result) { + var value = arr.map(function(obj) { return Math.round(obj[key]); }); expect(value).toEqual(result, 'invalid property named ' + key); } - it('controls the width of nodes', function() { - expect(sankey.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); - }); + function moveNode(sankey, graph, nodeIndex, delta) { + var node = graph.nodes[nodeIndex]; + var pos0 = [node.x0, node.y0]; + var pos1 = [node.x1, node.y1]; - it('controls the padding between nodes', function() { - expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); - }); + // Update node's position + node.x0 += delta[0]; + node.x1 += delta[0]; + node.y0 += delta[1]; + node.y1 += delta[1]; - it('controls the padding between nodes', function() { - expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); - }); + // Update links + var updatedGraph = sankey.update(graph); - it('keep a list of nodes', function() { - checkArray('name', ['node0', 'node1', 'node2', 'node3', 'node4']); - }); + // Check node position + expect(updatedGraph.nodes[nodeIndex].x0).toBeCloseTo(pos0[0] + delta[0], 0); + expect(updatedGraph.nodes[nodeIndex].x1).toBeCloseTo(pos1[0] + delta[0], 0); + expect(updatedGraph.nodes[nodeIndex].y0).toBeCloseTo(pos0[1] + delta[1], 0); + expect(updatedGraph.nodes[nodeIndex].y1).toBeCloseTo(pos1[1] + delta[1], 0); - it('keep a list of nodes with x and y values', function() { - checkRoundedArray('x0', [0, 0, 381, 763, 1144]); - checkRoundedArray('y0', [0, 365, 184, 253, 0]); - }); + return updatedGraph; + } - it('keep a list of nodes with positions in integer (depth, height)', function() { - checkArray('depth', [0, 0, 1, 2, 3]); - checkArray('height', [3, 3, 2, 1, 0]); - }); + describe('d3-sankey', function() { + var data = { + 'nodes': [{ + 'node': 0, + 'name': 'node0' + }, { + 'node': 1, + 'name': 'node1' + }, { + 'node': 2, + 'name': 'node2' + }, { + 'node': 3, + 'name': 'node3' + }, { + 'node': 4, + 'name': 'node4' + }], + 'links': [{ + 'source': 0, + 'target': 2, + 'value': 2 + }, { + 'source': 1, + 'target': 2, + 'value': 2 + }, { + 'source': 1, + 'target': 3, + 'value': 2 + }, { + 'source': 0, + 'target': 4, + 'value': 2 + }, { + 'source': 2, + 'target': 3, + 'value': 2 + }, { + 'source': 2, + 'target': 4, + 'value': 2 + }, { + 'source': 3, + 'target': 4, + 'value': 4 + }] + }; + var sankey; + var graph; + var margin = { + top: 10, + right: 10, + bottom: 10, + left: 10 + }; + var width = 1200 - margin.left - margin.right; + var height = 740 - margin.top - margin.bottom; - it('keep a list of links', function() { - var linkWidths = sankey().links.map(function(obj) { - return (obj.width); + beforeEach(function() { + sankey = d3sankey + .sankey() + .nodeWidth(36) + .nodePadding(10) + .nodes(data.nodes) + .links(data.links) + .size([width, height]) + .iterations(32); + + graph = sankey(); }); - expect(linkWidths).toEqual([177.5, 177.5, 177.5, 177.5, 177.5, 177.5, 355]); - }); - it('controls the size of the figure', function() { - expect(sankey.size()).toEqual([1180, 720], 'incorrect size'); - }); -}); + it('controls the width of nodes', function() { + expect(sankey.nodeWidth()).toEqual(36, 'incorrect nodeWidth'); + }); -describe('d3-sankey-ciruclar', function() { - var data, sankey, graph; + it('controls the padding between nodes', function() { + expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); + }); - function _calc(trace) { - var gd = { data: [trace] }; + it('controls the padding between nodes', function() { + expect(sankey.nodePadding()).toEqual(10, 'incorrect nodePadding'); + }); - supplyAllDefaults(gd); - var fullTrace = gd._fullData[0]; - return Sankey.calc(gd, fullTrace); - } + it('keep a list of nodes', function() { + checkArray(graph.nodes, 'name', ['node0', 'node1', 'node2', 'node3', 'node4']); + }); - beforeEach(function() { - data = _calc(mockCircular.data[0]); - data = { - nodes: data[0]._nodes, - links: data[0]._links - }; - sankey = d3SankeyCircular - .sankeyCircular() - .iterations(32) - .circularLinkGap(2) - .nodePadding(10) - .size([500, 500]) - .nodeId(function(d) { - return d.pointNumber; - }) - .nodes(data.nodes) - .links(data.links); - - graph = sankey(); - }); + it('keep a list of nodes with x and y values', function() { + checkRoundedArray(graph.nodes, 'x0', [0, 0, 381, 763, 1144]); + checkRoundedArray(graph.nodes, 'y0', [0, 365, 184, 253, 0]); + }); - function checkArray(key, result) { - var value = graph.nodes.map(function(obj) { - return obj[key]; + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray(graph.nodes, 'depth', [0, 0, 1, 2, 3]); + checkArray(graph.nodes, 'height', [3, 3, 2, 1, 0]); }); - expect(value).toEqual(result, 'invalid property named ' + key); - } - function checkRoundedArray(key, result, msg) { - var value = graph.nodes.map(function(obj) { - return Math.round(obj[key]); + it('keep a list of links', function() { + var linkWidths = sankey().links.map(function(obj) { + return (obj.width); + }); + expect(linkWidths).toEqual([177.5, 177.5, 177.5, 177.5, 177.5, 177.5, 355]); }); - expect(value).toEqual(result, msg); - } - it('creates a graph with circular links', function() { - expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); - var circularLinks = graph.links.filter(function(link) { - return link.circular; + it('controls the size of the figure', function() { + expect(sankey.size()).toEqual([1180, 720], 'incorrect size'); }); - expect(circularLinks.length).toEqual(2, 'there are two circular links'); - }); - it('keep a list of nodes with positions in integer (depth, height)', function() { - checkArray('depth', [0, 0, 2, 3, 1, 1]); - checkArray('height', [1, 3, 1, 0, 2, 0]); - }); + it('updates links vertical position upon moving nodes', function() { + var nodeIndex = 0; + var linkIndex = 0; + var delta = [200, 300]; - it('keep a list of nodes with positions in x and y', function() { - checkRoundedArray('x0', [72, 72, 267, 365, 169, 169]); - checkRoundedArray('y0', [303, 86, 72, 109, 86, 359]); + var linkY0 = graph.links[linkIndex].y0; + var updatedGraph = moveNode(sankey, graph, nodeIndex, delta); + expect(updatedGraph.links[linkIndex].y0).toBeCloseTo(linkY0 + delta[1]); + }); }); - it('supports column reordering', function() { - var reorder = [ 2, 2, 1, 1, 0, 0 ]; + describe('d3-sankey-ciruclar', function() { + var data, sankey, graph; - checkArray('column', [0, 0, 2, 3, 1, 1]); + function _calc(trace) { + var gd = { data: [trace] }; - var a = graph.nodes[0].x0; - sankey.nodeAlign(function(node) { - return reorder[node.pointNumber]; + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + beforeEach(function() { + data = _calc(mockCircular.data[0]); + data = { + nodes: data[0]._nodes, + links: data[0]._links + }; + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .circularLinkGap(2) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); + + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(2, 'there are two circular links'); }); - graph = sankey(); - checkArray('column', [2, 2, 1, 1, 0, 0]); - checkArray('height', [1, 3, 1, 0, 2, 0]); - var b = graph.nodes[0].x0; - expect(a).not.toEqual(b); - }); + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray(graph.nodes, 'depth', [0, 0, 2, 3, 1, 1]); + checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); + }); + + it('keep a list of nodes with positions in x and y', function() { + checkRoundedArray(graph.nodes, 'x0', [72, 72, 267, 365, 169, 169]); + checkRoundedArray(graph.nodes, 'y0', [303, 86, 72, 109, 86, 359]); + }); + + it('supports column reordering', function() { + var reorder = [ 2, 2, 1, 1, 0, 0 ]; + + checkArray(graph.nodes, 'column', [0, 0, 2, 3, 1, 1]); + + var a = graph.nodes[0].x0; + sankey.nodeAlign(function(node) { + return reorder[node.pointNumber]; + }); + graph = sankey(); + checkArray(graph.nodes, 'column', [2, 2, 1, 1, 0, 0]); + checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); + var b = graph.nodes[0].x0; + expect(a).not.toEqual(b); + }); + + it('updates links vertical position and circularLinkType upon moving nodes', function() { + var linkIndex = 6; + var nodeIndex = 2; + var delta = [0, 400]; + + var link = graph.links[linkIndex]; + var linkY1 = link.y1; + var node = graph.nodes[nodeIndex]; + var offsetTopToBottom = (node.y1 - node.y0) * link.value / node.value; + + // Start with a circular link on top + expect(link.circular).toBeTruthy(); + expect(link.circularLinkType).toEqual('top'); + + // Update graph + var updatedGraph = moveNode(sankey, graph, nodeIndex, delta); + var updatedLink = updatedGraph.links[linkIndex]; + + // End up with a cirular link on bottom + expect(updatedLink.circular).toBeTruthy(); + expect(updatedLink.circularLinkType).toEqual('bottom'); + expect(updatedLink.y1).toBeCloseTo(linkY1 + delta[1] + offsetTopToBottom, 0); + }); + }); }); From 48a8b1b6a5bfd18015f4778b88b9238fa7b0b976 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 22 Jan 2019 16:06:03 -0500 Subject: [PATCH 31/39] sankey-circular: add baseline with subplots and vertical orientation --- .../baselines/sankey_subplots_circular.png | Bin 0 -> 35726 bytes .../image/mocks/sankey_subplots_circular.json | 65 ++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 test/image/baselines/sankey_subplots_circular.png create mode 100644 test/image/mocks/sankey_subplots_circular.json diff --git a/test/image/baselines/sankey_subplots_circular.png b/test/image/baselines/sankey_subplots_circular.png new file mode 100644 index 0000000000000000000000000000000000000000..3b6c2c7b44a5d004f9afe7cd593c05c887ad542e GIT binary patch literal 35726 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

3{C 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 Date: Thu, 31 Jan 2019 14:51:13 -0500 Subject: [PATCH 32/39] update Sankey deps --- package-lock.json | 24 +++++++++++++----------- package.json | 4 ++-- src/traces/sankey/render.js | 2 +- test/jasmine/tests/sankey_test.js | 2 +- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/package-lock.json b/package-lock.json index 3862b3cfd59..091ca72c110 100644 --- a/package-lock.json +++ b/package-lock.json @@ -117,6 +117,16 @@ "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==" }, + "@plotly/d3-sankey": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz", + "integrity": "sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw==", + "requires": { + "d3-array": "1", + "d3-collection": "1", + "d3-shape": "^1.2.0" + } + }, "@types/bluebird": { "version": "3.5.24", "resolved": "https://registry.npmjs.org/@types/bluebird/-/bluebird-3.5.24.tgz", @@ -2327,18 +2337,10 @@ "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.3.tgz", "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, - "d3-sankey": { - "version": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "from": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "requires": { - "d3-array": "1", - "d3-collection": "1", - "d3-shape": "^1.2.0" - } - }, "d3-sankey-circular": { - "version": "git://github.com/antoinerg/d3-sankey-circular.git#ad8c6e345583cb4ed2a5cb2353678fb6b2d54c71", - "from": "git://github.com/antoinerg/d3-sankey-circular.git#ad8c6e345583cb4ed2a5cb2353678fb6b2d54c71", + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.30.0.tgz", + "integrity": "sha512-7Rnjatzo/WcZrPONlrdtBK+puDdjShnQT82Cmk71xH4jIvF7vd1IFqcxYRLq6d6btFbIqeEPIRvU5JfAvSYWYg==", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", diff --git a/package.json b/package.json index 57cc6f9a581..03c0c3a2f0b 100644 --- a/package.json +++ b/package.json @@ -65,8 +65,8 @@ "convex-hull": "^1.0.3", "country-regex": "^1.1.0", "d3": "^3.5.12", - "d3-sankey": "git://github.com/antoinerg/d3-sankey.git#4f37ed8d3578b545a8569ecd74583f373768e900", - "d3-sankey-circular": "git://github.com/antoinerg/d3-sankey-circular.git#ad8c6e345583cb4ed2a5cb2353678fb6b2d54c71", + "@plotly/d3-sankey": "0.7.2", + "d3-sankey-circular": "0.30.0", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 0950da9128e..998203c199d 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -13,7 +13,7 @@ var d3 = require('d3'); var tinycolor = require('tinycolor2'); var Color = require('../../components/color'); var Drawing = require('../../components/drawing'); -var d3Sankey = require('d3-sankey'); +var d3Sankey = require('@plotly/d3-sankey'); var d3SankeyCircular = require('d3-sankey-circular'); var d3Force = require('d3-force'); var Lib = require('../../lib'); diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index 5a551a1ea67..de3a598609b 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -2,7 +2,7 @@ var Plotly = require('@lib/index'); var attributes = require('@src/traces/sankey/attributes'); var Lib = require('@src/lib'); var d3 = require('d3'); -var d3sankey = require('d3-sankey'); +var d3sankey = require('@plotly/d3-sankey'); var d3SankeyCircular = require('d3-sankey-circular'); var mock = require('@mocks/sankey_energy.json'); var mockDark = require('@mocks/sankey_energy_dark.json'); From ebe613b98335e980e78bc137e154996237f46fe4 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 5 Feb 2019 18:38:18 -0500 Subject: [PATCH 33/39] nest API tests for d3-sankey-circular in its own describe block --- test/jasmine/tests/sankey_test.js | 147 +++++++++++++++--------------- 1 file changed, 75 insertions(+), 72 deletions(-) diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index de3a598609b..45e808a31ee 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -7,6 +7,7 @@ var d3SankeyCircular = require('d3-sankey-circular'); var mock = require('@mocks/sankey_energy.json'); var mockDark = require('@mocks/sankey_energy_dark.json'); var mockCircular = require('@mocks/sankey_circular.json'); +var mockCircularLarge = require('@mocks/sankey_circular_large.json'); var Sankey = require('@src/traces/sankey'); var createGraphDiv = require('../assets/create_graph_div'); @@ -1069,91 +1070,93 @@ describe('sankey layout generators', function() { describe('d3-sankey-ciruclar', function() { var data, sankey, graph; - function _calc(trace) { - var gd = { data: [trace] }; - - supplyAllDefaults(gd); - var fullTrace = gd._fullData[0]; - return Sankey.calc(gd, fullTrace); - } - - beforeEach(function() { - data = _calc(mockCircular.data[0]); - data = { - nodes: data[0]._nodes, - links: data[0]._links - }; - sankey = d3SankeyCircular - .sankeyCircular() - .iterations(32) - .circularLinkGap(2) - .nodePadding(10) - .size([500, 500]) - .nodeId(function(d) { - return d.pointNumber; - }) - .nodes(data.nodes) - .links(data.links); - - graph = sankey(); - }); + describe('implements d3-sankey compatible API', function() { + function _calc(trace) { + var gd = { data: [trace] }; + + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + beforeEach(function() { + data = _calc(mockCircular.data[0]); + data = { + nodes: data[0]._nodes, + links: data[0]._links + }; + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .circularLinkGap(2) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); - it('creates a graph with circular links', function() { - expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); - var circularLinks = graph.links.filter(function(link) { - return link.circular; + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(6, 'there are 6 nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(2, 'there are two circular links'); }); - expect(circularLinks.length).toEqual(2, 'there are two circular links'); - }); - it('keep a list of nodes with positions in integer (depth, height)', function() { - checkArray(graph.nodes, 'depth', [0, 0, 2, 3, 1, 1]); - checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); - }); + it('keep a list of nodes with positions in integer (depth, height)', function() { + checkArray(graph.nodes, 'depth', [0, 0, 2, 3, 1, 1]); + checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); + }); - it('keep a list of nodes with positions in x and y', function() { - checkRoundedArray(graph.nodes, 'x0', [72, 72, 267, 365, 169, 169]); - checkRoundedArray(graph.nodes, 'y0', [303, 86, 72, 109, 86, 359]); - }); + it('keep a list of nodes with positions in x and y', function() { + checkRoundedArray(graph.nodes, 'x0', [72, 72, 267, 365, 169, 169]); + checkRoundedArray(graph.nodes, 'y0', [303, 86, 72, 109, 86, 359]); + }); - it('supports column reordering', function() { - var reorder = [ 2, 2, 1, 1, 0, 0 ]; + it('supports column reordering', function() { + var reorder = [ 2, 2, 1, 1, 0, 0 ]; - checkArray(graph.nodes, 'column', [0, 0, 2, 3, 1, 1]); + checkArray(graph.nodes, 'column', [0, 0, 2, 3, 1, 1]); - var a = graph.nodes[0].x0; - sankey.nodeAlign(function(node) { - return reorder[node.pointNumber]; + var a = graph.nodes[0].x0; + sankey.nodeAlign(function(node) { + return reorder[node.pointNumber]; + }); + graph = sankey(); + checkArray(graph.nodes, 'column', [2, 2, 1, 1, 0, 0]); + checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); + var b = graph.nodes[0].x0; + expect(a).not.toEqual(b); }); - graph = sankey(); - checkArray(graph.nodes, 'column', [2, 2, 1, 1, 0, 0]); - checkArray(graph.nodes, 'height', [1, 3, 1, 0, 2, 0]); - var b = graph.nodes[0].x0; - expect(a).not.toEqual(b); - }); - it('updates links vertical position and circularLinkType upon moving nodes', function() { - var linkIndex = 6; - var nodeIndex = 2; - var delta = [0, 400]; + it('updates links vertical position and circularLinkType upon moving nodes', function() { + var linkIndex = 6; + var nodeIndex = 2; + var delta = [0, 400]; - var link = graph.links[linkIndex]; - var linkY1 = link.y1; - var node = graph.nodes[nodeIndex]; - var offsetTopToBottom = (node.y1 - node.y0) * link.value / node.value; + var link = graph.links[linkIndex]; + var linkY1 = link.y1; + var node = graph.nodes[nodeIndex]; + var offsetTopToBottom = (node.y1 - node.y0) * link.value / node.value; - // Start with a circular link on top - expect(link.circular).toBeTruthy(); - expect(link.circularLinkType).toEqual('top'); + // Start with a circular link on top + expect(link.circular).toBeTruthy(); + expect(link.circularLinkType).toEqual('top'); - // Update graph - var updatedGraph = moveNode(sankey, graph, nodeIndex, delta); - var updatedLink = updatedGraph.links[linkIndex]; + // Update graph + var updatedGraph = moveNode(sankey, graph, nodeIndex, delta); + var updatedLink = updatedGraph.links[linkIndex]; - // End up with a cirular link on bottom - expect(updatedLink.circular).toBeTruthy(); - expect(updatedLink.circularLinkType).toEqual('bottom'); - expect(updatedLink.y1).toBeCloseTo(linkY1 + delta[1] + offsetTopToBottom, 0); + // End up with a cirular link on bottom + expect(updatedLink.circular).toBeTruthy(); + expect(updatedLink.circularLinkType).toEqual('bottom'); + expect(updatedLink.y1).toBeCloseTo(linkY1 + delta[1] + offsetTopToBottom, 0); + }); }); }); }); From 04d53ff16de3e6ea13e05b54e28ef24fe5ea2c16 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Tue, 5 Feb 2019 18:39:20 -0500 Subject: [PATCH 34/39] d3-sankey-circular test large dataset --- test/image/mocks/sankey_circular_large.json | 235 ++++++++++++++++++++ test/jasmine/tests/sankey_test.js | 39 ++++ 2 files changed, 274 insertions(+) create mode 100644 test/image/mocks/sankey_circular_large.json diff --git a/test/image/mocks/sankey_circular_large.json b/test/image/mocks/sankey_circular_large.json new file mode 100644 index 00000000000..1cda2a0bccc --- /dev/null +++ b/test/image/mocks/sankey_circular_large.json @@ -0,0 +1,235 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "label": ["P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "P", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S", "S"] + }, + "link": { + "source": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25], + "target": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], + "value": [0.0, 0.0, 0.006646893, 11.68228, 412.55902, 442.56927, 0.013883961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.78665316, 8.526513e-14, 0.6138538, 45.966034, 7136.0156, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 0.0, 0.0, 0.60126424, 0.0, 0.0, 44.941578, 7118.8457, 2395.3425, 538.55695, 82.62762, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07240185, 11.468614, 3.858948, 0.8676268, 0.13311486, 0.0, 4.275301e-39, 0.09171584, 14.527993, 4.8883653, 1.0990758, 0.16862473, 3.1385706e-25, 0.11330401, 17.947605, 6.0389934, 1.3577774, 0.20831577, 0.0, 0.0, 0.18538894, 5.684342e-14, 0.6138538, 1.024453, 17.16984, 28.75857, 970.52997, 7037.6914, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6077, 558.2992, 191.0962, 121.232994, 578.6912, 24.096718, 26.353783, 719.0876, 3113.8757, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.105827, 165.261, 56.58344, 31.020855, 81.85729, 1.6002578, 26.410742, 725.0432, 3206.8154, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.514482, 286.2017, 97.96848, 53.24637, 142.6171, 2.948419, 0.0, 0.0, 0.18538894, 0.0, 0.6138538, 1.024453, 17.16984, 26.14728, 697.4959, 2776.9333, 42.072098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0013678052, 0.002282713, 0.038258288, 0.058262054, 1.5541787, 6.1876354, 0.093746156, 0.0012357329, 0.0020622993, 0.03456415, 0.052636396, 1.4041106, 5.590171, 0.08469423, 0.0018279847, 0.0030507008, 0.05112977, 0.07786353, 2.077061, 8.2693815, 0.12528577, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.6112895, 273.0341, 4260.7583, 253.02411, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.42756, 38.605415, 558.2609, 191.03795, 119.67882, 572.5036, 24.002972, 0.20650205, 21.591648, 336.94254, 20.00925, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.207823, 12.103765, 165.22644, 56.530804, 29.616745, 76.26712, 1.5155635, 0.26346198, 27.547321, 429.88214, 25.528448, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.248255, 20.51143, 286.15054, 97.890625, 51.169308, 134.34772, 2.8231332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.109188, 220.53482, 3441.4954, 204.37238, 7.391909e-07, 0.022095865, 0.026396444, 62.26038, 1.910779, 0.37069288, 32.42175, 0.0019032779, 0.6365791, 21.818855, 25.026388, 355.7736, 118.061905, 72.05826, 334.72137, 13.659042, 0.7359496, 26.192354, 31.18233, 450.91797, 154.30498, 96.666855, 462.42203, 19.387655, 0.16651253, 17.410383, 271.69296, 16.134422, 7.7489085e-07, 0.023194602, 0.02770698, 65.335144, 1.9988183, 0.22508979, 3.0771644, 1.858965e-05, 0.67629486, 23.010817, 26.302855, 373.3437, 123.68602, 62.95675, 157.5141, 3.011998, 0.23029031, 8.231058, 9.759848, 133.23003, 45.583508, 23.881405, 61.497852, 1.2220718, 0.20387426, 21.316889, 332.65485, 19.754627, 7.8483055e-07, 0.023506481, 0.02807797, 66.20128, 2.0252693, 0.23129526, 3.3973153, 2.43151e-05, 0.6896849, 23.37594, 26.672651, 378.293, 125.28533, 64.061714, 164.15088, 3.321302, 0.37259033, 13.347183, 15.87232, 221.4313, 75.7505, 39.59624, 103.96202, 2.1846197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.50210136, 52.499268, 819.2629, 48.65173, 1.7596759e-07, 0.0052600163, 0.0062837875, 14.821353, 0.4548692, 0.08824504, 7.7181377, 0.00045308354, 0.15154041, 5.1940727, 5.9576397, 84.69344, 28.105146, 17.15378, 79.68187, 3.251594, 0.17519598, 6.2352033, 7.423088, 107.34297, 36.732967, 23.011963, 110.08156, 4.6153154, 0.039989512, 4.1812634, 65.24956, 3.8748293, 1.8609715e-07, 0.0055703963, 0.0066540856, 15.690835, 0.48003453, 0.05405738, 0.73900926, 4.464475e-06, 0.16241841, 5.526259, 6.3168716, 89.66191, 29.704332, 15.119641, 37.828457, 0.7233589, 0.05530633, 1.9767642, 2.343917, 31.996414, 10.947297, 5.7353387, 14.769273, 0.29349175, 0.059587725, 6.2304325, 97.2273, 5.7738204, 2.293878e-07, 0.0068704, 0.008206541, 19.3491, 0.5919393, 0.06760225, 0.9929566, 7.1067407e-06, 0.20157892, 6.832246, 7.7957983, 110.566284, 36.618, 18.723755, 47.9775, 0.9707396, 0.10889953, 3.9010725, 4.6391115, 64.71924, 22.140118, 11.573065, 30.38569, 0.6385137, 2736.3335, 2108.9036, 14.86675, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 443.5915, 6569.0674, 8.137072, 454.3161, 5378.305, 8.642767, 13.946691, 6915.0107, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.245143, 3592.2676, 10.048806, 4982.3726, 86.01402, 580.18024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.001811, 892.7646, 21.076576, 730.4533, 2460.0493, 1528.7233, 2790.7883, 11.968955, 417.03336, 490.2733, 7145.696, 2425.3513, 1509.3833, 7120.8516, 295.1046, 9.831879e-07, 0.02820494, 0.033103738, 77.49881, 2.3709927, 0.45937082, 40.155697, 0.002356749, 0.8467053, 27.851343, 31.385553, 442.85034, 146.49727, 89.29619, 414.56647, 16.913418, 2.4631135, 87.6656, 104.5645, 1540.2618, 527.0252, 330.07645, 1564.7445, 65.141014, 245.31956, 5676.3027, 2606.2048, 11.884567, 415.89694, 489.7617, 7142.8506, 2422.5776, 1257.8187, 3196.672, 62.082596, 1.0113957e-06, 0.029394984, 0.034675278, 81.33534, 2.4828045, 0.27933297, 3.8172343, 2.30568e-05, 0.8827072, 29.16207, 32.91801, 464.77338, 153.63487, 78.12836, 195.39685, 3.7357903, 0.62885964, 22.479483, 26.857958, 395.88016, 135.35571, 70.72537, 180.61414, 3.5236323, 242.96942, 4647.8516, 2571.1414, 11.841463, 415.3165, 489.50037, 7141.397, 2422.4468, 1263.7379, 3289.5796, 67.601616, 1.0560822e-06, 0.030900408, 0.03654561, 85.80741, 2.6204917, 0.29905406, 4.391232, 3.1424708e-05, 0.9280525, 30.728804, 34.71648, 490.32806, 162.10643, 82.828835, 212.17477, 4.2924333, 0.9368864, 33.565334, 40.13769, 591.81586, 202.3785, 106.24914, 277.9107, 5.737055, 2495.4575, 1203.661, 9.040011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 362.2623, 4105.1655, 7.4855456, 356.7432, 3127.01, 6.5761266, 0.0, 0.0, 1708.9695, 0.28667504, 3.8604624, 1.7379957, 9.666174, 1.2502424, 0.29634866, 0.53239435, 0.00840123, 6.802936e-08, 0.00084905897, 0.00042350602, 0.41707394, 0.005344402, 0.00043290236, 0.015808823, 3.8748325e-07, 0.05858577, 0.8384146, 0.40152475, 2.3832796, 0.33021626, 0.08415104, 0.16320992, 0.0027808049, 1.551968, 55.236675, 65.8844, 970.4941, 332.07007, 207.97583, 985.92017, 41.0443, 1415.1053, 0.20228739, 2.7240698, 1.2263873, 6.820772, 0.8813371, 0.17427117, 0.16865067, 0.0012471518, 5.0407706e-08, 0.00062998536, 0.00031421002, 0.30936044, 0.0039516515, 0.00018580105, 0.0010605482, 2.675087e-09, 0.043993905, 0.62499356, 0.29828656, 1.767774, 0.2445265, 0.05196784, 0.05428742, 0.00043343264, 0.343263, 12.270425, 14.660415, 216.09117, 73.88391, 38.60544, 98.58822, 1.9233744, 1243.1842, 0.1591833, 2.1436157, 0.96506447, 5.367378, 0.69355506, 0.13778628, 0.13657272, 0.0010686538, 4.1863846e-08, 0.00052352564, 0.00026109786, 0.2570343, 0.0032831817, 0.00015655463, 0.0009601131, 2.8691258e-09, 0.036788657, 0.52061826, 0.24802977, 1.4687674, 0.20310114, 0.043360844, 0.046390574, 0.00039190616, 0.45539653, 16.315252, 19.509907, 287.66656, 98.37101, 51.64499, 135.0853, 2.7886357, 154.86191, 325.06226, 5.8267384, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.32737, 1571.1372, 0.65152603, 76.49633, 1520.8418, 2.0666401, 0.0, 0.0, 1066.9521, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 1182.9623, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 1319.3145, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 94.707184, 325.06226, 1072.7788, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 13.172645, 1571.1372, 1183.6139, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 16.3416, 1520.8418, 1321.3811, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 2365.342, 1203.661, 1718.0094, 0.28667504, 3.8604624, 1.7379957, 9.666174, 1.2502424, 0.29634866, 0.53239435, 0.00840123, 6.802936e-08, 0.00084905897, 0.00042350602, 0.41707394, 0.005344402, 0.00043290236, 0.015808823, 3.8748325e-07, 0.05858577, 0.8384146, 0.40152475, 2.3832796, 0.33021626, 0.08415104, 0.16320992, 0.0027808049, 1.551968, 55.236675, 65.8844, 970.4941, 332.07007, 207.97583, 985.92017, 41.0443, 232.14693, 4105.1655, 1422.591, 0.20228739, 2.7240698, 1.2263873, 6.820772, 0.8813371, 0.17427117, 0.16865067, 0.0012471518, 5.0407706e-08, 0.00062998536, 0.00031421002, 0.30936044, 0.0039516515, 0.00018580105, 0.0010605482, 2.675087e-09, 0.043993905, 0.62499356, 0.29828656, 1.767774, 0.2445265, 0.05196784, 0.05428742, 0.00043343264, 0.343263, 12.270425, 14.660415, 216.09117, 73.88391, 38.60544, 98.58822, 1.9233744, 226.62782, 3127.01, 1249.7604, 0.1591833, 2.1436157, 0.96506447, 5.367378, 0.69355506, 0.13778628, 0.13657272, 0.0010686538, 4.1863846e-08, 0.00052352564, 0.00026109786, 0.2570343, 0.0032831817, 0.00015655463, 0.0009601131, 2.8691258e-09, 0.036788657, 0.52061826, 0.24802977, 1.4687674, 0.20310114, 0.043360844, 0.046390574, 0.00039190616, 0.45539653, 16.315252, 19.509907, 287.66656, 98.37101, 51.64499, 135.0853, 2.7886357, 130.11539, 130.11539, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7933001, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 208.01515, 0.0, 1066.1588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1182.1691, 1318.5211, 2534.4382, 11143.2, 850.0, 1.4210855e-14, 0.0, 0.0, 0.0, 2.109188, 220.53482, 3441.4954, 204.37238, 10.644975, 372.82385, 439.97794, 7309.9087, 2190.6462, 1195.7097, 3826.735, 109.31696, 0.6365791, 21.818855, 25.026388, 355.7736, 118.061905, 72.05826, 334.72137, 13.659042, 3.673447, 129.06758, 152.58765, 1480.1659, 758.29, 426.52255, 1509.4688, 49.553318, 37.661854, 12188.093, 1083.6708, 0.16651253, 17.410383, 271.69296, 16.134422, 8.71208, 306.87488, 363.09512, 6260.749, 1812.035, 929.52545, 2206.279, 35.054283, 0.67629486, 23.010817, 26.302855, 373.3437, 123.68602, 62.95675, 157.5141, 3.011998, 3.504252, 123.54458, 146.199, 1326.5828, 725.78723, 373.10846, 889.45154, 14.395311, 64.565796, 12390.9, 1031.66, 0.20387426, 21.316889, 332.65485, 19.754627, 8.824489, 311.60336, 369.0566, 6371.218, 1843.2927, 947.7279, 2276.1665, 37.48881, 0.6896849, 23.37594, 26.672651, 378.293, 125.28533, 64.061714, 164.15088, 3.321302, 3.6919887, 130.55031, 154.68521, 1436.5192, 768.3573, 396.00433, 958.8815, 16.286312, 2560.01, 9023.914, 2790.7883, 11.968955, 417.03336, 490.2733, 7145.696, 2425.3513, 1509.3833, 7120.8516, 295.1046, 9.831879e-07, 0.02820494, 0.033103738, 77.49881, 2.3709927, 0.45937082, 40.155697, 0.002356749, 0.8467053, 27.851343, 31.385553, 442.85034, 146.49727, 89.29619, 414.56647, 16.913418, 2.4631135, 87.6656, 104.5645, 1540.2618, 527.0252, 330.07645, 1564.7445, 65.141014, 260.56653, 10161.335, 2606.2048, 11.884567, 415.89694, 489.7617, 7142.8506, 2422.5776, 1257.8187, 3196.672, 62.082596, 1.0113957e-06, 0.029394984, 0.034675278, 81.33534, 2.4828045, 0.27933297, 3.8172343, 2.30568e-05, 0.8827072, 29.16207, 32.91801, 464.77338, 153.63487, 78.12836, 195.39685, 3.7357903, 0.62885964, 22.479483, 26.857958, 395.88016, 135.35571, 70.72537, 180.61414, 3.5236323, 274.0948, 10360.678, 2571.1414, 11.841463, 415.3165, 489.50037, 7141.397, 2422.4468, 1263.7379, 3289.5796, 67.601616, 1.0560822e-06, 0.030900408, 0.03654561, 85.80741, 2.6204917, 0.29905406, 4.391232, 3.1424708e-05, 0.9280525, 30.728804, 34.71648, 490.32806, 162.10643, 82.828835, 212.17477, 4.2924333, 0.9368864, 33.565334, 40.13769, 591.81586, 202.3785, 106.24914, 277.9107, 5.737055, 190.27011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 208.01515, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4687487, 51.437614, 60.70266, 29.2479, 301.9925, 164.92784, 523.5234, 15.082831, 1.6369808, 57.65676, 68.21958, 340.10187, 174.61353, 413.97684, 6.58662, 1.6596992, 58.601566, 69.40645, 346.3034, 178.20404, 427.45975, 7.0508466, 34.438293, 11143.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 37.661842, 12188.093, 38.298496, 12390.9, 2500.0, 0.0, 850.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.644974, 372.80176, 439.95154, 7247.6484, 2188.7356, 1195.3391, 3794.3135, 109.315056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4687487, 51.437614, 60.70266, 1000.0, 301.9925, 164.92784, 523.5234, 15.082831, 1e-05, 1083.6708, 8.71208, 306.85168, 363.0674, 6195.414, 1810.0363, 929.30035, 2203.202, 35.054264, 1.6369808, 57.65676, 68.21958, 1164.1049, 340.10187, 174.61353, 413.97684, 6.58662, 26.2673, 1031.66, 8.824488, 311.57983, 369.02853, 6305.0166, 1841.2675, 947.49664, 2272.7693, 37.48879, 1.6596992, 58.601566, 69.40645, 1185.84, 346.3034, 178.20404, 427.45975, 7.0508466], + "label": ["label_0", "label_1", "label_2", "label_3", "label_4", "label_5", "label_6", "label_7", "label_8", "label_9", "label_10", "label_11", "label_12", "label_13", "label_14", "label_15", "label_16", "label_17", "label_18", "label_19", "label_20", "label_21", "label_22", "label_23", "label_24", "label_25", "label_26", "label_27", "label_28", "label_29", "label_30", "label_31", "label_32", "label_33", "label_34", "label_35", "label_36", "label_37", "label_38", "label_39", "label_40", "label_41", "label_42", "label_43", "label_44", "label_45", "label_46", "label_47", "label_48", "label_49", "label_50", "label_51", "label_52", "label_53", "label_54", "label_55", "label_56", "label_57", "label_58", "label_59", "label_60", "label_61", "label_62", "label_63", "label_64", "label_65", "label_66", "label_67", "label_68", "label_69", "label_70", "label_71", "label_72", "label_73", "label_74", "label_75", "label_76", "label_77", "label_78", "label_79", "label_80", "label_81", "label_82", "label_83", "label_84", "label_85", "label_86", "label_87", "label_88", "label_89", "label_90", "label_91", "label_92", "label_93", "label_94", "label_95", "label_96", "label_97", "label_98", "label_99", "label_100", "label_101", "label_102", "label_103", "label_104", "label_105", "label_106", "label_107", "label_108", "label_109", "label_110", "label_111", "label_112", "label_113", "label_114", "label_115", "label_116", "label_117", "label_118", "label_119", "label_120", "label_121", "label_122", "label_123", "label_124", "label_125", "label_126", "label_127", "label_128", "label_129", "label_130", "label_131", "label_132", "label_133", "label_134", "label_135", "label_136", "label_137", "label_138", "label_139", "label_140", "label_141", "label_142", "label_143", "label_144", "label_145", "label_146", "label_147", "label_148", "label_149", "label_150", "label_151", "label_152", "label_153", "label_154", "label_155", "label_156", "label_157", "label_158", "label_159", "label_160", "label_161", "label_162", "label_163", "label_164", "label_165", "label_166", "label_167", "label_168", "label_169", "label_170", "label_171", "label_172", "label_173", "label_174", "label_175", "label_176", "label_177", "label_178", "label_179", "label_180", "label_181", "label_182", "label_183", "label_184", "label_185", "label_186", "label_187", "label_188", "label_189", "label_190", "label_191", "label_192", "label_193", "label_194", "label_195", "label_196", "label_197", "label_198", "label_199", "label_200", "label_201", "label_202", "label_203", "label_204", "label_205", "label_206", "label_207", "label_208", "label_209", "label_210", "label_211", "label_212", "label_213", "label_214", "label_215", "label_216", "label_217", "label_218", "label_219", "label_220", "label_221", "label_222", "label_223", "label_224", "label_225", "label_226", "label_227", "label_228", "label_229", "label_230", "label_231", "label_232", "label_233", "label_234", "label_235", "label_236", "label_237", "label_238", "label_239", "label_240", "label_241", "label_242", "label_243", "label_244", "label_245", "label_246", "label_247", "label_248", "label_249", "label_250", "label_251", "label_252", "label_253", "label_254", "label_255", "label_256", "label_257", "label_258", "label_259", "label_260", "label_261", "label_262", "label_263", "label_264", "label_265", "label_266", "label_267", "label_268", "label_269", "label_270", "label_271", "label_272", "label_273", "label_274", "label_275", "label_276", "label_277", "label_278", "label_279", "label_280", "label_281", "label_282", "label_283", "label_284", "label_285", "label_286", "label_287", "label_288", "label_289", "label_290", "label_291", "label_292", "label_293", "label_294", "label_295", "label_296", "label_297", "label_298", "label_299", "label_300", "label_301", "label_302", "label_303", "label_304", "label_305", "label_306", "label_307", "label_308", "label_309", "label_310", "label_311", "label_312", "label_313", "label_314", "label_315", "label_316", "label_317", "label_318", "label_319", "label_320", "label_321", "label_322", "label_323", "label_324", "label_325", "label_326", "label_327", "label_328", "label_329", "label_330", "label_331", "label_332", "label_333", "label_334", "label_335", "label_336", "label_337", "label_338", "label_339", "label_340", "label_341", "label_342", "label_343", "label_344", "label_345", "label_346", "label_347", "label_348", "label_349", "label_350", "label_351", "label_352", "label_353", "label_354", "label_355", "label_356", "label_357", "label_358", "label_359", "label_360", "label_361", "label_362", "label_363", "label_364", "label_365", "label_366", "label_367", "label_368", "label_369", "label_370", "label_371", "label_372", "label_373", "label_374", "label_375", "label_376", "label_377", "label_378", "label_379", "label_380", "label_381", "label_382", "label_383", "label_384", "label_385", "label_386", "label_387", "label_388", "label_389", "label_390", "label_391", "label_392", "label_393", "label_394", "label_395", "label_396", "label_397", "label_398", "label_399", "label_400", "label_401", "label_402", "label_403", "label_404", "label_405", "label_406", "label_407", "label_408", "label_409", "label_410", "label_411", "label_412", "label_413", "label_414", "label_415", "label_416", "label_417", "label_418", "label_419", "label_420", "label_421", "label_422", "label_423", "label_424", "label_425", "label_426", "label_427", "label_428", "label_429", "label_430", "label_431", "label_432", "label_433", "label_434", "label_435", "label_436", "label_437", "label_438", "label_439", "label_440", "label_441", "label_442", "label_443", "label_444", "label_445", "label_446", "label_447", "label_448", "label_449", "label_450", "label_451", "label_452", "label_453", "label_454", "label_455", "label_456", "label_457", "label_458", "label_459", "label_460", "label_461", "label_462", "label_463", "label_464", "label_465", "label_466", "label_467", "label_468", "label_469", "label_470", "label_471", "label_472", "label_473", "label_474", "label_475", "label_476", "label_477", "label_478", "label_479", "label_480", "label_481", "label_482", "label_483", "label_484", "label_485", "label_486", "label_487", "label_488", "label_489", "label_490", "label_491", "label_492", "label_493", "label_494", "label_495", "label_496", "label_497", "label_498", "label_499", "label_500", "label_501", "label_502", "label_503", "label_504", "label_505", "label_506", "label_507", "label_508", "label_509", "label_510", "label_511", "label_512", "label_513", "label_514", "label_515", "label_516", "label_517", "label_518", "label_519", "label_520", "label_521", "label_522", "label_523", "label_524", "label_525", "label_526", "label_527", "label_528", "label_529", "label_530", "label_531", "label_532", "label_533", "label_534", "label_535", "label_536", "label_537", "label_538", "label_539", "label_540", "label_541", "label_542", "label_543", "label_544", "label_545", "label_546", "label_547", "label_548", "label_549", "label_550", "label_551", "label_552", "label_553", "label_554", "label_555", "label_556", "label_557", "label_558", "label_559", "label_560", "label_561", "label_562", "label_563", "label_564", "label_565", "label_566", "label_567", "label_568", "label_569", "label_570", "label_571", "label_572", "label_573", "label_574", "label_575", "label_576", "label_577", "label_578", "label_579", "label_580", "label_581", "label_582", "label_583", "label_584", "label_585", "label_586", "label_587", "label_588", "label_589", "label_590", "label_591", "label_592", "label_593", "label_594", "label_595", "label_596", "label_597", "label_598", "label_599", "label_600", "label_601", "label_602", "label_603", "label_604", "label_605", "label_606", "label_607", "label_608", "label_609", "label_610", "label_611", "label_612", "label_613", "label_614", "label_615", "label_616", "label_617", "label_618", "label_619", "label_620", "label_621", "label_622", "label_623", "label_624", "label_625", "label_626", "label_627", "label_628", "label_629", "label_630", "label_631", "label_632", "label_633", "label_634", "label_635", "label_636", "label_637", "label_638", "label_639", "label_640", "label_641", "label_642", "label_643", "label_644", "label_645", "label_646", "label_647", "label_648", "label_649", "label_650", "label_651", "label_652", "label_653", "label_654", "label_655", "label_656", "label_657", "label_658", "label_659", "label_660", "label_661", "label_662", "label_663", "label_664", "label_665", "label_666", "label_667", "label_668", "label_669", "label_670", "label_671", "label_672", "label_673", "label_674", "label_675", "label_676", "label_677", "label_678", "label_679", "label_680", "label_681", "label_682", "label_683", "label_684", "label_685", "label_686", "label_687", "label_688", "label_689", "label_690", "label_691", "label_692", "label_693", "label_694", "label_695", "label_696", "label_697", "label_698", "label_699", "label_700", "label_701", "label_702", "label_703", "label_704", "label_705", "label_706", "label_707", "label_708", "label_709", "label_710", "label_711", "label_712", "label_713", "label_714", "label_715", "label_716", "label_717", "label_718", "label_719", "label_720", "label_721", "label_722", "label_723", "label_724", "label_725", "label_726", "label_727", "label_728", "label_729", "label_730", "label_731", "label_732", "label_733", "label_734", "label_735", "label_736", "label_737", "label_738", "label_739", "label_740", "label_741", "label_742", "label_743", "label_744", "label_745", "label_746", "label_747", "label_748", "label_749", "label_750", "label_751", "label_752", "label_753", "label_754", "label_755", "label_756", "label_757", "label_758", "label_759", "label_760", "label_761", "label_762", "label_763", "label_764", "label_765", "label_766", "label_767", "label_768", "label_769", "label_770", "label_771", "label_772", "label_773", "label_774", "label_775", "label_776", "label_777", "label_778", "label_779", "label_780", "label_781", "label_782", "label_783", "label_784", "label_785", "label_786", "label_787", "label_788", "label_789", "label_790", "label_791", "label_792", "label_793", "label_794", "label_795", "label_796", "label_797", "label_798", "label_799", "label_800", "label_801", "label_802", "label_803", "label_804", "label_805", "label_806", "label_807", "label_808", "label_809", "label_810", "label_811", "label_812", "label_813", "label_814", "label_815", "label_816", "label_817", "label_818", "label_819", "label_820", "label_821", "label_822", "label_823", "label_824", "label_825", "label_826", "label_827", "label_828", "label_829", "label_830", "label_831", "label_832", "label_833", "label_834", "label_835", "label_836", "label_837", "label_838", "label_839", "label_840", "label_841", "label_842", "label_843", "label_844", "label_845", "label_846", "label_847", "label_848", "label_849", "label_850", "label_851", "label_852", "label_853", "label_854", "label_855", "label_856", "label_857", "label_858", "label_859", "label_860", "label_861", "label_862", "label_863", "label_864", "label_865", "label_866", "label_867", "label_868", "label_869", "label_870", "label_871", "label_872", "label_873", "label_874", "label_875", "label_876", "label_877", "label_878", "label_879", "label_880", "label_881", "label_882", "label_883", "label_884", "label_885", "label_886", "label_887", "label_888", "label_889", "label_890", "label_891", "label_892", "label_893", "label_894", "label_895", "label_896", "label_897", "label_898", "label_899", "label_900", "label_901", "label_902", "label_903", "label_904", "label_905", "label_906", "label_907", "label_908", "label_909", "label_910", "label_911", "label_912", "label_913", "label_914", "label_915", "label_916", "label_917", "label_918", "label_919", "label_920", "label_921", "label_922", "label_923", "label_924", "label_925", "label_926", "label_927", "label_928", "label_929", "label_930", "label_931", "label_932", "label_933", "label_934", "label_935", "label_936", "label_937", "label_938", "label_939", "label_940", "label_941", "label_942", "label_943", "label_944", "label_945", "label_946", "label_947", "label_948", "label_949", "label_950", "label_951", "label_952", "label_953", "label_954", "label_955", "label_956", "label_957", "label_958", "label_959", "label_960", "label_961", "label_962", "label_963", "label_964", "label_965", "label_966", "label_967", "label_968", "label_969", "label_970", "label_971", "label_972", "label_973", "label_974", "label_975", "label_976", "label_977", "label_978", "label_979", "label_980", "label_981", "label_982", "label_983", "label_984", "label_985", "label_986", "label_987", "label_988", "label_989", "label_990", "label_991", "label_992", "label_993", "label_994", "label_995", "label_996", "label_997", "label_998", "label_999", "label_1000", "label_1001", "label_1002", "label_1003", "label_1004", "label_1005", "label_1006", "label_1007", "label_1008", "label_1009", "label_1010", "label_1011", "label_1012", "label_1013", "label_1014", "label_1015", "label_1016", "label_1017", "label_1018", "label_1019", "label_1020", "label_1021", "label_1022", "label_1023", "label_1024", "label_1025", "label_1026", "label_1027", "label_1028", "label_1029", "label_1030", "label_1031", "label_1032", "label_1033", "label_1034", "label_1035", "label_1036", "label_1037", "label_1038", "label_1039", "label_1040", "label_1041", "label_1042", "label_1043", "label_1044", "label_1045", "label_1046", "label_1047", "label_1048", "label_1049", "label_1050", "label_1051", "label_1052", "label_1053", "label_1054", "label_1055", "label_1056", "label_1057", "label_1058", "label_1059", "label_1060", "label_1061", "label_1062", "label_1063", "label_1064", "label_1065", "label_1066", "label_1067", "label_1068", "label_1069", "label_1070", "label_1071", "label_1072", "label_1073", "label_1074", "label_1075", "label_1076", "label_1077", "label_1078", "label_1079", "label_1080", "label_1081", "label_1082", "label_1083", "label_1084", "label_1085", "label_1086", "label_1087", "label_1088", "label_1089", "label_1090", "label_1091", "label_1092", "label_1093", "label_1094", "label_1095", "label_1096", "label_1097", "label_1098", "label_1099", "label_1100", "label_1101", "label_1102", "label_1103", "label_1104", "label_1105", "label_1106", "label_1107", "label_1108", "label_1109", "label_1110", "label_1111", "label_1112", "label_1113", "label_1114", "label_1115", "label_1116", "label_1117", "label_1118", "label_1119", "label_1120", "label_1121", "label_1122", "label_1123", "label_1124", "label_1125", "label_1126", "label_1127", "label_1128", "label_1129", "label_1130", "label_1131", "label_1132", "label_1133", "label_1134", "label_1135", "label_1136", "label_1137", "label_1138", "label_1139", "label_1140", "label_1141", "label_1142", "label_1143", "label_1144", "label_1145", "label_1146", "label_1147", "label_1148", "label_1149", "label_1150", "label_1151", "label_1152", "label_1153", "label_1154", "label_1155", "label_1156", "label_1157", "label_1158", "label_1159", "label_1160", "label_1161", "label_1162", "label_1163", "label_1164", "label_1165", "label_1166", "label_1167", "label_1168", "label_1169", "label_1170", "label_1171", "label_1172", "label_1173", "label_1174", "label_1175", "label_1176", "label_1177", "label_1178", "label_1179", "label_1180", "label_1181", "label_1182", "label_1183", "label_1184", "label_1185", "label_1186", "label_1187", "label_1188", "label_1189", "label_1190", "label_1191", "label_1192", "label_1193", "label_1194", "label_1195", "label_1196", "label_1197", "label_1198", "label_1199", "label_1200", "label_1201", "label_1202", "label_1203", "label_1204", "label_1205", "label_1206", "label_1207", "label_1208", "label_1209", "label_1210", "label_1211", "label_1212", "label_1213", "label_1214", "label_1215", "label_1216", "label_1217", "label_1218", "label_1219", "label_1220", "label_1221", "label_1222", "label_1223", "label_1224", "label_1225", "label_1226", "label_1227", "label_1228", "label_1229", "label_1230", "label_1231", "label_1232", "label_1233", "label_1234", "label_1235", "label_1236", "label_1237", "label_1238", "label_1239", "label_1240", "label_1241", "label_1242", "label_1243", "label_1244", "label_1245", "label_1246", "label_1247", "label_1248", "label_1249", "label_1250", "label_1251", "label_1252", "label_1253", "label_1254", "label_1255", "label_1256", "label_1257", "label_1258", "label_1259", "label_1260", "label_1261", "label_1262", "label_1263", "label_1264", "label_1265", "label_1266", "label_1267", "label_1268", "label_1269", "label_1270", "label_1271", "label_1272", "label_1273", "label_1274", "label_1275", "label_1276", "label_1277", "label_1278", "label_1279", "label_1280", "label_1281", "label_1282", "label_1283", "label_1284", "label_1285", "label_1286", "label_1287", "label_1288", "label_1289", "label_1290", "label_1291", "label_1292", "label_1293", "label_1294", "label_1295", "label_1296", "label_1297", "label_1298", "label_1299", "label_1300", "label_1301", "label_1302", "label_1303", "label_1304", "label_1305", "label_1306", "label_1307", "label_1308", "label_1309", "label_1310", "label_1311", "label_1312", "label_1313", "label_1314", "label_1315", "label_1316", "label_1317", "label_1318", "label_1319", "label_1320", "label_1321", "label_1322", "label_1323", "label_1324", "label_1325", "label_1326", "label_1327", "label_1328", "label_1329", "label_1330", "label_1331", "label_1332", "label_1333", "label_1334", "label_1335", "label_1336", "label_1337", "label_1338", "label_1339", "label_1340", "label_1341", "label_1342", "label_1343", "label_1344", "label_1345", "label_1346", "label_1347", "label_1348", "label_1349", "label_1350", "label_1351", "label_1352", "label_1353", "label_1354", "label_1355", "label_1356", "label_1357", "label_1358", "label_1359", "label_1360", "label_1361", "label_1362", "label_1363", "label_1364", "label_1365", "label_1366", "label_1367", "label_1368", "label_1369", "label_1370", "label_1371", "label_1372", "label_1373", "label_1374", "label_1375", "label_1376", "label_1377", "label_1378", "label_1379", "label_1380", "label_1381", "label_1382", "label_1383", "label_1384", "label_1385", "label_1386", "label_1387", "label_1388", "label_1389", "label_1390", "label_1391", "label_1392", "label_1393", "label_1394", "label_1395", "label_1396", "label_1397", "label_1398", "label_1399", "label_1400", "label_1401", "label_1402", "label_1403", "label_1404", "label_1405", "label_1406", "label_1407", "label_1408", "label_1409", "label_1410", "label_1411", "label_1412", "label_1413", "label_1414", "label_1415", "label_1416", "label_1417", "label_1418", "label_1419", "label_1420", "label_1421", "label_1422", "label_1423", "label_1424", "label_1425", "label_1426", "label_1427", "label_1428", "label_1429", "label_1430", "label_1431", "label_1432", "label_1433", "label_1434", "label_1435", "label_1436", "label_1437", "label_1438", "label_1439", "label_1440", "label_1441", "label_1442", "label_1443", "label_1444", "label_1445", "label_1446", "label_1447", "label_1448", "label_1449", "label_1450", "label_1451", "label_1452", "label_1453", "label_1454", "label_1455", "label_1456", "label_1457", "label_1458", "label_1459", "label_1460", "label_1461", "label_1462", "label_1463", "label_1464", "label_1465", "label_1466", "label_1467", "label_1468", "label_1469", "label_1470", "label_1471", "label_1472", "label_1473", "label_1474", "label_1475", "label_1476", "label_1477", "label_1478", "label_1479", "label_1480", "label_1481", "label_1482", "label_1483", "label_1484", "label_1485", "label_1486", "label_1487", "label_1488", "label_1489", "label_1490", "label_1491", "label_1492", "label_1493", "label_1494", "label_1495", "label_1496", "label_1497", "label_1498", "label_1499", "label_1500", "label_1501", "label_1502", "label_1503", "label_1504", "label_1505", "label_1506", "label_1507", "label_1508", "label_1509", "label_1510", "label_1511", "label_1512", "label_1513", "label_1514", "label_1515", "label_1516", "label_1517", "label_1518", "label_1519", "label_1520", "label_1521", "label_1522", "label_1523", "label_1524", "label_1525", "label_1526", "label_1527", "label_1528", "label_1529", "label_1530", "label_1531", "label_1532", "label_1533", "label_1534", "label_1535", "label_1536", "label_1537", "label_1538", "label_1539", "label_1540", "label_1541", "label_1542", "label_1543", "label_1544", "label_1545", "label_1546", "label_1547", "label_1548", "label_1549", "label_1550", "label_1551", "label_1552", "label_1553", "label_1554", "label_1555", "label_1556", "label_1557", "label_1558", "label_1559", "label_1560", "label_1561", "label_1562", "label_1563", "label_1564", "label_1565", "label_1566", "label_1567", "label_1568", "label_1569", "label_1570", "label_1571", "label_1572", "label_1573", "label_1574", "label_1575", "label_1576", "label_1577", "label_1578", "label_1579", "label_1580", "label_1581", "label_1582", "label_1583", "label_1584", "label_1585", "label_1586", "label_1587", "label_1588", "label_1589", "label_1590", "label_1591", "label_1592", "label_1593", "label_1594", "label_1595", "label_1596", "label_1597", "label_1598", "label_1599", "label_1600", "label_1601", "label_1602", "label_1603", "label_1604", "label_1605", "label_1606", "label_1607", "label_1608", "label_1609", "label_1610", "label_1611", "label_1612", "label_1613", "label_1614", "label_1615", "label_1616", "label_1617", "label_1618", "label_1619", "label_1620", "label_1621", "label_1622", "label_1623", "label_1624", "label_1625", "label_1626", "label_1627", "label_1628", "label_1629", "label_1630", "label_1631", "label_1632", "label_1633", "label_1634", "label_1635", "label_1636", "label_1637", "label_1638", "label_1639", "label_1640", "label_1641", "label_1642", "label_1643", "label_1644", "label_1645", "label_1646", "label_1647", "label_1648", "label_1649", "label_1650", "label_1651", "label_1652", "label_1653", "label_1654", "label_1655", "label_1656", "label_1657", "label_1658", "label_1659", "label_1660", "label_1661", "label_1662", "label_1663", "label_1664", "label_1665", "label_1666", "label_1667", "label_1668", "label_1669", "label_1670", "label_1671", "label_1672", "label_1673", "label_1674", "label_1675", "label_1676", "label_1677", "label_1678", "label_1679", "label_1680", "label_1681", "label_1682", "label_1683", "label_1684", "label_1685", "label_1686", "label_1687", "label_1688", "label_1689", "label_1690", "label_1691", "label_1692", "label_1693", "label_1694", "label_1695", "label_1696", "label_1697", "label_1698", "label_1699", "label_1700", "label_1701", "label_1702", "label_1703", "label_1704", "label_1705", "label_1706", "label_1707", "label_1708", "label_1709", "label_1710", "label_1711", "label_1712", "label_1713", "label_1714", "label_1715", "label_1716", "label_1717", "label_1718", "label_1719", "label_1720", "label_1721", "label_1722", "label_1723", "label_1724", "label_1725", "label_1726", "label_1727", "label_1728", "label_1729", "label_1730", "label_1731", "label_1732", "label_1733", "label_1734", "label_1735", "label_1736", "label_1737", "label_1738", "label_1739", "label_1740", "label_1741", "label_1742", "label_1743", "label_1744", "label_1745", "label_1746", "label_1747", "label_1748", "label_1749", "label_1750", "label_1751", "label_1752", "label_1753", "label_1754", "label_1755", "label_1756", "label_1757", "label_1758", "label_1759", "label_1760", "label_1761", "label_1762", "label_1763", "label_1764", "label_1765", "label_1766", "label_1767", "label_1768", "label_1769", "label_1770", "label_1771", "label_1772", "label_1773", "label_1774", "label_1775", "label_1776", "label_1777", "label_1778", "label_1779", "label_1780", "label_1781", "label_1782", "label_1783", "label_1784", "label_1785", "label_1786", "label_1787", "label_1788", "label_1789", "label_1790", "label_1791", "label_1792", "label_1793", "label_1794", "label_1795", "label_1796", "label_1797", "label_1798", "label_1799", "label_1800", "label_1801", "label_1802", "label_1803", "label_1804", "label_1805", "label_1806", "label_1807", "label_1808", "label_1809", "label_1810", "label_1811", "label_1812", "label_1813", "label_1814", "label_1815", "label_1816", "label_1817", "label_1818", "label_1819", "label_1820", "label_1821", "label_1822", "label_1823", "label_1824", "label_1825", "label_1826", "label_1827", "label_1828", "label_1829", "label_1830", "label_1831", "label_1832", "label_1833", "label_1834", "label_1835", "label_1836", "label_1837", "label_1838", "label_1839", "label_1840", "label_1841", "label_1842", "label_1843", "label_1844", "label_1845", "label_1846", "label_1847", "label_1848", "label_1849", "label_1850", "label_1851", "label_1852", "label_1853", "label_1854", "label_1855", "label_1856", "label_1857", "label_1858", "label_1859", "label_1860", "label_1861", "label_1862", "label_1863", "label_1864", "label_1865", "label_1866", "label_1867", "label_1868", "label_1869", "label_1870", "label_1871", "label_1872", "label_1873", "label_1874", "label_1875", "label_1876", "label_1877", "label_1878", "label_1879", "label_1880", "label_1881", "label_1882", "label_1883", "label_1884", "label_1885", "label_1886", "label_1887", "label_1888", "label_1889", "label_1890", "label_1891", "label_1892", "label_1893", "label_1894", "label_1895", "label_1896", "label_1897", "label_1898", "label_1899", "label_1900", "label_1901", "label_1902", "label_1903", "label_1904", "label_1905", "label_1906", "label_1907", "label_1908", "label_1909", "label_1910", "label_1911", "label_1912", "label_1913", "label_1914", "label_1915", "label_1916"], + "colorscales": [{ + "label": "label_0", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_1", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_2", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_3", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_4", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_5", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_6", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_7", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_8", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_9", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_10", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_11", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_12", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_13", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_14", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_15", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_16", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_17", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_18", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_19", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_20", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_21", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_22", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_23", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_24", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_25", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_26", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_27", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_28", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_29", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_30", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_31", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_32", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_33", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_34", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }], + "hovertemplate": "%{label}
%{flow.labelConcentration:%0.2f}
%{flow.value}" + } + } + ], + "layout": { + "width": 800, + "height": 800, + "margin": { + "b": 0, "l": 0, "r": 0, "t":0 + } + } +} diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index 45e808a31ee..2805d43c013 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -1158,5 +1158,44 @@ describe('sankey layout generators', function() { expect(updatedLink.y1).toBeCloseTo(linkY1 + delta[1] + offsetTopToBottom, 0); }); }); + + describe('handles large number of links', function() { + function _calc(trace) { + var gd = { data: [trace] }; + + supplyAllDefaults(gd); + var fullTrace = gd._fullData[0]; + return Sankey.calc(gd, fullTrace); + } + + beforeEach(function() { + data = _calc(mockCircularLarge.data[0]); + data = { + nodes: data[0]._nodes, + links: data[0]._links + }; + sankey = d3SankeyCircular + .sankeyCircular() + .iterations(32) + .circularLinkGap(2) + .nodePadding(10) + .size([500, 500]) + .nodeId(function(d) { + return d.pointNumber; + }) + .nodes(data.nodes) + .links(data.links); + + graph = sankey(); + }); + + it('creates a graph with circular links', function() { + expect(graph.nodes.length).toEqual(26, 'right number of nodes'); + var circularLinks = graph.links.filter(function(link) { + return link.circular; + }); + expect(circularLinks.length).toEqual(194, 'right number of circular links'); + }); + }); }); }); From 003704c106bb679fc0fadc5f0615e315445316d1 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 11 Feb 2019 11:18:51 -0500 Subject: [PATCH 35/39] remove gap between circular links --- src/traces/sankey/render.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/traces/sankey/render.js b/src/traces/sankey/render.js index 998203c199d..249ebab281d 100644 --- a/src/traces/sankey/render.js +++ b/src/traces/sankey/render.js @@ -45,7 +45,7 @@ function sankeyModel(layout, d, traceIndex) { if(circular) { sankey = d3SankeyCircular .sankeyCircular() - .circularLinkGap(2) + .circularLinkGap(0) .nodeId(function(d) { return d.pointNumber; }); From 3625234aef64bb228c14818ec9a57e47ab528700 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 11 Feb 2019 11:47:31 -0500 Subject: [PATCH 36/39] update d3-sankey-circular and associated baselines --- package-lock.json | 16 +- package.json | 2 +- .../image/baselines/sankey_circular_large.png | Bin 0 -> 150627 bytes .../baselines/sankey_circular_process.png | Bin 115067 -> 114017 bytes .../baselines/sankey_circular_simple.png | Bin 0 -> 40127 bytes .../baselines/sankey_subplots_circular.png | Bin 35726 -> 39189 bytes test/image/mocks/sankey_circular_large.json | 459 +++++++++--------- test/image/mocks/sankey_circular_simple.json | 31 ++ test/jasmine/tests/sankey_test.js | 3 +- 9 files changed, 272 insertions(+), 239 deletions(-) create mode 100644 test/image/baselines/sankey_circular_large.png create mode 100644 test/image/baselines/sankey_circular_simple.png create mode 100644 test/image/mocks/sankey_circular_simple.json diff --git a/package-lock.json b/package-lock.json index 091ca72c110..742b50d96b1 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2338,13 +2338,13 @@ "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, "d3-sankey-circular": { - "version": "0.30.0", - "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.30.0.tgz", - "integrity": "sha512-7Rnjatzo/WcZrPONlrdtBK+puDdjShnQT82Cmk71xH4jIvF7vd1IFqcxYRLq6d6btFbIqeEPIRvU5JfAvSYWYg==", + "version": "git://github.com/plotly/d3-sankey-circular.git#4da7da7572809de361cbe4aceed813ea536de005", + "from": "git://github.com/plotly/d3-sankey-circular.git#4da7da7572809de361cbe4aceed813ea536de005", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", - "d3-shape": "^1.2.0" + "d3-shape": "^1.2.0", + "elementary-circuits-directed-graph": "^1.0.2" } }, "d3-shape": { @@ -3046,6 +3046,14 @@ "resolved": "https://registry.npmjs.org/element-size/-/element-size-1.1.1.tgz", "integrity": "sha1-ZOXxWdlxIWMYRby67K8nnDm1404=" }, + "elementary-circuits-directed-graph": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.0.2.tgz", + "integrity": "sha512-sgZObFWqdmJ0rqXlCbabVE/iZIFWZgP7V5LNwWnxD4Ml7FwxqUUYt8xkLa6rRScIj7d6Ln6/+ZKCc+gTLVA6GA==", + "requires": { + "strongly-connected-components": "^1.0.1" + } + }, "elliptic": { "version": "6.4.1", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", diff --git a/package.json b/package.json index 03c0c3a2f0b..5c61430b6c2 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "@plotly/d3-sankey": "0.7.2", - "d3-sankey-circular": "0.30.0", + "d3-sankey-circular": "git://github.com/plotly/d3-sankey-circular.git#4da7da7572809de361cbe4aceed813ea536de005", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", diff --git a/test/image/baselines/sankey_circular_large.png b/test/image/baselines/sankey_circular_large.png new file mode 100644 index 0000000000000000000000000000000000000000..600ff74b614d2d3f7aadd091606120aec3845c36 GIT binary patch literal 150627 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≺Bz?q0w#RHahL@PvAZ!Em{(?VBl^^JWz{;ncE? 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 Kn^(oWV;>`X#UTn6vR5**bs~Fa zBwJ+VetduTJ|6cUaL#$ZU+>rJxnAav$xnhQJ_ODKTsTC`IV2^nYzvjulNlf z`VFMJ4y+i;GVTSI(y~bsV{hDRTh_P>{VZyj@Vcwj53%fjy#F!7DZhW`2H!f~CHW9p zTlG=~*r@te>L$!|ug0s|Aj`6w2ED!$>OG>oex*N27Dh2|F$cSz(SpZuoxCC zcY?Ds=ViW}Yx%H^xT3@`D1JccEsNL*CWL&v-;^5?ivA1FqleOt5$Kg?ZX-ysqbmd1 zEdR2hpRXcs5Nh{^;yyeo;{OI=lZUE?E{y;#dk2$_g0L$C0#M#R^|0>aKkG(SS=|=g z0^cEQ3rf*~Dv}1bEaVcsAHUILv$Il>5xq%|m(H3IwHp-~p>bZWnRur!Xw+=lyR)#Cv1z*Uoe38my~!Q_~$A%z)v3adCt1tPMF zfKv#FR8#nk_>MQxX{2n#w`pcbmMrw92vqtw=nQ|(+@o&O)DRhV5TdmPM9E)Aq!qZ( zYA-uhla{R1(0qPLEKX2xZ&Zq9Hfo>odV&3dgUV_`RAjOZtgVzipb2h}lg=2XMQh*A zsUDv>*Z0D$yW&d=zoWGWby)3Ju!k40MsAOtxknyWzA7mYI^z zXH@^t6oBUvLc7EmtjQ*}whXf!`SF>WEH)(OB?R>y=GH9=tT1Rg$y#}T=s?QbN?P(> zBER}!)Qn$2MskTsnWT{MhB>-VRdMB%YcWL8bk5!s*cJ-)Lo=B zWI~Fq6kVin51j>PUZ=8F=T=!5#_A5t`5#ZOYfs`$2AgoaLZ9%T6X>qrVmd|X^FP?b z$@w31p=#9|09Y}2Wp#7PpsR@1jyMh%i)hNmJOa=BS~6vj9tw>OrJ&Ry)+Qt^-=Qay zM@&KSqfvk9Xo(5cPV;R7v_Ix&Lbm(kteI$kT5wym>0pL{9~+*oMEre?PIf}#oqMpC zkk5z=n3C*bdPp&9;YlMd@dRoEvwt%ZWFtu_8456>VlcLm$p!zY*9u-A4l^OQ?@YBW7BWLfp0 zyievJbF~Xka9pb|DelRk&Q1HXcE)LtC4yjli4=RrD58+y>xm##Dujg8&jst4=}K(mQ64K^GOP_V1D?apW~nk&c-;?R zuBcB$-n|;F>E-j6)oyfdzXp%kR(rDhmeXBlCKwU;5;uhNP5@7R&vYKNg&+*Y-ur_>}{@uME?nlnH|g z2fY8c9-I}IVpbm$UK<6YS)V_uXot@|%OXBS#jjO^=WsLRy|c33dy8KSN6*(#tKt&4 za=NhazG~~?HYe`uY$l8VYUMOOLz0U{XsXWD>fIvG$aJZJ@X48cqd`Qm6yF%^_;Hz` z!7quW1T-}Y@28pF;usOd8D}l2?TbT*uE89$AXQ$R3c*JSG8ks*$(5P7Vvb>-POgpY zbx2zPw*QDmhHE((#=7A0l2e~Lf;@=w1Akw4DbkMAN*x6@0|07h_!t@rBmFf9|JC|{ z*@iGP7pZtzj~k*BNkV(oYkTsOofYk6AtVCQ7EO{+6;91!*e)=lqN>Q0L7`=^3q?#^ zeino+{6@yJ8e-Vs^8I#Qrem{2c0AIxOpyPN`hzaFAm*` zHFWP5w_R#XlVZxm?wvg$)Cx1~JspVoT|h^0uLHnZVd`>Km-MR}wl9(RI}jE7pEEE4 zl$r>w5c+-$zc-|qS}7@{>KRVGULDf(SLF@(qhtr74ILrVxE$R|j}F7PCrGnu z0798UxAXmZ*1%TtfD>8C0k6JjPscu~)Pj`&xnbXY9%+k=7}DHMc7ImqqU{*0?|mT{ zswH09?rfz|cVYXdc2|R1S-If9$c-!`QRghXfbD;LTOuE)XD@G88gW_zz@V;dCr&HRyFoP$-%enpYqByg?sg z`Re;SeWTFO%s_Q0fsPclV$J@rAu8DUPL;OmO;ctgsKpi1&@4nePDYU#UX>zXl+l`8 z`WK4Esa#g#3?F^Ib{D?CP>==K25a7`)qliuYruQq`gf`f8G#MNqIk zO{*Pw3UlKiUCG8ZZ8ZdpTc$GIdqXap8}mCz0Z-$9PW0DQRui=PDqwQ{V=ezvH3SQ)v+Tb&h^f> zNs@P3a%V)19O?0iW5q-#+X)GrHo|9Zh=Ei6~?uxto3Bl5uX@-1(iFHtBF+UVIm5Fs@h6Vsqei<*zYWK z6dl2Cze?YjlLpYMj3aSHFakYYTpa1=)GOC-K_s$E*{F8Z;sipoJWUD5dnawfm+4lT-Dsxmf3pl?%O6Dx>> z+Y9?`^)-^nOQpjhxO$Cj$?wu5(yK!+6#w_j((VG!f?0$ty6>Z$u-Q2F`KNoL$@3ZB z2Lt47PzeR~D5%*jfmx_zXjZAfu}{nSzY~vt@-Do5h@WZtN4r0DDZO>f6}s0LH6IAg z9Oc$qw0~I*(UkF$Wuc+g`GcGjH}DcLs_x5TI8E_NKn+OQ&$T_p4%)oO?FqvhXVxc zoVOsWz(flG&}T0^iyQ_1n+;(kaPA3G@JTwpi)`9%qhj#x!)|RlA(J!4hc@>+7|q;5 z$f?!($^V@f*J*-qJ}0@rShGEy7jTVb7X5u0Nn4QcLgQUUy08^9l7~*cS4f4sr7PwM_kj|{&{hVB zms8t`7CFW9uqw6$N>U_@9rBQc`#WQP;KN6Rgo(It)%p{U2#RdtAY|pH+GI()xIX1E zII!6?pOR7I4JW=P>aae3{s7`NoUgd~nSw(EF7_`1M?bzIQyLelcXp)}AtXBe=B+|| zWT5Y5AFXy>xTxm$X2rM%-awngN|yQXw#usmiyHrpPh<6*U*9{kNoFPgh8dL|t`TyO6bsah*78f0Z zA}E60r&}XksN*#w+=kdNVoFVx`%AKaJ1^m1`ol?eEbP^Go*j^NHnT*BdGn5>%)Cb$ z;SzNz@^Q|ysC>HlP`^EtN}E(y`u%XM4kaF4f%ti3Vf^4>)=C{o*Oju4V)~WF6|umO z;1%t=Uqu&L747mgGVgcHh{E@uD-@H4qQzl(qkeO(K^~+rRqQf8;uBAiTs-t-CGvq2 zkMdoiIom^m^kjfMLK^z8MfDovy?m9-d*c*gw3XTSDZ#qxJyu;f}1m! zMutdF1-12=e&vh)4GZ*J*+IhCV%vt)nffv=O-j2 z63MRcRrQ-`<%`%?>{WOE@{+C^w;5q`N_`Sa$H*qbN>L2~#<;Kp3>1q(54r|q@{%jFyxovi zS58%?{7gikGo^g^J%17Twy6n;dGyz@RaX+Pj4yOp0cU?w3!V1{&KqIU1?D8VN2Aa9 z2ait&cL8Gjo>*?>X~R~t9aA8*DBE+!ds+R8nqEAw!?z-h{vh?JMzQM8_nYb^QD)*0 zL^@0p_c!t819iVR{}Q8`az%gS0{(+vzc@yZ&bSp?TAaSj92_Mv__{7%Dd#usHP&wH zro}j^M7Fk3dW;~0pP>O*8KgRP);z->o_#6f2EuqUC`2Z-yF<}$VRJ?5hK$dhixVH0 z8%sRO9H|BCh%1mJs#R>(uTtt~vTn6uG*Q>qyH1Q?I4%~nw!EJYlhMgR`VJrdTG;fu z1@>U(4YK4SB(V`u4YN1JJDfB9smT;`te*LXcN+aE)h&~o^z4(*A6rfj?3+leZgdQg zl&X)v|Fo6l9c9r~eEI#Hygj+kS5et7bD3@O4++JKT&q$(%-`I6V9}vT z$}SnUtLMs24`8kpT#Qr;hM?C95rAR+UA2W_a%Uvj!Rg+hl}Dm?wYv%pjfUaOWrN%- zwP2dM8N2sQQ@cNV*?h>8iLXUshZqy&^M|F)KFE2_`qwCU!R8H{&9jXho4)InAiqGz zF&6_YaDnv}z+I$2@b?XoCP7`x-pgto*Hi}5t9Y~JvrbNTM0LWqR&&$j`N_ zW60i;arD>7;_bOmt86y_lMaKCr7H$b?12)FeSt<>Dei5J{p6^L$GByBwgtOG_DE$M zn^cCiv9sMH8NU*c^gE7tfZWlxq>m6@(5%rf&>rjN1eG@MgZ-Xq@@+5+IO-@OM@AGU ziK5+@E7V0&ctyEFaZ+5_tCCFQH`S8wk^zGZ?273zTq^Ct7Yk3 zN*eBBk@okIW1=Sh+Y3(KYChRKf+!%BmR^2HFaZVz;u~O!)W(Dwb<0t zK?aM57(X-rKaZkK6NnmG3iQ2>V7F~&{^_V97YZsK!w&hsvNB^7 zh$-hbi;)#l7TMjBeETn>8D3!5-q$W%If-!}nt2v575{_bkQXwISekl+%h+S)WZTHDreB*k+(>33k3)7JuaE}wK?T(5d8C-(7LCA0G72~&o zr>Ip*g`(?VyN1ub_@WU(wZqRD@v&L-2Hdx=lm!Qz9W$lh zl*w|9Q4w44gh{0o5FKV3y;Hacym0^tvZR@is&I<JT|R?Z^J{8Fd5>Yds-vM=OaVfVGhFaq~p6ft*DLl_bt^d>^aXs1>`cBc;G~hqa&@-p!8mh;**QvYC%q_6U65m ztkNL_z0TJnoz*K8O~N;aZ(Dd#ds$;hkcl|)>YZti8dAlX$3Od;r)@KG1=}9!H1R$U$9v<1Z1zeorH67UUm3VZ z-kwn`q51UM1oF2jfhJLl8+q#phpLcu-^|H7`L|>mnd6LDeVMz$^Q(N^^bX98)rnAg z!YeUAeV4*_`{A;>Pr#wEUC)!%k-`V^EY~nv&^rSBkhWNoPfzy&X`br>6U<@`FQ22k zSY6d?J>@HV)gUku`Tjpa6zm^ZhAS+4D_rD6Y>@a3=(Z6TN{KL{jO09|{PXfx?r=0d z>=G#|9oDgc-*n$jcA=a(%Yl*GHK?hpo#0@Md58_9kAj54rgJ zb|E8i27FnBrV}993pE3sOkAcJSGt+ADhOewAYE&-ph}dVDp01SUtBOQfATSZE$`vp zgKS?AD!!zFxvB8UN5b5$O{qSc{qQX0o#Cgq@Br*ZtAC*>u$)uIw<#{hdws5UPJ~Bo zz&RMNtAD5WDp^)^a=QHJBG?SP5=LC)5mYerb_5F}@T+9FlbVifP)G;~6CsnvCR|Zv zx=j20s63cOq?uU@+8#~fUW+eWFK@WBe2aKh|GlY9QH5{gM_ab98IkyY&;d3KC-tqZxC31x}n0S=n-AwF_LbpPfJcu<98(oQ8z5otPdw0 zTkMAccb(CakQdnl*-|W&%Gw2WVC(NDmUxb@317*Sw*X`GLgYtMn)r(D;;H}NOd%c#wp$qYs(&Q z4bM#QbTV|IR&;^`j)M3b61wpHJ`S;dG!%e@lMFx5smeDh`$&rW))q$9zb9}pF9Rcl z+4H(b(I%-8_b!^@nnEBHAyEE2GVIs@X2P|L+x^6E3`MJ{jw@|n_=$1AyhO?ces29jI)EIxj=XZ~jmqV(V4G`K3dGHW{L-=oqjSrg zX`{@#E3)!2gC?ZbL+4OKFE#lIYHa5T2ze}meVn0^8{I{k*|v~0Jtt^5&nn&wSAX6Y z{Sgz29LD+~zvF%Xy)ZuCojv;aH|vi~13&AlII@hWqiC-^tKhp|Uant?` z(MrRYhKbi-T%Z8skxh66XQBV@QqSn+)h<856Qo953Itw3vR5d(AqklL{!=YU@i>UV4lM8k zpv_F4g6&ZaQ*wGG=^y9$$@Y6x4QW}^b+Wns${x^Y5cmcaAe*?f;FW(Z+3;Vp|4BwG zHIhQ<225BhX z5Mm0#2Kt`h_F?6EM1iu%7%*cw9zinhXu+d>9?N;{yNgdChu`*RkA61kr}%Zl6Q41H z&l%d|PDMYn%{<-(wbm@>#sBOb`hM182)f-blvQ3cnN?nSLL{^?Z#S7W0=T)+Kyj~V zKWUbZa0;TG$`R>*os>$Ma#@_SetWTJqt^QBCFJf)((Buk3hCKa?6d4che=)Oimmx( zEdk5j&$A*p0)DvN{43zxwCuHLU9e6vsl=O*2rr+PmP-hG@~`{7Ndyhg<>3B;_&e?q ztbXZ*Ki-T~pG=w|b?UCi3ILD_7-^$#qqQ!bz1K?Z-$e{I5EMs(v4J_g$@)&;3>!Sk zSR`C5@L%lsK@B<|EQ=hXe%7<9mRo%)=|xuy5$>KrnKDp*gNpXhGN%E2(Swa&1Ctx8 zK3PCg!>`|+LBCbFFtiq}((Ivb?rt1j%Fb+U;cvx4vl!d87&yoPadAY2HNuN6^a45w zsjI-1UkdDAKVl;8gwkt%5aO8lBVbt7jT*!6I4^eA-81h@+gmEibP!U$v6Q9fkyDZz zaBQR8Bv-Olr69fA&8b0g!GaGotEsx+LW9Pz*L!-eaMEjg7K+gd^^3|7SpmLbsh%Mc!EUri@0{-~A#%1xIrwUsE?YK%vjXf*)hoylUSJ zinEF6q%Y(&Sr-D!cu5roKB5I1EJ5+^bqZ#n1v3*lu^fVV=s$a;B5(3z777byTtE7W zn(djIV`5ym8h0A|cVefD!x18J+`)>H<5W>3p-QA->Uvld%g|0jf*?`FV)WX9-5#Ee zj@c@@B~K+Esj&xflT?C@Pi?mTtdEKLLq}J{Y1yTJBxGOFUOCFNPuPsxW>MR;$VLOJ z&IFfi?wdI)1QpP$UZ42%uIx**kQHmm&$z#8@O{6(udO-uE|J=r7T@Dn;k5=0W)Juc zQCqzLlKduh7BYel@~ZMN;~#yZW6y;<#ZHP+qGlFx8Z&l{ZDO<(?~^^<{z7&c8*OMd z8*wS9+J3Tr%+$Bv1SI5>7V5Y>;LYI;3_|W~UpLxsq=v1cQwFx6$iOscU{Q_UEEXMj z!TGD<*%xwOI8#w++xcL?uGoOwx!Bpp85P}znfNQebs1R&;U1uKrLh(EhJIEV=sN7^ z|HpMDpp}&3hpf|Y1QF(ryKl)QEk{3`BV-w6nOUKcKTC{Fz4hqpzB}R@K+Id@f6DR0 zGuU)B(CN1fW`*_jX=s%TBn!C~qbSn+a=gMrZEgtpC)y^Igy^&UG!wZ@519Te(#jJmSms96!?N-x(QidUv#g4L_NKBhDfVZo+=82(%RBM+ zb^0^Q*Evkr3v4BEYY0839A0*vsRMlJG`Z3<>~TD^-+Z&{y;VeVcRVp$1m}nz9Bwa5 zK3i;n1X|6rY9WK)0n1TS12rd3>2w2ziO8eJM6`Yz*^LGSn?JaD93&XJK+@jnl~i2j zflAVl=uFj-@0~QwhqFw9T35}!>YIS<47c*NH(4%G^O{l3P@l8`=6*#eB#=Z5Kk>=V z$VU^SBNLG+EhXr^8h*IRnKlnUdZ)Z>o7OeDz?!( zTq%f+Ov6xm*u6c~*=;7^WP^d!afA>lvl1u_<_}mG9Sv(SGtS{Kj52@R>|JedR`D{U z8V?pRhblb}Ru*v;#0GZ9Iea^l5kq_EO&F&PBEaT??^+G8Hr#C&YHz5;IoRYMe zJ=2+Q+YZ5XE>uiBD;Ys@_hAGHC#{pdsdr%$-91PouA2TR!IFav#L^YM-rB&1HYi%l zRpSjuGT{fip{ytx0~8%Q+jXr79LpMU*kX}n%T4M>D?JIgDb*%Cpq7sP6yb+X#s1LAo?uI@gzHLuLA*pK z?$X;qLej2O@KYYOYbw12e_Cxfg99YG6B1gQm-wk$=BsD0<`R&w|J2s&tl|CIO~W2iNd{=!9SOi+<*JW#L%*j)S!&n5tIoQ5NGy zvr5=O=wwpEZ>a`hVe{?XG)ygLX7JGnT&wD6;LYkD8?cwn5psU^1aAwy&!Bo-V05kG z>gS%R!(|S%S>Ne_8;)Dfq|Z2d6MC`!1>86 zx0efOKGiMvXHtk(b;8M*6i9Ub{auVVy21qsREJ~3Vd|1ULg1F?CCYe{1EE@PkU z?f%47k>!&M8E~>Cc^Fq6CRj3(S$kL6e*Zcl*TE^20@y*O={Hn9-;)g)qO*)CPYQQa zzv^Wbx*tPS_-;l~N+|!uS3ee)YZ|VuAg<&#G=JBmv|yxYZfWhGu@@6N zj^v4wVORT%rHb6`t)L=BeZ;!MlW)CkX_~DB^_V75k8!X(n0_mQ5}LTNzLhUq07$tv z;*GT$y=mruPC9$Htv_nwoJCd;pbBju%>pFX3eu)r^G}}cG4b^fI8L?@2eNd(u6LZ> zZ=4XH{CscuQM=sH61`pjbvsSJPM3s|ujB63Hr3CtXoyUVvZ5;;SqFBmtY${&9+Pc9 zRmCT}u?!b3F||UK>-0`#&6i18Wve)myUJCIpg_kUDUY}f51hLoZ$b&(;;519fc>+Z zs|4+QX7wmv5PMe8o%`j8tX#Jl%$9VIVhIO-()3A21MR3^I08Ur!>TKL4NSG3~e4KYlsy#chZS z2`PM^RU9{Q8405z4GmL?mjdgR3SvE4YA{Mi)dAi*6d)s=NZEFx{LFOsY2f$#-ca;? zWUG5pbL~Z1PQ~OINGs#+!Zjbihy4B?-h_wobp$Xit1e~rT|Wr2^Gz4B6e5%H&j*K_ zRar2KlHGuEPHm0E@Vf0`-NrnIF`U^(Xo~J0n4udQsklh*;PN6){#tv;BWxfO)%JFx z+CZvVfcIdZf+jigsv?u!+hu@)u1$?^I17{cZ<1I9VtDJW%U z$+i((x|_M-MAR7A zb>%5gu}RkCTcA7vAuApoX{dYApD{`+GCcYa(}yvK24UgoA=rqxMK``yUqckLQWJ_` zxH7UY%yV`GCNZ2DP23XJhhB%kJyB)Eue07O*+n;~C1kf6_kR28EgJyK6L#;XN0c** zPnr&A?3iy_<6-tZi(xI!5BsvE#&q5($J}@Z$@Iw5H*tRzDTk`PtZ6?{b+7aX`9>My zhe8C6yZbMqGc;&k&ub|`S>3791^{vi1KyT(hKQF&HJ zpU3vY&=|F(Ac+{zF#x5(jK7GD60cP-EO!?bSUf?= zlQqYD|D|<0HuAq4N`*=;c~957Klarm_>2%#l{y`p{ygSfg}KYF_-HX72LTl9s{uzp zQw17?9cQF(o1^?W9{FTdz~mjVKar;vEnWrG-wWbpZF}b%^X|0hmFO(9=7ndu|Bdmn z`M_xyf9bOk2Ex`itb}Q;0y71X@;OPpx^!6m>rR@Z*r6mv&2`G4Z6qR?z1cjUi881a zq>m9qd()%0ALd|r}=HQL7C)=VjzX{*dW04|+_l9MIeV8a^@V3aiMy zgw6^=H|HHgyv)H5^T+o^!FMANJv5pm=`p%B+XB3XWY^7C0bhd9x0-%)K*R&Yqw?cb zQGaoHJi#d`*U9FUzzH+erCdo*)*(-lAU^S9`z~Yr&RqK?t7ry+1q0(=Xiypy_RRO} z&zQhO=NGAANwA-?kO{x&`=EJ=*NSJvQPM?jM0Kb{E`oS0;!*F&>c2mnk`qsVHF%Sn zOf!-mzPZW_xIwVqO{crPN=uP_^o4K8vx~i30?ta8B9o87LT>f|OOzD$6}dfgA|7$tJz zfRy8k$CUG%*0?@_nyJSGCpTxY>gn0AjYrPPW5*XpA3~`85)q7xEKYE;*Os^Z^YPt& z`{d(u<8^B!5*FL~K(J|voQBmpSdUQG0wxm3RH30Xq&iKJPe#j(#MbHxqw_%J1o+JG zlP9?U5}&3Xil2({j$4z@pNeiTiw&Xi+b{>5$N&ZOWTR%*fi{MarYolTRf@LOl$0H% z^;LRpRD2Yc$GJ-zyHmLzcxmPSCkGusFdEYIWZUNFH57^WPs2-VF@JWknOm!RL8F%mspoYw zN2wekcGt()viuwWp5eoFyP^>l0lJ~~M zr{%wGJ%PLh{J!wkqqZX`hBq!UkC8&A%;*}K_`&L5bQNcug&q+@fi9lbu!*pYnIS)W{N2o(XFOx#=pscboJ4%i$0UeE@ zHO_%(pFL25Fye|V7LOC0$WaZv$8Yt>We=ecRDXu}8VG=0LW=yTmLb8WJqY=uag~T> zh~b$qwvz5S*up!yapRtUGfZe{x-@L|1~q#W2fb%0gw3@)3Ih9l0ISu8B?;7NkB7Pf zoP?CI^1ZJfXPD^%K3qk5Vw>DQlYrNlHxag0= z+(7<=RS7&wv%b#JyQtgSIo@=6tP2yGAyc*$Wd}y?6z}?u9a>23X4|nQ*mA5bOPNAz z>HNdd-);tvfu8gRYYg`U|DxPpaME~m;)@&_5PN?Ms;Ew&hxTQN_8#{Qv&wICKN zg6D~e8(;?I&Ko1ITpt5Zw4`z=h*^N5{0q^EUP9l;$~oS6d5q^Qbx~Cb@~ON7v{x2T zX-9v0Hg{|m6G|3kD>RP(f-uD9W^_X6q@3{16r|*iK?UKvHAleT`2&7MAYFaQw<13+ zU0FpKDh0xVXL9lxX4bGd)L_^V7=}>w(aiNfNH1)ptpx(ton}N;)M;#&GPzRx1tYT%d(Z+WgB3! zdwdi~VzXi0hYC+GMYaOfZfiQXrxD*)ljZ(76&{X@jn7vb#;?!1W(GKa`bGSBtf3+? zChe15u-^KmhF=VZP5{UAENv-uA=F2FfXeohD)Pd#mN317nlM)O1EUvDW>hbYbKCYy z36foxjq2aZwWGzPs|_s*4A{vxlM>?_sd-2res#21`-@(Lj{cL9e%RJgtdIMSwW5n{ z%~6gO{V0z@+nB9FG06LD7IVDlC035q6E>FOUXNa(1+Q;jf+0hd0fDZ9hV?B#uULXf zNAj&--``DxGO@KF3f?@sb(zul=^s4|f%?Vgd1~P2HJi14&~7!fWs_05z=013bd$bv zK#C84A{(>|l$^KrLB`9LpI*hacsyQZqwBd@x6;|v%y5nDBMecNy^8}iSqS-12P4t7 zCVPA$+ka{;D8{?r+_P5a(bx2}=T#k(YvMihJRVa^k z8e@AG?UE$)%lz5l!Fg3zRP~dy%*CUaDhJfpVgI+BCy$g5GK=CQ>%~Ol%<_j6 z{}jf3-^v*D(iGpUU97J9qvPWRvx@G7k)0zD!R5l3i%^f)R^@o_w4~>s@A?f40)|fn8ujUD8FcxntJsH*)s4 zGCl8vGX_SLFb(4O2F^I~Hp4);KmKw&NqzumDShOH+rQpy+|#6AO{5HR<3v|EFSJLN zgN#nmfq5kK19DtxACXEKln1x|@!_@9#o(&sg%|V%Gus;Gz70`Db=w$#A3hQW&Jds; zKkDH^PAa{HF9bt!T%WY+z>DxaElf47sQ0^;DCN2N(!HqSDg4K?2sU-9r(mA$06hT) zm!68{4PV5ew$)|>Q7wl`AIF{B=ir+6(3`HkE@%=ksD8=BU)T>PQjpk-v z2u($Gz(rg$6#WDa!_clL3A}*5^jV2eKf2|9rJnI~1J-9g0i1AM@>vmY^GTRw}1*T$Rq%PomNE#sVpK$;A1G z73Om2-%q;^%FtNx&{$p=$nuE33;KPuYVGh^F;6{Rs7Ng<<{@BMPUi-Eu=c!^-ndac z8CB@PF%gm*6q)VwtK>0{sv-9hYnVTn!r&p3@jY<6Fk4=av*7=}E3f~0ZRVZ+`<#I_ z8zb*+^bo&5=VL8Y*X86q}` z+pEV(2FJAj3+rOQni-@nJZhH3K%og3bA!X2-C*sMI*YaWc3}c62SOgjr!-)va z*-^-&wBRIL?250c#^49B0vyo#E(-wELW(~0hFm*q1cjI`?EJ{?KswYclJ2H42;a&Y zgS&^p7zXdlP_!Ye79_Ij=TCnTOD;P&f>E!yYJD{h&0b{BdhE-Y#_{1Xme>#wr!}eY zmxJDS?<%T60o4BkVcq25&##>4wTXMJFn6H|R2eDuBDlUUy?xloIhSe$zeK*q0 z{8tG5M?cP0fIZXZTTz{?|8Z@@W_|Cp&w5!TI_0pJ?iIEyP4ekoLfMe}m`UnkEi{nG z+4{$J*8k8QboQhEpyMsUm{n83?}&X5us%e|z{nh!H7RoiX%?TGF1T#x3L1BJH$oL? zB)GnR8~OX+O|-(mvcIZEo$LtBgEn~WJO{==A{go+V@4^70Ppl`kkNRBWf>MNkhUP@ zKI6BiAvFk_1(o=$las9$f!i2xFDACtJYHs*TRm+K_A|;7=LqU1z77Y!$4hdeIvL5r z(V&c{{<+Ea``a*-OBb7GnsCy^H@tWNnc$}n78MlMgk6}~{#%dXH-js=fI}f^mR;5R{Ek^LgZOwq%1|D9jXo$t)UKZDPHpS( zC7BdwYAk0^Dj3yb4%%utpE*t|=x(0&n7m#q(aa&~R(!IQq@^QsGgk1T4xp^y9ke39 z2Ofo@JEE?$t$9T51E&m_^OdVRd|OSvhofKo;c^+dz`ybTl5qb{k2b-0b(Nu81sv@8 zub^lLTVnCEmhVsQ+Y)&X!4dYhS?m=B#@sQCL{kky<-E)Ag3wX}=J~3*KE*iD){RZ1VL~K2R!M{R^%j8G|g1zexs8Vd-;-HtH3HSdSlpm2aSr z502SHg0W%uDt&M*?4s`A7j-9Xo8f8=^8#5~pMo6NtZP@ef|~{O6vD3p&fs(sPK^7T z^U?_NYwZ0NIBTvx5C!vTbu7X!V*V(BeOwRu5X{5UyT>TDo*ZsDMr|l63h9c9#b)M0 zo$h#SPK|>d0SuU4Oe)Ze(tkP@bc)sV6#%>JeNcMH(NKQiN)0a7+=Z#iEvK0;WaL79 zUZxe7C>3VqtN}?pT5(jpeug;Lm=t&MP~1yXFnFmp+xLbZ(SH(^#@WI@2)HA|a48wmi%EdJ7k znA3_O-mzdHMX5_)9ik9t2XnwTZsxBNoOM$*w*brWbL3s0eQVAK;D{D>mchZrd%%tc zLtHV)$5Qr=;_jo;a8e#?BR8*Sj;6^YxXB1*-$Y4Pv@xB3;6D#C9qLti|98_27dI{A zmf`gT_7}7z1pd_CeIKx7tT;p^=fdH?pYZ2z(Wh@=jHWkIzGUrqKh(su*i4uL&gJuc zDpeuqPEUFIZf3~Cuk5mZwNk%7e5uY5hD5r;MD73U{^Is)Rx@C_H7(NwOmo{^tjKaa zOEvLOT_IKp{5R3^E(ZCPH{`wg5HR*{Z|XY}4H|m+FqhHbjZq^Q}yhQqg) zKGVVSL2<*VWz7-*^$l?D))qcUUH+V7$M`Ll>sCK}*7)|@`xU`sZ*V3q{>AW*L( zg3fX`8%SL4i9L7$4>wo+UweIV(O!>MZ8l$H0*O-WGz)NbI!yf5hv5mzo!W~mC>yB4 z?UW@iK7h;kfX$J=iLI-{3^;qW=vxX*_d>`BHCwfdahn&5K(>2Xj{Ayc6&8^p{NO#* z!w{9f8utcVK?>#JG>K zktr~VYkAno;+Xc_t=R}{Zc`wr_~ivtLyI1b~^qXmM$~T{lFSK$Zi31f! zFRN(sf$Cjww^}Ty9Px}w=l_KXK-gK!t&y=L%r$Ws2oHp~|Nb!y`jxhs3Gf+tir3)4 zAa#87g)*oO-g?h_A(E$lZ%|HdId}><+6-rLfF=Le>PwZuueMJ6+5^E49df~~O7M;Q zZq``^eWL@vU51J0^!E)gbPp(vcs~OpznLe0#>}SU<^EZ39Zq}ZPJ%?^^;+yR30fTq z+I$u4-4a^v?`MIRXz+=?w@3%Sd~|HwQ35;GWcnV@Nb~Wp+v~TRK;cyytJsib0|7Vc z-$iklg1e1R5U=B#D=*`;=@KqupQL!NO`-mix$OCiduvT9!Vk)mL2J||b z&kiPy2d@>zyS z#IOF98@)<`gDV02ay*6-8(@y7XrOm@hTUfs>G_rK&5fKsCT)@S;a!6pv8&t(u2?)c zsh#<4UD_KiX6fqQerveX8b|T zYBQ222j_|v_^Xr^EZ)T26N#=-0VeO0_&LeKLQM zvHYJ?a*@@w1Id&`Kt6TXgVe_Zp=)7{RQdJZ)3(lrKiPlS^wD+sjk2f2(_|Mp%_a0tAJ>S!v zt}^>Ef@;$5dGbfw6dZm-BT(e{zQ@*dLyZ7!j}_~`^W{v(se4_li#S7cxdFvJF%>ru zrc8etGqvkY3I;SXxx2;496`^bI{BsT{z_lEIoBy6NmJ;LFK*>RiaBdyqHx*No%-CX z{PTz<%*OVql>4t__Z1}=eGzM*xzeqbbgP^-6`4Dw1QgERHs%yf5_<^;s(^9|<7=1URP3L0Xt|TUqA>&J01McCq`G zErj?7u1mz|^?I%#tVPO@KC0d<; z3$TM22j}pH?D?r{v}Rs$Ks#Ky7Mw|$^nod2*zeZ%mr5e;R>+K4AZMc)1*=yj7XWX< zhoqGLFS3FvVoVhL(NNYs3}tS&^zc5Ih@EUK7UUY)jMY<8@fj;OnHC*0rq5W+DUZ~9 z_qZQ?!S0(E8LhK7f=;D-{3d(D9xfC?I)!TEN7w!jRev2-)%N|5!+-}lh_nJqNQVLv z(%m7TfB^!Migc&ICgmV)P*MUmNT-NMcZnk1-64nw{O0z)KhO9+|K2gY?6db;YtH$q zH5w7z!turWBQe<395EFG&fT?N=^da^%l9bC#AyC^Zl8s78*!Uex0O>2!)ti%>ux)z zE*4vIgL(&Ax?$EIZ^x*JKP_ZM@?O-wV5q(ht1<5^spbTQRYqOR`QIS1sZ`;h4HEs4 zCgt_hl3zlEFa936LZ;6wd2fjiy2Dz z*LpsH-x{KN1N4%|v3L%q4@gx{d2?bVDUn4O2nMkXy-TF@qIAh&sb3%lBY{;%&a&ll z>5}r7h;&AnOUk5m-C2uw5;+_)`j>WBhlj=E9I|%M2oM78oV0G{5oIr*p5yW3qj?l@ zrz>FUy_*oUvAqwSYE)0LNsGj=6$57a?T5LS_JHz=%9bwlHpxP%=0pd-lVz#9k~6 zgsp4%|BbZ#XtQ-yP5*#O62tt8;%485ANjhwat};5@>kDs-O;v6RX<^~n)88LLG5hf znN1X>IDy2h=V`kq+%2N8k>v{Rs+SO1Lc6LsrIstYPC_Se&-C4N@}!10-ml-Kh}rSP zif&JszlYx5GwL^kg80(RxbHF_2ypo`lzKEGxKg^kU~d<{_2p%|m(DGew;CgN^t*@g z_=eU3uuNBoh%RelTWkXh01I-VVE%jdA@^ z3`<B2~ijwUO}e z&+;4pKX~->!A_a%)Y(h7+@bpxR3yU>*d4Uy<4e1-2MzLg)+{Jk@vZcm!|_M2kBHyh$&PX5+kUyIBU}egS4NkhLeRHTjmg zE=E7_hIiJ6Y*@S?^G5$|{V!dvxQ6{74utqkyI;jkahRV9@42;W_k*ZpyDmVVdJ?~H zxb^W%5~ZA%n}PM(pSzzb++03Gi{Iu&QJ?cktz@!)6--|ev8ewH8)U2`k3nPxV&3j@ z-N4GnL`)-@{g6-E%?IHul$+qAX90AWtT!RYPDg>Ywcm4Fw^qyqXpStqez$N zZ>b_V$qbbM9d^b#9TTZ`ntRHK;ZLF#-;eZURDDul2r}#C!0cV0fuYBWV!}7jGMbDu zUe)I`nbaKtz&WZwej0h+z0Es|G@Q4~NT>q!!uUe z@iSd+o#NrUBW~BkkR!igk!L$LdCju0L94NGoW@@Q{M+LqN`g)h4T)$UzM2N~k}w+2 zL~gDlxtQZBx2s>@*u&kG#ibv4^gH)O&^@Zid(fYPPbvfXJ=eIGN%6`gL4rQZ*|DPgWXp$u3ZwWHH>63plctqiyR zB_h)ERw7GS9iP%aB@CggqKYP-Fdsx`&Zi(h&wie=L2jZh_Ius?>chYt$lp<@`A$986X)wmAPRaE2yPm^mh(;%X4!d(Qz2W2+_|>fVGw_DQ;FAEoqw^oVlcHa~ zc(#+;z@t5@5WjE?NS6-;pR5?NZUcVsEtV@Y+TO#akAedG@qKNpFi z*>Wl5(agED^Oa*n?{gAmy}BT?OnEhn>@#G~{8+oji8-Y>@g^gnsA>!>Tt*23_zb6R zoBDsp2%7rBX5tjUXTR2-cv*}^X7`|M*s=XBZUnHaHReU-Q|OveCO26~Xf{`Fe+e?G zvAL%4k~>NQ5ba>WveCj8Yw$xQcbSfZXF=rmwg&bTl)nNXDif0h@Gl|$yM|sHUx{e# zOt+&m9~O95OnrZKl~&)c`@SO%7d$!Y#7O=Z8IrCze z#bI18&`VP{s&IZu5ArgjYVX28YS2vvZWRJ))Zor6V*j&eM|(!T?dN3gBUnJ{)G*Q5 z5Zrmu>WEQiL_X@hY7-TC(YkW8hRVIb7v>-B$+WSu{@2!ROvqmsJGSSm{`IH zId;%o7_@z6oSAT~q16awR-~A#0)&nBbhpXK@ShFuk2Y#ja=w@K*|LJsXm&#MZG5PF zFt$e~6FPylpO&$sww>^S#{6L_;_QL>08a54N%-ZJ0imTxqvAwyx2&*;Ar`rQU2|q% zr{@qK!Z>6*lo2~X8~grRx+k*W zFkII8`|p(?XBPQ&x3&uq-B$3u0VWTt3{*xlnNo27>20k2NJTHB_e9X^UsMjTLf<^U z56aYw`2xLN04c>G87O)+?=o<=Iii+Qjln!G7l7?H@d0jMkn|nbFTe~{OvI0sRCHY| z1Mt5I$4mJF#TQ3kkXt?EN_7s7SihNT(A#uE|4!aZZ(eEwCVbzk`a?lF3MHE+@AO`c zz^uYo8!F#KQEL;K&3)^Gx=_emSK4x00^f_meH*0yUwLy!`%3%mdIk?vDSGLFRF3IzX3-{quVW-Z5(*RAM;G0D<8#b0k-eTS{7m{ z@Y%kvw!;vHFi7^Q4y)_ou1Rky2XSD89^tKCMu1j!$eIBWlgBf5NbTUYbVI(OYZ9z? z%CMKy9@rTfhT-Kn0ESgmW~=~)Hv20q^QZ!k*4Q}+Bz{V9akLUYf(c2Ya=y_^QZMeR z=oG{eI`ayww_NeJJ%B@F38?V*Q>XJh+%WhpozN#;(8r5$10H}N1m+|S%ynzE3oLhD zr5z~1vMIWQTxNe-VLJ>j!Ri96jzO=EE6{AnUrD?p-WQ767v;;jgYOEY=7@W)kBwsX zbtGn=$-6*eO@B{>z*f3;yz){v%QOVX>?D}@%|5@)%jn+rj7Md)tft!qLlGtg&WuqQ zS1ilU&WL$|eZ(j^R10Ezg5U(M0&T-5#IX3jgK!wgC+a2NzCDuGS5q543k7x*mc<)- z7l+H2C>Fp{ik{+H_oN>HuF24g*3=>z+-bI+L>;zHAlM6cG)G8wf7gCpkl$qB3;{e{Yd>T!nUw_s=7k-+dY^k*XfDBIevI9bKxqr>v# zU`c(erMC}0p)ceV6kaWs{MAS2@tJPv((Tn5Dd^n7e0~6*yrALo4hrT(WklDTs`)5p-iti)%%H74a;TO!h&(h*++P&yqiT;s^heeZr_+QFm;Q zMmC)DF;OuOvPV_`ZR{EnO?r94h?)wP#U+$od0d~P@tOo5QwM^uKLi(SLz2R=z82hl zs;7l|fthHyb=u5^0fVKbY$PwHlz9{V1D5gU?^n34rLSCHOqcYqO?s1G`3etzhyG3( zVsA6UnGnq&(YFfo*s!>Vp1@gB9#kecZFewp!on?t_SGUuo`YdTM3sn%0Uv5N74W0{Zlid|Ux+--cqQ=BAM z^S>MwwUAOiu$`*6m#)=AoB}!oo9#uk3mz`LdouzkD$U%Yog+SL4^+YO2feJ}WC{vR zr7=`b^smW?)biPJv&4xL#BF59NVfe;;(0D+|8wH}l?M}|jw4CGGw&$<`&y0Y*V_F0 ztv^J?3}kp~05%ou!iWXs_!U#Ugj`Zye z`DT(~v$xvld1bR6)-E~>I_h7e<}}7i>crs$HmmWw@Lj4P8e^a{Ns!Gx{KmEhK7kd! zh;4sMQ6R8~fk{T0BIC6|C-TZ}gJdNdk59YTKca?{j&7_gI;N}Mf6oksk%oyaj~L*h};6+(3e}R#@*7P3qr-7dO;FnpxSf{ zTGrD?*d?(S4aAMK*QlpU?}q3esiAxsGb)7FtukLV7`qP}Cpr zt;+Nt!Mp5_09T@zDAXkpMZxkp&+?oODeK#udXy@$Y1F2_%18hRU?O1p^Slq=a0`Xp z!k;H%b%8==gYg{q_qyuDwawOtdmnpVq^&bUPVSq2|L%V?0!j?5#@U6KE8%VOW?fVM zLR|{cTElvSSD#;;ZHi%hv9NTfh7K!@?9V*)99f8u*$R*(on&os+*=#{_L0~0X8`N_ z&_@J=420)+URkkZZbbVQ@qVI2yR$`;xJvyv?$q&m*nmd5o`>Rkqv4t5vB+Y2 zmzzZi|8?koF#XGn$5iZk(PJnM6%9WFtwEf9LLp~dfL%8s0K=_~&ZydmmzWC|?W2mLoOhn=#mWh!{CA#->hRhy~Dap^$o z%D#@v+&D{sEUMzo_W|BuajKZrOnom3nAg`2@BD+J6q%>dW8^Qz1A=7bz@zulKWlb} z>>NR>r}5w-cROp_FPKU=OVVk`Xz-b~)TP36*5M5OO2*XuK$cZIdheWdDrNKecP2BB zFMSkvgCA_Ja?Za%P3Qb#*NV@5-N>e2hvk=$FCG_UcV5!V-T#{~+bT2}rgGGIj0*eF zUo~?1%U=r))}vqWymw|!yLOF3pYc>BoMpZG2wLRilmIx}v}coV%f@@#cD6qI3Ahg9 z;_7Dl9t24hj?Hubr*9NL-1#<&YJ^JXdLOxwnRiX$%I^Cfm-xddhlI)(!H?vMO#RVL z4B1erLiaT5rkqQVAaUjj_I7Ck#W(VJ_b_GMv}5*z^VCg3E7UtfH$SDWe*;52-eaYqi7Ca{fgUxG7=4E1+?*_BxID;)Ieyyu)-?j(-?No%|9oqRmU$9-d z&W86@wbdIO1TNj%@b1d*{2DB_zNCG{vA?gFxdEnz_iJsJ^0gku?zG6T*F{wHYKx7| ze1rjeXT`7o)&eC0NlBI4T~e2wu)gL}nhw&G-d*u6wDI0qt5)?JGV9gMJGn~Q(sOo; zY{zrL$Hz-&FWDo5j9#Zy&mo6ZzZ~C~c)G~_-3XDOj**z7`!pv1(F^KMXg5#akc$C@ z0-S{c%sn;!57jP-D3fH9;$I!g?d9e8}`EW z6E8$q@M|!NXE{6vNAOP!W$d=iI+!!G4x}F-*RBNo^`<7j)Zxk#%*5W3GadkR(?_e; zC!+S|9y@*mxr?(O-JV7=uAUDm7@JOaVO(E$c7-K2^#uDD2y>zdlLPr*a8f!5{~A>R zLvhVCa1d(UWwyjLKZA5#x4SJ|g%(4j5_}(*5MbE1Q#%c#3!WEw?t#$8O5^g1GX7RP5|#to3QWr?Qv_y&-hB zbSY=tJFs6xQ%}bIa{tk+|JVh@a+T00o~?Mny6`m>A1rp_5zyGqz3o=Z0B)f!5HH?s z?JJlqhwn>*U&47u4FPzlUf^b@!oT-I313W@0Qn@EVuOkaR=c39WwmoZlmfJYZ z@b;bl(nE2|%t!GwGC=YBr`qK>3O2MX4Cpur_xcZ!yc(h~U+Q}mdC&ih6+8n&7#QdD zh9!;x`#IkcV|#{$0*?S!G_@hSoLgLW&S7KXD`!co3^YX0S+v|n7tF5~WPUT?GUPYv zsZrt{H(z&XesOKbI6(#*#~Pt2$EpmYCuw6t1|)ph#e4Ls&{nREe)L5w6)V( zuiAyumR&fH9fLzk@UDjGdPTWK>^c={VPxp~>(zUV%Ip`pe=#@0wty$dN_N-7-CV0L zjbC9MYZZO+5768?3k|fN%$85}c>gS-Xh89frwvz=4gxfnf%mi`={48n2ue&I0!5!k zCY?-k^Igg&y!}-u+RM225LnR}Lx!I-Lu4bp0Ew?ZSl<5H z@=ZsDKcBEJQa+rFG1uW%hOED$m<9&RrIloskE#-V-+b$q;eI#~M3g&g#QRkm{`_?^ zY6X(a*mL}6`LbFQ_T6f#9M}mtF+F3Mc|7ZdQGd4aPn7{J(-lfa4l2{vw?eSpZ{a|YS6X0ZY|HWD(6uH z>{|9GNC|j6vJ8I9w!FKahx%gfRfg2A3>J?<&c?KAEYm7LPZWO`4}gZx9j=8)Fb0`C zmPOnsB-6I*wkP980o8Q`R`Mg{nHb%oR=9@w8k|UaLg9@Rg2#B#c@0X`Pm0XXGZ2l$ zIPlV-$)~;4@z2hp`HQMKHgvbDqpk&;aAW!o3<27Ly!xPjLM_@z_mQiVg^2Ahy)$}) zdxs!-Sz+?qP}l?XtrBbv5_XSi+8i4FK zjsksL_7>}_i)-BTe@*-c+>&{eO7rZ-Rn_Sk3Kx^-~XL{{zcnbJkjf|Y%w`Tu`U z=__&`4$9Ynr7)af>P`}@UkbG83K;E*T6hjW>e|Xd zl*uY`2#eMW3Rc-OYjyg(k+;@wM3dDe-yLCD$PnKODa1g4Z{b#_=`0Po;mZ9lqEdD) z+V`iD*%z!1dQQ56O!cGR{#L7&=`uFx8LPY%!^Z~>EDYnncq@k z?S`NkS%UpAzYCzF#ahrUT7q{9fxKy&&o3G}NX*;uW*_nl${WZ28xHURa{TCqFq2bc zzPZx-%G-7r?fo^!35f@1@Qr;+BXfMe`R1y{GOgtnceQ=+x3<0+!qmZXjaH$#QV4nm z$c>F1lDK*+4m?rk@Yi06EAd>q*s>rS7%Y{>`TzU{=4Q$y5HDnxMW5-(in?L;r?@ZX zD&@PZp0>30cd>}_Ise}qlbmG<*C2qlqgRJR;mwsv;Dwys<~m%I&sU}^`1YKG-|O0ncFv>vs77v_pHy2)(VIEBRc3?K2B>@y++a zwlkbiFNw=B4k>&6Z<7R4{3b$kLy09K@x=V}hIQ|Oym&Nn zAY$Oli;?~Fz)dvGbI8W1MQR2D9r}Xsdfg<|ugB;n1+ttMw94<@)%#cXDc~THBywd4 z;y0;Edha2Pl+Ks%_(I*~3%il<1xv9xX&jhqtslE%6`O?KbK>y%?nSJx^u;y8PNthH z;0R7$pm~27=iTxUG|Zj&sCe<5O?Wjr@qG=Z(eT;Z#w>sT zTjLYQY?;7Zg{7*P!5{R>$!mUEgcw7Gr#8)^F-#c8j<~k-IZoDvq4lcUhZ!v?4d!eM zgsW#C55>LimObbYiUj>VJ=;nNLoNivzaYAr?FWWq0PwfXsH<$fJL= zdQh>)a&@)ZXL|%yA)%7QJ)o8DRQZ8Nxx=t^9Oi9q0uY8K+i-%^zpCe^O`fP(EgryS zS;}HBXa6Ap5~%!6=fc?E5eeJz1*cJHDhIMuB3Tts24fVkiTnf=71rm7DM`;K+M8ai zOO>{04>x!NuC3_u`e{z|kj0|)xLVX{Y~=_VBEHf^T+^n^uf@B@T_mlWI;(#GRWe^T z>(4K)K91S!SCGdp9xl4k#M5&c+12%=E z<^@n9Pu(fAPyQ>V z%EM2cW#?1p!UUPxi%(k$(6Fb^o{M$3jx^VRLSBFBwFym(mhF%I^dZlq`}=h(Akpze zXQAmTUf2-(G(U6!UwkkX+W$P;>H4!#_ix&s8LvB2{&f?~@O3@NX1EE!fZ~A~CLRJx zH%+zg3lS6A3^5P^fm5A;4nv5DY>=+nwG;iuS!lf6r2if=Iv@ia!5T_Ep5Fr6*g!dL z$1HT5xs@x;{fW{{T*58TNP2+>)eRKT@0USxM`@LiJu{E0XVQ*#zFo`9Kuye}(7jKK z(>m*+5Jg!R)Xx#r7YGBGwQ@QcEov-@6KFZQdE4ZkRaCdl^DzCuXTL#ofD9TJ0EJwK z-YztES{(9^(We_#lsZL5*YzA^P_zXdYJb7!V58baxf0y-1#SzVVa&gkm-330 z`m?eVJ{R6PDm$n%d4Gc^JV6blvr!w=l#CLtIj=qxr(VlYGe8?2)uDHm;kDE1f$oK$ zK?{{M9k?L1xCJ<*2+;|*rdH6VWE28x%xJ{fQsuQ9GXC*0$;NuXT71T|`ox&a@5%5N z)FJ0>4gX>@r-h*Pq`n{BEFPQTx254W(emG+VrGYVHuX`M)tX|V|J~E?+ElX<&DT>J zzkPuS3vZeMA)hF;QDd~N@9%|kLBu)^q(5`l|L?R1B2JxPz zzz%9kF5g&Z)-=H?&($SZ2$$)pmEKH(GJLd;lcX>51WKi=Zn#ioPRqZ;>fo2PR;wF~ z@3~w1Fkrt29E>uSbjt=YJOgt?>*s2lrysmpIgFOJ&ix#i4++n>lrbqTJ`<-j0%;;P zU8E~8?}`}jpXLhVTBq=4U`^D$hA)Z0pcYx+^08Nun-(Ubq-?q?3SRA~?bUiQMnvbmo1*GCvoS=`Pd@7)bi>UJ-iDH z^l=`Vrf+9q-wCDV$1~YKo+gE9^65?@zp!V)O^qw;L( z5lLuzsSHKj+aJTvRtJl<#+yf{QKLa;vT!qNIpn0LQ}b|XlH!MZQ>QgCFN*V4c1>yp z7r2eZFv$$HY^l(iSXG_Ee$^H3N{aKqeFKtVB1UqFo2@Ud2ip2O`xKNGKko6zA-PZ? z#`?bZ9xyfe3sF&b0$^p8sgcwZ8`@`m+t@jjRi64%@6|qDLdn$ZjN{K4XrGR z$|2cHcNt2IT@mbceUjcq0Lj1OTYrdvA3M{h(xZ{D>XCNFLwSTElyg&o!TMo7)WK)PMUN>}!`*)1RYn8C^_`FWDj+?}DRK{sO!NCqeiF zMoY@x@IW!3nX=|7^fLa$WJz6?wcH*T0xy=}w?CzQMO`KOFcK&?xo?p{e4Y?$xBThtD zD{Fk=Vh^hw7_wALQo;55U=fbLxFZ{?Xmnr(BkyL@StLLX_9 z+G&ID_86YLRnx^7FPX~qw;K@*s&(^oZV0?!v(2OyW6jIqD_~mXZmzgjUl)MSU@3&B z`CPKD?Gk)sYcdTXG+3>f1ylKk;Xe~01wkQz$;ZfQ8u8EXmPf~OmULH&o@(mq8_{(#J})SGFE zgT2)Ghh0A710El@rRVoQ<{t!f?FEcyXtS|hCN_)ClojEBUSajRub@m=kTo(l1+tm& zKG3$tBwe@U$i4njku$t~zlLhzD|7d2`DOy`KGCgv%(b}v#;wOUN1C$^>}RSERu*vL zn9}ZBF^%VgR>F|dWBTEEmh@1U3XAQu$Csp74?w~#nEN`EfO0wjG$~SrI-~9wHk!NZ zO=KE~A7X-2H`R>(a!}z(LzHF2V$}1E@!p1V0XQ$ea=gp_%8#am1_x|RyjWd(_#~Dn z*2`h%cEAv`^}&xtexV8&)M3P-%+_@N>s^p5&hP4c_Q=g$Y`Aqb(|YWM0i*;^NE?+^ zdmwW}!o^S(yY6Is?zxrc%Mmy2Lh+T;yBMEU{%2Jne57?9IpP+#Dr&0e7 z2?&l{!@tJq$ng%tr}7DNu2Ix|n7z$h9ohJj1xRYei2y zN3jw@MDDq^@$4bn>Cj_x<$V}FXDz-R9!{RTw!2;2mQX5}(a$~jtzlG$K*lXf!Kg=L zLDNUSZSx((LE!?i>X~+@XAnVrUOp>-4jx+m2B;L;%Z^~Dww%A)JQGix56e3euP*fT zaKkG!L%`@w>+cGxg>!7~MA$o-$D1`^ZFu^cU%|kNt%hM)n17AE(uxH~E4XNo1@NOq z%l=0x0BnS76pB2B6E>xnpy{lej>k_Ia_}=PuBhGf__g#MNn4gW*XGabu@f{il}_PM zM_OmE!1WLeaC|0ZzEouI|DR`N!RJi1;^(X>2TrmH!~ZmQSxcaB=(?PNHl|4140^{d zJ@-0du8P9Q=K}WH1TslX#CJ0Hs*la-1LjRWdU_X;_8!%dT>c3GQO2FFx!>87l$a5( zwGoNzB-7kUKl0+Ap&~L>E;Z<=1Kt^9ZTBsKD-U`mZj+qeTvH*C8BCA)Y?4GMNh0H| zE1>$nPd-H*7x_t5{VlejN+)#)G-`IBp9*ywW*?K*zinZ<3uJ^msSE)Qv{PMfywKp1>ZeO01VBLk}vcGGc51UqBbeB1euOUzNCRAIMd8-)6&iRr5wDXdx zZkr4m5iX3l;I|WT^WCj_ZB_{cV*iXSScHg)Zk9dHEqrz#uEbGg9>@#9$zR0W?@C=9 z88u|c^7I9LmfoO@-LPin@p-;iU)5Whq@ri;*Vr56#$dDMW2P2Jg1V}M!Wb?Vy!~$tuyZm8r6=j$ zbqf0VI)Tryz4b|Z}b z+3?FRw}%@yixon`D}O3~S-3CnqKwgoB+~ zG;;}i*?WZF(A^4(nI{}`=GFV(`u)FWcL*Xp|Dg#Qpj0U_ejH%bh-YiCdY@9-9ZpNs zLVIV=1Hh&s{EYmvccaTWrO1wsSI3wc^}xDKtc;*c-1KwzI7q?$q`^UQ)|U195T<}N zUODFY8chs0y}=#6VFJcWR}>S`>(0uiMJXRwSBH}!mPW_tG7kKa?HA(}-GzU*y4LO2 zX({$kvvkU)h9if+le;Nj9*H0QjsM~7#Al7%Wq2Wd_KN20CTiL-VHK@AyJeDjupEy6 zs=q1r!usz51BkLC_d4b%1&~(igGB4Nv*nv-%o&uAl(i(E3ko?^9 zh3_G4XJ`qOU+*YVE*!~X-Ks!wV-LJX4C8kpXC&4hIF>6ldp_wDYEj`qPEnI^@(hBa zVwAv{6Al<^-{WDiD1tN<=A(QjFyMALU00((%M~l^x%4-Thd>%sD$5uMBw5A#y@%Od zC)HZm$i0TxoiknQufgZr)Io>uZN0Q&0R1$UnrRAVJtRoctsVaW*VY@Dqczg?&#RMD^YEYi22OX>8I?m}c3MAp64hy7l(gDS97a z6i9%=T0|Ys8?ceqawIn59CB4Q0y}R|ald#SV1-#*_iYJ;#K)kMa>MTp>&3UMo4^A| z1jTsiy(D%=jf?Pi87;{LFxRJrn~U9 zn}>r1>j+{~(9evMcZIIv>GYYDJOErR;c6S_A6sa!OJ$7tV(ZOzv7i9ZEDfRe7$6}2 zX*_GR`YJ8)oEjZk?LZEVl9J{?^(h9}`S zX9`X_)(sW7S7q>^;bK=En>i1fqDVc9b+YxNK98ze6R!rZ*8&GrS=E+$BB;5p37p!- zit5!=1xHj{N)cQQvI$$@bQG=JGA$o*jlB6zud&hW>4y_8)62qcc`H{HuV5rO+D{o~ ze&Y(gTd;u7CSE%SVno+Sy53(uvzyr!(*s_Te}nbD_=F^1e*V}ITvi`b0{{04w$N8# zee=DMkgnBMj7Mt30ZRRhD7uYqX=FbA`A#L0#xeLhQscL8oZYvt%*;oCQ^;r`S-$-J zv;pp_X#DMqT%Bd|T$}7JZ@dYO!6>lykYvw|cedizw5(2_^po3E%i5`8AAcB(T>i8o zv}dAL|2fs4veV!TWeE0Rs7SL?(zcuqfmQ(L$ut9-21x{hU_KulHTct$0Itl7cYQR7 z&UU02Da>+{9$Bb#Y~XRM#JXGbkeFoFCvP@c%mL|@szxwX4JJzsQXb=E%3TPfbkiGF zb7BulrzuPGJoSQ*(J2aGupyt_|FsnC*W?Lgd~QjMKZ#&}YG5qSV-s>S+F+^AexJRk z@P}aGo9eg}>3$0IV?StbG-IjX{`Z% ziB#vW`2BX~>fe{T<&nGh%uTuDHr%@4Z_Ru~Blwm*fj^Mto~Q~GIWl`W1I9|X)@iVE zKkIj{uMe8P0W9j1Az4>8;+<#lhqmDY#O^fbh)E|AEp4=-Dl>}^P%XTp{lkI#KV86P z+u)CeLqV5&7NH`k_>4?A-Oi+QyQ@PYfAIBrQ;m!IQ?F z_fx}1w_}4bHogU%J%)oI3HQLiME)@^v`Br3D}me z3|zM-NYhJ&bSGyL#?Uj&x$0&W4#T3z-f4?ocHMfT2+N*)P(!Mh?CT(j^4ExON6?3> zWInYHKE7RjJ@}4RM`}zAGXX0z!M+lFV=MngjsbK~ELot zdD%j|>AILtQmu0ZDVCJh^j+V;CSTqXloU$4Ial$sn0W)BILX_dQ==N9;Sc6NVXpeK z+;`ct3>x8Vm_eRW2R8WDOpbM1U~?rsR~Dq1sYIxPS$17~uDyb`O7X*tLp^Jcq5B8p z%A%_RZ#mIdz#1nBb*w-6-aT^8K?5e-3(i}`B_@NGqgFN89pIeCy={Wyo=?6Hxv!4* z68DQ%q3z+!r7>$Xu#WnAO@Q~zJ+uAUgA**Rk<*AXlf?%%yYPdmnd;)sYX^U=9GXg6 zH)4*;4<60ZuS64#6@=_cv>fW3oWGP`-DlWL>4kM~;7>qg=c~}pi+2p9nVtjfSp+1f z?=rZhtwf5eLdp%13Fp|?LD#S_KD__5{-coXo&xsQt;a!a=s?x6_%O|2S-I!5-t&z#4#B(HS zPO%WGbo!i7Ls;?unpz}B4YrevBmB($3%pd%PQivsyy|ymm&P+lCyGZgQ0S_`6m&r} z_(E=M)jpG)tH>N<&{yl~miI9)M1vn4-)x|-qxjlEqJT4tIx}?S)SJQbdv_c`tO?1K z+RGxP)~5RvxFRKw6AeBY*2=FG$>Wh<4)&Qprtz}<{pHUR@?lLX-rG4Qv>L zxba@CaSPw>o6?#2T$C9s(99O>e5$U1N~Df@V@&*P&lwm8d3**&ERidhrZi#2kTi~WeP>a%U({AhZysvH+ALp9lgnq~pZpTo#a z`TKsy@yQ#5DTdwQ-VhMF2Qz<8KQ5{Z}?IS$F6zm~VQ-(bCxb49b3^StSwPyZTWYWSTDdp{BoKBE;7 zn>t%_@KfQ(UE}K@U`+JnoMBJWyQD>6phbBXv<9y0)i^a(3~Lz$p@ANy@n0vF7K)L- zT~ZmFF)9hf&V}XB60bW1mXgO$jfzn{?Q0F_=?lhsBtIjGYs}Rx!X+1olIBR zTn_vmiD44Vnj#R&{Frt`diqrFI;|bWhF@YqX6=6UbJ+PMqT9khI(^*Ii>K|FW@%0Y zKe(I^Sv9eC6HP@<0yD4VPE*XavOm1ED9fGJcznh}Cb=lX zsxh36V~wg5p6zF^T$Iw7e}?ZmwtHZY#j^jQ_wQ=bu@?kRB)iD=Eypnlri^`O64~k0 zfD5woUPyqcd7#&N=Oo{3L7lJ8R!uycT9q?J6Xz>D;$!C66Ort_c_o;t?rZW>ZJ_<- zT(Uhh`L8VFqc4?=lBvvq5!cCT=`34TaLT>tGIe{bN9TZIms(BLeK-ED{zFw9b1kJA z+yLsCg`_?bm{hU9WLV{r-AIMoNLbKuz}z#+e5f!LmPgCMQ91wGbM}jU^g@G>mbQoS zIAtaE`km*&to5@_MF^Cse1 z8SKQKnlABMje?C~Hx=wZO5&YOFXgK2X z5^Hs6%)%rr!4xH7Cz9ZhyX1`|P_%ak6TX@awspQ|9(b&M2YRn5rj#%n-dc9D$bllh zp3Ri6r?g!aXxa=h<_agfNoXi3T6ve^$nQhypiakhQ8dMz7e;8<7&x2VH*$wI;U0{X z+B~v#c5iDHKN3<2?Se$K@?mkHq6j4orJ(@}hJ>ZFj&<-Qrm{ zUlalA9qOukOsLH#jiDf^U^$?r5#wyt(s>sjxp4o9Da7ujDOZ#`hRy4o+S5FxovF5a zCQ=$#aIlVi87F2~dSltB@^+h*KSj?z-f?Ds=o?nbcz>T?IoHx(g+i~5pFZ09++Y=t zhgy_R$t$_7RIF}M1GVp&SdTJ7Npq6WlgxdTwKBdt&ad|GlsquMag;fQXTi99CHQHW z0`COw0S&34nc2f?VT$pUX0M?Nm+2K?nmrX$e+I-Lu@lyUl!@-VV>7BR5sFE6LFF7b z-nxqhTIPaJrmqLYshnuykJKpGPC(LKW?bcWsGsPjKnHq^8aE=%qR@*!tSyrklh6fp zy#(G)@yM?V0xGYrkSYq>;78h-!uZxx%32q*u7Qu&*@vU%te9n}_*31nLY%O|Jt0KX zhm-S@mS}Q6r;#U5xtCt5^(CtyrqOKNDP_slId#_N?uvQ61NzArGcNq|$#eCo^q3Fg z$Cd_N5LM;D^%GLF=PeM**@{ZGv4Rzg*3Tq;vwcVY?e9 z8W)Osrmhm}1)nvKy^a0h_D8hp-f&~u2HTdXG$>HI^g)xe))KiStbjy6WCSI)JjPW8 z`hdtBRR6l?+%$BZn@@`%O@rp?#Ssz>vR4T*1b5FcJ9@J;B$sSS{NM;BrEzHxzZ_aQ z^|g55f&yb@62_PJKGp+sdA*u$xI)abaYtjyPfxJn+2x?wcGJzlK92U$vU__&m*PIU z-0HvZ#f^ac<)eEv9}u3iSc;Utv4zYLYCiz3Z~#n-zt=y5ZU?!*uW*j6migB>G4-#DW#tzC&?fQlfWxnGFU_mF}{$TIx>x42N87tWBHF9X3li=QVG2S;+GjRUo^A1D=jA8a?4AD=FH5skw7r1)07CBy=@@ z2=AWx8yyzz&2&~FMuG7v`ch9l55)K;_$Gu(OTVQo3G1(8?Qv162J_WOXqZOUojHsd zvLu|X|2U#GxBQW?p;cBJCMvN!immPYRwDe%R{!u&|YRxej&7nFLhkEo!TzUiY2*hk#?+cM5}MpFg^Vw`lh&Kgz?4Zh%uV07io-) zOAO`J&xB~XN>~&Y<|OvJ^7L%VZjhY9AyxrRk5}P*UBkNP4toDBpljVueMEQ&6p9;- zJI&DyS9E%oR%Q6+!`?Z zuExz4H^?P9Xi>(yusUqILStcg!%VtJyzBVnKzlGg2@~%RD$8y~!mKnEBN`rCNcvo) z$=B2PnbcYlHC7IiCQ(4d(_|l+az1Adu9p4pJ!-N7o)zYzz(7y##>pP`L-T6pfu7oi zm5_QL7pGd-Oj=xIVI8I|(zz&0cylH#u{=hAc-mT1(8tc(M*E}d*PNtomLMjr^^CsX zH|X8>>7=Ts;)56ph6{v|m0hVv70TucSBxhNTi8jwFP3&sr_qz2uShB`Ugo<~^n_mL6P=qs^K6f*6u5K<`gq zCJYt*;TC#vZFMCi?%suT6Tf-i+xw_4hLDzORZxvNc^n7{#N@Q}4_9&4B}2caly2i- z10>@Yqe}!~nwM!`XK_b@ylLsuS+7$xGzKMRg82D((x)m;ejKo_x28w(aGo@uD)`em zLZ1{&d==FE5T88>UMDw>m4DO#b1oc)C)Umh4HdmNd63{1`>q5dNlnZ2S9;+BQ0%l^ zZR{Ej)(C;tGgiA$$i4A30bPO+34F@1RYSZIk%Mm|>>9#a=%%E@%vTg)W}5ptgjK3FE6xzoXC<=&+>0oGw9g_w{O zTLkdA(TnSA00gvW-rf;e-*wVkPt>2poWUjc)i6Th#NErL1AozokBD?QkXB61)_M~V zG6O{1)@=~)*721nT$a@O zFjJ=p>s6Cn`_j|bW}!3f7%iWc|K}nJW0_<;ey&x{&-E9q+oe5UShCz!*1Bsh+SV%k z1v&oGkDWFrq-4cfheeKQO20cgtH|=*JdvrZ!EFU-U~sXxDGOGfOLS=-J55t8&!P}u zDJ@8LFK{i@CH-nBBkbzybI&B^RjfN?@eK!0r{6J5q6qv#oQt2);{pmXtJXj71Plp{#=8KMVg%NkHbg|WAHDdJ93TFfKIGBj}oIMUu?$&NExHG70x!B>)QB|&$x3%|?aJW2%1eTC>Y6U z@sZyn&m~dlI!(CL6d0ya{VJ?|Gk@fu3zM{}q{DG)Eh(&}Q8DE9%&hInwf(@@AGXJ+ z5W*DarviIBwz*>084cVqQsUF1U9I@LZOsL8oR_8RJ{RHAu=D*{yEY-DAb4?GMweGW zLRs~`ryDl-coW{XE6^a7QR6p!@3HDK)+IM%>yg7h5hP2UfJ;TGIkj#v5wBc7)y{y! zedt5539Mqh1=~UwG$!;PN^z=-=^+`u*Wg;RHl41bd_CybwFYs*O^rp( z9sP$|O9b|eGoDTBJBb61bGS1EYa!ORSll>P+j#%l+cvPbyh}7##`XIFc2$1}D`C+J zy4#<-gyLHpgv?RCRxGJK9<2%-r}PK?EWTc_QX3Mi1MF={BMHQ1-)C$j#UetKoL zV#9T_BZAw{SKPx6nM9XP8JUTam=6t{lxfrNZOd36b%fYXP{3hoh(wP$&=MiiT5@kK z)FQMa_dwj$?8!-Ya^_si!yj;Bg$XAi7?{y$%1fQ@3yr`K3e%s7o~VBqGS7lZFxRAO z_6}vmNimc(K9CL;ChYf#S?6H6=Pk1dm3kq`l^flP-&vD8N`^NojPq)W(K>+b9iA?# zn;P;4)``wuM~RG25`;G=#C)8X$Y1)OMb0D`Jdq^a98PimVu9$F)7;Lfu=Qnp%FXxW zQgeM!#*J(@-aM(RhHq;xw?Cse5OpJ|t6*HB;L=%A>l~z@@3@gdKwp=%W2?39w6KxN zViD4K4$I4Jp`mJJ&Z>VV1}E~eK7p}8>~|%LxyH5e@WX93Se}b>2@>;rX9ONqR3Y81 z#kB@Z^g>MY2J2@9EVV{2+*-HEUEBZSXse*FIOt$KFJ74-Jl-)@C>BRT9QtZTD%F+3 zkz8N_`Ar+-2rVQnGa+chS&$oQ)YRhc1NEf!`Xo9+*I`3$JrI`X%`R#{X??3rkZ_hG zJc=e|n(U#!F|QZX4C5%bYptMN_p=O28id8hdW z5&MqZMfVxnCVV^EDbeiKgEF&09)b0roKpcdYTx3ibGe3X%veqZI3QZw?oxCd;>v2y zozt0ey7|jMM35wC%jxH^g3e z^es19B}tfXZc+owtaAQV#zKs_SMrkB+=fHx*#($EdPjI^x-{_DOJ9nHg5pfo@g(D` zVWhf87#f(_<)b^Cve|j3`|gt>jZYiiOm`~_sv1Q}-1(ERgNO31w6aC?y6?>h?@yiy+_guYORX%p_ zikUJquN?J(+`#1YEJQ)+yF=5tbs&`LK6jznNju%|!FW6tCfRWtp3Tcit@NCM**P1z zbNU_c1UYR>I@VL0U)JA9G`gk%rzc1dLxa?!99xV;Ny{c~Dq?CJ8~6@bu~~ySI?=V7 zf*uC1dfK6}h8%I~hfKeC!3ymEN$X7lLJI%JgW8c7kUHV6gob5q z-?xvt<2U)OO}0-5;UImESTW8GWzlcaskaH_Q}KEVcG)`J%}orR8S;t7Y6Lu5_m1c*Vk@_>sEYSc zWXS23wflgW5^T0L8^Al-Z`~MtSiGp3{IS$cW$J4lbg?PA$vadTZD0OHP(;(hF*`fJ z+gdZF7}9Z%^hbu(^G?f`H@#M5co`@qzc#e9+Sb2pAKz{3$ILq(VyL6AMH|;QME3UF zg>oo1BKB-JUv_-|Vu15eOGQ{}e7&s3n~4qqb6osbHFa-QrmCEQ;{0yaRQ$~7^Ie^p zRk!)|DO+(+{rR)jp~UFM0cFjeZSfz~j&j=;OGvz~ z`%gJNZv0y!bfyhih)^FQJ5 z;)MLp0=arW%XLdO^Qy=0hRjEVt zChyGrgj=FOH$(fBXK_ZPTLA)d>6{HX`Sj=udF*+$zlS3P4o9SzVtOL<%!Pw+0u`SZDx^|8?f6ke7y;k9 zS_$tbbYK+bF_xgG;=nn@)XHQi9HV?$ZB47rMui43{d_ksT-hQN?qd+BvJ!)Yt?SJE z&+Wm;h^@eW81kpSG(lDMWr=~7zmT{=!aTK*XiKZ4JVjlKO-#VkNN@T-Zw+jKa-8zq z&D5 z9G&0jWuUR0x(Q3p+Ij$_1$GwhOdRYDO-#$Z>bmw({NIBj=|TuzI$qe`ZgVhJ+aFA> z_+BD$^)}vUtR~@%r*HtEKDxmiM#-LYtOpy2T>*uVC!lZ>elzZBZLe#l*}1^{ol_*C z_6elMs7}c_wtz#H3oO6V^Ry7g_CQv-PQzJQWwOj(KocqgP{t>3RlT`;YQq+=dOsB!{f!o+^C69$US_xh_3 zX2~zc-JT3x&{fWHtB9{Q*0^@*Fhs0tV?g36m?!T$c&)0K25bRw6XCYOm_pgv9|hI> z%a-kTzkfL|Gv=^qjL*pN=D;bD-KBOJAb|xR9ruTZg3ZbBYd@T#vm*ZoHNa(AC?Hp9 zqJ)rh63jU5+JwWpRr!;Q!$ao7d~s)>Sylb6MbkNV7-QfhitUGOoDH&vIVmKo99agB zW*ntO^TwHkfh^?KGTKCXeVJq!WnsR)zj&+Nrpo?@8e?Xn-`ZoU?CpkEj1`w`8+q%( zn6qa`%N+&C^I$OjChOMR27A9e@R=lV*m}q0pvlkSQ^i)0J&m^wVT6)m{H-1ULeCS&v z6-y5QJ5Mp2s|H}Lt~B+=5~NY|=*Y)zUO*T<1Z=3Z0(OIuW#=y9YX`oMqGcowr))j8 zR-H=2eF%%^7q*}zIfz2V4yyB#e_mH{un28E;HZ(|D&bB$oEX2Tk-!ZHGk8#oz^>^G z=Ta~|#}8jhm3YcVHOR5U4K6Bj#?xgRE@^^`XmM$9Ln{p!Uy$!o+*QpyLfO(+@i047066KA{ucFLdjF zhb4%qITLIu%WAdmk-w7g#}eLfa$VckfEMLM?e_q*93E~6@d<&a;my=c_Ccw5oY{x< z-rf(H$Zc6nG(@sAskEn92KOQ*Zp9$cMPKkR4Lt^vL2ml@WfyiR`eYA6YnWg0N#Pxv zYWzgep>dkAk?*=3p+%h>++cxWd8CiS<&hG#gKCr`%;1^zjmLQ*wtCCT-(ax=ZrdOo zQ1%$nmo#4YrJNFXbp>ISq{f6iKl_)~W$t?p##fpRLe3?ex3QFLjtr?m9v{P#ym7d< z9)wFv;n2ipFl21HeeTLml7{1$^?hTn?Uzq;tg9JMm7d@!-3XTOv<)!}lb?67Dlq1r zL^+f4en87V|S`!#C2%<=~wBsm9HsLfr52}U9zXR4g4F6?bf&0$B!xKe@?N~LPBDX;f&Y)HPAH&5TQ9avsM(ir_f$@1I zGuLl-T@NtN@m(XZ$zOAmo{4e`-LdyUd{3SmF)o=X5aZlzI2q+h z6uSpw@?ax)Hywl(xe4tgZewB_=_{1~=BOzU-LNi*Mb7C33c?WKMrKN0772m`{PI38 zL3#}LKKnh4n5Ca&tqvQxxU`pT$HBz$SSk$tgs&iGlyF5Ooyw9_%Y}qwx6h(_-(mjc zNS>h_Yk-xZN-->-lEwVK4Rhy(4Il1_bQMwo(mMTC+0=r#hQs6OFB@4!tAL;935d&B zTde+};a2hHS4^*j89kMZ0wgY|7&pfJAS{MMb84i2HxZYkYJ=oAXzw_XD{@RFMm5qm zIPPsNJ8E=lGEssOO69@tADq)7ghrzNK+!RoUpyVsG!GMxs*xpne#uxDtk>a{+gf@k zW0uxv!PP1|c>qO@kc3Nw)&GVQT?j*MnpH-4uVqF0KW97{M?gNQF9MK`xWX@?X4?4n z*$WArSWScbl|MMrkF(QSlvY^H%Fs>leDS%c-=5L-uq=;>+~6V96144m@3#~B$q49j zvPVIP+~G6Eg|A%Ylkdv-W??IfMoGeBYieR{wpL@_@pqrhJ@`=FHH zM?A*yk@cC!OER>t2d*sS()k=ebE$&=?;F;IH{84^H1$cr??%&Lu0UjUgd3g`J~=7r z@kg%|QjMRPuG2(eO#;j3L@?f zA9KM)ghmFlj|j363Yrb%N>sBKbZQG{pm2o-CMakeKh5a_5cCRLl2fj)n24+cnNVq> z6kEAAwJ3=W^1(V0&Zu?Z2rc30sK|XX;SzeaIZ}22-MJ{MHxmPD^iU3n6ryq1|@ zVMC}N|0!9_Rk+_lipwhDjj(*SA1=)*r)DQFz0OaVx;dPdBG3#b2hgj{TDZM5>ZMvx zFLgd#A@fEn5euolMTtn{sel=gZ_VZ-CDuc+LHGSmWicH`>Rz@oT`jZVk@^u_fB0T_ z!9UJ_|1oy_Nf8>lzCWhbCzIJ*Ts8Ph5T98 zgI6pFnw0FyLQpFkHmMVoaCTO&ZYcM$;cMx8Q5^U|$h#093FU5**>3}{qtCAYD7nXg z&oF&Xh(AyJ&Bfo9VD?f8^<24XoSRR!i%3x`(P9#_JD~FL$+fxr3n7I@;U>P`i-yaJ z3yMV#__4o-T>FP!Q|OdMDSg@wm=ODE%zLVYa!M?*^ACc1Y)}ps}+UI4Q#Uh(t4*^i0nS5oLxf5ATX$+z$?|wSNdxs3g zKf5u~dFe=n=^vA}nz($v&yPKgV%})+^(XoK(_eM~R=$k(pRI#6uDuOYdORwP5EOyi z;+Xw2Lc}gGjeu&I1;^FNdPTVwJcU;I&kn#hxkNk>U>#ZT7FP+U<9yvy`BO1pWkOSN zf4{NxFkKCG?=N#)S-~=MVKa;W$o73>@w%W{tBK!mQaQU&cV?CJUPI7TNP}`3W}f1^T+W5^N^z`B&ik;1of%W`yR=`=cjf z16R&`ir{lJy$;?PTI$coZZOb}_+Ju`p}u$_JIZ{7ioiYYY81{Hf!uo|AMAd8_1m!l=4&vDfVGZBtC9B$a)ockg2Xc2@jzW;YTLDH8a(tPJ12n zW`A6IaqeS=n+XRdVkDSUp#l|&R>^Svc&dqclGJGJ%tOKlsg6_*exn}E#IbDLI`u)m ze;73g-y$juwU9nAhsa^XOzt`7rD1=!k6v^CZC4yFBU*M;^qWCJN2D%6OadBK-fc0| z-%@Md$>yi_s30O=HLF_}5|m$YUa|hAJeBK2`Y=VsfR13(=t=Afe=uPR4b3r?pAtIA z;oi8mO%V*^t+L&b4Hh&UWi??(36yl)B2tnl`=cujNJ6*GimwuEMy~XRJ>(i{EtG6O zU2zhfZmz<6#wHMZX}+6uA)^0l`icEO`=r(13ruFr$f)6Y+~05UXyZ&AOZL^Ps(a_+ zG!Nm#SMxq*(CtdeTX2VPzx?<5F6=qS6`?wmz<3V0NV%nFo*w=vgVg1uKLqsz?g|_i zb6x{&&B^<>RL2v2STz)~y4sD}V)FtW(@+WW>xa7?oX@r(4>D;e${dF34Ku}v2hxzr zL!M=+eEtMqB;$t(jyk#$_av(nnxp|;MLZVX$KK@+XfB<@I2C@&*6f+BZjm7@m*5Jl z1x{WIlrWC4lJ4xY?nr$01{dL=P)RGIXA;}nUh}m;{jy5RbJz5;4q<`>0`xp|W%V@A zRvT^=Sr$LA|GtD@ur^6v znSUD8^}+Oz&tAhY{0O5Pw_{WOK9CLx3)o=s$)u#6GS1K2A_fhYN*fHm(EC$Qam+3c z7mvS{))a0{&$m?0=a2~B+rj9zt1 zrT+-|Q;z+Od^Cxe_dYx}b~KVmrwd7_+^@5`GfcN%Wj>9gf!#l{{?yqESE2UuheYuH*necVkU zbZo|vL&!sFflP)OVIJaH!sbp)=Gg*gqvrl^~OsV`k8qkhD>1GISTO%w6lm7SI) znl?!NjHv2_KH0*7M{a7A@>v#UK0yAuCfj60Ou2(f=88xXF+-g{@pq21BnA_R%09>9 zGQF1$kAP@1{sv)!x{*s|b|usbpL@anyvMZ-?VrX)U{sz>`+oQ|r?ja>{*{8N-QhHTlXa-Evx zk9T7)N}c6(tZ`6I7u-(kersZ2qLdTu(U6mbI5EU`-(Le~LaCs+K}=n@e6Te2IhYCz zV63{T^NOFZ&^PctNZC4n<}4`LMF&;`m9tkPLYVB4<`?@7ruWCL6N_^AiT>O^)EM5P zShf@8c;0oT&$w%_k>s;R2ATlba!MB-QqzAm)`$bn?rEJ8Hij65PxnACVp}AzN1nQ& zBZ8|a=%5X_U;_5l$h?g3Z}(9C5HjS9{Sc1pa!pQ3UOvO`$yDR^<(OMqQ5J zKX``#>@vx<6mTI+kOmin?B|l*Q$YA{*_jR(>;&m;f5asuFY(o?5YhP5sQTHTeNv(E zPknRM8;8t8^DFSS`N+S=^@{?4dQq=e{3!La1%Gj;r4?V)W=7sv?6lI2L{$rae-X|E zrpV|0@_yYF&bI1@8&D##vVR|in5bqdTd!;c{5)}*vV_S{;~2v*02MyiyjE0O3D+~# zH5`0UWEan8-e>k^Bl_N+(2I`Td(lj(O231D*TERr18hK270^g(8+CJd~>Ri zTN4kioz*Nb38CrYC~3?X6T+xw~2mb8z>G7 z+qF%xHnrCeH>1RUA}zq8d``?kn3j-erbfTYM?iNVB`vp!FoGI$giH)S1C=F4m%zXa zG2H+p@XcIx(leY)>${@nPCK!n|UCXws#3wRnxfbS~~CXpXn{)Fw!$I zuJysalb!0cy4Jp(cQ{zh7(>qG(e?70(3RYi1T#eRt=gaP4?#0wWcxSx!=%D$sEb>0 z^T+!YH^AtXqoU_!ujEsuBbGM~BIS>T731}7wQy{9UFQ`C3h<{7D}OViQ~PujU!9Ce zkoP7%NfezxA}doY-%xiEY5sW&GbEkn=%sbqcXTFDM~!%KG|*lM}r z1=WF)5mLz)YW3;9Y^-g}7gpm(#y+&ioW{WX%GCzpz!PM?kMnlgq^<>3k}eD`giMLC zjM2bMk1ai8+l{(D{B1_flq!n)KHf4~c+^PLq1>*0{s+_#g(7HU99o%U2Vj&;`@;|5 zVr9=kWT+)oGBvd56oh^E3@c=p)o9g>{MFHW5j$3)&Q|RRAd1IsHi|p;i`|XP34{;N zJrA~2!3$8rk(AcF$q~OkHDR5^;t;2y6&cm)o#S=x+A*HjWH&mtZ^sRRba}8FH8|um zJ&zV2plzd6X)q2X8uIUCm+1T6T)oDFc#$D1WKG0B&V9TypD1|4^gtZQ@vT2x(zu&N zsF?T;qBn^};u_o6K-l9o<6aY~XwxjMfAzKP8{wx#1e;5PJsKH{!^M^(sw5bhvE$^{ zE$*J-pFd4CTs+*7qfo1z;t%>9T(9xLadm8k5;i(O%Yl7|$24qXlsrb(y8&SZKB0gV z^nr=JasdMzwvdJjuxS=p?GfFmCl!ZLDpYMaL0Nw?thYt5tv>v&6zJ+D20aYx2jZ?J zEe3ZEgYzru{dB|7YuVjMOx`EiAIpFBYQIcUEO~`r01>~iq65fzJ+>893VKYV zJPsH6Pl>h98TzFS4+=reMVaW8JE0Gb&RMr&AYSC2qakU!|4~P*_$DkIPnj)GT>)K% zNe>IbX0SYYUpxM!VW?2k9L%P@q+-0pI&BARL}$M8ElQyW5=mu(6G^)8y8}uFY`7Ry zlvnEcQh)q4t>N_|dhV!~_|zZ=?EqUI6}%@WI}y|c$E_H~aXX;p6GL)MDic3XDxlRn zndGzgQ2bg2Slt2OZj-XrZD@>=C#(1Wi@J#S#Fk-Q;+o&&+{B)Yfrzly!Tjx*2EqgL zPnzG9niDSf$dWrr==O^!RAPqaMB&DbPbSp;O9%y zUGN%%VK=m0f@%GI%Y;ucDv}P^9;n1#rZh)ObaZ(1+z;}^_jz{oxq`CkIa1i?!SJ~e z_D-P|0ud6;jT98yfe7&0oS#%42KsY-c)8Z+P$bQ3O~E~-R0bbN~BAtGm&RQ?kU@!>#^@b1p?peDo_!^HT;q=J>k!Dw_UbffxzMpz#v#2QVb*gwK_-8%L+aAg{YiT}>JLun2?j~58- zE{6a@m{z1|4J8ZD-T(<5sWxD!A9||oT$>xs+Z)hI1Qub*s`m~gg3tdxt97v5=xcnR zV2RuIoo|sb=qdF|p3yvv>6>jJT>y2DWR&8`0jQ6L!4DwENfv-T$T~>5;ZqOsT=ek| zzzf$leAtt6U<3uzJm5^P{6xH1Aw&m#~9#LohB`%LH?}wy}Qp2;!hGy7?f!T zacCZd*-#=q0PB1LugGVySd^n(J_NMMMqru^Jf8LSHiO^KImUoiiWcE8L9~TzKDh<< z=M%wge@e*^X0aarC!KVtx-8IYu=m_BITU3jzS4>8OyUV}5(&)^mxH+3=qN6IC&AaO z2Zir|Z_5dfyWNX$UlPHiIUB_=IA;9yFD7)4%m7wz_wFl>O^}q{W(csIM@uO z@VQ6)EP>qMXid3}admZvy%XxhOeDAD|s{N99>C`zRM6ShZo4{sX1qvR;DPz!<2G zE_^O-G+nJetcqw9EEe7-p;+3joBl$T7Q6UZ>3X8_4Bl8m1ufw9sq-M|(5~0~cDVu{Z zKw}m};124Y{Dw`ZZnV8W#}8+tZbf$#?!+Kq=mQ=nAF4;7`S!$lv+T0xFG5A=|l zD<@)lpg*}1(usD(i-T)JXmew9+^`U(ED6xPC}d-_qxbze28~_WRA`jJ^|e4u z2Igfjynp#QB2j`*{7eU0XS$69#x5^V``f3Ooz#%24i-IAhOfugHMui!3s5-TRD*e@;V>Xsg+ylHqea|+V}+zsSnrMqp{%-&^CJt- zMUK}{Vy*nv`J(|I9#;Z2Xq7mAc@~lg_GfGj)L()l?@N}J%0<j_5kq#aMa;VLfoWE#4Gxj-MhTvQ6o?b8lTpiXNB zVZq>AhccIsRy7qaDI0^wmVb`JT?R(4Ae2UgrLdBp)XR)u6VN85 zGrlOf%>5Gve56$*DIQQmY#x~ds*OSr>Mmc}Fm05C{UG>T6LGu*-CCNX7+~;%rtmvB zDxa}%pp8KUxEOdlGy$-1cT86#K!TWjb9ZB2BuJ0}RaWOtBfWLdeEpy+%aZnE2+S*Z zKz(HxKH&q=Wm34DOm|n=O<0L+D2>44ey-`3gvIS&Kgig7J{ zm+VF`OyQvthaJelbOk^0eUN;Oqj6bCBWO*8RI=U01DaAzqcM#vIRxrXg;T(bq9f}5 zK?Df(@slAA!K$*5C@UkJAecU(@Wxtt>Q}(k`QrVeboHKM5e$$_A%lO;$c?Reu_F z^ADp~ZkoZ$a`OKHv_vs#W8b1^2S54>>xW2KKjauT{W3HMu_qIZ3kIP%haK zN{&N-Pu3jhiP4#w+aqr{;Zk(`$9&EzltZD%2s(Z~w*w`#FbL|WAX2ztO<|W)I!Bps z%_LF`P#qR&F}ONBd91@ITl2JY>jsNXIh1)|Gn(=nwS*g;`LKM_2kz3#F2mvm+~qwq z&((uCKX$ovKG^}(7hWhDOQ)PYhE{wjb9_o@ni6K{CQ_W|F0fAJCG$=`?>*S-GgF_D_RV<8IFC9&r7w10Jwn(WjGMw)_JXXPMtEu zTr*Cki2DSYvxzlFGB2w6=XxDLi&0_~MeM||Z*aRK%1*-xxQnt-dC|mHqAi3zAj7!3 z7`zab1Jw90K1w21j1_S1X*SBNyo?RDPz;uWdU}J{H%%5LyL67qG@P^`IOkS6*VMJ` zU!dZNkfKaNwU{mvXLc7FYeo=MXa?$888_E|N14F;Hh4Qkd6_*4$vJYBI7=JWR)zq4 zHMJrFiR^n2IX_J!eC@UElj%AL=ycBSBU$BW;Ex&rl9Bk^(EO~;&G1jFJUrO*V`t!8 zgk;%f(0-b)fuD?vMFx#cfzzIIZVqfy9{i0>e}CwzRVN=bO8-cC;)>|ZeAY`dhotu$ zEr}I2;5u4m`v7PIk$~_7BT&OF0N7~hKoF5RQ_{sHVe_N`-}hC}P9 z&as3NVG@>uhF0ZWp^&00|NCOPgVcIECWPHYVp-((L4T( z72dI^Dh=c(sZQut+~kWlIs6%0?ei|1WM#`pyV;$lxDg1V#pf0pOjSw~$y5YunQ@*| zApR|qR`HdyF%QkU(q+`DJ@%(A{3=r=VI#)OM8sXy_kI{%e^=2v7Y>bJ9!fMp(W3pG zpOmCVJBgT$CvV#M7f3sZu)6^EDH~{Ya?1QIf!4=b(EsD!AoRmNk&pD>qx^C|T#tS!Kf1 z@A<7BuduxL{c?XL>C&!-Pg;KS;r{sHAWF-NhIW+*1j1Y3?9k-$F~pCbAiXW!jwCIZ z^!1eydvTIBdZ(Ty*>?&Yi`dF(YZ@A1J1gsz8L2x^Dj;2G9NsRog(KDm4pQ!_GPR2SLLj9xp;Krg zBt3!r_DD6DK`ohZaPEy?O{UH`zyvia0(<(-N3{_MT7t?C?YCid;!zODl)tZMhFKs7 zZoK|24@(w(q=AU1^k9D#Sb`)cE9OHJYU_q)|fV3(C@$~IAq8z)s)Vy&e-fx@SVgqC@Z{1y415%+3 zKqj>LssK?Dwyf!h|1bju?LOBAr+}ElsC!yIgCWU9VAcOp68gjf^|`dGg9UE@PWDy& z@Q-ah27wd#`kItgm^;L}OQ3m?2ayo>YxlyuznoVN_KnId$XnDlIU&dS7jH!=6i7_Ve zr%Cj^I^XaI#p{$&%=x8c3G!cuP=%s0yG7EN;VyfWO$GSW!fQ?ojOYP-g+tET`VbJz zEJa2{o=*Nf+sZ`Q@Fi%34Jt#n9e|bhL?7D={h7ayP19$~!)RDYq_hVmY($G+XG;E- z$nv#vG^@^>a|+S0&t_>L=HaeS9|Jzk+>yu}a4={vfQMy!9r#qVZ$p}}9DkWHRIu*% z_G-%J3wtLlOpmveIT(OOB`@&875Hee?=ZO0->v$f>YQ9FhV1EGPe;o2D9cmt~$}dIERHh znNg$`kYiqPiz};-24nNaM~Mm!b3ly>?6y}Yu&+O7G16u#uV^t`h|l|OI4YOLSfwyS z{!!nVm9`Sn`@ReXve?@Jg3=!9WC)~UVE?r+C0VMWAv0D?=dZjaA!@9$TLaGfjJ?_>BnG&*M4vGd0mn<=20Coo zRu*W`C3MbW9koGf5l4Arsjcxa=rLzQcGFJzkp+XGJNdRC7W#?PQVCf%RF;26Qcm7# z2u4R>ul&ikN>IF!2uuY6APC>_IzOT43Ip7L%(ua^`)~s_=nZ&of^H*EeyRVJ#|gsA zCGS7#R*!)mj3GL9nJ#i?4@{Ca`3?xajNEL=a`pgH>4&K5YJ(XBZ1RX5{y!8N4cN7V z^z1oE>_#0$TgTGT`+N*1zIyKf719~u)dQwQrNtb#bRmunQwHK7bYJ=Xv#%<#4on)T zur*ns{?l)lS?f6i5lBv_IriZg-Tclo=r3Fttu69<;gvSE$VwnkX;`<;x9A|S21kea zBG&5Wo0T1qe>I1A-T`H*7yJq7?vmZ{=<5lnBS~&o(!-#xgE>w!<7K7L@EL)*@sfNYv_B4RlEwaH zHhYN}a(9@VU9`|HuS|5KjTer8$|ZYo!QFrn`s7oGEwZ6=++*~-W9RsSi}+wE3@U=FqbWe!6-OyCLp zTp9Xov4VZkD4Cw-y#QS!uPN|Ij%2l{DSA3s#Wg^>KW4BTH@Pq z%sMHc;`Xvn$gCH@H{Oi9eQj*^XE3mWINz#6?s;5O3a}qQIbrdzcm1JU$EFB7jJs?f z{GX$ORn|q?CO^T8AWk17(6AitKZ&Z5{(Q}oX2`P*M4E%Z=L9N8E*5t%gd%x?5#;gF zXL4vza{=NWj7OPd)&ADQZS8%){R}}~wTv>Z-4|cWnkwIeAPC7b3=``k*ioj+`!34J z_R0Ya!($i0WnF31b7U3RzlR0#LT#j%9msTW_6Tv0>ziv)^=*K+*93sx5|9py z^5s|jE`YN(|CV*92%r-u?4QuQk%tALP>}n<4_RA2in$>8Cu3s7x#~=1s~$W<00Ng zZEt>LF0!#K0R82uRCNiVT+Dw-@k1Vet_mf^D2HC>5=ap|y^42gf(?HYjZhae%8n)8 z^*`DipWvaIYm0!AP2D^A)V#jsG}07et1#Wt(*7($1~>oH7YylEa?h`$bz3BHg0y)V zP`<^m*~_}qHN+t7R>k;Cz%Kggcj`jqVj5;Rgp*t7_{Ss>JXQ<6-fPzx8o@egKKTxX??q7F%@}vJ_F%<1I zzzdJ?!EkL)juv%}wnoo6*B56hvz|ij8nxJemMxJ2UqXtqL}nBzf^2*eMnws)M}%s8 z!=mafPdih+u4v@aUE8&i_ds#WgP_mxyv)*W1J-_55_UqM$7S8BiucDJ0$87^h^Uzb zdKIaYWr7eT3lK0)cEGW;M4{+>9UHZbbkt1t=g_wno`S79JaA=X6yf@80!WEoXviML z-!_^Pu&z{C2+oY#5?YLjV~T(cQ~ia%%;o>Ib(mZN&R?D?v#eNef{*NA0fQVGa`F0D zZ|mzE5ve3538v#N(DgpG?XFfDC?pC#sor+7jP$Qfh$hfuo^icM2&rJzqG?>g`7h~9 zz({EbT_NPwZrqS0_Ab3=Gi{7*Fjn8x2j{MA%}Nsyv~qu|xcYSe z*9BA5Fr>;8po#bvc%%UV1nS}jCeHlskS^y`un^`!S*!q7qP)cBXLv6D`^W?tVGYH} zB5s55dlZ(H$B6_}&*so=T|#*j-rsv0ISML3X=R++!RVfdmWH>}YTZ?hAoapt%)+|E zKv84fo+wlV+SJ3)#rgm~5%vB85r$K8e}vaH4-qJOqH`Ly%yU)|M-3}DknR{aOU4r5 zp?(T&o{uz8^Hu|cAp-Tk5zG&u+P?pr;w?LyFlJ-E!*OuvLJAc33sAe321JUw*UO=f zqP-~aU*4VT0+cfBEhaS5HGRKs%Z_fw>bSI)mQA13%tVwgP#AVFg%OMcAY_3yADYrn ztH$5u=pKb!Xw*fALDl{?d|^ioLi&xCz!U5jI%|FJ_!OdThju}02$B7Mk=kpc+bkEY zU7UP&tUpU&%&GnZF~x%o&d7>_^Lc>%ho@OZ%hQ~n9`^3TdchY0zcLgiV9=)!06roe zr%5{?6yg2KIQtk#Ig3D2RC{iY|363!)dl8}N@u#$zzr`JeRSxLOg+5UIwifa3g;r1 zU#1B{wvU~-?y4Vob`r4Ts?)5RSIb zn%Hxqn^ryn9)ogWC*86yJD#K`<8PF36f!dqt67 z{WW4ek0QIpyQRhcZfsNQ2v<<^68 zK#o2WObk8h;Rr#om=@kc4<5M!G8~1d z@SSWZwMq5f=qg6MjOggv|7-?QulZ!ewH@Uth9h>C4!v;8LwID(1>t-@=)(1_z@g@# z*7iqz$3I^IOl#1$L%GV#K>gPNqD;b2bP;E+K(~d%Uc1<0)C@KuCz0ZjgF}}BeW|Wk z+2He&b%Y>(^rA9qq2=hM9>*Z?X+FxQzM*=>ptIC5rD^x%KcB^>gF%@?0Vv!Dq0^hS zx+$6yknppeM{jaPF*4e0q@+t@5EW%CaO0=Z`OhwT?q37m)C|=fyO|{1d%x#j=xoT! zlAqC5Kw0W&GH?%BE*^&NQOYyk?`QwDF7QTg?_lE$lR)GYl*&Bosx?Q`&^QYAZ^s=0 zloEy?dTr`{A3)JoNcg=9nbEiU!Xq-6_*bEVl<;cRRaTl zfkT~JYZHd=dH&shFkVmO6-dT91mIpXDEX>nygv#-($J5zzQw7LThpjmXgNM6&+r!o z`>$IK7xhAExxu=c12!oibxzfR20 z{O=A#0wg?0P$HU}$)baR5wL_lY}?16{$BK7NRYxIkMfNEaMPk#|O`dcAC$`7(b9h#X_}ymOxQQvm;sT z1N?46BPW8c(cdqLG!j&s-F&=i6fIGSETld=xx8g}9bKnf6#GqlIslMW8qnnY02-LE znFQX0;R?t>RAP@B%YPTNlrh(OT9yjNd}tg;toa?521b%JjE`hE?xH!?^EJbymu1Pt zV=nJe7X<4FT;U=^}iwHSOB-YjGS9!IQ|GALFcWjo~Mr`$;MvJQ5$J;2pjM&Qno+6pG z@&Fv+5V#_}R|xne)G}6nhXOyV`o}N-IqF`K1h>0@0IB+m7Am~J`?!Q6eLw3}sExw?P_ZqI?X^7!d8w*``p*4( zznsPOLY+HoH)I4NYx};ps;oai9J&{32W%_40?-qq!@NcPm9JW|S-I7u6xss5qEj&d z_~l2e-6YF$w9Xk2Onn7;KLZFtjFU$~I92~KKXfVhbS)%P5Ul!r04pjEjd~G~mCi=9 z;e*}z`JN98570HDo5vzdowlK(#jFiw2WU14=YQlzr2j0yS`6{1tvu0!KMG)&C+&C& z^-^o=<$!Imt$}(6FnJ?7+3o)h3y4iI;6Cy}ptlV=wjz5Fb(-sX?7nsfb-yh%^#q9p z%Rla55A&dutO42HGAMD_t|CWa03D_kZOwYre{>I-!1OHtlN&WK_@{VlS%|%e8F2`DeR6{Y8ga%3Es3%3Y zK=LA{oh^ydM5whYX8rD@_+XxQT+dRByVb39^&BOyi|~uy!YSt%>URh5ElNQ dIi72WIELz#&uRkJgyF_;6l7GSbENdV{}*<~T)F@N diff --git a/test/image/baselines/sankey_circular_simple.png b/test/image/baselines/sankey_circular_simple.png new file mode 100644 index 0000000000000000000000000000000000000000..8c6a99f2e26af34d6654c68ec041fa82a702e5dc GIT binary patch literal 40127 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 SZO`g30D-5gpUXO@geCy;_Bd<+ literal 0 HcmV?d00001 diff --git a/test/image/baselines/sankey_subplots_circular.png b/test/image/baselines/sankey_subplots_circular.png index 3b6c2c7b44a5d004f9afe7cd593c05c887ad542e..9d744f00ca4db4b2d98a75fa9e9630a4291b2589 100644 GIT binary patch literal 39189 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%0AnT|H;Yo&QImCDv#HeAX1flPt363R}2LLzgS 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
3{C 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
%{flow.labelConcentration:%0.2f}
%{flow.value}" - } - } - ], - "layout": { - "width": 800, - "height": 800, - "margin": { - "b": 0, "l": 0, "r": 0, "t":0 - } + "data": [{ + "type": "sankey", + "node": { + "label": ["node_0", "node_2", "node_4", "node_6", "node_9", "node_11", "node_14", "node_16", "node_13", "node_18", "node_17", "node_7", "node_20", "node_1", "node_3", "node_5", "node_15", "node_10", "node_12", "node_8", "node_19", "node_21", "node_22", "node_23", "node_24", "node_25"] + }, + "link": { + "source": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25], + "target": [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 14, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], + "value": [0.0, 0.0, 0.006646893, 11.68228, 412.55902, 442.56927, 0.013883961, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.78665316, 8.526513e-14, 0.6138538, 45.966034, 7136.0156, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 0.0, 0.0, 0.60126424, 0.0, 0.0, 44.941578, 7118.8457, 2395.3425, 538.55695, 82.62762, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.07240185, 11.468614, 3.858948, 0.8676268, 0.13311486, 0.0, 4.275301e-39, 0.09171584, 14.527993, 4.8883653, 1.0990758, 0.16862473, 3.1385706e-25, 0.11330401, 17.947605, 6.0389934, 1.3577774, 0.20831577, 0.0, 0.0, 0.18538894, 5.684342e-14, 0.6138538, 1.024453, 17.16984, 28.75857, 970.52997, 7037.6914, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6077, 558.2992, 191.0962, 121.232994, 578.6912, 24.096718, 26.353783, 719.0876, 3113.8757, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.105827, 165.261, 56.58344, 31.020855, 81.85729, 1.6002578, 26.410742, 725.0432, 3206.8154, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.514482, 286.2017, 97.96848, 53.24637, 142.6171, 2.948419, 0.0, 0.0, 0.18538894, 0.0, 0.6138538, 1.024453, 17.16984, 26.14728, 697.4959, 2776.9333, 42.072098, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0013678052, 0.002282713, 0.038258288, 0.058262054, 1.5541787, 6.1876354, 0.093746156, 0.0012357329, 0.0020622993, 0.03456415, 0.052636396, 1.4041106, 5.590171, 0.08469423, 0.0018279847, 0.0030507008, 0.05112977, 0.07786353, 2.077061, 8.2693815, 0.12528577, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.6112895, 273.0341, 4260.7583, 253.02411, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.42756, 38.605415, 558.2609, 191.03795, 119.67882, 572.5036, 24.002972, 0.20650205, 21.591648, 336.94254, 20.00925, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.207823, 12.103765, 165.22644, 56.530804, 29.616745, 76.26712, 1.5155635, 0.26346198, 27.547321, 429.88214, 25.528448, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.248255, 20.51143, 286.15054, 97.890625, 51.169308, 134.34772, 2.8231332, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.109188, 220.53482, 3441.4954, 204.37238, 7.391909e-07, 0.022095865, 0.026396444, 62.26038, 1.910779, 0.37069288, 32.42175, 0.0019032779, 0.6365791, 21.818855, 25.026388, 355.7736, 118.061905, 72.05826, 334.72137, 13.659042, 0.7359496, 26.192354, 31.18233, 450.91797, 154.30498, 96.666855, 462.42203, 19.387655, 0.16651253, 17.410383, 271.69296, 16.134422, 7.7489085e-07, 0.023194602, 0.02770698, 65.335144, 1.9988183, 0.22508979, 3.0771644, 1.858965e-05, 0.67629486, 23.010817, 26.302855, 373.3437, 123.68602, 62.95675, 157.5141, 3.011998, 0.23029031, 8.231058, 9.759848, 133.23003, 45.583508, 23.881405, 61.497852, 1.2220718, 0.20387426, 21.316889, 332.65485, 19.754627, 7.8483055e-07, 0.023506481, 0.02807797, 66.20128, 2.0252693, 0.23129526, 3.3973153, 2.43151e-05, 0.6896849, 23.37594, 26.672651, 378.293, 125.28533, 64.061714, 164.15088, 3.321302, 0.37259033, 13.347183, 15.87232, 221.4313, 75.7505, 39.59624, 103.96202, 2.1846197, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.50210136, 52.499268, 819.2629, 48.65173, 1.7596759e-07, 0.0052600163, 0.0062837875, 14.821353, 0.4548692, 0.08824504, 7.7181377, 0.00045308354, 0.15154041, 5.1940727, 5.9576397, 84.69344, 28.105146, 17.15378, 79.68187, 3.251594, 0.17519598, 6.2352033, 7.423088, 107.34297, 36.732967, 23.011963, 110.08156, 4.6153154, 0.039989512, 4.1812634, 65.24956, 3.8748293, 1.8609715e-07, 0.0055703963, 0.0066540856, 15.690835, 0.48003453, 0.05405738, 0.73900926, 4.464475e-06, 0.16241841, 5.526259, 6.3168716, 89.66191, 29.704332, 15.119641, 37.828457, 0.7233589, 0.05530633, 1.9767642, 2.343917, 31.996414, 10.947297, 5.7353387, 14.769273, 0.29349175, 0.059587725, 6.2304325, 97.2273, 5.7738204, 2.293878e-07, 0.0068704, 0.008206541, 19.3491, 0.5919393, 0.06760225, 0.9929566, 7.1067407e-06, 0.20157892, 6.832246, 7.7957983, 110.566284, 36.618, 18.723755, 47.9775, 0.9707396, 0.10889953, 3.9010725, 4.6391115, 64.71924, 22.140118, 11.573065, 30.38569, 0.6385137, 2736.3335, 2108.9036, 14.86675, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 443.5915, 6569.0674, 8.137072, 454.3161, 5378.305, 8.642767, 13.946691, 6915.0107, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 7.245143, 3592.2676, 10.048806, 4982.3726, 86.01402, 580.18024, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 8.001811, 892.7646, 21.076576, 730.4533, 2460.0493, 1528.7233, 2790.7883, 11.968955, 417.03336, 490.2733, 7145.696, 2425.3513, 1509.3833, 7120.8516, 295.1046, 9.831879e-07, 0.02820494, 0.033103738, 77.49881, 2.3709927, 0.45937082, 40.155697, 0.002356749, 0.8467053, 27.851343, 31.385553, 442.85034, 146.49727, 89.29619, 414.56647, 16.913418, 2.4631135, 87.6656, 104.5645, 1540.2618, 527.0252, 330.07645, 1564.7445, 65.141014, 245.31956, 5676.3027, 2606.2048, 11.884567, 415.89694, 489.7617, 7142.8506, 2422.5776, 1257.8187, 3196.672, 62.082596, 1.0113957e-06, 0.029394984, 0.034675278, 81.33534, 2.4828045, 0.27933297, 3.8172343, 2.30568e-05, 0.8827072, 29.16207, 32.91801, 464.77338, 153.63487, 78.12836, 195.39685, 3.7357903, 0.62885964, 22.479483, 26.857958, 395.88016, 135.35571, 70.72537, 180.61414, 3.5236323, 242.96942, 4647.8516, 2571.1414, 11.841463, 415.3165, 489.50037, 7141.397, 2422.4468, 1263.7379, 3289.5796, 67.601616, 1.0560822e-06, 0.030900408, 0.03654561, 85.80741, 2.6204917, 0.29905406, 4.391232, 3.1424708e-05, 0.9280525, 30.728804, 34.71648, 490.32806, 162.10643, 82.828835, 212.17477, 4.2924333, 0.9368864, 33.565334, 40.13769, 591.81586, 202.3785, 106.24914, 277.9107, 5.737055, 2495.4575, 1203.661, 9.040011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 362.2623, 4105.1655, 7.4855456, 356.7432, 3127.01, 6.5761266, 0.0, 0.0, 1708.9695, 0.28667504, 3.8604624, 1.7379957, 9.666174, 1.2502424, 0.29634866, 0.53239435, 0.00840123, 6.802936e-08, 0.00084905897, 0.00042350602, 0.41707394, 0.005344402, 0.00043290236, 0.015808823, 3.8748325e-07, 0.05858577, 0.8384146, 0.40152475, 2.3832796, 0.33021626, 0.08415104, 0.16320992, 0.0027808049, 1.551968, 55.236675, 65.8844, 970.4941, 332.07007, 207.97583, 985.92017, 41.0443, 1415.1053, 0.20228739, 2.7240698, 1.2263873, 6.820772, 0.8813371, 0.17427117, 0.16865067, 0.0012471518, 5.0407706e-08, 0.00062998536, 0.00031421002, 0.30936044, 0.0039516515, 0.00018580105, 0.0010605482, 2.675087e-09, 0.043993905, 0.62499356, 0.29828656, 1.767774, 0.2445265, 0.05196784, 0.05428742, 0.00043343264, 0.343263, 12.270425, 14.660415, 216.09117, 73.88391, 38.60544, 98.58822, 1.9233744, 1243.1842, 0.1591833, 2.1436157, 0.96506447, 5.367378, 0.69355506, 0.13778628, 0.13657272, 0.0010686538, 4.1863846e-08, 0.00052352564, 0.00026109786, 0.2570343, 0.0032831817, 0.00015655463, 0.0009601131, 2.8691258e-09, 0.036788657, 0.52061826, 0.24802977, 1.4687674, 0.20310114, 0.043360844, 0.046390574, 0.00039190616, 0.45539653, 16.315252, 19.509907, 287.66656, 98.37101, 51.64499, 135.0853, 2.7886357, 154.86191, 325.06226, 5.8267384, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 73.32737, 1571.1372, 0.65152603, 76.49633, 1520.8418, 2.0666401, 0.0, 0.0, 1066.9521, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 1182.9623, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 1319.3145, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 94.707184, 325.06226, 1072.7788, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 13.172645, 1571.1372, 1183.6139, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 16.3416, 1520.8418, 1321.3811, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 2365.342, 1203.661, 1718.0094, 0.28667504, 3.8604624, 1.7379957, 9.666174, 1.2502424, 0.29634866, 0.53239435, 0.00840123, 6.802936e-08, 0.00084905897, 0.00042350602, 0.41707394, 0.005344402, 0.00043290236, 0.015808823, 3.8748325e-07, 0.05858577, 0.8384146, 0.40152475, 2.3832796, 0.33021626, 0.08415104, 0.16320992, 0.0027808049, 1.551968, 55.236675, 65.8844, 970.4941, 332.07007, 207.97583, 985.92017, 41.0443, 232.14693, 4105.1655, 1422.591, 0.20228739, 2.7240698, 1.2263873, 6.820772, 0.8813371, 0.17427117, 0.16865067, 0.0012471518, 5.0407706e-08, 0.00062998536, 0.00031421002, 0.30936044, 0.0039516515, 0.00018580105, 0.0010605482, 2.675087e-09, 0.043993905, 0.62499356, 0.29828656, 1.767774, 0.2445265, 0.05196784, 0.05428742, 0.00043343264, 0.343263, 12.270425, 14.660415, 216.09117, 73.88391, 38.60544, 98.58822, 1.9233744, 226.62782, 3127.01, 1249.7604, 0.1591833, 2.1436157, 0.96506447, 5.367378, 0.69355506, 0.13778628, 0.13657272, 0.0010686538, 4.1863846e-08, 0.00052352564, 0.00026109786, 0.2570343, 0.0032831817, 0.00015655463, 0.0009601131, 2.8691258e-09, 0.036788657, 0.52061826, 0.24802977, 1.4687674, 0.20310114, 0.043360844, 0.046390574, 0.00039190616, 0.45539653, 16.315252, 19.509907, 287.66656, 98.37101, 51.64499, 135.0853, 2.7886357, 130.11539, 130.11539, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.7933001, 11.68228, 413.17288, 488.5353, 7136.03, 2424.101, 1509.0869, 7120.3193, 295.09622, 9.1515847e-07, 0.027355881, 0.032680232, 77.08173, 2.3656483, 0.4589379, 40.13989, 0.0023563614, 0.78811955, 27.012928, 30.984028, 440.46704, 146.16705, 89.212036, 414.40326, 16.910637, 0.91114557, 32.428925, 38.6801, 569.7678, 194.95515, 122.100624, 578.82434, 24.096718, 2421.6963, 1257.6445, 3196.5034, 62.081352, 9.60988e-07, 0.028764999, 0.03436107, 81.02598, 2.4788527, 0.27914718, 3.8161736, 2.3054126e-05, 0.8387133, 28.537077, 32.619724, 463.0056, 153.39035, 78.07639, 195.34256, 3.7353568, 0.28559664, 10.209059, 12.197543, 179.789, 61.471806, 32.11993, 82.02592, 1.6002578, 2421.7532, 1263.6002, 3289.443, 67.60055, 1.0142184e-06, 0.030376881, 0.03628451, 85.55038, 2.6172085, 0.2988975, 4.3902717, 3.142184e-05, 0.89126384, 30.208187, 34.46845, 488.85928, 161.90334, 82.78547, 212.12839, 4.2920413, 0.48148987, 17.250084, 20.627787, 304.1493, 104.00748, 54.604145, 142.82541, 2.948419, 208.01515, 0.0, 1066.1588, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1182.1691, 1318.5211, 2534.4382, 11143.2, 850.0, 1.4210855e-14, 0.0, 0.0, 0.0, 2.109188, 220.53482, 3441.4954, 204.37238, 10.644975, 372.82385, 439.97794, 7309.9087, 2190.6462, 1195.7097, 3826.735, 109.31696, 0.6365791, 21.818855, 25.026388, 355.7736, 118.061905, 72.05826, 334.72137, 13.659042, 3.673447, 129.06758, 152.58765, 1480.1659, 758.29, 426.52255, 1509.4688, 49.553318, 37.661854, 12188.093, 1083.6708, 0.16651253, 17.410383, 271.69296, 16.134422, 8.71208, 306.87488, 363.09512, 6260.749, 1812.035, 929.52545, 2206.279, 35.054283, 0.67629486, 23.010817, 26.302855, 373.3437, 123.68602, 62.95675, 157.5141, 3.011998, 3.504252, 123.54458, 146.199, 1326.5828, 725.78723, 373.10846, 889.45154, 14.395311, 64.565796, 12390.9, 1031.66, 0.20387426, 21.316889, 332.65485, 19.754627, 8.824489, 311.60336, 369.0566, 6371.218, 1843.2927, 947.7279, 2276.1665, 37.48881, 0.6896849, 23.37594, 26.672651, 378.293, 125.28533, 64.061714, 164.15088, 3.321302, 3.6919887, 130.55031, 154.68521, 1436.5192, 768.3573, 396.00433, 958.8815, 16.286312, 2560.01, 9023.914, 2790.7883, 11.968955, 417.03336, 490.2733, 7145.696, 2425.3513, 1509.3833, 7120.8516, 295.1046, 9.831879e-07, 0.02820494, 0.033103738, 77.49881, 2.3709927, 0.45937082, 40.155697, 0.002356749, 0.8467053, 27.851343, 31.385553, 442.85034, 146.49727, 89.29619, 414.56647, 16.913418, 2.4631135, 87.6656, 104.5645, 1540.2618, 527.0252, 330.07645, 1564.7445, 65.141014, 260.56653, 10161.335, 2606.2048, 11.884567, 415.89694, 489.7617, 7142.8506, 2422.5776, 1257.8187, 3196.672, 62.082596, 1.0113957e-06, 0.029394984, 0.034675278, 81.33534, 2.4828045, 0.27933297, 3.8172343, 2.30568e-05, 0.8827072, 29.16207, 32.91801, 464.77338, 153.63487, 78.12836, 195.39685, 3.7357903, 0.62885964, 22.479483, 26.857958, 395.88016, 135.35571, 70.72537, 180.61414, 3.5236323, 274.0948, 10360.678, 2571.1414, 11.841463, 415.3165, 489.50037, 7141.397, 2422.4468, 1263.7379, 3289.5796, 67.601616, 1.0560822e-06, 0.030900408, 0.03654561, 85.80741, 2.6204917, 0.29905406, 4.391232, 3.1424708e-05, 0.9280525, 30.728804, 34.71648, 490.32806, 162.10643, 82.828835, 212.17477, 4.2924333, 0.9368864, 33.565334, 40.13769, 591.81586, 202.3785, 106.24914, 277.9107, 5.737055, 190.27011, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 208.01515, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4687487, 51.437614, 60.70266, 29.2479, 301.9925, 164.92784, 523.5234, 15.082831, 1.6369808, 57.65676, 68.21958, 340.10187, 174.61353, 413.97684, 6.58662, 1.6596992, 58.601566, 69.40645, 346.3034, 178.20404, 427.45975, 7.0508466, 34.438293, 11143.2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 37.661842, 12188.093, 38.298496, 12390.9, 2500.0, 0.0, 850.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 10.644974, 372.80176, 439.95154, 7247.6484, 2188.7356, 1195.3391, 3794.3135, 109.315056, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.4687487, 51.437614, 60.70266, 1000.0, 301.9925, 164.92784, 523.5234, 15.082831, 1e-05, 1083.6708, 8.71208, 306.85168, 363.0674, 6195.414, 1810.0363, 929.30035, 2203.202, 35.054264, 1.6369808, 57.65676, 68.21958, 1164.1049, 340.10187, 174.61353, 413.97684, 6.58662, 26.2673, 1031.66, 8.824488, 311.57983, 369.02853, 6305.0166, 1841.2675, 947.49664, 2272.7693, 37.48879, 1.6596992, 58.601566, 69.40645, 1185.84, 346.3034, 178.20404, 427.45975, 7.0508466], + "label": ["link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_27", "link_29", "link_30", "link_31", "link_32", "link_33", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_0", "link_1", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_0", "link_1", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_0", "link_1", "link_1", "link_2", "link_2", "link_3", "link_3", "link_4", "link_4", "link_5", "link_5", "link_6", "link_6", "link_7", "link_7", "link_8", "link_8", "link_9", "link_9", "link_10", "link_10", "link_11", "link_11", "link_12", "link_12", "link_13", "link_13", "link_14", "link_14", "link_15", "link_15", "link_16", "link_16", "link_17", "link_17", "link_18", "link_18", "link_19", "link_19", "link_20", "link_20", "link_21", "link_21", "link_22", "link_22", "link_23", "link_23", "link_24", "link_24", "link_25", "link_25", "link_26", "link_26", "link_27", "link_27", "link_28", "link_28", "link_29", "link_29", "link_30", "link_30", "link_31", "link_31", "link_32", "link_32", "link_33", "link_33", "link_34", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_2", "link_2", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_27", "link_28", "link_29", "link_31", "link_32", "link_33", "link_34", "link_27", "link_28", "link_29", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_1", "link_0", "link_1", "link_0", "link_1", "link_2", "link_3", "link_4", "link_5", "link_6", "link_7", "link_8", "link_9", "link_10", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_19", "link_20", "link_21", "link_22", "link_23", "link_24", "link_25", "link_26", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_2", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34", "link_0", "link_2", "link_11", "link_12", "link_13", "link_14", "link_15", "link_16", "link_17", "link_18", "link_27", "link_28", "link_29", "link_30", "link_31", "link_32", "link_33", "link_34"], + "colorscales": [{ + "label": "label_0", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_1", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_2", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_3", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_4", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_5", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_6", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_7", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_8", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_9", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_10", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_11", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_12", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_13", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_14", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_15", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_16", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_17", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_18", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_19", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_20", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_21", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_22", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_23", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_24", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }, { + "label": "label_25", + "colorscale": [ + [0, "white"], + [1, "#8c564b"] + ] + }, { + "label": "label_26", + "colorscale": [ + [0, "white"], + [1, "#e377c2"] + ] + }, { + "label": "label_27", + "colorscale": [ + [0, "white"], + [1, "#7f7f7f"] + ] + }, { + "label": "label_28", + "colorscale": [ + [0, "white"], + [1, "#bcbd22"] + ] + }, { + "label": "label_29", + "colorscale": [ + [0, "white"], + [1, "#17becf"] + ] + }, { + "label": "label_30", + "colorscale": [ + [0, "white"], + [1, "#1f77b4"] + ] + }, { + "label": "label_31", + "colorscale": [ + [0, "white"], + [1, "#ff7f0e"] + ] + }, { + "label": "label_32", + "colorscale": [ + [0, "white"], + [1, "#2ca02c"] + ] + }, { + "label": "label_33", + "colorscale": [ + [0, "white"], + [1, "#d62728"] + ] + }, { + "label": "label_34", + "colorscale": [ + [0, "white"], + [1, "#9467bd"] + ] + }], + "hovertemplate": "%{label}
%{flow.labelConcentration:%0.2f}
%{flow.value}" } + }], + "layout": { + "width": 800, + "height": 800 + } } diff --git a/test/image/mocks/sankey_circular_simple.json b/test/image/mocks/sankey_circular_simple.json new file mode 100644 index 00000000000..cff172479f7 --- /dev/null +++ b/test/image/mocks/sankey_circular_simple.json @@ -0,0 +1,31 @@ +{ + "data": [ + { + "type": "sankey", + "node": { + "pad": 5, + "label": ["0", "1", "2", "3", "sink", "source"] + }, + "link": { + "source": [ + 0, 1, 2, 3, + 0, 1, 2, 3, + 5 + ], + "target": [ + 1, 2, 3, 0, + 4, 4, 4, 4, + 0 + ], + "value": [ + 1, 0.85, 0.7, 0.55, + 0, 0.15, 0.15, 0.15, + 0.45 + ] + } + }], + "layout": { + "width": 800, + "height": 800 + } +} diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index 2805d43c013..e74723170f4 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -1177,7 +1177,6 @@ describe('sankey layout generators', function() { sankey = d3SankeyCircular .sankeyCircular() .iterations(32) - .circularLinkGap(2) .nodePadding(10) .size([500, 500]) .nodeId(function(d) { @@ -1194,7 +1193,7 @@ describe('sankey layout generators', function() { var circularLinks = graph.links.filter(function(link) { return link.circular; }); - expect(circularLinks.length).toEqual(194, 'right number of circular links'); + expect(circularLinks.length).toEqual(89, 'right number of circular links'); }); }); }); From 59dbef40cb196a7a0a15d61bbcdd074b3896980e Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Mon, 11 Feb 2019 16:44:47 -0500 Subject: [PATCH 37/39] update d3-sankey-circular deps --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 742b50d96b1..89e1348d38a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2338,8 +2338,8 @@ "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, "d3-sankey-circular": { - "version": "git://github.com/plotly/d3-sankey-circular.git#4da7da7572809de361cbe4aceed813ea536de005", - "from": "git://github.com/plotly/d3-sankey-circular.git#4da7da7572809de361cbe4aceed813ea536de005", + "version": "git://github.com/plotly/d3-sankey-circular.git#4ba2ecfb4b1403cfe1fb77c38d925659b90e3fda", + "from": "git://github.com/plotly/d3-sankey-circular.git#4ba2ecfb4b1403cfe1fb77c38d925659b90e3fda", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", diff --git a/package.json b/package.json index 5c61430b6c2..0d8c356e59e 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "@plotly/d3-sankey": "0.7.2", - "d3-sankey-circular": "git://github.com/plotly/d3-sankey-circular.git#4da7da7572809de361cbe4aceed813ea536de005", + "d3-sankey-circular": "git://github.com/plotly/d3-sankey-circular.git#4ba2ecfb4b1403cfe1fb77c38d925659b90e3fda", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", From 4ed763483a5f334cb73c16c4be586f507e790e68 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Thu, 14 Feb 2019 11:56:53 -0500 Subject: [PATCH 38/39] update dep of d3-sankey-circular --- package-lock.json | 13 +++++++------ package.json | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 89e1348d38a..38d7d9146b8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2338,13 +2338,14 @@ "integrity": "sha1-rHmH4+I/6AWpkPKOG1DTj8uCJDg=" }, "d3-sankey-circular": { - "version": "git://github.com/plotly/d3-sankey-circular.git#4ba2ecfb4b1403cfe1fb77c38d925659b90e3fda", - "from": "git://github.com/plotly/d3-sankey-circular.git#4ba2ecfb4b1403cfe1fb77c38d925659b90e3fda", + "version": "0.32.0", + "resolved": "https://registry.npmjs.org/d3-sankey-circular/-/d3-sankey-circular-0.32.0.tgz", + "integrity": "sha512-lZvF25xPFNzsHkI4VPAxRVH+U6iZnWKswknOmXd5jl88obWZ7iJJG/nhE49B0+I6ZDsUB78ggsMmSR3S5m9+Sg==", "requires": { "d3-array": "^1.2.1", "d3-collection": "^1.0.4", "d3-shape": "^1.2.0", - "elementary-circuits-directed-graph": "^1.0.2" + "elementary-circuits-directed-graph": "^1.0.4" } }, "d3-shape": { @@ -3047,9 +3048,9 @@ "integrity": "sha1-ZOXxWdlxIWMYRby67K8nnDm1404=" }, "elementary-circuits-directed-graph": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.0.2.tgz", - "integrity": "sha512-sgZObFWqdmJ0rqXlCbabVE/iZIFWZgP7V5LNwWnxD4Ml7FwxqUUYt8xkLa6rRScIj7d6Ln6/+ZKCc+gTLVA6GA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.0.4.tgz", + "integrity": "sha512-+xpVxSimU+fcHiTRPWrRN1IFOKaygwotCtZGSBle/rnFaFAoI+4Y8/pimAY1cKiDIHTek2Zox1R7SEQAB/AQ1g==", "requires": { "strongly-connected-components": "^1.0.1" } diff --git a/package.json b/package.json index 0d8c356e59e..d975860f75f 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "country-regex": "^1.1.0", "d3": "^3.5.12", "@plotly/d3-sankey": "0.7.2", - "d3-sankey-circular": "git://github.com/plotly/d3-sankey-circular.git#4ba2ecfb4b1403cfe1fb77c38d925659b90e3fda", + "d3-sankey-circular": "0.32.0", "d3-force": "^1.0.6", "d3-interpolate": "1", "delaunay-triangulate": "^1.1.6", From 063784af4a844199d3b176f04b0fe4d846a71e65 Mon Sep 17 00:00:00 2001 From: Antoine Roy-Gobeil Date: Thu, 14 Feb 2019 15:55:26 -0500 Subject: [PATCH 39/39] test switching to circular Sankey on Plotly.react --- test/jasmine/tests/sankey_test.js | 41 +++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/test/jasmine/tests/sankey_test.js b/test/jasmine/tests/sankey_test.js index e74723170f4..d2a7391d8ed 100644 --- a/test/jasmine/tests/sankey_test.js +++ b/test/jasmine/tests/sankey_test.js @@ -360,6 +360,47 @@ describe('sankey tests', function() { done(); }); }); + + it('switch from normal to circular Sankey on react', function(done) { + var gd = createGraphDiv(); + var mockCopy = Lib.extendDeep({}, mock); + var mockCircularCopy = Lib.extendDeep({}, mockCircular); + + Plotly.plot(gd, mockCopy) + .then(function() { + expect(gd.calcdata[0][0].circular).toBe(false); + return Plotly.react(gd, mockCircularCopy); + }) + .then(function() { + expect(gd.calcdata[0][0].circular).toBe(true); + done(); + }); + }); + + it('switch from circular to normal Sankey on react', function(done) { + var gd = createGraphDiv(); + var mockCircularCopy = Lib.extendDeep({}, mockCircular); + + Plotly.plot(gd, mockCircularCopy) + .then(function() { + expect(gd.calcdata[0][0].circular).toBe(true); + + // Remove circular links + var source = mockCircularCopy.data[0].link.source; + source.splice(6, 1); + source.splice(4, 1); + + var target = mockCircularCopy.data[0].link.target; + target.splice(6, 1); + target.splice(4, 1); + + return Plotly.react(gd, mockCircularCopy); + }) + .then(function() { + expect(gd.calcdata[0][0].circular).toBe(false); + done(); + }); + }); }); describe('Test hover/click interactions:', function() {