occam-directed-graphs 3.0.34 → 3.0.36
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/example.js +378 -867
- package/lib/cycle.js +5 -5
- package/lib/directedAcyclicGraph.js +364 -0
- package/lib/directedGraph.js +12 -38
- package/lib/edge.js +86 -4
- package/lib/example.js +1 -1
- package/lib/index.js +4 -4
- package/lib/partialCycle.js +5 -5
- package/lib/utilities/edge.js +1 -15
- package/lib/utilities/vertex.js +14 -20
- package/lib/vertex.js +405 -0
- package/package.json +2 -4
- package/src/directedAcyclicGraph.js +422 -0
- package/src/directedGraph.js +3 -36
- package/src/edge.js +51 -2
- package/src/utilities/edge.js +0 -21
- package/src/utilities/vertex.js +13 -28
- package/src/vertex.js +359 -0
package/lib/directedGraph.js
CHANGED
|
@@ -8,15 +8,14 @@ Object.defineProperty(exports, "default", {
|
|
|
8
8
|
return DirectedGraph;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
var _occamKahn = require("occam-kahn");
|
|
12
11
|
var _necessary = require("necessary");
|
|
13
|
-
var
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var
|
|
12
|
+
var _edge = /*#__PURE__*/ _interop_require_default(require("./edge"));
|
|
13
|
+
var _cycle = /*#__PURE__*/ _interop_require_default(require("./cycle"));
|
|
14
|
+
var _partialCycle = /*#__PURE__*/ _interop_require_default(require("./partialCycle"));
|
|
15
|
+
var _directedAcyclicGraph = /*#__PURE__*/ _interop_require_default(require("./directedAcyclicGraph"));
|
|
17
16
|
var _vertex = require("./utilities/vertex");
|
|
18
17
|
var _edge1 = require("./utilities/edge");
|
|
19
|
-
function
|
|
18
|
+
function _class_call_check(instance, Constructor) {
|
|
20
19
|
if (!(instance instanceof Constructor)) {
|
|
21
20
|
throw new TypeError("Cannot call a class as a function");
|
|
22
21
|
}
|
|
@@ -30,12 +29,12 @@ function _defineProperties(target, props) {
|
|
|
30
29
|
Object.defineProperty(target, descriptor.key, descriptor);
|
|
31
30
|
}
|
|
32
31
|
}
|
|
33
|
-
function
|
|
32
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
34
33
|
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
35
34
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
36
35
|
return Constructor;
|
|
37
36
|
}
|
|
38
|
-
function
|
|
37
|
+
function _interop_require_default(obj) {
|
|
39
38
|
return obj && obj.__esModule ? obj : {
|
|
40
39
|
default: obj
|
|
41
40
|
};
|
|
@@ -43,11 +42,11 @@ function _interopRequireDefault(obj) {
|
|
|
43
42
|
var first = _necessary.arrayUtilities.first, filter = _necessary.arrayUtilities.filter;
|
|
44
43
|
var DirectedGraph = /*#__PURE__*/ function() {
|
|
45
44
|
function DirectedGraph(cyclicEdges, directedAcyclicGraph) {
|
|
46
|
-
|
|
45
|
+
_class_call_check(this, DirectedGraph);
|
|
47
46
|
this.cyclicEdges = cyclicEdges;
|
|
48
47
|
this.directedAcyclicGraph = directedAcyclicGraph;
|
|
49
48
|
}
|
|
50
|
-
|
|
49
|
+
_create_class(DirectedGraph, [
|
|
51
50
|
{
|
|
52
51
|
key: "getCyclicEdges",
|
|
53
52
|
value: function getCyclicEdges() {
|
|
@@ -319,7 +318,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
|
|
|
319
318
|
{
|
|
320
319
|
key: "removeAllEdgesAndVertices",
|
|
321
320
|
value: function removeAllEdgesAndVertices() {
|
|
322
|
-
this.directedAcyclicGraph =
|
|
321
|
+
this.directedAcyclicGraph = _directedAcyclicGraph.default.fromNothing();
|
|
323
322
|
this.cyclicEdges = [];
|
|
324
323
|
}
|
|
325
324
|
},
|
|
@@ -345,32 +344,7 @@ var DirectedGraph = /*#__PURE__*/ function() {
|
|
|
345
344
|
{
|
|
346
345
|
key: "fromNothing",
|
|
347
346
|
value: function fromNothing() {
|
|
348
|
-
var cyclicEdges = [], directedAcyclicGraph =
|
|
349
|
-
return directedGraph;
|
|
350
|
-
}
|
|
351
|
-
},
|
|
352
|
-
{
|
|
353
|
-
key: "fromVertexLiterals",
|
|
354
|
-
value: function fromVertexLiterals(vertexLiterals) {
|
|
355
|
-
var vertexNames = (0, _vertex.vertexNamesFromVertexLiterals)(vertexLiterals), edges = (0, _edge1.edgesFromVertexLiterals)(vertexLiterals), directedGraph = DirectedGraph.fromVertexNamesAndEdges(vertexNames, edges);
|
|
356
|
-
return directedGraph;
|
|
357
|
-
}
|
|
358
|
-
},
|
|
359
|
-
{
|
|
360
|
-
key: "fromVertexNamesAndEdges",
|
|
361
|
-
value: function fromVertexNamesAndEdges(vertexNames, edges) {
|
|
362
|
-
var directedGraph;
|
|
363
|
-
var graph = _occamKahn.Graph.fromVertexNamesAndEdges(vertexNames, edges), cyclesPresent = graph.areCyclesPresent();
|
|
364
|
-
if (cyclesPresent) {
|
|
365
|
-
var cyclicEdges = [], directedAcyclicGraph = _occamPearceKelly.DirectedAcyclicGraph.fromVertexNames(vertexNames);
|
|
366
|
-
directedGraph = new DirectedGraph(cyclicEdges, directedAcyclicGraph);
|
|
367
|
-
edges.forEach(function(edge) {
|
|
368
|
-
return directedGraph.addEdge(edge);
|
|
369
|
-
});
|
|
370
|
-
} else {
|
|
371
|
-
var orderedVertices = graph.getOrderedVertices(), cyclicEdges1 = [], directedAcyclicGraph1 = _occamPearceKelly.DirectedAcyclicGraph.fromOrderedVertices(orderedVertices);
|
|
372
|
-
directedGraph = new DirectedGraph(cyclicEdges1, directedAcyclicGraph1);
|
|
373
|
-
}
|
|
347
|
+
var cyclicEdges = [], directedAcyclicGraph = _directedAcyclicGraph.default.fromNothing(), directedGraph = new DirectedGraph(cyclicEdges, directedAcyclicGraph);
|
|
374
348
|
return directedGraph;
|
|
375
349
|
}
|
|
376
350
|
}
|
|
@@ -378,4 +352,4 @@ var DirectedGraph = /*#__PURE__*/ function() {
|
|
|
378
352
|
return DirectedGraph;
|
|
379
353
|
}();
|
|
380
354
|
|
|
381
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RlZEdyYXBoLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBHcmFwaCB9IGZyb20gXCJvY2NhbS1rYWhuXCI7XG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcbmltcG9ydCB7IERpcmVjdGVkQWN5Y2xpY0dyYXBoIH0gZnJvbSBcIm9jY2FtLXBlYXJjZS1rZWxseVwiO1xuXG5pbXBvcnQgRWRnZSBmcm9tIFwiLi9lZGdlXCI7XG5pbXBvcnQgQ3ljbGUgZnJvbSBcIi4vY3ljbGVcIjtcbmltcG9ydCBQYXJ0aWFsQ3ljbGUgZnJvbSBcIi4vcGFydGlhbEN5Y2xlXCI7XG5cbmltcG9ydCB7IHZlcnRleE5hbWVzRnJvbVZlcnRleExpdGVyYWxzLCBmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2ggfSBmcm9tIFwiLi91dGlsaXRpZXMvdmVydGV4XCI7XG5pbXBvcnQgeyBlZGdlc0Zyb21WZXJ0ZXhMaXRlcmFscywgY2hlY2tFZGdlc0luY2x1ZGVzRWRnZSwgcmVtb3ZlRWRnZUZyb21FZGdlcywgZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUsIGVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIH0gZnJvbSBcIi4vdXRpbGl0aWVzL2VkZ2VcIjtcblxuY29uc3QgeyBmaXJzdCwgZmlsdGVyIH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGlyZWN0ZWRHcmFwaCB7XG4gIGNvbnN0cnVjdG9yKGN5Y2xpY0VkZ2VzLCBkaXJlY3RlZEFjeWNsaWNHcmFwaCkge1xuICAgIHRoaXMuY3ljbGljRWRnZXMgPSBjeWNsaWNFZGdlcztcblxuICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBkaXJlY3RlZEFjeWNsaWNHcmFwaDtcbiAgfVxuXG4gIGdldEN5Y2xpY0VkZ2VzKCkge1xuICAgIHJldHVybiB0aGlzLmN5Y2xpY0VkZ2VzO1xuICB9XG5cbiAgZ2V0RGlyZWN0ZWRBY3ljbGljR3JhcGgoKSB7XG4gICAgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGg7XG4gIH1cblxuICBnZXRWZXJ0ZXhOYW1lcygpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0VmVydGV4TmFtZXMoKTsgfVxuXG4gIGdldE9yZGVyZWRWZXJ0ZXhOYW1lcygpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0T3JkZXJlZFZlcnRleE5hbWVzKCk7IH1cblxuICBhZGRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmFkZFZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTsgfVxuXG4gIGlzRWRnZVByZXNlbnRCeVZlcnRleE5hbWVzKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNFZGdlUHJlc2VudEJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSk7IH1cblxuICBpc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5pc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7IH1cblxuICBnZXRTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpOyB9XG5cbiAgZ2V0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7IH1cblxuICBnZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUsIGluY2x1ZGVDeWNsaWNFZGdlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChpbmNsdWRlQ3ljbGljRWRnZXMpIHtcbiAgICAgIHRoaXMuY3ljbGljRWRnZXMuZm9yRWFjaCgoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuXG4gICAgICAgIGlmIChjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9PT0gdmVydGV4TmFtZSkge1xuICAgICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgICAgaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7ICAvLy9cblxuICAgICAgICAgIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMucHVzaChpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUsIGluY2x1ZGVDeWNsaWNFZGdlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpO1xuXG4gICAgaWYgKGluY2x1ZGVDeWNsaWNFZGdlcykge1xuICAgICAgdGhpcy5jeWNsaWNFZGdlcy5mb3JFYWNoKChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCk7XG5cbiAgICAgICAgaWYgKGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID09PSB2ZXJ0ZXhOYW1lKSB7XG4gICAgICAgICAgY29uc3QgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgICAgICBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7ICAvLy9cblxuICAgICAgICAgIGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzLnB1c2goaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcztcbiAgfVxuXG4gIGFyZUN5Y2xlc1ByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSkge1xuICAgIGxldCBjeWNsZXNQcmVzZW50ID0gZmFsc2U7XG5cbiAgICBjb25zdCB2ZXJ0ZXhQcmVzZW50ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5pc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICBpZiAodmVydGV4UHJlc2VudCkge1xuICAgICAgY29uc3QgZmlyc3RDeWNsZSA9IHRoaXMuZ2V0Rmlyc3RDeWNsZUJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgICAgY3ljbGVzUHJlc2VudCA9IChmaXJzdEN5Y2xlICE9PSBudWxsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY3ljbGVzUHJlc2VudDtcbiAgfVxuXG4gIGdldEZpcnN0Q3ljbGVCeVZlcnRleE5hbWUodmVydGV4TmFtZSkge1xuICAgIGxldCBmaXJzdEN5Y2xlID0gbnVsbDtcbiAgICBcbiAgICBjb25zdCB2ZXJ0ZXggPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSxcbiAgICAgICAgICBjeWNsaWNFZGdlcyA9IHRoaXMuY3ljbGljRWRnZXMuc2xpY2UoKSwgLy8vXG4gICAgICAgICAgcGFydGlhbEN5Y2xlcyA9IFtdLFxuICAgICAgICAgIGN5Y2xlcyA9IFtdO1xuXG4gICAgZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKHZlcnRleCwgKHZpc2l0ZWRWZXJ0ZXgsIGdldFByZWRlY2Vzc29yVmVydGljZXMpID0+IHtcbiAgICAgIGNvbnN0IHZpc2l0ZWRWZXJ0ZXhOYW1lID0gdmlzaXRlZFZlcnRleC5nZXROYW1lKCksXG4gICAgICAgICAgICBzb3VyY2VWZXJ0ZXhOYW1lID0gdmlzaXRlZFZlcnRleE5hbWU7IC8vL1xuXG4gICAgICBmaWx0ZXIoY3ljbGljRWRnZXMsIChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSBjeWNsaWNFZGdlLm1hdGNoU291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lKTtcblxuICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgIGNvbnN0IHByZWRlY2Vzc29yVmVydGljZXMgPSBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKCksXG4gICAgICAgICAgICAgICAgcGFydGlhbEN5Y2xlID0gIFBhcnRpYWxDeWNsZS5mcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMoY3ljbGljRWRnZSwgcHJlZGVjZXNzb3JWZXJ0aWNlcyk7XG4gICAgICAgICAgXG4gICAgICAgICAgcGFydGlhbEN5Y2xlcy5wdXNoKHBhcnRpYWxDeWNsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBjeWNsaWNFZGdlc0xlbmd0aCA9IGN5Y2xpY0VkZ2VzLmxlbmd0aCxcbiAgICAgICAgICAgIHRlcm1pbmF0ZSA9IChjeWNsaWNFZGdlc0xlbmd0aCA9PT0gMCk7XG5cbiAgICAgIHJldHVybiB0ZXJtaW5hdGU7XG4gICAgfSk7XG5cbiAgICBwYXJ0aWFsQ3ljbGVzLnNvbWUoKHBhcnRpYWxDeWNsZSkgPT4ge1xuICAgICAgY29uc3QgdGFyZ2V0VmVydGV4TmFtZSA9IHBhcnRpYWxDeWNsZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICB0YXJnZXRWZXJ0ZXggPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFZlcnRleEJ5VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgICAgZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoKHRhcmdldFZlcnRleCwgKHZpc2l0ZWRWZXJ0ZXgsIGdldFByZWRlY2Vzc29yVmVydGljZXMpID0+IHtcbiAgICAgICAgY29uc3QgdmlzaXRlZFZlcnRleE5hbWUgPSB2aXNpdGVkVmVydGV4LmdldE5hbWUoKTtcblxuICAgICAgICBpZiAodmlzaXRlZFZlcnRleE5hbWUgPT09IHZlcnRleE5hbWUpIHtcbiAgICAgICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzID0gZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3NvclZlcnRpY2VzID0gcHJlZGVjZXNzb3JWZXJ0aWNlcywgIC8vL1xuICAgICAgICAgICAgICAgIGN5Y2xlID0gQ3ljbGUuZnJvbVZlcnRleE5hbWVQYXJ0aWFsQ3ljbGVBbmRTdWNjZXNzb3JWZXJ0aWNlcyh2ZXJ0ZXhOYW1lLCBwYXJ0aWFsQ3ljbGUsIHN1Y2Nlc3NvclZlcnRpY2VzKTtcblxuICAgICAgICAgIGN5Y2xlcy5wdXNoKGN5Y2xlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGN5Y2xlc0xlbmd0aCA9IGN5Y2xlcy5sZW5ndGgsXG4gICAgICAgICAgICAgIHRlcm1pbmF0ZSA9IChjeWNsZXNMZW5ndGggPiAwKTtcblxuICAgICAgICByZXR1cm4gdGVybWluYXRlO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBjeWNsZXNMZW5ndGggPSBjeWNsZXMubGVuZ3RoO1xuICAgIFxuICAgIGlmIChjeWNsZXNMZW5ndGggPiAwKSB7XG4gICAgICBmaXJzdEN5Y2xlID0gZmlyc3QoY3ljbGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3RDeWNsZTtcbiAgfVxuXG4gIGdldEZpcnN0Q3ljbGUoKSB7XG4gICAgY29uc3QgZmlyc3RDeWNsaWNFZGdlID0gZmlyc3QodGhpcy5jeWNsaWNFZGdlcyksXG4gICAgICAgICAgY3ljbGljRWRnZSA9IGZpcnN0Q3ljbGljRWRnZSwgLy8vXG4gICAgICAgICAgc291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgIHZlcnRleE5hbWUgPSBzb3VyY2VWZXJ0ZXhOYW1lLCAgLy8vXG4gICAgICAgICAgZmlyc3RDeWNsZSA9IHRoaXMuZ2V0Rmlyc3RDeWNsZUJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIHJldHVybiBmaXJzdEN5Y2xlO1xuICB9XG5cbiAgYXJlQ3ljbGVzUHJlc2VudCgpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlc0xlbmd0aCA9IHRoaXMuY3ljbGljRWRnZXMubGVuZ3RoLFxuICAgICAgICAgIGN5Y2xlc1ByZXNlbnQgPSAoY3ljbGljRWRnZXNMZW5ndGggPiAwKTtcblxuICAgIHJldHVybiBjeWNsZXNQcmVzZW50O1xuICB9XG5cbiAgYWRkVmVydGljZXNCeVZlcnRleE5hbWVzKHZlcnRleE5hbWVzKSB7XG4gICAgdmVydGV4TmFtZXMuZm9yRWFjaCgodmVydGV4TmFtZSkgPT4gdGhpcy5hZGRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSkpO1xuICB9XG5cbiAgcmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIHRoaXMuZmlsdGVyQ3ljbGljRWRnZXMoKTtcbiAgfVxuXG4gIHJlbW92ZVZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyh2ZXJ0ZXhOYW1lcykge1xuICAgIHZlcnRleE5hbWVzLmZvckVhY2goKHZlcnRleE5hbWUpID0+IHRoaXMucmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpKTtcbiAgfVxuXG4gIGFkZEVkZ2UoZWRnZSkge1xuICAgIGNvbnN0IHN1Y2Nlc3MgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmFkZEVkZ2UoZWRnZSk7XG4gICAgXG4gICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlc0luY2x1ZGVzRWRnZSA9IGNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UoZWRnZSwgdGhpcy5jeWNsaWNFZGdlcyk7XG5cbiAgICAgIGlmICghY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2UpIHtcbiAgICAgICAgY29uc3QgY3ljbGljRWRnZSA9IGVkZ2U7ICAvLy9cblxuICAgICAgICB0aGlzLmN5Y2xpY0VkZ2VzLnB1c2goY3ljbGljRWRnZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIFxuICBhZGRFZGdlcyhlZGdlcykge1xuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHRoaXMuYWRkRWRnZShlZGdlKSk7XG4gIH1cblxuICByZW1vdmVFZGdlKGVkZ2UsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzSW5jbHVkZXNFZGdlID0gY2hlY2tFZGdlc0luY2x1ZGVzRWRnZShlZGdlLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlUHJlc2VudCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNFZGdlUHJlc2VudChlZGdlKSxcbiAgICAgICAgICBlZGdlQ3ljbGljID0gY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2U7IC8vL1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGVkZ2VDeWNsaWMpIHtcbiAgICAgIGNvbnN0IGN5Y2xpY0VkZ2UgPSBlZGdlOyAgLy8vXG5cbiAgICAgIHJlbW92ZUVkZ2VGcm9tRWRnZXMoY3ljbGljRWRnZSwgdGhpcy5jeWNsaWNFZGdlcyk7XG4gICAgfSBlbHNlIGlmIChlZGdlUHJlc2VudCkge1xuICAgICAgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5yZW1vdmVFZGdlKGVkZ2UpO1xuXG4gICAgICBpZiAocmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcykge1xuICAgICAgICBjb25zdCBzb3VyY2VWZXJ0ZXhOYW1lID0gZWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleE5hbWUgPSBlZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgICAgc291cmNlVmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0VmVydGV4QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpLFxuICAgICAgICAgICAgICBzb3VyY2VWZXJ0ZXhTdHJhbmRlZCA9IHNvdXJjZVZlcnRleC5pc1N0cmFuZGVkKCksXG4gICAgICAgICAgICAgIHRhcmdldFZlcnRleFN0cmFuZGVkID0gdGFyZ2V0VmVydGV4LmlzU3RyYW5kZWQoKTtcblxuICAgICAgICBpZiAoc291cmNlVmVydGV4U3RyYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0YXJnZXRWZXJ0ZXhTdHJhbmRlZCkge1xuICAgICAgICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGgucmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJDeWNsaWNFZGdlcygpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGVkZ2VzLmZvckVhY2goKGVkZ2UpID0+IHRoaXMucmVtb3ZlRWRnZShlZGdlLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKSk7XG4gIH1cblxuICBhZGRFZGdlQnlWZXJ0ZXhOYW1lcyhzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgY29uc3QgZWRnZSA9IEVkZ2UuZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5hZGRFZGdlKGVkZ2UpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZUJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgZWRnZSA9IEVkZ2UuZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5yZW1vdmVFZGdlKGVkZ2UsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXMgPSBlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0RWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGN5Y2xpY0VkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyA9IGZhbHNlKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXMgPSBlZGdlc0J5U291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCB0aGlzLmN5Y2xpY0VkZ2VzKSxcbiAgICAgICAgICBlZGdlcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0RWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGN5Y2xpY0VkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZXMoZWRnZXMsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMpO1xuICB9XG5cbiAgcmVtb3ZlQWxsRWRnZXNBbmRWZXJ0aWNlcygpIHtcbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoID0gRGlyZWN0ZWRBY3ljbGljR3JhcGguZnJvbU5vdGhpbmcoKTtcblxuICAgIHRoaXMuY3ljbGljRWRnZXMgPSBbXTtcbiAgfVxuXG4gIGZpbHRlckN5Y2xpY0VkZ2VzKCkge1xuICAgIGZpbHRlcih0aGlzLmN5Y2xpY0VkZ2VzLCAoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgY29uc3Qgc291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgc291cmNlVmVydGV4UHJlc2VudCA9IHRoaXMuaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4UHJlc2VudCA9IHRoaXMuaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgICBpZiAoc291cmNlVmVydGV4UHJlc2VudCAmJiB0YXJnZXRWZXJ0ZXhQcmVzZW50KSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgZmlsdGVyKHRoaXMuY3ljbGljRWRnZXMsIChjeWNsaWNFZGdlKSA9PiB7XG4gICAgICBjb25zdCBlZGdlID0gY3ljbGljRWRnZSwgIC8vL1xuICAgICAgICAgICAgc3VjY2VzcyA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguYWRkRWRnZShlZGdlKTtcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgc3RhdGljIGZyb21Ob3RoaW5nKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzID0gW10sXG4gICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tTm90aGluZygpLFxuICAgICAgICAgIGRpcmVjdGVkR3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaChjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpO1xuICAgIFxuICAgIHJldHVybiBkaXJlY3RlZEdyYXBoOyAgICBcbiAgfVxuXG4gIHN0YXRpYyBmcm9tVmVydGV4TGl0ZXJhbHModmVydGV4TGl0ZXJhbHMpIHtcbiAgICBjb25zdCB2ZXJ0ZXhOYW1lcyA9IHZlcnRleE5hbWVzRnJvbVZlcnRleExpdGVyYWxzKHZlcnRleExpdGVyYWxzKSxcbiAgICAgICAgICBlZGdlcyA9IGVkZ2VzRnJvbVZlcnRleExpdGVyYWxzKHZlcnRleExpdGVyYWxzKSxcbiAgICAgICAgICBkaXJlY3RlZEdyYXBoID0gRGlyZWN0ZWRHcmFwaC5mcm9tVmVydGV4TmFtZXNBbmRFZGdlcyh2ZXJ0ZXhOYW1lcywgZWRnZXMpO1xuXG4gICAgcmV0dXJuIGRpcmVjdGVkR3JhcGg7XG4gIH1cblxuICBzdGF0aWMgZnJvbVZlcnRleE5hbWVzQW5kRWRnZXModmVydGV4TmFtZXMsIGVkZ2VzKSB7XG4gICAgbGV0IGRpcmVjdGVkR3JhcGg7XG5cbiAgICBjb25zdCBncmFwaCA9IEdyYXBoLmZyb21WZXJ0ZXhOYW1lc0FuZEVkZ2VzKHZlcnRleE5hbWVzLCBlZGdlcyksXG4gICAgICAgICAgY3ljbGVzUHJlc2VudCA9IGdyYXBoLmFyZUN5Y2xlc1ByZXNlbnQoKTtcblxuICAgIGlmIChjeWNsZXNQcmVzZW50KSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tVmVydGV4TmFtZXModmVydGV4TmFtZXMpO1xuXG4gICAgICBkaXJlY3RlZEdyYXBoID0gbmV3IERpcmVjdGVkR3JhcGgoY3ljbGljRWRnZXMsIGRpcmVjdGVkQWN5Y2xpY0dyYXBoKTtcblxuICAgICAgZWRnZXMuZm9yRWFjaCgoZWRnZSkgPT4gZGlyZWN0ZWRHcmFwaC5hZGRFZGdlKGVkZ2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgb3JkZXJlZFZlcnRpY2VzID0gZ3JhcGguZ2V0T3JkZXJlZFZlcnRpY2VzKCksXG4gICAgICAgICAgICBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgICAgZGlyZWN0ZWRBY3ljbGljR3JhcGggPSBEaXJlY3RlZEFjeWNsaWNHcmFwaC5mcm9tT3JkZXJlZFZlcnRpY2VzKG9yZGVyZWRWZXJ0aWNlcyk7XG5cbiAgICAgIGRpcmVjdGVkR3JhcGggPSBuZXcgRGlyZWN0ZWRHcmFwaChjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpO1xuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3RlZEdyYXBoO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkRpcmVjdGVkR3JhcGgiLCJmaXJzdCIsImFycmF5VXRpbGl0aWVzIiwiZmlsdGVyIiwiY3ljbGljRWRnZXMiLCJkaXJlY3RlZEFjeWNsaWNHcmFwaCIsImdldEN5Y2xpY0VkZ2VzIiwiZ2V0RGlyZWN0ZWRBY3ljbGljR3JhcGgiLCJnZXRWZXJ0ZXhOYW1lcyIsImdldE9yZGVyZWRWZXJ0ZXhOYW1lcyIsImFkZFZlcnRleEJ5VmVydGV4TmFtZSIsInZlcnRleE5hbWUiLCJpc0VkZ2VQcmVzZW50QnlWZXJ0ZXhOYW1lcyIsInNvdXJjZVZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lIiwiZ2V0U3VjY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUiLCJnZXRQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lIiwiZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImluY2x1ZGVDeWNsaWNFZGdlcyIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJmb3JFYWNoIiwiY3ljbGljRWRnZSIsImN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lIiwiZ2V0VGFyZ2V0VmVydGV4TmFtZSIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0U291cmNlVmVydGV4TmFtZSIsImltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZSIsInB1c2giLCJnZXRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzIiwiaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSIsImFyZUN5Y2xlc1ByZXNlbnRCeVZlcnRleE5hbWUiLCJjeWNsZXNQcmVzZW50IiwidmVydGV4UHJlc2VudCIsImZpcnN0Q3ljbGUiLCJnZXRGaXJzdEN5Y2xlQnlWZXJ0ZXhOYW1lIiwidmVydGV4IiwiZ2V0VmVydGV4QnlWZXJ0ZXhOYW1lIiwic2xpY2UiLCJwYXJ0aWFsQ3ljbGVzIiwiY3ljbGVzIiwiZm9yd2FyZHNEZXB0aEZpcnN0U2VhcmNoIiwidmlzaXRlZFZlcnRleCIsImdldFByZWRlY2Vzc29yVmVydGljZXMiLCJ2aXNpdGVkVmVydGV4TmFtZSIsImdldE5hbWUiLCJtYXRjaGVzIiwibWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lIiwicHJlZGVjZXNzb3JWZXJ0aWNlcyIsInBhcnRpYWxDeWNsZSIsIlBhcnRpYWxDeWNsZSIsImZyb21DeWNsaWNFZGdlQW5kUHJlZGVjZXNzb3JWZXJ0aWNlcyIsImN5Y2xpY0VkZ2VzTGVuZ3RoIiwibGVuZ3RoIiwidGVybWluYXRlIiwic29tZSIsInRhcmdldFZlcnRleCIsInN1Y2Nlc3NvclZlcnRpY2VzIiwiY3ljbGUiLCJDeWNsZSIsImZyb21WZXJ0ZXhOYW1lUGFydGlhbEN5Y2xlQW5kU3VjY2Vzc29yVmVydGljZXMiLCJjeWNsZXNMZW5ndGgiLCJnZXRGaXJzdEN5Y2xlIiwiZmlyc3RDeWNsaWNFZGdlIiwiYXJlQ3ljbGVzUHJlc2VudCIsImFkZFZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyIsInZlcnRleE5hbWVzIiwicmVtb3ZlVmVydGV4QnlWZXJ0ZXhOYW1lIiwiZmlsdGVyQ3ljbGljRWRnZXMiLCJyZW1vdmVWZXJ0aWNlc0J5VmVydGV4TmFtZXMiLCJhZGRFZGdlIiwiZWRnZSIsInN1Y2Nlc3MiLCJjeWNsaWNFZGdlc0luY2x1ZGVzRWRnZSIsImNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UiLCJhZGRFZGdlcyIsImVkZ2VzIiwicmVtb3ZlRWRnZSIsInJlbW92ZVN0cmFuZGVkVmVydGljZXMiLCJlZGdlUHJlc2VudCIsImlzRWRnZVByZXNlbnQiLCJlZGdlQ3ljbGljIiwicmVtb3ZlRWRnZUZyb21FZGdlcyIsInNvdXJjZVZlcnRleCIsInNvdXJjZVZlcnRleFN0cmFuZGVkIiwiaXNTdHJhbmRlZCIsInRhcmdldFZlcnRleFN0cmFuZGVkIiwicmVtb3ZlRWRnZXMiLCJhZGRFZGdlQnlWZXJ0ZXhOYW1lcyIsIkVkZ2UiLCJmcm9tU291cmNlVmVydGV4TmFtZUFuZFRhcmdldFZlcnRleE5hbWUiLCJyZW1vdmVFZGdlQnlWZXJ0ZXhOYW1lcyIsInJlbW92ZUVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIiwiZWRnZXNCeVRhcmdldFZlcnRleE5hbWUiLCJnZXRFZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSIsInJlbW92ZUVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lIiwiZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUiLCJnZXRFZGdlc0J5U291cmNlVmVydGV4TmFtZSIsInJlbW92ZUFsbEVkZ2VzQW5kVmVydGljZXMiLCJEaXJlY3RlZEFjeWNsaWNHcmFwaCIsImZyb21Ob3RoaW5nIiwic291cmNlVmVydGV4UHJlc2VudCIsInRhcmdldFZlcnRleFByZXNlbnQiLCJkaXJlY3RlZEdyYXBoIiwiZnJvbVZlcnRleExpdGVyYWxzIiwidmVydGV4TGl0ZXJhbHMiLCJ2ZXJ0ZXhOYW1lc0Zyb21WZXJ0ZXhMaXRlcmFscyIsImVkZ2VzRnJvbVZlcnRleExpdGVyYWxzIiwiZnJvbVZlcnRleE5hbWVzQW5kRWRnZXMiLCJncmFwaCIsIkdyYXBoIiwiZnJvbVZlcnRleE5hbWVzIiwib3JkZXJlZFZlcnRpY2VzIiwiZ2V0T3JkZXJlZFZlcnRpY2VzIiwiZnJvbU9yZGVyZWRWZXJ0aWNlcyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFlcUJBOzs7eUJBYkM7eUJBQ1M7Z0NBQ007eURBRXBCOzBEQUNDO2lFQUNPO3NCQUUrQztxQkFDK0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdkksSUFBUUMsUUFBa0JDLHlCQUFjLENBQWhDRCxPQUFPRSxTQUFXRCx5QkFBYyxDQUF6QkM7QUFFQSxJQUFBLEFBQU1ILDhCQUFOO2FBQU1BLGNBQ1BJLFdBQVcsRUFBRUMsb0JBQW9COzhCQUQxQkw7UUFFakIsSUFBSSxDQUFDSSxXQUFXLEdBQUdBO1FBRW5CLElBQUksQ0FBQ0Msb0JBQW9CLEdBQUdBOztpQkFKWEw7O1lBT25CTSxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCO2dCQUNmLE9BQU8sSUFBSSxDQUFDRixXQUFXO1lBQ3pCOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLDBCQUEwQjtnQkFDeEIsT0FBTyxJQUFJLENBQUNGLG9CQUFvQjtZQUNsQzs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQSxpQkFBaUI7Z0JBQUUsT0FBTyxJQUFJLENBQUNILG9CQUFvQixDQUFDRyxjQUFjO1lBQUk7OztZQUV0RUMsS0FBQUE7bUJBQUFBLFNBQUFBLHdCQUF3QjtnQkFBRSxPQUFPLElBQUksQ0FBQ0osb0JBQW9CLENBQUNJLHFCQUFxQjtZQUFJOzs7WUFFcEZDLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JDLFVBQVUsRUFBRTtnQkFBRSxJQUFJLENBQUNOLG9CQUFvQixDQUFDSyxxQkFBcUIsQ0FBQ0M7WUFBYTs7O1lBRWpHQyxLQUFBQTttQkFBQUEsU0FBQUEsMkJBQTJCQyxnQkFBZ0IsRUFBRUMsZ0JBQWdCLEVBQUU7Z0JBQUUsT0FBTyxJQUFJLENBQUNULG9CQUFvQixDQUFDTywwQkFBMEIsQ0FBQ0Msa0JBQWtCQztZQUFtQjs7O1lBRWxLQyxLQUFBQTttQkFBQUEsU0FBQUEs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
|
|
355
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9kaXJlY3RlZEdyYXBoLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IEVkZ2UgZnJvbSBcIi4vZWRnZVwiO1xuaW1wb3J0IEN5Y2xlIGZyb20gXCIuL2N5Y2xlXCI7XG5pbXBvcnQgUGFydGlhbEN5Y2xlIGZyb20gXCIuL3BhcnRpYWxDeWNsZVwiO1xuaW1wb3J0IERpcmVjdGVkQWN5Y2xpY0dyYXBoIGZyb20gXCIuL2RpcmVjdGVkQWN5Y2xpY0dyYXBoXCI7XG5cbmltcG9ydCB7IGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCB9IGZyb20gXCIuL3V0aWxpdGllcy92ZXJ0ZXhcIjtcbmltcG9ydCB7IGNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UsIHJlbW92ZUVkZ2VGcm9tRWRnZXMsIGVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lLCBlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSB9IGZyb20gXCIuL3V0aWxpdGllcy9lZGdlXCI7XG5cbmNvbnN0IHsgZmlyc3QsIGZpbHRlciB9ID0gYXJyYXlVdGlsaXRpZXM7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERpcmVjdGVkR3JhcGgge1xuICBjb25zdHJ1Y3RvcihjeWNsaWNFZGdlcywgZGlyZWN0ZWRBY3ljbGljR3JhcGgpIHtcbiAgICB0aGlzLmN5Y2xpY0VkZ2VzID0gY3ljbGljRWRnZXM7XG5cbiAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoID0gZGlyZWN0ZWRBY3ljbGljR3JhcGg7XG4gIH1cblxuICBnZXRDeWNsaWNFZGdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5jeWNsaWNFZGdlcztcbiAgfVxuXG4gIGdldERpcmVjdGVkQWN5Y2xpY0dyYXBoKCkge1xuICAgIHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoO1xuICB9XG5cbiAgZ2V0VmVydGV4TmFtZXMoKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFZlcnRleE5hbWVzKCk7IH1cblxuICBnZXRPcmRlcmVkVmVydGV4TmFtZXMoKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldE9yZGVyZWRWZXJ0ZXhOYW1lcygpOyB9XG5cbiAgYWRkVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHsgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5hZGRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7IH1cblxuICBpc0VkZ2VQcmVzZW50QnlWZXJ0ZXhOYW1lcyhzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKSB7IHJldHVybiB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmlzRWRnZVByZXNlbnRCeVZlcnRleE5hbWVzKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpOyB9XG5cbiAgaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHsgcmV0dXJuIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpOyB9XG5cbiAgZ2V0U3VjY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTsgfVxuXG4gIGdldFByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSkgeyByZXR1cm4gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpOyB9XG5cbiAgZ2V0SW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lLCBpbmNsdWRlQ3ljbGljRWRnZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXMgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldEltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICBpZiAoaW5jbHVkZUN5Y2xpY0VkZ2VzKSB7XG4gICAgICB0aGlzLmN5Y2xpY0VkZ2VzLmZvckVhY2goKGN5Y2xpY0VkZ2UpID0+IHtcbiAgICAgICAgY29uc3QgY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKTtcblxuICAgICAgICBpZiAoY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUgPT09IHZlcnRleE5hbWUpIHtcbiAgICAgICAgICBjb25zdCBjeWNsaWNFZGdlU291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgICAgIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lOyAgLy8vXG5cbiAgICAgICAgICBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzLnB1c2goaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGltbWVkaWF0ZVByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cblxuICBnZXRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lLCBpbmNsdWRlQ3ljbGljRWRnZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChpbmNsdWRlQ3ljbGljRWRnZXMpIHtcbiAgICAgIHRoaXMuY3ljbGljRWRnZXMuZm9yRWFjaCgoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgICBjb25zdCBjeWNsaWNFZGdlU291cmNlVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpO1xuXG4gICAgICAgIGlmIChjeWNsaWNFZGdlU291cmNlVmVydGV4TmFtZSA9PT0gdmVydGV4TmFtZSkge1xuICAgICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lID0gY3ljbGljRWRnZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgICAgaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lOyAgLy8vXG5cbiAgICAgICAgICBpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lcy5wdXNoKGltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cblxuICBhcmVDeWNsZXNQcmVzZW50QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICBsZXQgY3ljbGVzUHJlc2VudCA9IGZhbHNlO1xuXG4gICAgY29uc3QgdmVydGV4UHJlc2VudCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguaXNWZXJ0ZXhQcmVzZW50QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpO1xuXG4gICAgaWYgKHZlcnRleFByZXNlbnQpIHtcbiAgICAgIGNvbnN0IGZpcnN0Q3ljbGUgPSB0aGlzLmdldEZpcnN0Q3ljbGVCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICAgIGN5Y2xlc1ByZXNlbnQgPSAoZmlyc3RDeWNsZSAhPT0gbnVsbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN5Y2xlc1ByZXNlbnQ7XG4gIH1cblxuICBnZXRGaXJzdEN5Y2xlQnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICBsZXQgZmlyc3RDeWNsZSA9IG51bGw7XG4gICAgXG4gICAgY29uc3QgdmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSksXG4gICAgICAgICAgY3ljbGljRWRnZXMgPSB0aGlzLmN5Y2xpY0VkZ2VzLnNsaWNlKCksIC8vL1xuICAgICAgICAgIHBhcnRpYWxDeWNsZXMgPSBbXSxcbiAgICAgICAgICBjeWNsZXMgPSBbXTtcblxuICAgIGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCh2ZXJ0ZXgsICh2aXNpdGVkVmVydGV4LCBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKSA9PiB7XG4gICAgICBjb25zdCB2aXNpdGVkVmVydGV4TmFtZSA9IHZpc2l0ZWRWZXJ0ZXguZ2V0TmFtZSgpLFxuICAgICAgICAgICAgc291cmNlVmVydGV4TmFtZSA9IHZpc2l0ZWRWZXJ0ZXhOYW1lOyAvLy9cblxuICAgICAgZmlsdGVyKGN5Y2xpY0VkZ2VzLCAoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gY3ljbGljRWRnZS5tYXRjaFNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSk7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzID0gZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpLFxuICAgICAgICAgICAgICAgIHBhcnRpYWxDeWNsZSA9ICBQYXJ0aWFsQ3ljbGUuZnJvbUN5Y2xpY0VkZ2VBbmRQcmVkZWNlc3NvclZlcnRpY2VzKGN5Y2xpY0VkZ2UsIHByZWRlY2Vzc29yVmVydGljZXMpO1xuICAgICAgICAgIFxuICAgICAgICAgIHBhcnRpYWxDeWNsZXMucHVzaChwYXJ0aWFsQ3ljbGUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgY3ljbGljRWRnZXNMZW5ndGggPSBjeWNsaWNFZGdlcy5sZW5ndGgsXG4gICAgICAgICAgICB0ZXJtaW5hdGUgPSAoY3ljbGljRWRnZXNMZW5ndGggPT09IDApO1xuXG4gICAgICByZXR1cm4gdGVybWluYXRlO1xuICAgIH0pO1xuXG4gICAgcGFydGlhbEN5Y2xlcy5zb21lKChwYXJ0aWFsQ3ljbGUpID0+IHtcbiAgICAgIGNvbnN0IHRhcmdldFZlcnRleE5hbWUgPSBwYXJ0aWFsQ3ljbGUuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgdGFyZ2V0VmVydGV4ID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5nZXRWZXJ0ZXhCeVZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSk7XG5cbiAgICAgIGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCh0YXJnZXRWZXJ0ZXgsICh2aXNpdGVkVmVydGV4LCBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKSA9PiB7XG4gICAgICAgIGNvbnN0IHZpc2l0ZWRWZXJ0ZXhOYW1lID0gdmlzaXRlZFZlcnRleC5nZXROYW1lKCk7XG5cbiAgICAgICAgaWYgKHZpc2l0ZWRWZXJ0ZXhOYW1lID09PSB2ZXJ0ZXhOYW1lKSB7XG4gICAgICAgICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0aWNlcyA9IGdldFByZWRlY2Vzc29yVmVydGljZXMoKSxcbiAgICAgICAgICAgICAgICBzdWNjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXMsICAvLy9cbiAgICAgICAgICAgICAgICBjeWNsZSA9IEN5Y2xlLmZyb21WZXJ0ZXhOYW1lUGFydGlhbEN5Y2xlQW5kU3VjY2Vzc29yVmVydGljZXModmVydGV4TmFtZSwgcGFydGlhbEN5Y2xlLCBzdWNjZXNzb3JWZXJ0aWNlcyk7XG5cbiAgICAgICAgICBjeWNsZXMucHVzaChjeWNsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjeWNsZXNMZW5ndGggPSBjeWNsZXMubGVuZ3RoLFxuICAgICAgICAgICAgICB0ZXJtaW5hdGUgPSAoY3ljbGVzTGVuZ3RoID4gMCk7XG5cbiAgICAgICAgcmV0dXJuIHRlcm1pbmF0ZTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgY29uc3QgY3ljbGVzTGVuZ3RoID0gY3ljbGVzLmxlbmd0aDtcbiAgICBcbiAgICBpZiAoY3ljbGVzTGVuZ3RoID4gMCkge1xuICAgICAgZmlyc3RDeWNsZSA9IGZpcnN0KGN5Y2xlcyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpcnN0Q3ljbGU7XG4gIH1cblxuICBnZXRGaXJzdEN5Y2xlKCkge1xuICAgIGNvbnN0IGZpcnN0Q3ljbGljRWRnZSA9IGZpcnN0KHRoaXMuY3ljbGljRWRnZXMpLFxuICAgICAgICAgIGN5Y2xpY0VkZ2UgPSBmaXJzdEN5Y2xpY0VkZ2UsIC8vL1xuICAgICAgICAgIHNvdXJjZVZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKSxcbiAgICAgICAgICB2ZXJ0ZXhOYW1lID0gc291cmNlVmVydGV4TmFtZSwgIC8vL1xuICAgICAgICAgIGZpcnN0Q3ljbGUgPSB0aGlzLmdldEZpcnN0Q3ljbGVCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICByZXR1cm4gZmlyc3RDeWNsZTtcbiAgfVxuXG4gIGFyZUN5Y2xlc1ByZXNlbnQoKSB7XG4gICAgY29uc3QgY3ljbGljRWRnZXNMZW5ndGggPSB0aGlzLmN5Y2xpY0VkZ2VzLmxlbmd0aCxcbiAgICAgICAgICBjeWNsZXNQcmVzZW50ID0gKGN5Y2xpY0VkZ2VzTGVuZ3RoID4gMCk7XG5cbiAgICByZXR1cm4gY3ljbGVzUHJlc2VudDtcbiAgfVxuXG4gIGFkZFZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyh2ZXJ0ZXhOYW1lcykge1xuICAgIHZlcnRleE5hbWVzLmZvckVhY2goKHZlcnRleE5hbWUpID0+IHRoaXMuYWRkVmVydGV4QnlWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpKTtcbiAgfVxuXG4gIHJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSB7XG4gICAgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5yZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUodmVydGV4TmFtZSk7XG5cbiAgICB0aGlzLmZpbHRlckN5Y2xpY0VkZ2VzKCk7XG4gIH1cblxuICByZW1vdmVWZXJ0aWNlc0J5VmVydGV4TmFtZXModmVydGV4TmFtZXMpIHtcbiAgICB2ZXJ0ZXhOYW1lcy5mb3JFYWNoKCh2ZXJ0ZXhOYW1lKSA9PiB0aGlzLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSh2ZXJ0ZXhOYW1lKSk7XG4gIH1cblxuICBhZGRFZGdlKGVkZ2UpIHtcbiAgICBjb25zdCBzdWNjZXNzID0gdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5hZGRFZGdlKGVkZ2UpO1xuICAgIFxuICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgY29uc3QgY3ljbGljRWRnZXNJbmNsdWRlc0VkZ2UgPSBjaGVja0VkZ2VzSW5jbHVkZXNFZGdlKGVkZ2UsIHRoaXMuY3ljbGljRWRnZXMpO1xuXG4gICAgICBpZiAoIWN5Y2xpY0VkZ2VzSW5jbHVkZXNFZGdlKSB7XG4gICAgICAgIGNvbnN0IGN5Y2xpY0VkZ2UgPSBlZGdlOyAgLy8vXG5cbiAgICAgICAgdGhpcy5jeWNsaWNFZGdlcy5wdXNoKGN5Y2xpY0VkZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBcbiAgYWRkRWRnZXMoZWRnZXMpIHtcbiAgICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB0aGlzLmFkZEVkZ2UoZWRnZSkpO1xuICB9XG5cbiAgcmVtb3ZlRWRnZShlZGdlLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzID0gZmFsc2UpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlc0luY2x1ZGVzRWRnZSA9IGNoZWNrRWRnZXNJbmNsdWRlc0VkZ2UoZWRnZSwgdGhpcy5jeWNsaWNFZGdlcyksXG4gICAgICAgICAgZWRnZVByZXNlbnQgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmlzRWRnZVByZXNlbnQoZWRnZSksXG4gICAgICAgICAgZWRnZUN5Y2xpYyA9IGN5Y2xpY0VkZ2VzSW5jbHVkZXNFZGdlOyAvLy9cblxuICAgIGlmIChmYWxzZSkge1xuICAgICAgLy8vXG4gICAgfSBlbHNlIGlmIChlZGdlQ3ljbGljKSB7XG4gICAgICBjb25zdCBjeWNsaWNFZGdlID0gZWRnZTsgIC8vL1xuXG4gICAgICByZW1vdmVFZGdlRnJvbUVkZ2VzKGN5Y2xpY0VkZ2UsIHRoaXMuY3ljbGljRWRnZXMpO1xuICAgIH0gZWxzZSBpZiAoZWRnZVByZXNlbnQpIHtcbiAgICAgIHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGgucmVtb3ZlRWRnZShlZGdlKTtcblxuICAgICAgaWYgKHJlbW92ZVN0cmFuZGVkVmVydGljZXMpIHtcbiAgICAgICAgY29uc3Qgc291cmNlVmVydGV4TmFtZSA9IGVkZ2UuZ2V0U291cmNlVmVydGV4TmFtZSgpLFxuICAgICAgICAgICAgICB0YXJnZXRWZXJ0ZXhOYW1lID0gZWRnZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgICAgIHNvdXJjZVZlcnRleCA9IHRoaXMuZGlyZWN0ZWRBY3ljbGljR3JhcGguZ2V0VmVydGV4QnlWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpLFxuICAgICAgICAgICAgICB0YXJnZXRWZXJ0ZXggPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldFZlcnRleEJ5VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKSxcbiAgICAgICAgICAgICAgc291cmNlVmVydGV4U3RyYW5kZWQgPSBzb3VyY2VWZXJ0ZXguaXNTdHJhbmRlZCgpLFxuICAgICAgICAgICAgICB0YXJnZXRWZXJ0ZXhTdHJhbmRlZCA9IHRhcmdldFZlcnRleC5pc1N0cmFuZGVkKCk7XG5cbiAgICAgICAgaWYgKHNvdXJjZVZlcnRleFN0cmFuZGVkKSB7XG4gICAgICAgICAgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaC5yZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGFyZ2V0VmVydGV4U3RyYW5kZWQpIHtcbiAgICAgICAgICB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLnJlbW92ZVZlcnRleEJ5VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsdGVyQ3ljbGljRWRnZXMoKTtcbiAgfVxuXG4gIHJlbW92ZUVkZ2VzKGVkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzID0gZmFsc2UpIHtcbiAgICBlZGdlcy5mb3JFYWNoKChlZGdlKSA9PiB0aGlzLnJlbW92ZUVkZ2UoZWRnZSwgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcykpO1xuICB9XG5cbiAgYWRkRWRnZUJ5VmVydGV4TmFtZXMoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSkge1xuICAgIGNvbnN0IGVkZ2UgPSBFZGdlLmZyb21Tb3VyY2VWZXJ0ZXhOYW1lQW5kVGFyZ2V0VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIHRoaXMuYWRkRWRnZShlZGdlKTtcbiAgfVxuXG4gIHJlbW92ZUVkZ2VCeVZlcnRleE5hbWVzKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGVkZ2UgPSBFZGdlLmZyb21Tb3VyY2VWZXJ0ZXhOYW1lQW5kVGFyZ2V0VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIHRoaXMucmVtb3ZlRWRnZShlZGdlLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcbiAgfVxuXG4gIHJlbW92ZUVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzID0gZWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgdGhpcy5jeWNsaWNFZGdlcyksXG4gICAgICAgICAgZWRnZXMgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldEVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lKHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5yZW1vdmVFZGdlcyhjeWNsaWNFZGdlcywgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGVkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcbiAgfVxuXG4gIHJlbW92ZUVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHJlbW92ZVN0cmFuZGVkVmVydGljZXMgPSBmYWxzZSkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VzID0gZWRnZXNCeVNvdXJjZVZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSwgdGhpcy5jeWNsaWNFZGdlcyksXG4gICAgICAgICAgZWRnZXMgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmdldEVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpO1xuXG4gICAgdGhpcy5yZW1vdmVFZGdlcyhjeWNsaWNFZGdlcywgcmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyk7XG5cbiAgICB0aGlzLnJlbW92ZUVkZ2VzKGVkZ2VzLCByZW1vdmVTdHJhbmRlZFZlcnRpY2VzKTtcbiAgfVxuXG4gIHJlbW92ZUFsbEVkZ2VzQW5kVmVydGljZXMoKSB7XG4gICAgdGhpcy5kaXJlY3RlZEFjeWNsaWNHcmFwaCA9IERpcmVjdGVkQWN5Y2xpY0dyYXBoLmZyb21Ob3RoaW5nKCk7XG5cbiAgICB0aGlzLmN5Y2xpY0VkZ2VzID0gW107XG4gIH1cblxuICBmaWx0ZXJDeWNsaWNFZGdlcygpIHtcbiAgICBmaWx0ZXIodGhpcy5jeWNsaWNFZGdlcywgKGN5Y2xpY0VkZ2UpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZVZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgIHRhcmdldFZlcnRleE5hbWUgPSBjeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKSxcbiAgICAgICAgICAgIHNvdXJjZVZlcnRleFByZXNlbnQgPSB0aGlzLmlzVmVydGV4UHJlc2VudEJ5VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lKSxcbiAgICAgICAgICAgIHRhcmdldFZlcnRleFByZXNlbnQgPSB0aGlzLmlzVmVydGV4UHJlc2VudEJ5VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgICAgaWYgKHNvdXJjZVZlcnRleFByZXNlbnQgJiYgdGFyZ2V0VmVydGV4UHJlc2VudCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGZpbHRlcih0aGlzLmN5Y2xpY0VkZ2VzLCAoY3ljbGljRWRnZSkgPT4ge1xuICAgICAgY29uc3QgZWRnZSA9IGN5Y2xpY0VkZ2UsICAvLy9cbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0aGlzLmRpcmVjdGVkQWN5Y2xpY0dyYXBoLmFkZEVkZ2UoZWRnZSk7XG5cbiAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHN0YXRpYyBmcm9tTm90aGluZygpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlcyA9IFtdLFxuICAgICAgICAgIGRpcmVjdGVkQWN5Y2xpY0dyYXBoID0gRGlyZWN0ZWRBY3ljbGljR3JhcGguZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgICBkaXJlY3RlZEdyYXBoID0gbmV3IERpcmVjdGVkR3JhcGgoY3ljbGljRWRnZXMsIGRpcmVjdGVkQWN5Y2xpY0dyYXBoKTtcbiAgICBcbiAgICByZXR1cm4gZGlyZWN0ZWRHcmFwaDsgICAgXG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiRGlyZWN0ZWRHcmFwaCIsImZpcnN0IiwiYXJyYXlVdGlsaXRpZXMiLCJmaWx0ZXIiLCJjeWNsaWNFZGdlcyIsImRpcmVjdGVkQWN5Y2xpY0dyYXBoIiwiZ2V0Q3ljbGljRWRnZXMiLCJnZXREaXJlY3RlZEFjeWNsaWNHcmFwaCIsImdldFZlcnRleE5hbWVzIiwiZ2V0T3JkZXJlZFZlcnRleE5hbWVzIiwiYWRkVmVydGV4QnlWZXJ0ZXhOYW1lIiwidmVydGV4TmFtZSIsImlzRWRnZVByZXNlbnRCeVZlcnRleE5hbWVzIiwic291cmNlVmVydGV4TmFtZSIsInRhcmdldFZlcnRleE5hbWUiLCJpc1ZlcnRleFByZXNlbnRCeVZlcnRleE5hbWUiLCJnZXRTdWNjZXNzb3JWZXJ0ZXhOYW1lc0J5VmVydGV4TmFtZSIsImdldFByZWRlY2Vzc29yVmVydGV4TmFtZXNCeVZlcnRleE5hbWUiLCJnZXRJbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lIiwiaW5jbHVkZUN5Y2xpY0VkZ2VzIiwiaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyIsImZvckVhY2giLCJjeWNsaWNFZGdlIiwiY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUiLCJnZXRUYXJnZXRWZXJ0ZXhOYW1lIiwiY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWUiLCJnZXRTb3VyY2VWZXJ0ZXhOYW1lIiwiaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXhOYW1lIiwicHVzaCIsImdldEltbWVkaWF0ZVN1Y2Nlc3NvclZlcnRleE5hbWVzQnlWZXJ0ZXhOYW1lIiwiaW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4TmFtZXMiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXhOYW1lIiwiYXJlQ3ljbGVzUHJlc2VudEJ5VmVydGV4TmFtZSIsImN5Y2xlc1ByZXNlbnQiLCJ2ZXJ0ZXhQcmVzZW50IiwiZmlyc3RDeWNsZSIsImdldEZpcnN0Q3ljbGVCeVZlcnRleE5hbWUiLCJ2ZXJ0ZXgiLCJnZXRWZXJ0ZXhCeVZlcnRleE5hbWUiLCJzbGljZSIsInBhcnRpYWxDeWNsZXMiLCJjeWNsZXMiLCJmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2giLCJ2aXNpdGVkVmVydGV4IiwiZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcyIsInZpc2l0ZWRWZXJ0ZXhOYW1lIiwiZ2V0TmFtZSIsIm1hdGNoZXMiLCJtYXRjaFNvdXJjZVZlcnRleE5hbWUiLCJwcmVkZWNlc3NvclZlcnRpY2VzIiwicGFydGlhbEN5Y2xlIiwiUGFydGlhbEN5Y2xlIiwiZnJvbUN5Y2xpY0VkZ2VBbmRQcmVkZWNlc3NvclZlcnRpY2VzIiwiY3ljbGljRWRnZXNMZW5ndGgiLCJsZW5ndGgiLCJ0ZXJtaW5hdGUiLCJzb21lIiwidGFyZ2V0VmVydGV4Iiwic3VjY2Vzc29yVmVydGljZXMiLCJjeWNsZSIsIkN5Y2xlIiwiZnJvbVZlcnRleE5hbWVQYXJ0aWFsQ3ljbGVBbmRTdWNjZXNzb3JWZXJ0aWNlcyIsImN5Y2xlc0xlbmd0aCIsImdldEZpcnN0Q3ljbGUiLCJmaXJzdEN5Y2xpY0VkZ2UiLCJhcmVDeWNsZXNQcmVzZW50IiwiYWRkVmVydGljZXNCeVZlcnRleE5hbWVzIiwidmVydGV4TmFtZXMiLCJyZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUiLCJmaWx0ZXJDeWNsaWNFZGdlcyIsInJlbW92ZVZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyIsImFkZEVkZ2UiLCJlZGdlIiwic3VjY2VzcyIsImN5Y2xpY0VkZ2VzSW5jbHVkZXNFZGdlIiwiY2hlY2tFZGdlc0luY2x1ZGVzRWRnZSIsImFkZEVkZ2VzIiwiZWRnZXMiLCJyZW1vdmVFZGdlIiwicmVtb3ZlU3RyYW5kZWRWZXJ0aWNlcyIsImVkZ2VQcmVzZW50IiwiaXNFZGdlUHJlc2VudCIsImVkZ2VDeWNsaWMiLCJyZW1vdmVFZGdlRnJvbUVkZ2VzIiwic291cmNlVmVydGV4Iiwic291cmNlVmVydGV4U3RyYW5kZWQiLCJpc1N0cmFuZGVkIiwidGFyZ2V0VmVydGV4U3RyYW5kZWQiLCJyZW1vdmVFZGdlcyIsImFkZEVkZ2VCeVZlcnRleE5hbWVzIiwiRWRnZSIsImZyb21Tb3VyY2VWZXJ0ZXhOYW1lQW5kVGFyZ2V0VmVydGV4TmFtZSIsInJlbW92ZUVkZ2VCeVZlcnRleE5hbWVzIiwicmVtb3ZlRWRnZXNCeVRhcmdldFZlcnRleE5hbWUiLCJlZGdlc0J5VGFyZ2V0VmVydGV4TmFtZSIsImdldEVkZ2VzQnlUYXJnZXRWZXJ0ZXhOYW1lIiwicmVtb3ZlRWRnZXNCeVNvdXJjZVZlcnRleE5hbWUiLCJlZGdlc0J5U291cmNlVmVydGV4TmFtZSIsImdldEVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lIiwicmVtb3ZlQWxsRWRnZXNBbmRWZXJ0aWNlcyIsIkRpcmVjdGVkQWN5Y2xpY0dyYXBoIiwiZnJvbU5vdGhpbmciLCJzb3VyY2VWZXJ0ZXhQcmVzZW50IiwidGFyZ2V0VmVydGV4UHJlc2VudCIsImRpcmVjdGVkR3JhcGgiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBY3FCQTs7O3lCQVpVOzJEQUVkOzREQUNDO21FQUNPOzJFQUNRO3NCQUVRO3FCQUNxRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUU5RyxJQUFRQyxRQUFrQkMsMEJBQWxCRCxPQUFPRSxTQUFXRCwwQkFBWEM7QUFFQSxJQUFBLEFBQU1ILDhCQUFOO2FBQU1BLGNBQ1BJLFdBQVcsRUFBRUMsb0JBQW9CO2dDQUQxQkw7UUFFakIsSUFBSSxDQUFDSSxjQUFjQTtRQUVuQixJQUFJLENBQUNDLHVCQUF1QkE7O2tCQUpYTDs7WUFPbkJNLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0Y7WUFDZDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0Y7WUFDZDs7O1lBRUFHLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFBbUIsT0FBTyxJQUFJLENBQUNILHFCQUFxQkc7WUFBa0I7OztZQUV0RUMsS0FBQUE7bUJBQUFBLFNBQUFB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
|
package/lib/edge.js
CHANGED
|
@@ -5,10 +5,92 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
Object.defineProperty(exports, "default", {
|
|
6
6
|
enumerable: true,
|
|
7
7
|
get: function() {
|
|
8
|
-
return
|
|
8
|
+
return Edge;
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
function _class_call_check(instance, Constructor) {
|
|
12
|
+
if (!(instance instanceof Constructor)) {
|
|
13
|
+
throw new TypeError("Cannot call a class as a function");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function _defineProperties(target, props) {
|
|
17
|
+
for(var i = 0; i < props.length; i++){
|
|
18
|
+
var descriptor = props[i];
|
|
19
|
+
descriptor.enumerable = descriptor.enumerable || false;
|
|
20
|
+
descriptor.configurable = true;
|
|
21
|
+
if ("value" in descriptor) descriptor.writable = true;
|
|
22
|
+
Object.defineProperty(target, descriptor.key, descriptor);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
26
|
+
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
27
|
+
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
28
|
+
return Constructor;
|
|
29
|
+
}
|
|
30
|
+
var Edge = /*#__PURE__*/ function() {
|
|
31
|
+
function Edge(sourceVertexName, targetVertexName) {
|
|
32
|
+
_class_call_check(this, Edge);
|
|
33
|
+
this.sourceVertexName = sourceVertexName;
|
|
34
|
+
this.targetVertexName = targetVertexName;
|
|
35
|
+
}
|
|
36
|
+
_create_class(Edge, [
|
|
37
|
+
{
|
|
38
|
+
key: "getSourceVertexName",
|
|
39
|
+
value: function getSourceVertexName() {
|
|
40
|
+
return this.sourceVertexName;
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
key: "getTargetVertexName",
|
|
45
|
+
value: function getTargetVertexName() {
|
|
46
|
+
return this.targetVertexName;
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "match",
|
|
51
|
+
value: function match(edge) {
|
|
52
|
+
var sourceVertexName = edge.getSourceVertexName(), targetVertexName = edge.getTargetVertexName(), matches = this.sourceVertexName === sourceVertexName && this.targetVertexName === targetVertexName;
|
|
53
|
+
return matches;
|
|
54
|
+
}
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "matchVertexName",
|
|
58
|
+
value: function matchVertexName(vertexName) {
|
|
59
|
+
var matches = this.sourceVertexName === vertexName || this.targetVertexName === vertexName;
|
|
60
|
+
return matches;
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
key: "matchSourceVertexName",
|
|
65
|
+
value: function matchSourceVertexName(sourceVertexName) {
|
|
66
|
+
var matches = this.sourceVertexName === sourceVertexName;
|
|
67
|
+
return matches;
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: "matchTargetVertexName",
|
|
72
|
+
value: function matchTargetVertexName(targetVertexName) {
|
|
73
|
+
var matches = this.targetVertexName === targetVertexName;
|
|
74
|
+
return matches;
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
key: "matchVertexNames",
|
|
79
|
+
value: function matchVertexNames(sourceVertexName, targetVertexName) {
|
|
80
|
+
var matches = this.sourceVertexName === sourceVertexName && this.targetVertexName === targetVertexName;
|
|
81
|
+
return matches;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
], [
|
|
85
|
+
{
|
|
86
|
+
key: "fromSourceVertexNameAndTargetVertexName",
|
|
87
|
+
value: function fromSourceVertexNameAndTargetVertexName(sourceVertexName, targetVertexName) {
|
|
88
|
+
var edge = new Edge(sourceVertexName, targetVertexName);
|
|
89
|
+
return edge;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
]);
|
|
93
|
+
return Edge;
|
|
94
|
+
}();
|
|
13
95
|
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9lZGdlLmpzIiwiPDxqc3gtY29uZmlnLXByYWdtYS5qcz4+Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFZGdlIHtcbiAgY29uc3RydWN0b3Ioc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSkge1xuICAgIHRoaXMuc291cmNlVmVydGV4TmFtZSA9IHNvdXJjZVZlcnRleE5hbWU7XG4gICAgdGhpcy50YXJnZXRWZXJ0ZXhOYW1lID0gdGFyZ2V0VmVydGV4TmFtZTtcbiAgfVxuICBcbiAgZ2V0U291cmNlVmVydGV4TmFtZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2VWZXJ0ZXhOYW1lO1xuICB9XG4gIFxuICBnZXRUYXJnZXRWZXJ0ZXhOYW1lKCkge1xuICAgIHJldHVybiB0aGlzLnRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIG1hdGNoKGVkZ2UpIHtcbiAgICBjb25zdCBzb3VyY2VWZXJ0ZXhOYW1lID0gZWRnZS5nZXRTb3VyY2VWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGVkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpLFxuICAgICAgICAgIG1hdGNoZXMgPSAoKHRoaXMuc291cmNlVmVydGV4TmFtZSA9PT0gc291cmNlVmVydGV4TmFtZSkgJiYgKHRoaXMudGFyZ2V0VmVydGV4TmFtZSA9PT0gdGFyZ2V0VmVydGV4TmFtZSkpO1xuICAgIFxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hWZXJ0ZXhOYW1lKHZlcnRleE5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gKCh0aGlzLnNvdXJjZVZlcnRleE5hbWUgPT09IHZlcnRleE5hbWUpIHx8ICh0aGlzLnRhcmdldFZlcnRleE5hbWUgPT09IHZlcnRleE5hbWUpKTtcblxuICAgIHJldHVybiBtYXRjaGVzO1xuICB9XG5cbiAgbWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gKHRoaXMuc291cmNlVmVydGV4TmFtZSA9PT0gc291cmNlVmVydGV4TmFtZSk7XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIG1hdGNoVGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgY29uc3QgbWF0Y2hlcyA9ICh0aGlzLnRhcmdldFZlcnRleE5hbWUgPT09IHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBtYXRjaFZlcnRleE5hbWVzKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gKCh0aGlzLnNvdXJjZVZlcnRleE5hbWUgPT09IHNvdXJjZVZlcnRleE5hbWUpICYmICh0aGlzLnRhcmdldFZlcnRleE5hbWUgPT09IHRhcmdldFZlcnRleE5hbWUpKTtcbiAgICBcbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tU291cmNlVmVydGV4TmFtZUFuZFRhcmdldFZlcnRleE5hbWUoc291cmNlVmVydGV4TmFtZSwgdGFyZ2V0VmVydGV4TmFtZSkge1xuICAgIGNvbnN0IGVkZ2UgPSBuZXcgRWRnZShzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIHJldHVybiBlZGdlO1xuICB9XG59XG4iLCJSZWFjdC5jcmVhdGVFbGVtZW50Il0sIm5hbWVzIjpbIkVkZ2UiLCJzb3VyY2VWZXJ0ZXhOYW1lIiwidGFyZ2V0VmVydGV4TmFtZSIsImdldFNvdXJjZVZlcnRleE5hbWUiLCJnZXRUYXJnZXRWZXJ0ZXhOYW1lIiwibWF0Y2giLCJlZGdlIiwibWF0Y2hlcyIsIm1hdGNoVmVydGV4TmFtZSIsInZlcnRleE5hbWUiLCJtYXRjaFNvdXJjZVZlcnRleE5hbWUiLCJtYXRjaFRhcmdldFZlcnRleE5hbWUiLCJtYXRjaFZlcnRleE5hbWVzIiwiZnJvbVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztlQUVxQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTixJQUFBLEFBQU1BLHFCQUFOO2FBQU1BLEtBQ1BDLGdCQUFnQixFQUFFQyxnQkFBZ0I7Z0NBRDNCRjtRQUVqQixJQUFJLENBQUNDLG1CQUFtQkE7UUFDeEIsSUFBSSxDQUFDQyxtQkFBbUJBOztrQkFIUEY7O1lBTW5CRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGO1lBQ2Q7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNGO1lBQ2Q7OztZQUVBRyxLQUFBQTttQkFBQUEsU0FBQUEsTUFBTUMsSUFBSTtnQkFDUixJQUFNTCxtQkFBbUJLLEtBQUtILHVCQUN4QkQsbUJBQW1CSSxLQUFLRix1QkFDeEJHLFVBQVcsQUFBQyxJQUFJLENBQUNOLHFCQUFxQkEsb0JBQXNCLElBQUksQ0FBQ0MscUJBQXFCQTtnQkFFNUYsT0FBT0s7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQSxnQkFBZ0JDLFVBQVU7Z0JBQ3hCLElBQU1GLFVBQVcsQUFBQyxJQUFJLENBQUNOLHFCQUFxQlEsY0FBZ0IsSUFBSSxDQUFDUCxxQkFBcUJPO2dCQUV0RixPQUFPRjtZQUNUOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBLHNCQUFzQlQsZ0JBQWdCO2dCQUNwQyxJQUFNTSxVQUFXLElBQUksQ0FBQ04scUJBQXFCQTtnQkFFM0MsT0FBT007WUFDVDs7O1lBRUFJLEtBQUFBO21CQUFBQSxTQUFBQSxzQkFBc0JULGdCQUFnQjtnQkFDcEMsSUFBTUssVUFBVyxJQUFJLENBQUNMLHFCQUFxQkE7Z0JBRTNDLE9BQU9LO1lBQ1Q7OztZQUVBSyxLQUFBQTttQkFBQUEsU0FBQUEsaUJBQWlCWCxnQkFBZ0IsRUFBRUMsZ0JBQWdCO2dCQUNqRCxJQUFNSyxVQUFXLEFBQUMsSUFBSSxDQUFDTixxQkFBcUJBLG9CQUFzQixJQUFJLENBQUNDLHFCQUFxQkE7Z0JBRTVGLE9BQU9LO1lBQ1Q7Ozs7WUFFT00sS0FBQUE7bUJBQVAsU0FBT0Esd0NBQXdDWixnQkFBZ0IsRUFBRUMsZ0JBQWdCO2dCQUMvRSxJQUFNSSxPQUFPLElBL0NJTixLQStDS0Msa0JBQWtCQztnQkFFeEMsT0FBT0k7WUFDVDs7O1dBbERtQk4ifQ==
|
package/lib/example.js
CHANGED
|
@@ -18,4 +18,4 @@ directedGraph.addEdgeByVertexNames("./occam-lexers", "./with-style");
|
|
|
18
18
|
directedGraph.removeVertexByVertexName("./occam-lexers");
|
|
19
19
|
debugger;
|
|
20
20
|
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leGFtcGxlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vaW5kZXhcIjsgIC8vL1xuXG5jb25zdCBkaXJlY3RlZEdyYXBoID0gRGlyZWN0ZWRHcmFwaC5mcm9tTm90aGluZygpO1xuXG5kaXJlY3RlZEdyYXBoLmFkZFZlcnRpY2VzQnlWZXJ0ZXhOYW1lcyhbXG4gIFwiLi9lYXN5LWxheW91dFwiLFxuICBcIi4vZWFzeS13aXRoLXN0eWxlXCIsXG4gIFwiLi9vY2NhbS1sZXhlcnNcIixcbiAgXCIuL3dpdGgtc3R5bGVcIlxuXSk7XG5cbmRpcmVjdGVkR3JhcGguYWRkRWRnZUJ5VmVydGV4TmFtZXMoXCIuL2Vhc3ktd2l0aC1zdHlsZVwiLCBcIi4vZWFzeS1sYXlvdXRcIik7XG5kaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVZlcnRleE5hbWVzKFwiLi93aXRoLXN0eWxlXCIsIFwiLi9lYXN5LXdpdGgtc3R5bGVcIik7XG5kaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVZlcnRleE5hbWVzKFwiLi9lYXN5LWxheW91dFwiLCBcIi4vb2NjYW0tbGV4ZXJzXCIpO1xuZGlyZWN0ZWRHcmFwaC5hZGRFZGdlQnlWZXJ0ZXhOYW1lcyhcIi4vZWFzeS13aXRoLXN0eWxlXCIsIFwiLi9lYXN5LWxheW91dFwiKTtcbmRpcmVjdGVkR3JhcGguYWRkRWRnZUJ5VmVydGV4TmFtZXMoXCIuL29jY2FtLWxleGVyc1wiLCBcIi4vd2l0aC1zdHlsZVwiKTtcblxuZGlyZWN0ZWRHcmFwaC5yZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUoXCIuL29jY2FtLWxleGVyc1wiKTtcblxuZGVidWdnZXJcbiJdLCJuYW1lcyI6WyJkaXJlY3RlZEdyYXBoIiwiRGlyZWN0ZWRHcmFwaCIsImZyb21Ob3RoaW5nIiwiYWRkVmVydGljZXNCeVZlcnRleE5hbWVzIiwiYWRkRWRnZUJ5VmVydGV4TmFtZXMiLCJyZW1vdmVWZXJ0ZXhCeVZlcnRleE5hbWUiXSwibWFwcGluZ3MiOiJBQUFBOzs7O3FCQUU4QjtBQUU5QixJQUFNQSxnQkFBZ0JDLHFCQUFjQztBQUVwQ0YsY0FBY0cseUJBQXlCO0lBQ3JDO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFFREgsY0FBY0kscUJBQXFCLHFCQUFxQjtBQUN4REosY0FBY0kscUJBQXFCLGdCQUFnQjtBQUNuREosY0FBY0kscUJBQXFCLGlCQUFpQjtBQUNwREosY0FBY0kscUJBQXFCLHFCQUFxQjtBQUN4REosY0FBY0kscUJBQXFCLGtCQUFrQjtBQUVyREosY0FBY0sseUJBQXlCO0FBRXZDLFFBQVEifQ==
|
package/lib/index.js
CHANGED
|
@@ -16,12 +16,12 @@ _export(exports, {
|
|
|
16
16
|
return _directedGraph.default;
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
var _edge = /*#__PURE__*/
|
|
20
|
-
var _directedGraph = /*#__PURE__*/
|
|
21
|
-
function
|
|
19
|
+
var _edge = /*#__PURE__*/ _interop_require_default(require("./edge"));
|
|
20
|
+
var _directedGraph = /*#__PURE__*/ _interop_require_default(require("./directedGraph"));
|
|
21
|
+
function _interop_require_default(obj) {
|
|
22
22
|
return obj && obj.__esModule ? obj : {
|
|
23
23
|
default: obj
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBFZGdlIH0gZnJvbSBcIi4vZWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIi4vZGlyZWN0ZWRHcmFwaFwiO1xuIl0sIm5hbWVzIjpbIkVkZ2UiLCJEaXJlY3RlZEdyYXBoIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFb0JBLElBQUk7ZUFBSkE7O0lBQ0FDLGFBQWE7ZUFBYkE7OzsyREFEWTtvRUFDUyJ9
|
package/lib/partialCycle.js
CHANGED
|
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "default", {
|
|
|
9
9
|
}
|
|
10
10
|
});
|
|
11
11
|
var _necessary = require("necessary");
|
|
12
|
-
function
|
|
12
|
+
function _class_call_check(instance, Constructor) {
|
|
13
13
|
if (!(instance instanceof Constructor)) {
|
|
14
14
|
throw new TypeError("Cannot call a class as a function");
|
|
15
15
|
}
|
|
@@ -23,7 +23,7 @@ function _defineProperties(target, props) {
|
|
|
23
23
|
Object.defineProperty(target, descriptor.key, descriptor);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
-
function
|
|
26
|
+
function _create_class(Constructor, protoProps, staticProps) {
|
|
27
27
|
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
|
|
28
28
|
if (staticProps) _defineProperties(Constructor, staticProps);
|
|
29
29
|
return Constructor;
|
|
@@ -31,11 +31,11 @@ function _createClass(Constructor, protoProps, staticProps) {
|
|
|
31
31
|
var first = _necessary.arrayUtilities.first;
|
|
32
32
|
var PartialCycle = /*#__PURE__*/ function() {
|
|
33
33
|
function PartialCycle(predecessorVertices, cyclicEdge) {
|
|
34
|
-
|
|
34
|
+
_class_call_check(this, PartialCycle);
|
|
35
35
|
this.predecessorVertices = predecessorVertices;
|
|
36
36
|
this.cyclicEdge = cyclicEdge;
|
|
37
37
|
}
|
|
38
|
-
|
|
38
|
+
_create_class(PartialCycle, [
|
|
39
39
|
{
|
|
40
40
|
key: "getPredecessorVertices",
|
|
41
41
|
value: function getPredecessorVertices() {
|
|
@@ -99,4 +99,4 @@ var PartialCycle = /*#__PURE__*/ function() {
|
|
|
99
99
|
return PartialCycle;
|
|
100
100
|
}();
|
|
101
101
|
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsQ3ljbGUuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydGlhbEN5Y2xlIHtcbiAgY29uc3RydWN0b3IocHJlZGVjZXNzb3JWZXJ0aWNlcywgY3ljbGljRWRnZSkge1xuICAgIHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXM7XG4gICAgdGhpcy5jeWNsaWNFZGdlID0gY3ljbGljRWRnZTtcbiAgfVxuICBcbiAgZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWNlc3NvclZlcnRpY2VzO1xuICB9XG5cbiAgZ2V0Q3ljbGljRWRnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jeWNsaWNFZGdlO1xuICB9XG5cbiAgZ2V0VGFyZ2V0VmVydGV4TmFtZSgpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IHRoaXMuY3ljbGljRWRnZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lOyAgLy8vXG4gICAgXG4gICAgcmV0dXJuIHRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldFByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcy5tYXAoKHByZWRlY2Vzc29yVmVydGV4KSA9PiB7XG4gICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRleE5hbWUgPSBwcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCk7XG5cbiAgICAgIHJldHVybiBwcmVkZWNlc3NvclZlcnRleE5hbWU7XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIHN0YXRpYyBmcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMoY3ljbGljRWRnZSwgcHJlZGVjZXNzb3JWZXJ0aWNlcykge1xuICAgIHByZWRlY2Vzc29yVmVydGljZXMgPSBwcmVkZWNlc3NvclZlcnRpY2VzLnNsaWNlKCk7ICAvLy9cbiAgICBcbiAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoID0gcHJlZGVjZXNzb3JWZXJ0aWNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlZGVjZXNzb3JWZXJ0aWNlc0xlbmd0aCA+
|
|
102
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9wYXJ0aWFsQ3ljbGUuanMiLCI8PGpzeC1jb25maWctcHJhZ21hLmpzPj4iXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5jb25zdCB7IGZpcnN0IH0gPSBhcnJheVV0aWxpdGllcztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGFydGlhbEN5Y2xlIHtcbiAgY29uc3RydWN0b3IocHJlZGVjZXNzb3JWZXJ0aWNlcywgY3ljbGljRWRnZSkge1xuICAgIHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXM7XG4gICAgdGhpcy5jeWNsaWNFZGdlID0gY3ljbGljRWRnZTtcbiAgfVxuICBcbiAgZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcygpIHtcbiAgICByZXR1cm4gdGhpcy5wcmVkZWNlc3NvclZlcnRpY2VzO1xuICB9XG5cbiAgZ2V0Q3ljbGljRWRnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jeWNsaWNFZGdlO1xuICB9XG5cbiAgZ2V0VGFyZ2V0VmVydGV4TmFtZSgpIHtcbiAgICBjb25zdCBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IHRoaXMuY3ljbGljRWRnZS5nZXRUYXJnZXRWZXJ0ZXhOYW1lKCksXG4gICAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lOyAgLy8vXG4gICAgXG4gICAgcmV0dXJuIHRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldFByZWRlY2Vzc29yVmVydGV4TmFtZXMoKSB7XG4gICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyA9IHRoaXMucHJlZGVjZXNzb3JWZXJ0aWNlcy5tYXAoKHByZWRlY2Vzc29yVmVydGV4KSA9PiB7XG4gICAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRleE5hbWUgPSBwcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCk7XG5cbiAgICAgIHJldHVybiBwcmVkZWNlc3NvclZlcnRleE5hbWU7XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHByZWRlY2Vzc29yVmVydGV4TmFtZXM7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFNvdXJjZVZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVNvdXJjZVZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIGdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKCkge1xuICAgIGNvbnN0IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lID0gdGhpcy5jeWNsaWNFZGdlLmdldFRhcmdldFZlcnRleE5hbWUoKTtcbiAgICBcbiAgICByZXR1cm4gY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWU7XG4gIH1cbiAgXG4gIHN0YXRpYyBmcm9tQ3ljbGljRWRnZUFuZFByZWRlY2Vzc29yVmVydGljZXMoY3ljbGljRWRnZSwgcHJlZGVjZXNzb3JWZXJ0aWNlcykge1xuICAgIHByZWRlY2Vzc29yVmVydGljZXMgPSBwcmVkZWNlc3NvclZlcnRpY2VzLnNsaWNlKCk7ICAvLy9cbiAgICBcbiAgICBjb25zdCBwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoID0gcHJlZGVjZXNzb3JWZXJ0aWNlcy5sZW5ndGg7XG5cbiAgICBpZiAocHJlZGVjZXNzb3JWZXJ0aWNlc0xlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXggPSBmaXJzdChwcmVkZWNlc3NvclZlcnRpY2VzKSxcbiAgICAgICAgICAgIGZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lID0gZmlyc3RQcmVkZWNlc3NvclZlcnRleC5nZXROYW1lKCksXG4gICAgICAgICAgICBjeWNsaWNFZGdlVGFyZ2V0VmVydGV4TmFtZSA9IGN5Y2xpY0VkZ2UuZ2V0VGFyZ2V0VmVydGV4TmFtZSgpO1xuXG4gICAgICBpZiAoZmlyc3RQcmVkZWNlc3NvclZlcnRleE5hbWUgPT09IGN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lKSB7XG4gICAgICAgIHByZWRlY2Vzc29yVmVydGljZXMuc2hpZnQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0aWFsQ3ljbGUgPSBuZXcgUGFydGlhbEN5Y2xlKHByZWRlY2Vzc29yVmVydGljZXMsIGN5Y2xpY0VkZ2UpO1xuICAgIFxuICAgIHJldHVybiBwYXJ0aWFsQ3ljbGU7XG4gIH1cbn1cbiIsIlJlYWN0LmNyZWF0ZUVsZW1lbnQiXSwibmFtZXMiOlsiUGFydGlhbEN5Y2xlIiwiZmlyc3QiLCJhcnJheVV0aWxpdGllcyIsInByZWRlY2Vzc29yVmVydGljZXMiLCJjeWNsaWNFZGdlIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcyIsImdldEN5Y2xpY0VkZ2UiLCJnZXRUYXJnZXRWZXJ0ZXhOYW1lIiwiY3ljbGljRWRnZVRhcmdldFZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lcyIsInByZWRlY2Vzc29yVmVydGV4TmFtZXMiLCJtYXAiLCJwcmVkZWNlc3NvclZlcnRleCIsInByZWRlY2Vzc29yVmVydGV4TmFtZSIsImdldE5hbWUiLCJnZXRDeWNsaWNFZGdlU291cmNlVmVydGV4TmFtZSIsImN5Y2xpY0VkZ2VTb3VyY2VWZXJ0ZXhOYW1lIiwiZ2V0U291cmNlVmVydGV4TmFtZSIsImdldEN5Y2xpY0VkZ2VUYXJnZXRWZXJ0ZXhOYW1lIiwiZnJvbUN5Y2xpY0VkZ2VBbmRQcmVkZWNlc3NvclZlcnRpY2VzIiwic2xpY2UiLCJwcmVkZWNlc3NvclZlcnRpY2VzTGVuZ3RoIiwibGVuZ3RoIiwiZmlyc3RQcmVkZWNlc3NvclZlcnRleCIsImZpcnN0UHJlZGVjZXNzb3JWZXJ0ZXhOYW1lIiwic2hpZnQiLCJwYXJ0aWFsQ3ljbGUiXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7O2VBTXFCQTs7O3lCQUpVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUUvQixJQUFNLEFBQUVDLFFBQVVDLDBCQUFWRDtBQUVPLElBQUEsQUFBTUQsNkJBQU47YUFBTUEsYUFDUEcsbUJBQW1CLEVBQUVDLFVBQVU7Z0NBRHhCSjtRQUVqQixJQUFJLENBQUNHLHNCQUFzQkE7UUFDM0IsSUFBSSxDQUFDQyxhQUFhQTs7a0JBSERKOztZQU1uQkssS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRjtZQUNkOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLE9BQU8sSUFBSSxDQUFDRjtZQUNkOzs7WUFFQUcsS0FBQUE7bUJBQUFBLFNBQUFBO2dCQUNFLElBQU1DLDZCQUE2QixJQUFJLENBQUNKLFdBQVdHLHVCQUM3Q0UsbUJBQW1CRCw0QkFBNkIsR0FBRztnQkFFekQsT0FBT0M7WUFDVDs7O1lBRUFDLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyx5QkFBeUIsSUFBSSxDQUFDUixvQkFBb0JTLElBQUksU0FBQ0M7b0JBQzNELElBQU1DLHdCQUF3QkQsa0JBQWtCRTtvQkFFaEQsT0FBT0Q7Z0JBQ1Q7Z0JBRUEsT0FBT0g7WUFDVDs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNQyw2QkFBNkIsSUFBSSxDQUFDYixXQUFXYztnQkFFbkQsT0FBT0Q7WUFDVDs7O1lBRUFFLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNWCw2QkFBNkIsSUFBSSxDQUFDSixXQUFXRztnQkFFbkQsT0FBT0M7WUFDVDs7OztZQUVPWSxLQUFBQTttQkFBUCxTQUFPQSxxQ0FBcUNoQixVQUFVLEVBQUVELG1CQUFtQjtnQkFDekVBLHNCQUFzQkEsb0JBQW9Ca0IsU0FBVSxHQUFHO2dCQUV2RCxJQUFNQyw0QkFBNEJuQixvQkFBb0JvQjtnQkFFdEQsSUFBSUQsNEJBQTRCLEdBQUc7b0JBQ2pDLElBQU1FLHlCQUF5QnZCLE1BQU1FLHNCQUMvQnNCLDZCQUE2QkQsdUJBQXVCVCxXQUNwRFAsNkJBQTZCSixXQUFXRztvQkFFOUMsSUFBSWtCLCtCQUErQmpCLDRCQUE0Qjt3QkFDN0RMLG9CQUFvQnVCO29CQUN0QjtnQkFDRjtnQkFFQSxJQUFNQyxlQUFlLElBMURKM0IsYUEwRHFCRyxxQkFBcUJDO2dCQUUzRCxPQUFPdUI7WUFDVDs7O1dBN0RtQjNCIn0=
|
package/lib/utilities/edge.js
CHANGED
|
@@ -9,9 +9,6 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
edgesFromVertexLiterals: function() {
|
|
13
|
-
return edgesFromVertexLiterals;
|
|
14
|
-
},
|
|
15
12
|
checkEdgesIncludesEdge: function() {
|
|
16
13
|
return checkEdgesIncludesEdge;
|
|
17
14
|
},
|
|
@@ -28,17 +25,6 @@ _export(exports, {
|
|
|
28
25
|
var _necessary = require("necessary");
|
|
29
26
|
var prune = _necessary.arrayUtilities.prune;
|
|
30
27
|
var remove = prune; ///
|
|
31
|
-
function edgesFromVertexLiterals(vertexLiterals) {
|
|
32
|
-
var edges = [];
|
|
33
|
-
vertexLiterals.forEach(function(vertexLiteral) {
|
|
34
|
-
var firstVertexLiteralElement = first(vertexLiteral), secondVertexLiteralElement = second(vertexLiteral), ancestorVertexNames = secondVertexLiteralElement, vertexName = firstVertexLiteralElement; ///
|
|
35
|
-
ancestorVertexNames.forEach(function(ancestorVertexName) {
|
|
36
|
-
var sourceVertexName = ancestorVertexName, targetVertexName = vertexName, edge = new Edge(sourceVertexName, targetVertexName);
|
|
37
|
-
edges.push(edge);
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
return edges;
|
|
41
|
-
}
|
|
42
28
|
function checkEdgesIncludesEdge(edge, edges) {
|
|
43
29
|
var edge1 = edge, edgesIncludesEdge = edges.some(function(edge) {
|
|
44
30
|
var edge2 = edge, matches = edge1.match(edge2);
|
|
@@ -76,4 +62,4 @@ function edgesByTargetVertexName(targetVertexName, edges) {
|
|
|
76
62
|
return edges;
|
|
77
63
|
}
|
|
78
64
|
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZWRnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmNvbnN0IHsgcHJ1bmUgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5jb25zdCByZW1vdmUgPSBwcnVuZTsgIC8vL1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tFZGdlc0luY2x1ZGVzRWRnZShlZGdlLCBlZGdlcykge1xuICBjb25zdCBlZGdlMSA9IGVkZ2UsIC8vL1xuICAgICAgICBlZGdlc0luY2x1ZGVzRWRnZSA9IGVkZ2VzLnNvbWUoKGVkZ2UpID0+IHtcbiAgICAgICAgICBjb25zdCBlZGdlMiA9IGVkZ2UsIC8vL1xuICAgICAgICAgICAgICAgIG1hdGNoZXMgPSBlZGdlMS5tYXRjaChlZGdlMik7XG5cbiAgICAgICAgICBpZiAobWF0Y2hlcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZWRnZXNJbmNsdWRlc0VkZ2U7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW1vdmVFZGdlRnJvbUVkZ2VzKGVkZ2UsIGVkZ2VzKSB7XG4gIGNvbnN0IGVkZ2UxID0gZWRnZTsgLy8vXG5cbiAgcmVtb3ZlKGVkZ2VzLCAoZWRnZSkgPT4ge1xuICAgIGNvbnN0IGVkZ2UyID0gZWRnZSwgLy8vXG4gICAgICAgICAgbWF0Y2hlcyA9IGVkZ2UxLm1hdGNoKGVkZ2UyKTtcblxuICAgIGlmICghbWF0Y2hlcykgeyAvLy9cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlZGdlc0J5U291cmNlVmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCBlZGdlcykge1xuICBlZGdlcyA9IGVkZ2VzLmZpbHRlcigoZWRnZSkgPT4geyAgLy8vXG4gICAgY29uc3QgbWF0Y2hlcyA9IGVkZ2UubWF0Y2hTb3VyY2VWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUpO1xuXG4gICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGVkZ2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZWRnZXNCeVRhcmdldFZlcnRleE5hbWUodGFyZ2V0VmVydGV4TmFtZSwgZWRnZXMpIHtcbiAgZWRnZXMgPSBlZGdlcy5maWx0ZXIoKGVkZ2UpID0+IHsgIC8vL1xuICAgIGNvbnN0IG1hdGNoZXMgPSBlZGdlLm1hdGNoVGFyZ2V0VmVydGV4TmFtZSh0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIGlmIChtYXRjaGVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBlZGdlcztcbn1cbiJdLCJuYW1lcyI6WyJjaGVja0VkZ2VzSW5jbHVkZXNFZGdlIiwicmVtb3ZlRWRnZUZyb21FZGdlcyIsImVkZ2VzQnlTb3VyY2VWZXJ0ZXhOYW1lIiwiZWRnZXNCeVRhcmdldFZlcnRleE5hbWUiLCJwcnVuZSIsImFycmF5VXRpbGl0aWVzIiwicmVtb3ZlIiwiZWRnZSIsImVkZ2VzIiwiZWRnZTEiLCJlZGdlc0luY2x1ZGVzRWRnZSIsInNvbWUiLCJlZGdlMiIsIm1hdGNoZXMiLCJtYXRjaCIsInNvdXJjZVZlcnRleE5hbWUiLCJmaWx0ZXIiLCJtYXRjaFNvdXJjZVZlcnRleE5hbWUiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwibWF0Y2hUYXJnZXRWZXJ0ZXhOYW1lIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFRZ0JBLHNCQUFzQjtlQUF0QkE7O0lBY0FDLG1CQUFtQjtlQUFuQkE7O0lBYUFDLHVCQUF1QjtlQUF2QkE7O0lBWUFDLHVCQUF1QjtlQUF2QkE7Ozt5QkE3Q2U7QUFFL0IsSUFBTSxBQUFFQyxRQUFVQywwQkFBVkQ7QUFFUixJQUFNRSxTQUFTRixPQUFRLEdBQUc7QUFFbkIsU0FBU0osdUJBQXVCTyxJQUFJLEVBQUVDLEtBQUs7SUFDaEQsSUFBTUMsUUFBUUYsTUFDUkcsb0JBQW9CRixNQUFNRyxLQUFLLFNBQUNKO1FBQzlCLElBQU1LLFFBQVFMLE1BQ1JNLFVBQVVKLE1BQU1LLE1BQU1GO1FBRTVCLElBQUlDLFNBQVM7WUFDWCxPQUFPO1FBQ1Q7SUFDRjtJQUVOLE9BQU9IO0FBQ1Q7QUFFTyxTQUFTVCxvQkFBb0JNLElBQUksRUFBRUMsS0FBSztJQUM3QyxJQUFNQyxRQUFRRixNQUFNLEdBQUc7SUFFdkJELE9BQU9FLE9BQU8sU0FBQ0Q7UUFDYixJQUFNSyxRQUFRTCxNQUNSTSxVQUFVSixNQUFNSyxNQUFNRjtRQUU1QixJQUFJLENBQUNDLFNBQVM7WUFDWixPQUFPO1FBQ1Q7SUFDRjtBQUNGO0FBRU8sU0FBU1gsd0JBQXdCYSxnQkFBZ0IsRUFBRVAsS0FBSztJQUM3REEsUUFBUUEsTUFBTVEsT0FBTyxTQUFDVDtRQUNwQixJQUFNTSxVQUFVTixLQUFLVSxzQkFBc0JGO1FBRTNDLElBQUlGLFNBQVM7WUFDWCxPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9MO0FBQ1Q7QUFFTyxTQUFTTCx3QkFBd0JlLGdCQUFnQixFQUFFVixLQUFLO0lBQzdEQSxRQUFRQSxNQUFNUSxPQUFPLFNBQUNUO1FBQ3BCLElBQU1NLFVBQVVOLEtBQUtZLHNCQUFzQkQ7UUFFM0MsSUFBSUwsU0FBUztZQUNYLE9BQU87UUFDVDtJQUNGO0lBRUEsT0FBT0w7QUFDVCJ9
|
package/lib/utilities/vertex.js
CHANGED
|
@@ -9,8 +9,8 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
|
|
13
|
-
return
|
|
12
|
+
orderVertices: function() {
|
|
13
|
+
return orderVertices;
|
|
14
14
|
},
|
|
15
15
|
vertexNamesFromVertices: function() {
|
|
16
16
|
return vertexNamesFromVertices;
|
|
@@ -19,25 +19,19 @@ _export(exports, {
|
|
|
19
19
|
return forwardsDepthFirstSearch;
|
|
20
20
|
}
|
|
21
21
|
});
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
22
|
+
function orderVertices(vertices) {
|
|
23
|
+
vertices.sort(function(firstVertex, secondVertex) {
|
|
24
|
+
var firstVertexIndex = firstVertex.getIndex(), secondVertexIndex = secondVertex.getIndex();
|
|
25
|
+
if (false) {
|
|
26
|
+
///
|
|
27
|
+
} else if (firstVertexIndex < secondVertexIndex) {
|
|
28
|
+
return -1;
|
|
29
|
+
} else if (firstVertexIndex > secondVertexIndex) {
|
|
30
|
+
return +1;
|
|
30
31
|
}
|
|
31
|
-
var secondVertexLiteralElement = second(vertexLiteral), ancestorVertexNames = secondVertexLiteralElement; ///
|
|
32
|
-
ancestorVertexNames.forEach(function(ancestorVertexName) {
|
|
33
|
-
var ancestorVertexExists = vertexNameMap.hasOwnProperty(ancestorVertexName);
|
|
34
|
-
if (!ancestorVertexExists) {
|
|
35
|
-
vertexNameMap[ancestorVertexName] = ancestorVertexName;
|
|
36
|
-
}
|
|
37
|
-
});
|
|
38
32
|
});
|
|
39
|
-
var
|
|
40
|
-
return
|
|
33
|
+
var orderedVertices = vertices; ///
|
|
34
|
+
return orderedVertices;
|
|
41
35
|
}
|
|
42
36
|
function vertexNamesFromVertices(vertices) {
|
|
43
37
|
var vertexNames = vertices.map(function(vertex) {
|
|
@@ -83,4 +77,4 @@ function retrieveForwardsVisitedVertices(vertex, callback, getPredecessorVertice
|
|
|
83
77
|
return terminate;
|
|
84
78
|
}
|
|
85
79
|
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVydGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gb3JkZXJWZXJ0aWNlcyh2ZXJ0aWNlcykgeyAgLy8vXG4gIHZlcnRpY2VzLnNvcnQoKGZpcnN0VmVydGV4LCBzZWNvbmRWZXJ0ZXgpID0+IHtcbiAgICBjb25zdCBmaXJzdFZlcnRleEluZGV4ID0gZmlyc3RWZXJ0ZXguZ2V0SW5kZXgoKSxcbiAgICAgICAgICBzZWNvbmRWZXJ0ZXhJbmRleCA9IHNlY29uZFZlcnRleC5nZXRJbmRleCgpO1xuXG4gICAgaWYgKGZhbHNlKSB7XG4gICAgICAvLy9cbiAgICB9IGVsc2UgaWYgKGZpcnN0VmVydGV4SW5kZXggPCBzZWNvbmRWZXJ0ZXhJbmRleCkge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH0gZWxzZSAgaWYgKGZpcnN0VmVydGV4SW5kZXggPiBzZWNvbmRWZXJ0ZXhJbmRleCkge1xuICAgICAgcmV0dXJuICsxO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3Qgb3JkZXJlZFZlcnRpY2VzID0gdmVydGljZXM7ICAvLy9cblxuICByZXR1cm4gb3JkZXJlZFZlcnRpY2VzO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmVydGV4TmFtZXNGcm9tVmVydGljZXModmVydGljZXMpIHtcbiAgY29uc3QgdmVydGV4TmFtZXMgPSB2ZXJ0aWNlcy5tYXAoKHZlcnRleCkgPT4ge1xuICAgIGNvbnN0IHZlcnRleE5hbWUgPSB2ZXJ0ZXguZ2V0TmFtZSgpO1xuXG4gICAgcmV0dXJuIHZlcnRleE5hbWU7XG4gIH0pO1xuXG4gIHJldHVybiB2ZXJ0ZXhOYW1lcztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZvcndhcmRzRGVwdGhGaXJzdFNlYXJjaCh2ZXJ0ZXgsIGNhbGxiYWNrKSB7XG4gIGNvbnN0IHZpc2l0ZWRWZXJ0aWNlcyA9IFtdO1xuXG4gIHJldHJpZXZlRm9yd2FyZHNWaXNpdGVkVmVydGljZXModmVydGV4LCAodmlzaXRlZFZlcnRleCwgZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcykgPT4ge1xuICAgIGNvbnN0IHRlcm1pbmF0ZSA9IGNhbGxiYWNrKHZpc2l0ZWRWZXJ0ZXgsIGdldFByZWRlY2Vzc29yVmVydGljZXMpOyAgLy8vXG5cbiAgICB2aXNpdGVkVmVydGljZXMucHVzaCh2aXNpdGVkVmVydGV4KTtcblxuICAgIHJldHVybiB0ZXJtaW5hdGU7XG4gIH0sIGdldFByZWRlY2Vzc29yVmVydGljZXMpO1xuXG4gIHZpc2l0ZWRWZXJ0aWNlcy5mb3JFYWNoKCh2aXNpdGVkVmVydGV4KSA9PiB2aXNpdGVkVmVydGV4LnJlc2V0VmlzaXRlZCgpKTtcblxuICByZXR1cm4gdmlzaXRlZFZlcnRpY2VzO1xuXG4gIGZ1bmN0aW9uIGdldFByZWRlY2Vzc29yVmVydGljZXMoKSB7XG4gICAgY29uc3QgcHJlZGVjZXNzb3JWZXJ0aWNlcyA9IFtdO1xuICAgIFxuICAgIHJldHVybiBwcmVkZWNlc3NvclZlcnRpY2VzO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlRm9yd2FyZHNWaXNpdGVkVmVydGljZXModmVydGV4LCBjYWxsYmFjaywgZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcykge1xuICBsZXQgdGVybWluYXRlID0gZmFsc2U7XG5cbiAgaWYgKHZlcnRleC52aXNpdGVkID09PSBmYWxzZSkge1xuICAgIHZlcnRleC52aXNpdGVkID0gdHJ1ZTtcblxuICAgIGNvbnN0IHZpc2l0ZWRWZXJ0ZXggPSB2ZXJ0ZXg7ICAvLy9cblxuICAgIHRlcm1pbmF0ZSA9IGNhbGxiYWNrKHZpc2l0ZWRWZXJ0ZXgsIGdldFByZWRlY2Vzc29yVmVydGljZXMpO1xuXG4gICAgaWYgKHRlcm1pbmF0ZSAhPT0gdHJ1ZSkge1xuICAgICAgdmlzaXRlZFZlcnRleC5zb21lSW1tZWRpYXRlU3VjY2Vzc29yVmVydGV4KChpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgpID0+IHtcbiAgICAgICAgdGVybWluYXRlID0gcmV0cmlldmVGb3J3YXJkc1Zpc2l0ZWRWZXJ0aWNlcyhpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgsIGNhbGxiYWNrLCAoKSA9PiB7XG4gICAgICAgICAgbGV0IHByZWRlY2Vzc29yVmVydGljZXMgPSBnZXRQcmVkZWNlc3NvclZlcnRpY2VzKCk7XG5cbiAgICAgICAgICBjb25zdCBpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCA9IHZlcnRleCwgIC8vL1xuICAgICAgICAgICAgICAgIHByZWRlY2Vzc29yVmVydGV4ID0gaW1tZWRpYXRlUHJlZGVjZXNzb3JWZXJ0ZXg7IC8vL1xuXG4gICAgICAgICAgcHJlZGVjZXNzb3JWZXJ0aWNlcyA9IHByZWRlY2Vzc29yVmVydGljZXMuY29uY2F0KHByZWRlY2Vzc29yVmVydGV4KTtcblxuICAgICAgICAgIHJldHVybiBwcmVkZWNlc3NvclZlcnRpY2VzO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGVybWluYXRlO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRlcm1pbmF0ZTtcbn1cbiJdLCJuYW1lcyI6WyJvcmRlclZlcnRpY2VzIiwidmVydGV4TmFtZXNGcm9tVmVydGljZXMiLCJmb3J3YXJkc0RlcHRoRmlyc3RTZWFyY2giLCJ2ZXJ0aWNlcyIsInNvcnQiLCJmaXJzdFZlcnRleCIsInNlY29uZFZlcnRleCIsImZpcnN0VmVydGV4SW5kZXgiLCJnZXRJbmRleCIsInNlY29uZFZlcnRleEluZGV4Iiwib3JkZXJlZFZlcnRpY2VzIiwidmVydGV4TmFtZXMiLCJtYXAiLCJ2ZXJ0ZXgiLCJ2ZXJ0ZXhOYW1lIiwiZ2V0TmFtZSIsImNhbGxiYWNrIiwiZ2V0UHJlZGVjZXNzb3JWZXJ0aWNlcyIsInByZWRlY2Vzc29yVmVydGljZXMiLCJ2aXNpdGVkVmVydGljZXMiLCJyZXRyaWV2ZUZvcndhcmRzVmlzaXRlZFZlcnRpY2VzIiwidmlzaXRlZFZlcnRleCIsInRlcm1pbmF0ZSIsInB1c2giLCJmb3JFYWNoIiwicmVzZXRWaXNpdGVkIiwidmlzaXRlZCIsInNvbWVJbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVTdWNjZXNzb3JWZXJ0ZXgiLCJpbW1lZGlhdGVQcmVkZWNlc3NvclZlcnRleCIsInByZWRlY2Vzc29yVmVydGV4IiwiY29uY2F0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFFZ0JBLGFBQWE7ZUFBYkE7O0lBbUJBQyx1QkFBdUI7ZUFBdkJBOztJQVVBQyx3QkFBd0I7ZUFBeEJBOzs7QUE3QlQsU0FBU0YsY0FBY0csUUFBUTtJQUNwQ0EsU0FBU0MsS0FBSyxTQUFDQyxhQUFhQztRQUMxQixJQUFNQyxtQkFBbUJGLFlBQVlHLFlBQy9CQyxvQkFBb0JILGFBQWFFO1FBRXZDLElBQUksT0FBTztRQUNULEdBQUc7UUFDTCxPQUFPLElBQUlELG1CQUFtQkUsbUJBQW1CO1lBQy9DLE9BQU8sQ0FBQztRQUNWLE9BQVEsSUFBSUYsbUJBQW1CRSxtQkFBbUI7WUFDaEQsT0FBTyxDQUFDO1FBQ1Y7SUFDRjtJQUVBLElBQU1DLGtCQUFrQlAsVUFBVyxHQUFHO0lBRXRDLE9BQU9PO0FBQ1Q7QUFFTyxTQUFTVCx3QkFBd0JFLFFBQVE7SUFDOUMsSUFBTVEsY0FBY1IsU0FBU1MsSUFBSSxTQUFDQztRQUNoQyxJQUFNQyxhQUFhRCxPQUFPRTtRQUUxQixPQUFPRDtJQUNUO0lBRUEsT0FBT0g7QUFDVDtBQUVPLFNBQVNULHlCQUF5QlcsTUFBTSxFQUFFRyxRQUFRO1FBZTlDQyx5QkFBVCxTQUFTQTtRQUNQLElBQU1DLHNCQUFzQixFQUFFO1FBRTlCLE9BQU9BO0lBQ1Q7SUFsQkEsSUFBTUMsa0JBQWtCLEVBQUU7SUFFMUJDLGdDQUFnQ1AsUUFBUSxTQUFDUSxlQUFlSjtRQUN0RCxJQUFNSyxZQUFZTixTQUFTSyxlQUFlSix5QkFBMEIsR0FBRztRQUV2RUUsZ0JBQWdCSSxLQUFLRjtRQUVyQixPQUFPQztJQUNULEdBQUdMO0lBRUhFLGdCQUFnQkssUUFBUSxTQUFDSDtlQUFrQkEsY0FBY0k7O0lBRXpELE9BQU9OO0FBT1Q7QUFFQSxTQUFTQyxnQ0FBZ0NQLE1BQU0sRUFBRUcsUUFBUSxFQUFFQyxzQkFBc0I7SUFDL0UsSUFBSUssWUFBWTtJQUVoQixJQUFJVCxPQUFPYSxZQUFZLE9BQU87UUFDNUJiLE9BQU9hLFVBQVU7UUFFakIsSUFBTUwsZ0JBQWdCUixRQUFTLEdBQUc7UUFFbENTLFlBQVlOLFNBQVNLLGVBQWVKO1FBRXBDLElBQUlLLGNBQWMsTUFBTTtZQUN0QkQsY0FBY00sNkJBQTZCLFNBQUNDO2dCQUMxQ04sWUFBWUYsZ0NBQWdDUSwwQkFBMEJaLFVBQVU7b0JBQzlFLElBQUlFLHNCQUFzQkQ7b0JBRTFCLElBQU1ZLDZCQUE2QmhCLFFBQzdCaUIsb0JBQW9CRCw0QkFBNEIsR0FBRztvQkFFekRYLHNCQUFzQkEsb0JBQW9CYSxPQUFPRDtvQkFFakQsT0FBT1o7Z0JBQ1Q7Z0JBRUEsT0FBT0k7WUFDVDtRQUNGO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUIn0=
|