occam-languages 0.0.132 → 0.0.133
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.
|
@@ -41,7 +41,7 @@ function initialiseReleaseContexts(dependency, context) {
|
|
|
41
41
|
addDependencyRelations(dependency, directedGraph, visitedDependencyNames, context);
|
|
42
42
|
const cyclicDependenciesPresent = checkCyclicDependenciesPresent(directedGraph, context);
|
|
43
43
|
if (!cyclicDependenciesPresent) {
|
|
44
|
-
const { releaseContextMap } = context, releaseNames = Object.keys(releaseContextMap), orderedVertexNames = directedGraph.getOrderedVertexNames(), orderedDependencyNames = orderedVertexNames; ///
|
|
44
|
+
const { releaseContextMap } = context, releaseNames = Object.keys(releaseContextMap), orderedVertexNames = directedGraph.getOrderedVertexNames(), orderedDependencyNames = orderedVertexNames.reverse(); ///
|
|
45
45
|
releaseNames.forEach((releaseName)=>{
|
|
46
46
|
const releaseContext = releaseContextMap[releaseName];
|
|
47
47
|
initialiseReleaseContext(releaseContext, orderedDependencyNames, context);
|
|
@@ -222,4 +222,4 @@ function checkCyclicDependenciesPresent(directedGraph, context) {
|
|
|
222
222
|
return cyclicDependenciesPresent;
|
|
223
223
|
}
|
|
224
224
|
|
|
225
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIm9jY2FtLWRpcmVjdGVkLWdyYXBoc1wiO1xuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7ICBTSU5HTEVfU1BBQ0V9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFzeW5jRXZlcnlEZXBlbmRlbmN5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9kZXBlbmRlbmN5XCI7XG5cbmNvbnN0IHsgZmlyc3QsIGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgIHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0luaXRpYWxpc2VkID0gZmFsc2U7XG5cbiAgY29uc3QgZGlyZWN0ZWRHcmFwaCA9IERpcmVjdGVkR3JhcGguZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgdmlzaXRlZERlcGVuZGVuY3lOYW1lcyA9IFtdO1xuXG4gIGFkZERlcGVuZGVuY3lSZWxhdGlvbnMoZGVwZW5kZW5jeSwgZGlyZWN0ZWRHcmFwaCwgdmlzaXRlZERlcGVuZGVuY3lOYW1lcywgY29udGV4dCk7XG5cbiAgY29uc3QgY3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudCA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudChkaXJlY3RlZEdyYXBoLCBjb250ZXh0KTtcblxuICBpZiAoIWN5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQpIHtcbiAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICAgIHJlbGVhc2VOYW1lcyA9IE9iamVjdC5rZXlzKHJlbGVhc2VDb250ZXh0TWFwKSxcbiAgICAgICAgICBvcmRlcmVkVmVydGV4TmFtZXMgPSBkaXJlY3RlZEdyYXBoLmdldE9yZGVyZWRWZXJ0ZXhOYW1lcygpLFxuICAgICAgICAgIG9yZGVyZWREZXBlbmRlbmN5TmFtZXMgPSBvcmRlcmVkVmVydGV4TmFtZXM7ICAvLy9cblxuICAgIHJlbGVhc2VOYW1lcy5mb3JFYWNoKChyZWxlYXNlTmFtZSkgPT4ge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV07XG5cbiAgICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgb3JkZXJlZERlcGVuZGVuY3lOYW1lcywgY29udGV4dCk7XG4gICAgfSk7XG5cbiAgICByZWxlYXNlQ29udGV4dHNJbml0aWFsaXNlZCA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQ7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiB2ZXJpZnlSZWxlYXNlQ29udGV4dHMoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHRzVmVyaWZ5ID0gZmFsc2U7XG5cbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgIGRlcGVuZGVudE5hbWUgPSBudWxsLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gYXdhaXQgdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KTtcblxuICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllcykge1xuICAgIHJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzVmVyaWZ5O1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZVJlbGVhc2VDb250ZXh0cyxcbiAgaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyxcbiAgdmVyaWZ5UmVsZWFzZUNvbnRleHRzXG59O1xuXG5mdW5jdGlvbiBhZGREZXBlbmRlbmN5UmVsYXRpb25zKGRlcGVuZGVuY3ksIGRpcmVjdGVkR3JhcGgsIHZpc2l0ZWREZXBlbmRlbmN5TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgdmlzaXRlZERlcGVuZGVuY3lOYW1lSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSA9IHZpc2l0ZWREZXBlbmRlbmN5TmFtZXMuaW5jbHVkZXMoZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGlmICh2aXNpdGVkRGVwZW5kZW5jeU5hbWVJbmNsdWRlc0RlcGVuZGVuY3lOYW1lKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdmlzaXRlZGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gIHZpc2l0ZWREZXBlbmRlbmN5TmFtZXMucHVzaCh2aXNpdGVkZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGNvbnN0IHsgbG9nLCByZWxlYXNlQ29udGV4dE1hcCB9ID0gY29udGV4dCxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZSwgLy8vXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdIHx8IG51bGw7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ID09PSBudWxsKSB7XG4gICAgY29uc3QgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuZ2V0U3RyaW5nKCk7XG5cbiAgICBsb2cud2FybmluZyhgTm8gcGFja2FnZSBjb250ZXh0IGhhcyBiZWVuIGNyZWF0ZWQgZm9yIHRoZSAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4gYCk7XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgdGFyZ2V0VmVydGV4TmFtZSA9IGRlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgIHNvdXJjZVZlcnRleE5hbWUgPSBkZXBlbmRlbmN5TmFtZTsgIC8vL1xuXG4gICAgZGlyZWN0ZWRHcmFwaC5hZGRFZGdlQnlTb3VyY2VWZXJ0ZXhOYW1lQW5kVGFyZ2V0VmVydGV4TmFtZShzb3VyY2VWZXJ0ZXhOYW1lLCB0YXJnZXRWZXJ0ZXhOYW1lKTtcblxuICAgIGFkZERlcGVuZGVuY3lSZWxhdGlvbnMoZGVwZW5kZW5jeSwgZGlyZWN0ZWRHcmFwaCwgdmlzaXRlZERlcGVuZGVuY3lOYW1lcywgY29udGV4dCk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIG9yZGVyZWREZXBlbmRlbmN5TmFtZXMsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBsb2csIHJlbGVhc2VDb250ZXh0TWFwLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dCxcbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwKSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHROYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpO1xuXG4gIHJlbGVhc2VDb250ZXh0cy5zb3J0KChyZWxlYXNlQ29udGV4dEEsIHJlbGVhc2VDb250ZXh0QikgPT4ge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0QU5hbWUgPSByZWxlYXNlQ29udGV4dEEuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VDb250ZXh0Qk5hbWUgPSByZWxlYXNlQ29udGV4dEIuZ2V0TmFtZSgpLFxuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lQSA9IHJlbGVhc2VDb250ZXh0QU5hbWUsICAvLy9cbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZUIgPSByZWxlYXNlQ29udGV4dEJOYW1lLCAgLy8vXG4gICAgICAgICAgaW5kZXhBID0gb3JkZXJlZERlcGVuZGVuY3lOYW1lcy5pbmRleE9mKGRlcGVuZGVuY3lOYW1lQSksXG4gICAgICAgICAgaW5kZXhCID0gb3JkZXJlZERlcGVuZGVuY3lOYW1lcy5pbmRleE9mKGRlcGVuZGVuY3lOYW1lQik7XG5cbiAgICByZXR1cm4gKGluZGV4QSAtIGluZGV4Qik7XG4gIH0pO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VDb250ZXh0TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuXG4gIHJlbGVhc2VDb250ZXh0LmluaXRpYWxpc2UocmVsZWFzZUNvbnRleHRzLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCk7XG5cbiAgbG9nLmRlYnVnKGAuLi5pbml0aWFsaXNlZCB0aGUgJyR7cmVsZWFzZUNvbnRleHROYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gZmFsc2U7XG5cbiAgY29uc3QgeyBsb2csIHJlbGVhc2VDb250ZXh0TWFwLCByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IH0gPSBjb250ZXh0LFxuICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSkge1xuICAgICAgbG9nLmRlYnVnKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgaGFzIGFscmVhZHkgYmVlbiBjcmVhdGVkLmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpLFxuICAgICAgICAgIGRlcGVuZGVudE5hbWVzTGVuZ3RoID0gZGVwZW5kZW50TmFtZXMubGVuZ3RoO1xuXG4gICAgaWYgKGRlcGVuZGVudE5hbWVzTGVuZ3RoID09PSAwKSB7XG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dCBnaXZlbiB0aGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGFudCdzICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5Li4uYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBhd2FpdCByZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICAgIHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSA9IHJlbGVhc2VDb250ZXh0O1xuXG4gICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCkge1xuICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWU7IC8vL1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0IGNvdWxkIG5vdCBiZSBjcmVhdGVkLiBQZXJoYXBzIHRoZSAnbWV0YS5qc29uJyBmaWxlIGlzIG1pc3Npbmcgb3IgaW52YWxpZC4gT3IgdGhlcmUgY291bGQgYmUgYSBkZXBlbmRlbmN5IG1pc21hdGNoLmApO1xuICAgIH1cblxuICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA/XG4gICAgICBsb2cuZGVidWcoYC4uLmNyZWF0ZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0LmApIDpcbiAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBjcmVhdGUgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBsZXQgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGZhbHNlO1xuXG4gIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdIHx8IG51bGw7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCk7XG5cbiAgICBpZiAocmVsZWFzZWQpIHtcbiAgICAgIHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZGVwZW5kZW50UmVsZWFzZWQpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHQud2FybmluZyhgVGhlICcke3JlbGVhc2VOYW1lfScgcHJvamVjdCBjYW5ub3QgYmUgdmVyaWZpZWQgYmVjYXVzZSBpdHMgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCBpcyBhIHBhY2thZ2UuYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkZXBlbmRlbnROYW1lID0gcmVsZWFzZU5hbWUsICAvLy9cbiAgICAgICAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZCwgLy8vXG4gICAgICAgICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCB2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gICAgICAgIGlmIChkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzVmVyaWZ5KSB7XG4gICAgICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllZCA9IHJlbGVhc2VDb250ZXh0Lmhhc1ZlcmlmaWVkKCk7XG5cbiAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllZCkge1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IHRydWU7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0LmluZm8oYFZlcmlmeWluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0Li4uYCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHZlcmlmaWVzID0gYXdhaXQgcmVsZWFzZUNvbnRleHQudmVyaWZ5KCk7XG5cbiAgICAgICAgICAgIGlmICh2ZXJpZmllcykge1xuICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dC5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0VmVyaWZpZXMgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dFZlcmlmaWVzO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG5cbiAgY29uc3QgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gbmFtZTsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW5jeU5hbWUgXTsgIC8vL1xuXG4gIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgYXN5bmNFdmVyeURlcGVuZGVuY3koZGVwZW5kZW5jaWVzLCBhc3luYyAoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApIHtcbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5RGVwZW5kZW5jeShkZXBlbmRlbmNpZXMsIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgICAgICAgY29uc3QgbmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZSwgLy8vXG4gICAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VOYW1lLCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgcmVsZWFzZUNvbnRleHRNYXApO1xuXG4gICAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCwgcmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICByZWxlYXNlQ29udGV4dHMucHVzaChyZWxlYXNlQ29udGV4dCk7XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgZGVwZW5kZW5jaWVzLmZvckVhY2hEZXBlbmRlbmN5KChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgICByZWxlYXNlTmFtZSA9IGRlcGVuZGVuY3lOYW1lLCAvLy9cbiAgICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXTtcblxuICAgIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCByZWxlYXNlQ29udGV4dE1hcCwgcmVsZWFzZUNvbnRleHRzKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0cztcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZW5lZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNoZWNrQ3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudChkaXJlY3RlZEdyYXBoLCBjb250ZXh0KSB7XG4gIGxldCBjeWNsaWNEZXBlbmRlbmNpZXNQcmVzZW50ID0gZmFsc2U7XG5cbiAgY29uc3QgZmlyc3RDeWNsZSA9IGRpcmVjdGVkR3JhcGguZ2V0Rmlyc3RDeWNsZSgpO1xuXG4gIGlmIChmaXJzdEN5Y2xlICE9PSBudWxsKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgdmVydGV4TmFtZXMgPSBmaXJzdEN5Y2xlLmdldFZlcnRleE5hbWVzKCksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVzID0gdmVydGV4TmFtZXMsICAvLy9cbiAgICAgICAgICBmaXJzdERlcGVuZGVuY3lOYW1lID0gZmlyc3QoZGVwZW5kZW5jeU5hbWVzKSxcbiAgICAgICAgICBjeWNsaWNEZXBlbmRlbmN5TmFtZXMgPSBbXG4gICAgICAgICAgICAuLi5kZXBlbmRlbmN5TmFtZXMsXG4gICAgICAgICAgICBmaXJzdERlcGVuZGVuY3lOYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjeWNsZVN0cmluZyA9IGN5Y2xpY0RlcGVuZGVuY3lOYW1lcy5qb2luKFNJTkdMRV9TUEFDRSk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYXQgbGVhc3Qgb25lICcke2N5Y2xlU3RyaW5nfScuIGN5Y2xpYyBkZXBlbmRlbmN5YCk7XG5cbiAgICBjeWNsaWNEZXBlbmRlbmNpZXNQcmVzZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmNpZXNQcmVzZW50O1xufVxuIl0sIm5hbWVzIjpbImNyZWF0ZVJlbGVhc2VDb250ZXh0cyIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dHMiLCJmaXJzdCIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsImRlcGVuZGVuY3kiLCJjb250ZXh0IiwicmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImRlcGVuZGVudE5hbWVzIiwicmVsZWFzZUNvbnRleHRDcmVhdGVkIiwiY3JlYXRlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNJbml0aWFsaXNlZCIsImRpcmVjdGVkR3JhcGgiLCJEaXJlY3RlZEdyYXBoIiwiZnJvbU5vdGhpbmciLCJ2aXNpdGVkRGVwZW5kZW5jeU5hbWVzIiwiYWRkRGVwZW5kZW5jeVJlbGF0aW9ucyIsImN5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQiLCJjaGVja0N5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQiLCJyZWxlYXNlQ29udGV4dE1hcCIsInJlbGVhc2VOYW1lcyIsIk9iamVjdCIsImtleXMiLCJvcmRlcmVkVmVydGV4TmFtZXMiLCJnZXRPcmRlcmVkVmVydGV4TmFtZXMiLCJvcmRlcmVkRGVwZW5kZW5jeU5hbWVzIiwiZm9yRWFjaCIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNWZXJpZnkiLCJkZXBlbmRlbmN5TmFtZSIsImdldE5hbWUiLCJkZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlQ29udGV4dFZlcmlmaWVzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJ2aXNpdGVkRGVwZW5kZW5jeU5hbWVJbmNsdWRlc0RlcGVuZGVuY3lOYW1lIiwiaW5jbHVkZXMiLCJ2aXNpdGVkZGVwZW5kZW5jeU5hbWUiLCJwdXNoIiwibG9nIiwiZGVwZW5kZW5jeVN0cmluZyIsImdldFN0cmluZyIsIndhcm5pbmciLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJzb3VyY2VWZXJ0ZXhOYW1lIiwiYWRkRWRnZUJ5U291cmNlVmVydGV4TmFtZUFuZFRhcmdldFZlcnRleE5hbWUiLCJGaWxlQ29udGV4dEZyb21GaWxlUGF0aCIsInJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHROYW1lIiwic29ydCIsInJlbGVhc2VDb250ZXh0QSIsInJlbGVhc2VDb250ZXh0QiIsInJlbGVhc2VDb250ZXh0QU5hbWUiLCJyZWxlYXNlQ29udGV4dEJOYW1lIiwiZGVwZW5kZW5jeU5hbWVBIiwiZGVwZW5kZW5jeU5hbWVCIiwiaW5kZXhBIiwiaW5kZXhPZiIsImluZGV4QiIsImluZm8iLCJpbml0aWFsaXNlIiwiZGVidWciLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJhc1N0cmluZyIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwibGFzdERlcGVuZGVudE5hbWUiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzVmVyaWZ5IiwidmVyaWZ5RGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0VmVyaWZpZWQiLCJoYXNWZXJpZmllZCIsInZlcmlmaWVzIiwidmVyaWZ5IiwibmFtZSIsImFzeW5jRXZlcnlEZXBlbmRlbmN5IiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVuZWRWZXJzaW9uIiwiZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiIsIm1hdGNoU2hvcnRlbmVkVmVyc2lvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwidmVyc2lvblN0cmluZyIsInRvU3RyaW5nIiwiZmlyc3RDeWNsZSIsImdldEZpcnN0Q3ljbGUiLCJ2ZXJ0ZXhOYW1lcyIsImdldFZlcnRleE5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzIiwiZmlyc3REZXBlbmRlbmN5TmFtZSIsImN5Y2xpY0RlcGVuZGVuY3lOYW1lcyIsImN5Y2xlU3RyaW5nIiwiam9pbiIsIlNJTkdMRV9TUEFDRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBVXNCQTtlQUFBQTs7UUF5RHRCO2VBQUE7O1FBNUNnQkM7ZUFBQUE7O1FBNEJNQztlQUFBQTs7O3FDQWpEUTsyQkFDQzsyQkFFRjs0QkFDUTtBQUVyQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUdDLHlCQUFjO0FBRS9CLGVBQWVMLHNCQUFzQk0sVUFBVSxFQUFFQyxPQUFPO0lBQzdELElBQUlDLHlCQUF5QjtJQUU3QixNQUFNQyxpQkFBaUIsRUFBRSxFQUNuQkMsd0JBQXdCLE1BQU1DLHFCQUFxQkwsWUFBWUcsZ0JBQWdCRjtJQUVyRixJQUFJRyx1QkFBdUI7UUFDekJGLHlCQUF5QjtJQUMzQjtJQUVBLE9BQU9BO0FBQ1Q7QUFFTyxTQUFTUCwwQkFBMEJL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
|
|
225
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBEaXJlY3RlZEdyYXBoIH0gZnJvbSBcIm9jY2FtLWRpcmVjdGVkLWdyYXBoc1wiO1xuaW1wb3J0IHsgYXJyYXlVdGlsaXRpZXMgfSBmcm9tIFwibmVjZXNzYXJ5XCI7XG5cbmltcG9ydCB7ICBTSU5HTEVfU1BBQ0V9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGFzeW5jRXZlcnlEZXBlbmRlbmN5IH0gZnJvbSBcIi4uL3V0aWxpdGllcy9kZXBlbmRlbmN5XCI7XG5cbmNvbnN0IHsgZmlyc3QsIGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgIHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0luaXRpYWxpc2VkID0gZmFsc2U7XG5cbiAgY29uc3QgZGlyZWN0ZWRHcmFwaCA9IERpcmVjdGVkR3JhcGguZnJvbU5vdGhpbmcoKSxcbiAgICAgICAgdmlzaXRlZERlcGVuZGVuY3lOYW1lcyA9IFtdO1xuXG4gIGFkZERlcGVuZGVuY3lSZWxhdGlvbnMoZGVwZW5kZW5jeSwgZGlyZWN0ZWRHcmFwaCwgdmlzaXRlZERlcGVuZGVuY3lOYW1lcywgY29udGV4dCk7XG5cbiAgY29uc3QgY3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudCA9IGNoZWNrQ3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudChkaXJlY3RlZEdyYXBoLCBjb250ZXh0KTtcblxuICBpZiAoIWN5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQpIHtcbiAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0TWFwIH0gPSBjb250ZXh0LFxuICAgICAgICAgIHJlbGVhc2VOYW1lcyA9IE9iamVjdC5rZXlzKHJlbGVhc2VDb250ZXh0TWFwKSxcbiAgICAgICAgICBvcmRlcmVkVmVydGV4TmFtZXMgPSBkaXJlY3RlZEdyYXBoLmdldE9yZGVyZWRWZXJ0ZXhOYW1lcygpLFxuICAgICAgICAgIG9yZGVyZWREZXBlbmRlbmN5TmFtZXMgPSBvcmRlcmVkVmVydGV4TmFtZXMucmV2ZXJzZSgpOyAgLy8vXG5cbiAgICByZWxlYXNlTmFtZXMuZm9yRWFjaCgocmVsZWFzZU5hbWUpID0+IHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdO1xuXG4gICAgICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQocmVsZWFzZUNvbnRleHQsIG9yZGVyZWREZXBlbmRlbmN5TmFtZXMsIGNvbnRleHQpO1xuICAgIH0pO1xuXG4gICAgcmVsZWFzZUNvbnRleHRzSW5pdGlhbGlzZWQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0c0luaXRpYWxpc2VkO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICBkZXBlbmRlbnROYW1lID0gbnVsbCxcbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSBmYWxzZSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VOYW1lLCBkZXBlbmRlbnROYW1lLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCk7XG5cbiAgaWYgKHJlbGVhc2VDb250ZXh0VmVyaWZpZXMpIHtcbiAgICByZWxlYXNlQ29udGV4dHNWZXJpZnkgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVSZWxlYXNlQ29udGV4dHMsXG4gIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dHMsXG4gIHZlcmlmeVJlbGVhc2VDb250ZXh0c1xufTtcblxuZnVuY3Rpb24gYWRkRGVwZW5kZW5jeVJlbGF0aW9ucyhkZXBlbmRlbmN5LCBkaXJlY3RlZEdyYXBoLCB2aXNpdGVkRGVwZW5kZW5jeU5hbWVzLCBjb250ZXh0KSB7XG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHZpc2l0ZWREZXBlbmRlbmN5TmFtZUluY2x1ZGVzRGVwZW5kZW5jeU5hbWUgPSB2aXNpdGVkRGVwZW5kZW5jeU5hbWVzLmluY2x1ZGVzKGRlcGVuZGVuY3lOYW1lKTtcblxuICBpZiAodmlzaXRlZERlcGVuZGVuY3lOYW1lSW5jbHVkZXNEZXBlbmRlbmN5TmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHZpc2l0ZWRkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3lOYW1lOyAvLy9cblxuICB2aXNpdGVkRGVwZW5kZW5jeU5hbWVzLnB1c2godmlzaXRlZGRlcGVuZGVuY3lOYW1lKTtcblxuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRNYXAgfSA9IGNvbnRleHQsXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGNvbnN0IGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmdldFN0cmluZygpO1xuXG4gICAgbG9nLndhcm5pbmcoYE5vIHBhY2thZ2UgY29udGV4dCBoYXMgYmVlbiBjcmVhdGVkIGZvciB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuIGApO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIHRhcmdldFZlcnRleE5hbWUgPSBkZXBlbmRlbmN5TmFtZTsgIC8vL1xuXG4gIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgc291cmNlVmVydGV4TmFtZSA9IGRlcGVuZGVuY3lOYW1lOyAgLy8vXG5cbiAgICBkaXJlY3RlZEdyYXBoLmFkZEVkZ2VCeVNvdXJjZVZlcnRleE5hbWVBbmRUYXJnZXRWZXJ0ZXhOYW1lKHNvdXJjZVZlcnRleE5hbWUsIHRhcmdldFZlcnRleE5hbWUpO1xuXG4gICAgYWRkRGVwZW5kZW5jeVJlbGF0aW9ucyhkZXBlbmRlbmN5LCBkaXJlY3RlZEdyYXBoLCB2aXNpdGVkRGVwZW5kZW5jeU5hbWVzLCBjb250ZXh0KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgb3JkZXJlZERlcGVuZGVuY3lOYW1lcywgY29udGV4dCkge1xuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRNYXAsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIH0gPSBjb250ZXh0LFxuICAgICAgICByZWxlYXNlQ29udGV4dHMgPSByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgcmVsZWFzZUNvbnRleHRNYXApLFxuICAgICAgICByZWxlYXNlQ29udGV4dE5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCk7XG5cbiAgcmVsZWFzZUNvbnRleHRzLnNvcnQoKHJlbGVhc2VDb250ZXh0QSwgcmVsZWFzZUNvbnRleHRCKSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRBTmFtZSA9IHJlbGVhc2VDb250ZXh0QS5nZXROYW1lKCksXG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRCTmFtZSA9IHJlbGVhc2VDb250ZXh0Qi5nZXROYW1lKCksXG4gICAgICAgICAgZGVwZW5kZW5jeU5hbWVBID0gcmVsZWFzZUNvbnRleHRBTmFtZSwgIC8vL1xuICAgICAgICAgIGRlcGVuZGVuY3lOYW1lQiA9IHJlbGVhc2VDb250ZXh0Qk5hbWUsICAvLy9cbiAgICAgICAgICBpbmRleEEgPSBvcmRlcmVkRGVwZW5kZW5jeU5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWVBKSxcbiAgICAgICAgICBpbmRleEIgPSBvcmRlcmVkRGVwZW5kZW5jeU5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWVCKTtcblxuICAgIHJldHVybiAoaW5kZXhBIC0gaW5kZXhCKTtcbiAgfSk7XG5cbiAgbG9nLmluZm8oYEluaXRpYWxpc2luZyB0aGUgJyR7cmVsZWFzZUNvbnRleHROYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgcmVsZWFzZUNvbnRleHQuaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKTtcblxuICBsb2cuZGVidWcoYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtyZWxlYXNlQ29udGV4dE5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRNYXAsIHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICByZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0TWFwW3JlbGVhc2VOYW1lXSB8fCBudWxsO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAocmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KSB7XG4gICAgICBsb2cuZGVidWcoYFRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dCBoYXMgYWxyZWFkeSBiZWVuIGNyZWF0ZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCksXG4gICAgICAgICAgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGg7XG5cbiAgICBpZiAoZGVwZW5kZW50TmFtZXNMZW5ndGggPT09IDApIHtcbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuLi5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgICBsb2cuaW5mbyhgQ3JlYXRpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0IGdpdmVuIHRoZSAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kYW50J3MgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kuLi5gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWxlYXNlQ29udGV4dCA9IGF3YWl0IHJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3koZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdID0gcmVsZWFzZUNvbnRleHQ7XG5cbiAgICAgICAgY29uc3QgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBhd2FpdCBjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBkZXBlbmRlbmN5TmFtZTsgLy8vXG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLiBPciB0aGVyZSBjb3VsZCBiZSBhIGRlcGVuZGVuY3kgbWlzbWF0Y2guYCk7XG4gICAgfVxuXG4gICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID9cbiAgICAgIGxvZy5kZWJ1ZyhgLi4uY3JlYXRlZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCkgOlxuICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRDcmVhdGVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiB2ZXJpZnlSZWxlYXNlQ29udGV4dChyZWxlYXNlTmFtZSwgZGVwZW5kZW50TmFtZSwgZGVwZW5kZW50UmVsZWFzZWQsIHJlbGVhc2VDb250ZXh0TWFwKSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dE1hcFtyZWxlYXNlTmFtZV0gfHwgbnVsbDtcblxuICBpZiAocmVsZWFzZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICBjb25zdCByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKTtcblxuICAgIGlmIChyZWxlYXNlZCkge1xuICAgICAgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgICAgICByZWxlYXNlQ29udGV4dC53YXJuaW5nKGBUaGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0IGNhbm5vdCBiZSB2ZXJpZmllZCBiZWNhdXNlIGl0cyAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IGlzIGEgcGFja2FnZS5gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGRlcGVuZGVudE5hbWUgPSByZWxlYXNlTmFtZSwgIC8vL1xuICAgICAgICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IHJlbGVhc2VkLCAvLy9cbiAgICAgICAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGF3YWl0IHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNWZXJpZnkpIHtcbiAgICAgICAgICBjb25zdCByZWxlYXNlQ29udGV4dFZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICAgICAgICAgIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVkKSB7XG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHQuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgICAgICAgICAgY29uc3QgdmVyaWZpZXMgPSBhd2FpdCByZWxlYXNlQ29udGV4dC52ZXJpZnkoKTtcblxuICAgICAgICAgICAgaWYgKHZlcmlmaWVzKSB7XG4gICAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0LmluZm8oYC4uLnZlcmlmaWVkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuYCk7XG5cbiAgICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0VmVyaWZpZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZDtcblxuICBjb25zdCBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBuYW1lOyAgLy8vXG5cbiAgZGVwZW5kZW50TmFtZXMgPSBbIC4uLmRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbmN5TmFtZSBdOyAgLy8vXG5cbiAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBhd2FpdCBhc3luY0V2ZXJ5RGVwZW5kZW5jeShkZXBlbmRlbmNpZXMsIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRDcmVhdGVkID0gYXdhaXQgY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgaWYgKHJlbGVhc2VDb250ZXh0Q3JlYXRlZCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCkge1xuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeSA9IGF3YWl0IGFzeW5jRXZlcnlEZXBlbmRlbmN5KGRlcGVuZGVuY2llcywgYXN5bmMgKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgICAgICBjb25zdCBuYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgICAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgICAgICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gYXdhaXQgdmVyaWZ5UmVsZWFzZUNvbnRleHQocmVsZWFzZU5hbWUsIGRlcGVuZGVudE5hbWUsIGRlcGVuZGVudFJlbGVhc2VkLCByZWxlYXNlQ29udGV4dE1hcCk7XG5cbiAgICAgICAgICBpZiAocmVsZWFzZUNvbnRleHRWZXJpZmllcykge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcbn1cblxuZnVuY3Rpb24gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwLCByZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICBpZiAocmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcblxuICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gZGVwZW5kZW5jeU5hbWUsIC8vL1xuICAgICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRNYXBbcmVsZWFzZU5hbWVdO1xuXG4gICAgcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIHJlbGVhc2VDb250ZXh0TWFwLCByZWxlYXNlQ29udGV4dHMpO1xuICB9KTtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRzO1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3Qgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlbmVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmNpZXNQcmVzZW50KGRpcmVjdGVkR3JhcGgsIGNvbnRleHQpIHtcbiAgbGV0IGN5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdCBmaXJzdEN5Y2xlID0gZGlyZWN0ZWRHcmFwaC5nZXRGaXJzdEN5Y2xlKCk7XG5cbiAgaWYgKGZpcnN0Q3ljbGUgIT09IG51bGwpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICB2ZXJ0ZXhOYW1lcyA9IGZpcnN0Q3ljbGUuZ2V0VmVydGV4TmFtZXMoKSxcbiAgICAgICAgICBkZXBlbmRlbmN5TmFtZXMgPSB2ZXJ0ZXhOYW1lcywgIC8vL1xuICAgICAgICAgIGZpcnN0RGVwZW5kZW5jeU5hbWUgPSBmaXJzdChkZXBlbmRlbmN5TmFtZXMpLFxuICAgICAgICAgIGN5Y2xpY0RlcGVuZGVuY3lOYW1lcyA9IFtcbiAgICAgICAgICAgIC4uLmRlcGVuZGVuY3lOYW1lcyxcbiAgICAgICAgICAgIGZpcnN0RGVwZW5kZW5jeU5hbWVcbiAgICAgICAgICBdLFxuICAgICAgICAgIGN5Y2xlU3RyaW5nID0gY3ljbGljRGVwZW5kZW5jeU5hbWVzLmpvaW4oU0lOR0xFX1NQQUNFKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhdCBsZWFzdCBvbmUgJyR7Y3ljbGVTdHJpbmd9Jy4gY3ljbGljIGRlcGVuZGVuY3lgKTtcblxuICAgIGN5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY2llc1ByZXNlbnQ7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyIsInZlcmlmeVJlbGVhc2VDb250ZXh0cyIsImZpcnN0IiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVwZW5kZW5jeSIsImNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwiZGVwZW5kZW50TmFtZXMiLCJyZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjcmVhdGVSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0c0luaXRpYWxpc2VkIiwiZGlyZWN0ZWRHcmFwaCIsIkRpcmVjdGVkR3JhcGgiLCJmcm9tTm90aGluZyIsInZpc2l0ZWREZXBlbmRlbmN5TmFtZXMiLCJhZGREZXBlbmRlbmN5UmVsYXRpb25zIiwiY3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudCIsImNoZWNrQ3ljbGljRGVwZW5kZW5jaWVzUHJlc2VudCIsInJlbGVhc2VDb250ZXh0TWFwIiwicmVsZWFzZU5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm9yZGVyZWRWZXJ0ZXhOYW1lcyIsImdldE9yZGVyZWRWZXJ0ZXhOYW1lcyIsIm9yZGVyZWREZXBlbmRlbmN5TmFtZXMiLCJyZXZlcnNlIiwiZm9yRWFjaCIsInJlbGVhc2VOYW1lIiwicmVsZWFzZUNvbnRleHQiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNWZXJpZnkiLCJkZXBlbmRlbmN5TmFtZSIsImdldE5hbWUiLCJkZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlQ29udGV4dFZlcmlmaWVzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJ2aXNpdGVkRGVwZW5kZW5jeU5hbWVJbmNsdWRlc0RlcGVuZGVuY3lOYW1lIiwiaW5jbHVkZXMiLCJ2aXNpdGVkZGVwZW5kZW5jeU5hbWUiLCJwdXNoIiwibG9nIiwiZGVwZW5kZW5jeVN0cmluZyIsImdldFN0cmluZyIsIndhcm5pbmciLCJkZXBlbmRlbmNpZXMiLCJnZXREZXBlbmRlbmNpZXMiLCJ0YXJnZXRWZXJ0ZXhOYW1lIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJzb3VyY2VWZXJ0ZXhOYW1lIiwiYWRkRWRnZUJ5U291cmNlVmVydGV4TmFtZUFuZFRhcmdldFZlcnRleE5hbWUiLCJGaWxlQ29udGV4dEZyb21GaWxlUGF0aCIsInJlbGVhc2VDb250ZXh0cyIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHROYW1lIiwic29ydCIsInJlbGVhc2VDb250ZXh0QSIsInJlbGVhc2VDb250ZXh0QiIsInJlbGVhc2VDb250ZXh0QU5hbWUiLCJyZWxlYXNlQ29udGV4dEJOYW1lIiwiZGVwZW5kZW5jeU5hbWVBIiwiZGVwZW5kZW5jeU5hbWVCIiwiaW5kZXhBIiwiaW5kZXhPZiIsImluZGV4QiIsImluZm8iLCJpbml0aWFsaXNlIiwiZGVidWciLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5IiwicmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJhc1N0cmluZyIsImRlcGVuZGVudE5hbWVzTGVuZ3RoIiwibGVuZ3RoIiwibGFzdERlcGVuZGVudE5hbWUiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzVmVyaWZ5IiwidmVyaWZ5RGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0VmVyaWZpZWQiLCJoYXNWZXJpZmllZCIsInZlcmlmaWVzIiwidmVyaWZ5IiwibmFtZSIsImFzeW5jRXZlcnlEZXBlbmRlbmN5IiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsInNob3J0ZW5lZFZlcnNpb24iLCJnZXRTaG9ydGVuZWRWZXJzaW9uIiwiZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiIsIm1hdGNoU2hvcnRlbmVkVmVyc2lvbiIsInZlcnNpb24iLCJnZXRWZXJzaW9uIiwidmVyc2lvblN0cmluZyIsInRvU3RyaW5nIiwiZmlyc3RDeWNsZSIsImdldEZpcnN0Q3ljbGUiLCJ2ZXJ0ZXhOYW1lcyIsImdldFZlcnRleE5hbWVzIiwiZGVwZW5kZW5jeU5hbWVzIiwiZmlyc3REZXBlbmRlbmN5TmFtZSIsImN5Y2xpY0RlcGVuZGVuY3lOYW1lcyIsImN5Y2xlU3RyaW5nIiwiam9pbiIsIlNJTkdMRV9TUEFDRSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBVXNCQTtlQUFBQTs7UUF5RHRCO2VBQUE7O1FBNUNnQkM7ZUFBQUE7O1FBNEJNQztlQUFBQTs7O3FDQWpEUTsyQkFDQzsyQkFFRjs0QkFDUTtBQUVyQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFLEdBQUdDLHlCQUFjO0FBRS9CLGVBQWVMLHNCQUFzQk0sVUFBVSxFQUFFQyxPQUFPO0lBQzdELElBQUlDLHlCQUF5QjtJQUU3QixNQUFNQyxpQkFBaUIsRUFBRSxFQUNuQkMsd0JBQXdCLE1BQU1DLHFCQUFxQkwsWUFBWUcsZ0JBQWdCRjtJQUVyRixJQUFJRyx1QkFBdUI7UUFDekJGLHlCQUF5QjtJQUMzQjtJQUVBLE9BQU9B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
|
package/package.json
CHANGED
|
@@ -35,7 +35,7 @@ export function initialiseReleaseContexts(dependency, context) {
|
|
|
35
35
|
const { releaseContextMap } = context,
|
|
36
36
|
releaseNames = Object.keys(releaseContextMap),
|
|
37
37
|
orderedVertexNames = directedGraph.getOrderedVertexNames(),
|
|
38
|
-
orderedDependencyNames = orderedVertexNames; ///
|
|
38
|
+
orderedDependencyNames = orderedVertexNames.reverse(); ///
|
|
39
39
|
|
|
40
40
|
releaseNames.forEach((releaseName) => {
|
|
41
41
|
const releaseContext = releaseContextMap[releaseName];
|
|
@@ -100,7 +100,7 @@ function addDependencyRelations(dependency, directedGraph, visitedDependencyName
|
|
|
100
100
|
|
|
101
101
|
dependencies.forEachDependency((dependency) => {
|
|
102
102
|
const dependencyName = dependency.getName(),
|
|
103
|
-
|
|
103
|
+
sourceVertexName = dependencyName; ///
|
|
104
104
|
|
|
105
105
|
directedGraph.addEdgeBySourceVertexNameAndTargetVertexName(sourceVertexName, targetVertexName);
|
|
106
106
|
|