occam-languages 0.0.138 → 0.0.140

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.
@@ -26,6 +26,7 @@ function fileContextsFromJSON(json, fileContexts, releaseContext, FileContextFro
26
26
  if (FileContext !== null) {
27
27
  const json = fileContextJSON, fileContext = FileContext.fromJSON(json, releaseContext);
28
28
  fileContexts.push(fileContext);
29
+ fileContext.initialise();
29
30
  }
30
31
  });
31
32
  }
@@ -43,4 +44,4 @@ const _default = {
43
44
  fileContextsFromEntries
44
45
  };
45
46
 
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlQ29udGV4dHNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dHMsIHJlbGVhc2VDb250ZXh0LCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCkge1xuICBjb25zdCBmaWxlQ29udGV4dHNKU09OID0ganNvbjsgIC8vL1xuXG4gIGZpbGVDb250ZXh0c0pTT04uZm9yRWFjaCgoZmlsZUNvbnRleHRKU09OKSA9PiB7XG4gICAgY29uc3QgeyBmaWxlUGF0aCB9ID0gZmlsZUNvbnRleHRKU09OLFxuICAgICAgICAgIEZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgaWYgKEZpbGVDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBqc29uID0gZmlsZUNvbnRleHRKU09OLCAvLy9cbiAgICAgICAgICAgIGZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBmaWxlQ29udGV4dHMucHVzaChmaWxlQ29udGV4dCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbGVDb250ZXh0c0Zyb21FbnRyaWVzKGVudHJpZXMsIGZpbGVDb250ZXh0cywgcmVsZWFzZUNvbnRleHQsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKSB7XG4gIGVudHJpZXMuZm9yRWFjaEZpbGUoKGZpbGUpID0+IHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IGZpbGUuZ2V0UGF0aCgpLFxuICAgICAgICAgIEZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgaWYgKEZpbGVDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBmaWxlQ29udGV4dCA9IEZpbGVDb250ZXh0LmZyb21GaWxlKGZpbGUsIHJlbGVhc2VDb250ZXh0KTtcblxuICAgICAgZmlsZUNvbnRleHRzLnB1c2goZmlsZUNvbnRleHQpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZmlsZUNvbnRleHRzRnJvbUpTT04sXG4gIGZpbGVDb250ZXh0c0Zyb21FbnRyaWVzXG59O1xuIl0sIm5hbWVzIjpbImZpbGVDb250ZXh0c0Zyb21FbnRyaWVzIiwiZmlsZUNvbnRleHRzRnJvbUpTT04iLCJqc29uIiwiZmlsZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHQiLCJGaWxlQ29udGV4dEZyb21GaWxlUGF0aCIsImZpbGVDb250ZXh0c0pTT04iLCJmb3JFYWNoIiwiZmlsZUNvbnRleHRKU09OIiwiZmlsZVBhdGgiLCJGaWxlQ29udGV4dCIsImZpbGVDb250ZXh0IiwiZnJvbUpTT04iLCJwdXNoIiwiZW50cmllcyIsImZvckVhY2hGaWxlIiwiZmlsZSIsImdldFBhdGgiLCJmcm9tRmlsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBK0JBO2VBQUE7O1FBYmdCQTtlQUFBQTs7UUFoQkFDO2VBQUFBOzs7QUFBVCxTQUFTQSxxQkFBcUJDLElBQUksRUFBRUMsWUFBWSxFQUFFQyxjQUFjLEVBQUVDLHVCQUF1QjtJQUM5RixNQUFNQyxtQkFBbUJKLE1BQU8sR0FBRztJQUVuQ0ksaUJBQWlCQyxPQUFPLENBQUMsQ0FBQ0M7UUFDeEIsTUFBTSxFQUFFQyxRQUFRLEVBQUUsR0FBR0QsaUJBQ2ZFLGNBQWNMLHdCQUF3Qkk7UUFFNUMsSUFBSUMsZ0JBQWdCLE1BQU07WUFDeEIsTUFBTVIsT0FBT00saUJBQ1BHLGNBQWNELFlBQVlFLFFBQVEsQ0FBQ1YsTUFBTUU7WUFFL0NELGFBQWFVLElBQUksQ0FBQ0Y7UUFDcEI7SUFDRjtBQUNGO0FBRU8sU0FBU1gsd0JBQXdCYyxPQUFPLEVBQUVYLFlBQVksRUFBRUMsY0FBYyxFQUFFQyx1QkFBdUI7SUFDcEdTLFFBQVFDLFdBQVcsQ0FBQyxDQUFDQztRQUNuQixNQUFNUCxXQUFXTyxLQUFLQyxPQUFPLElBQ3ZCUCxjQUFjTCx3QkFBd0JJO1FBRTVDLElBQUlDLGdCQUFnQixNQUFNO1lBQ3hCLE1BQU1DLGNBQWNELFlBQVlRLFFBQVEsQ0FBQ0YsTUFBTVo7WUFFL0NELGFBQWFVLElBQUksQ0FBQ0Y7UUFDcEI7SUFDRjtBQUNGO01BRUEsV0FBZTtJQUNiVjtJQUNBRDtBQUNGIn0=
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvZmlsZUNvbnRleHQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBmaWxlQ29udGV4dHNGcm9tSlNPTihqc29uLCBmaWxlQ29udGV4dHMsIHJlbGVhc2VDb250ZXh0LCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCkge1xuICBjb25zdCBmaWxlQ29udGV4dHNKU09OID0ganNvbjsgIC8vL1xuXG4gIGZpbGVDb250ZXh0c0pTT04uZm9yRWFjaCgoZmlsZUNvbnRleHRKU09OKSA9PiB7XG4gICAgY29uc3QgeyBmaWxlUGF0aCB9ID0gZmlsZUNvbnRleHRKU09OLFxuICAgICAgICAgIEZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgaWYgKEZpbGVDb250ZXh0ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBqc29uID0gZmlsZUNvbnRleHRKU09OLCAvLy9cbiAgICAgICAgICAgIGZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUpTT04oanNvbiwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBmaWxlQ29udGV4dHMucHVzaChmaWxlQ29udGV4dCk7XG5cbiAgICAgIGZpbGVDb250ZXh0LmluaXRpYWxpc2UoKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmlsZUNvbnRleHRzRnJvbUVudHJpZXMoZW50cmllcywgZmlsZUNvbnRleHRzLCByZWxlYXNlQ29udGV4dCwgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpIHtcbiAgZW50cmllcy5mb3JFYWNoRmlsZSgoZmlsZSkgPT4ge1xuICAgIGNvbnN0IGZpbGVQYXRoID0gZmlsZS5nZXRQYXRoKCksXG4gICAgICAgICAgRmlsZUNvbnRleHQgPSBGaWxlQ29udGV4dEZyb21GaWxlUGF0aChmaWxlUGF0aCk7XG5cbiAgICBpZiAoRmlsZUNvbnRleHQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZXh0ID0gRmlsZUNvbnRleHQuZnJvbUZpbGUoZmlsZSwgcmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICBmaWxlQ29udGV4dHMucHVzaChmaWxlQ29udGV4dCk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBmaWxlQ29udGV4dHNGcm9tSlNPTixcbiAgZmlsZUNvbnRleHRzRnJvbUVudHJpZXNcbn07XG4iXSwibmFtZXMiOlsiZmlsZUNvbnRleHRzRnJvbUVudHJpZXMiLCJmaWxlQ29udGV4dHNGcm9tSlNPTiIsImpzb24iLCJmaWxlQ29udGV4dHMiLCJyZWxlYXNlQ29udGV4dCIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwiZmlsZUNvbnRleHRzSlNPTiIsImZvckVhY2giLCJmaWxlQ29udGV4dEpTT04iLCJmaWxlUGF0aCIsIkZpbGVDb250ZXh0IiwiZmlsZUNvbnRleHQiLCJmcm9tSlNPTiIsInB1c2giLCJpbml0aWFsaXNlIiwiZW50cmllcyIsImZvckVhY2hGaWxlIiwiZmlsZSIsImdldFBhdGgiLCJmcm9tRmlsZSJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBaUNBO2VBQUE7O1FBYmdCQTtlQUFBQTs7UUFsQkFDO2VBQUFBOzs7QUFBVCxTQUFTQSxxQkFBcUJDLElBQUksRUFBRUMsWUFBWSxFQUFFQyxjQUFjLEVBQUVDLHVCQUF1QjtJQUM5RixNQUFNQyxtQkFBbUJKLE1BQU8sR0FBRztJQUVuQ0ksaUJBQWlCQyxPQUFPLENBQUMsQ0FBQ0M7UUFDeEIsTUFBTSxFQUFFQyxRQUFRLEVBQUUsR0FBR0QsaUJBQ2ZFLGNBQWNMLHdCQUF3Qkk7UUFFNUMsSUFBSUMsZ0JBQWdCLE1BQU07WUFDeEIsTUFBTVIsT0FBT00saUJBQ1BHLGNBQWNELFlBQVlFLFFBQVEsQ0FBQ1YsTUFBTUU7WUFFL0NELGFBQWFVLElBQUksQ0FBQ0Y7WUFFbEJBLFlBQVlHLFVBQVU7UUFDeEI7SUFDRjtBQUNGO0FBRU8sU0FBU2Qsd0JBQXdCZSxPQUFPLEVBQUVaLFlBQVksRUFBRUMsY0FBYyxFQUFFQyx1QkFBdUI7SUFDcEdVLFFBQVFDLFdBQVcsQ0FBQyxDQUFDQztRQUNuQixNQUFNUixXQUFXUSxLQUFLQyxPQUFPLElBQ3ZCUixjQUFjTCx3QkFBd0JJO1FBRTVDLElBQUlDLGdCQUFnQixNQUFNO1lBQ3hCLE1BQU1DLGNBQWNELFlBQVlTLFFBQVEsQ0FBQ0YsTUFBTWI7WUFFL0NELGFBQWFVLElBQUksQ0FBQ0Y7UUFDcEI7SUFDRjtBQUNGO01BRUEsV0FBZTtJQUNiVjtJQUNBRDtBQUNGIn0=
@@ -74,7 +74,7 @@ async function verifyReleaseContext(releaseContext, context) {
74
74
  }
75
75
  async function createReleaseContext(dependency, dependentNames, dependentReleased, context) {
76
76
  let releaseContextCreated = false;
77
- const { log, releaseContextFromDependency } = context, dependencyName = dependency.getName();
77
+ const { log } = context, dependencyName = dependency.getName();
78
78
  let releaseContext;
79
79
  releaseContext = findReleaseContext(dependency, context);
80
80
  const releaseContextFound = releaseContext !== null;
@@ -86,6 +86,7 @@ async function createReleaseContext(dependency, dependentNames, dependentRelease
86
86
  const lastDependentName = last(dependentNames), dependentName = lastDependentName; ///
87
87
  log.info(`Creating the '${dependencyName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
88
88
  }
89
+ const { releaseContextFromDependency } = context;
89
90
  releaseContext = await releaseContextFromDependency(dependency, context);
90
91
  }
91
92
  if (releaseContext === null) {
@@ -100,8 +101,7 @@ async function createReleaseContext(dependency, dependentNames, dependentRelease
100
101
  } else {
101
102
  const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
102
103
  if (dependencyReleaseContextsCreated) {
103
- const { releaseContexts } = context;
104
- releaseContexts.push(releaseContext);
104
+ addReleaseContext(releaseContext, context);
105
105
  releaseContextCreated = true;
106
106
  }
107
107
  }
@@ -132,6 +132,10 @@ async function createDependencyReleaseContexts(releaseContext, dependency, depen
132
132
  });
133
133
  return dependencyReleaseContextsCreated;
134
134
  }
135
+ function addReleaseContext(releaseContext, context) {
136
+ const { releaseContexts } = context;
137
+ releaseContexts.push(releaseContext);
138
+ }
135
139
  function findReleaseContext(dependency, context) {
136
140
  const { releaseContexts } = context, dependencyName = dependency.getName(), releaseContext = releaseContexts.find((releaseContext)=>{
137
141
  const dependencyNameMatches = releaseContext.matchDependencyName(dependencyName);
@@ -154,8 +158,9 @@ function retrieveReleaseContexts(releaseContext, context, releaseContexts = [])
154
158
  return releaseContexts;
155
159
  }
156
160
  function initialiseReleaseContext(releaseContext, context) {
157
- const { log, FileContextFromFilePath } = context, name = releaseContext.getName(), releaseName = name, releaseContexts = retrieveReleaseContexts(releaseContext, context);
161
+ const { log } = context, name = releaseContext.getName(), releaseName = name, releaseContexts = retrieveReleaseContexts(releaseContext, context);
158
162
  log.info(`Initialising the '${releaseName}' package context...`);
163
+ const { FileContextFromFilePath } = context;
159
164
  releaseContext.initialise(releaseContexts, FileContextFromFilePath);
160
165
  log.debug(`...initialised the '${releaseName}' package context.`);
161
166
  }
@@ -198,4 +203,4 @@ function checkProjectDependencyOfPackage(releaseContext, dependentReleased, depe
198
203
  return projectDependencyOfPackage;
199
204
  }
200
205
 
201
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuaW1wb3J0IHsgU0lOR0xFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5KHJlbGVhc2VDb250ZXh0cywgYXN5bmMgKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICBpZiAocmVsZWFzZWQgfHwgdmVyaWZpZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZTsgLy8vXG5cbiAgICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmaWVzID0gYXdhaXQgcmVsZWFzZUNvbnRleHQudmVyaWZ5KCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGxvZy5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRWZXJpZmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZywgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKTtcblxuICBsZXQgcmVsZWFzZUNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHRGb3VuZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgY29uc3QgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGgsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICAgIH1cblxuICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICAgICAgICAgICAgcmVsZWFzZUNvbnRleHRzLnB1c2gocmVsZWFzZUNvbnRleHQpO1xuXG4gICAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVsZWFzZUNvbnRleHRGb3VuZCkge1xuICAgICAgcmVsZWFzZUNvbnRleHRDcmVhdGVkID9cbiAgICAgICAgbG9nLmRlYnVnKGAuLi5jcmVhdGVkIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKSA6XG4gICAgICAgICAgbG9nLndhcm5pbmcoYC4uLnVuYWJsZSB0byBjcmVhdGUgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dENyZWF0ZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZURlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZDtcblxuICBjb25zdCBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKSxcbiAgICAgICAgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCksXG4gICAgICAgIGRlcGVuZGVudE5hbWUgPSBuYW1lLCAgLy8vXG4gICAgICAgIGRlcGVuZGVudFJlbGVhc2VkID0gcmVsZWFzZWQ7ICAvLy9cblxuICBkZXBlbmRlbnROYW1lcyA9IFsgLi4uZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudE5hbWUgXTsgIC8vL1xuXG4gIGNvbnN0IGFycmF5ID0gZGVwZW5kZW5jaWVzLmdldEFycmF5KCk7XG5cbiAgZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBhd2FpdCBhc3luY0V2ZXJ5KGFycmF5LCBhc3luYyAoZGVwZW5kZW5jeSkgPT4ge1xuICAgIGNvbnN0IGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICBpZiAoIWN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KSB7XG4gICAgICBjb25zdCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gICAgICBpZiAocmVsZWFzZUNvbnRleHRDcmVhdGVkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCkge1xuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZUNvbnRleHQgPSByZWxlYXNlQ29udGV4dHMuZmluZCgocmVsZWFzZUNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBkZXBlbmRlbmN5TmFtZU1hdGNoZXMgPSByZWxlYXNlQ29udGV4dC5tYXRjaERlcGVuZGVuY3lOYW1lKGRlcGVuZGVuY3lOYW1lKTtcblxuICAgICAgICAgIGlmIChkZXBlbmRlbmN5TmFtZU1hdGNoZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgfHwgbnVsbDtcblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHQ7XG59XG5cbmZ1bmN0aW9uIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCByZWxlYXNlQ29udGV4dHMgPSBbXSkge1xuICBjb25zdCByZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmluY2x1ZGVzKHJlbGVhc2VDb250ZXh0KTtcblxuICBpZiAoIXJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQpIHtcbiAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKTtcblxuICAgIGRlcGVuZGVuY2llcy5mb3JFYWNoRGVwZW5kZW5jeSgoZGVwZW5kZW5jeSkgPT4ge1xuICAgICAgY29uc3QgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgICAgIHJldHJpZXZlUmVsZWFzZUNvbnRleHRzKHJlbGVhc2VDb250ZXh0LCBjb250ZXh0LCByZWxlYXNlQ29udGV4dHMpO1xuICAgIH0pO1xuXG4gICAgcmVsZWFzZUNvbnRleHRzLnVuc2hpZnQocmVsZWFzZUNvbnRleHQpO1xuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0cztcbn1cblxuZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgbG9nLCBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgcmVsZWFzZUNvbnRleHQuaW5pdGlhbGlzZShyZWxlYXNlQ29udGV4dHMsIEZpbGVDb250ZXh0RnJvbUZpbGVQYXRoKTtcblxuICBsb2cuZGVidWcoYC4uLmluaXRpYWxpc2VkIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHBhY2thZ2UgY29udGV4dC5gKTtcbn1cblxuZnVuY3Rpb24gY2hlY2tDeWNsaWNEZXBlbmRlbmN5UHJlc2VudChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbmN5TmFtZSA9IGRlcGVuZGVuY3kuZ2V0TmFtZSgpLFxuICAgICAgICBpbmRleCA9IGRlcGVuZGVudE5hbWVzLmluZGV4T2YoZGVwZW5kZW5jeU5hbWUpO1xuXG4gIGlmIChpbmRleCA+IC0xKSB7XG4gICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbnROYW1lcyA9IGRlcGVuZGVudE5hbWVzLnNsaWNlKGluZGV4KSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcyA9IFtcbiAgICAgICAgICAgIC4uLmNpcmN1bGFyRGVwZW5kZW50TmFtZXMsXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZVxuICAgICAgICAgIF0sXG4gICAgICAgICAgY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmcgPSBjaXJjdWxhckRlcGVuZGVuY3lOYW1lcy5qb2luKFNJTkdMRV9TUEFDRSk7XG5cbiAgICBsb2cud2FybmluZyhgVGhlcmUgaXMgYSBjeWNsaWMgZGVwZW5kZW5jeSwgJyR7Y2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmd9Jy5gKTtcblxuICAgIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50ID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudDtcbn1cblxuZnVuY3Rpb24gY2hlY2tSZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kgPSB0cnVlO1xuXG4gIGNvbnN0IHNob3J0ZW5lZFZlcnNpb24gPSBkZXBlbmRlbmN5LmdldFNob3J0ZW5lZFZlcnNpb24oKTtcblxuICBpZiAoc2hvcnRlbmVkVmVyc2lvbiAhPT0gbnVsbCkge1xuICAgIGNvbnN0IGVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24gPSByZWxlYXNlQ29udGV4dC5tYXRjaFNob3J0ZW5lZFZlcnNpb24oc2hvcnRlbmVkVmVyc2lvbik7XG5cbiAgICBpZiAoIWVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24pIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgdmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0LmdldFZlcnNpb24oKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWUsICAvLy9cbiAgICAgICAgICAgIHZlcnNpb25TdHJpbmcgPSB2ZXJzaW9uLnRvU3RyaW5nKCksXG4gICAgICAgICAgICBkZXBlbmRlbmN5U3RyaW5nID0gZGVwZW5kZW5jeS5hc1N0cmluZygpO1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRlbnQgcmVxdWlyZXMgdGhlICcke2RlcGVuZGVuY3lTdHJpbmd9JyBkZXBlbmRlbmN5IGJ1dCBhIGNvbnRleHQgd2l0aCB2ZXJzaW9uICcke3ZlcnNpb25TdHJpbmd9JyB3YXMgcHJvdmlkZWQuYCk7XG5cbiAgICAgIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3k7XG59XG5cbmZ1bmN0aW9uIGNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UocmVsZWFzZUNvbnRleHQsIGRlcGVuZGVudFJlbGVhc2VkLCBkZXBlbmRlbnROYW1lcywgY29udGV4dCkge1xuICBsZXQgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSBmYWxzZTtcblxuICBpZiAoZGVwZW5kZW50UmVsZWFzZWQpIHtcbiAgICBjb25zdCByZWxlYXNlZCA9IHJlbGVhc2VDb250ZXh0LmlzUmVsZWFzZWQoKTtcblxuICAgIGlmICghcmVsZWFzZWQpIHtcbiAgICAgIGNvbnN0IHsgbG9nIH0gPSBjb250ZXh0LFxuICAgICAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgICAgIGxhc3REZXBlbmRlbnROYW1lID0gbGFzdChkZXBlbmRlbnROYW1lcyksXG4gICAgICAgICAgICBkZXBlbmRlbmN5TmFtZSA9IG5hbWUsLy8vXG4gICAgICAgICAgICBkZXBlbmRlbnROYW1lID0gbGFzdERlcGVuZGVudE5hbWU7ICAvLy9cblxuICAgICAgbG9nLndhcm5pbmcoYFRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIGRlcGVuZGVuY3kgaXMgYSBwcm9qZWN0IHdoaWxzdCBpdHMgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCBpcyBhIHBhY2thZ2UuYCk7XG5cbiAgICAgIHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2U7XG59XG4iXSwibmFtZXMiOlsiY3JlYXRlUmVsZWFzZUNvbnRleHRzIiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyIsInZlcmlmeVJlbGVhc2VDb250ZXh0cyIsImxhc3QiLCJhcnJheVV0aWxpdGllcyIsImRlcGVuZGVuY3kiLCJjb250ZXh0IiwicmVsZWFzZUNvbnRleHRzQ3JlYXRlZCIsImRlcGVuZGVudE5hbWVzIiwiZGVwZW5kZW50UmVsZWFzZWQiLCJyZWxlYXNlQ29udGV4dENyZWF0ZWQiLCJjcmVhdGVSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0cyIsImZvckVhY2giLCJyZWxlYXNlQ29udGV4dCIsImluaXRpYWxpc2VSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0c1ZlcmlmeSIsImFzeW5jRXZlcnkiLCJyZWxlYXNlQ29udGV4dFZlcmlmaWVzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlZCIsImlzUmVsZWFzZWQiLCJ2ZXJpZmllZCIsImhhc1ZlcmlmaWVkIiwibG9nIiwibmFtZSIsImdldE5hbWUiLCJyZWxlYXNlTmFtZSIsImluZm8iLCJ2ZXJpZmllcyIsInZlcmlmeSIsInJlbGVhc2VDb250ZXh0RnJvbURlcGVuZGVuY3kiLCJkZXBlbmRlbmN5TmFtZSIsImZpbmRSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VDb250ZXh0Rm91bmQiLCJkZXBlbmRlbnROYW1lc0xlbmd0aCIsImxlbmd0aCIsImRlcGVuZGVuY3lTdHJpbmciLCJhc1N0cmluZyIsImxhc3REZXBlbmRlbnROYW1lIiwiZGVwZW5kZW50TmFtZSIsIndhcm5pbmciLCJwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSIsImNoZWNrUHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UiLCJyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kiLCJjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwiY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyIsInB1c2giLCJkZWJ1ZyIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImFycmF5IiwiZ2V0QXJyYXkiLCJjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsImNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQiLCJmaW5kIiwiZGVwZW5kZW5jeU5hbWVNYXRjaGVzIiwibWF0Y2hEZXBlbmRlbmN5TmFtZSIsInJldHJpZXZlUmVsZWFzZUNvbnRleHRzIiwicmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCIsImluY2x1ZGVzIiwiZm9yRWFjaERlcGVuZGVuY3kiLCJ1bnNoaWZ0IiwiRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgiLCJpbml0aWFsaXNlIiwiaW5kZXgiLCJpbmRleE9mIiwiY2lyY3VsYXJEZXBlbmRlbnROYW1lcyIsInNsaWNlIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXMiLCJjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyIsImpvaW4iLCJTSU5HTEVfU1BBQ0UiLCJzaG9ydGVuZWRWZXJzaW9uIiwiZ2V0U2hvcnRlbmVkVmVyc2lvbiIsImVudHJpZXNNYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJtYXRjaFNob3J0ZW5lZFZlcnNpb24iLCJ2ZXJzaW9uIiwiZ2V0VmVyc2lvbiIsInZlcnNpb25TdHJpbmciLCJ0b1N0cmluZyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7O1FBU3NCQTtlQUFBQTs7UUFzQ3RCO2VBQUE7O1FBeEJnQkM7ZUFBQUE7O1FBUU1DO2VBQUFBOzs7MkJBN0JTOzhCQUVIOzJCQUNDO0FBRTdCLE1BQU0sRUFBRUMsSUFBSSxFQUFFLEdBQUdDLHlCQUFjO0FBRXhCLGVBQWVKLHNCQUFzQkssVUFBVSxFQUFFQyxPQUFPO0lBQzdELElBQUlDLHlCQUF5QjtJQUU3QixNQUFNQyxpQkFBaUIsRUFBRSxFQUNuQkMsb0JBQW9CLE9BQ3BCQyx3QkFBd0IsTUFBTUMscUJBQXFCTixZQUFZRyxnQkFBZ0JDLG1CQUFtQkg7SUFFeEcsSUFBSUksdUJBQXVCO1FBQ3pCSCx5QkFBeUI7SUFDM0I7SUFFQSxPQUFPQTtBQUNUO0FBRU8sU0FBU04sMEJBQTBCSyxPQUFPO0lBQy9DLE1BQU0sRUFBRU0sZUFBZSxFQUFFLEdBQUdOO0lBRTVCTSxnQkFBZ0JDLE9BQU8sQ0FBQyxDQUFDQztRQUN2QkMseUJBQXlCRCxnQkFBZ0JSO0lBQzNDO0FBQ0Y7QUFFTyxlQUFlSixzQkFBc0JJLE9BQU87SUFDakQsSUFBSVU7SUFFSixNQUFNLEVBQUVKLGVBQWUsRUFBRSxHQUFHTjtJQUU1QlUsd0JBQXdCLE1BQU1DLElBQUFBLHdCQUFVLEVBQUNMLGlCQUFpQixPQUFPRTtRQUMvRCxNQUFNSSx5QkFBeUIsTUFBTUMscUJBQXFCTCxnQkFBZ0JSO1FBRTFFLElBQUlZLHdCQUF3QjtZQUMxQixPQUFPO1FBQ1Q7SUFDRjtJQUVBLE9BQU9GO0FBQ1Q7TUFFQSxXQUFlO0lBQ2JoQjtJQUNBQztJQUNBQztBQUNGO0FBRUEsZUFBZWlCLHFCQUFxQkwsY0FBYyxFQUFFUixPQUFPO0lBQ3pELElBQUlZLHlCQUF5QjtJQUU3QixNQUFNRSxXQUFXTixlQUFlTyxVQUFVLElBQ3BDQyxXQUFXUixlQUFlUyxXQUFXO0lBRTNDLElBQUlILFlBQVlFLFVBQVU7UUFDeEJKLHlCQUF5QjtJQUMzQixPQUFPO1FBQ0wsTUFBTSxFQUFFTSxHQUFHLEVBQUUsR0FBR2xCLFNBQ1ZtQixPQUFPWCxlQUFlWSxPQUFPLElBQzdCQyxjQUFjRixNQUFNLEdBQUc7UUFFN0JELElBQUlJLElBQUksQ0FBQyxDQUFDLGVBQWUsRUFBRUQsWUFBWSxZQUFZLENBQUM7UUFFcEQsTUFBTUUsV0FBVyxNQUFNZixlQUFlZ0IsTUFBTTtRQUU1QyxJQUFJRCxVQUFVO1lBQ1pMLElBQUlJLElBQUksQ0FBQyxDQUFDLGlCQUFpQixFQUFFRCxZQUFZLFVBQVUsQ0FBQztZQUVwRFQseUJBQXlCO1FBQzNCO0lBQ0Y7SUFFQSxPQUFPQTtBQUNUO0FBRUEsZUFBZVAscUJBQXFCTixVQUFVLEVBQUVHLGNBQWMsRUFBRUMsaUJBQWlCLEVBQUVILE9BQU87SUFDeEYsSUFBSUksd0JBQXdCO0lBRTVCLE1BQU0sRUFBRWMsR0FBRyxFQUFFTyw0QkFBNEIsRUFBRSxHQUFHekIsU0FDeEMwQixpQkFBaUIzQixXQUFXcUIsT0FBTztJQUV6QyxJQUFJWjtJQUVKQSxpQkFBaUJtQixtQkFBbUI1QixZQUFZQztJQUVoRCxNQUFNNEIsc0JBQXVCcEIsbUJBQW1CO0lBRWhELElBQUksQ0FBQ29CLHFCQUFxQjtRQUN4QixNQUFNQyx1QkFBdUIzQixlQUFlNEIsTUFBTSxFQUM1Q0MsbUJBQW1CaEMsV0FBV2lDLFFBQVE7UUFFNUMsSUFBSUgseUJBQXlCLEdBQUc7WUFDOUJYLElBQUlJLElBQUksQ0FBQyxDQUFDLGNBQWMsRUFBRUksZUFBZSxvQkFBb0IsQ0FBQztRQUNoRSxPQUFPO1lBQ0wsTUFBTU8sb0JBQW9CcEMsS0FBS0ssaUJBQ3pCZ0MsZ0JBQWdCRCxtQkFBb0IsR0FBRztZQUU3Q2YsSUFBSUksSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFSSxlQUFlLDZCQUE2QixFQUFFUSxjQUFjLGVBQWUsRUFBRUgsaUJBQWlCLGVBQWUsQ0FBQztRQUMxSTtRQUVBdkIsaUJBQWlCLE1BQU1pQiw2QkFBNkIxQixZQUFZQztJQUNsRTtJQUVBLElBQUlRLG1CQUFtQixNQUFNO1FBQzNCVSxJQUFJaUIsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFVCxlQUFlLDJGQUEyRixDQUFDO0lBQ2pJLE9BQU87UUFDTCxNQUFNVSw2QkFBNkJDLGdDQUFnQzdCLGdCQUFnQkwsbUJBQW1CRCxnQkFBZ0JGO1FBRXRILElBQUksQ0FBQ29DLDRCQUE0QjtZQUMvQixNQUFNRSwyQkFBMkJDLDhCQUE4Qi9CLGdCQUFnQlQsWUFBWUcsZ0JBQWdCRjtZQUUzRyxJQUFJc0MsMEJBQTBCO2dCQUM1QixJQUFJVixxQkFBcUI7b0JBQ3ZCeEIsd0JBQXdCO2dCQUMxQixPQUFPO29CQUNMLE1BQU1vQyxtQ0FBbUMsTUFBTUMsZ0NBQWdDakMsZ0JBQWdCVCxZQUFZRyxnQkFBZ0JGO29CQUUzSCxJQUFJd0Msa0NBQWtDO3dCQUNwQyxNQUFNLEVBQUVsQyxlQUFlLEVBQUUsR0FBR047d0JBRTVCTSxnQkFBZ0JvQyxJQUFJLENBQUNsQzt3QkFFckJKLHdCQUF3QjtvQkFDMUI7Z0JBQ0Y7WUFDRjtRQUNGO1FBRUEsSUFBSSxDQUFDd0IscUJBQXFCO1lBQ3hCeEIsd0JBQ0VjLElBQUl5QixLQUFLLENBQUMsQ0FBQyxnQkFBZ0IsRUFBRWpCLGVBQWUsa0JBQWtCLENBQUMsSUFDN0RSLElBQUlpQixPQUFPLENBQUMsQ0FBQyx5QkFBeUIsRUFBRVQsZUFBZSxrQkFBa0IsQ0FBQztRQUNoRjtJQUNGO0lBRUEsT0FBT3RCO0FBQ1Q7QUFFQSxlQUFlcUMsZ0NBQWdDakMsY0FBYyxFQUFFVCxVQUFVLEVBQUVHLGNBQWMsRUFBRUYsT0FBTztJQUNoRyxJQUFJd0M7SUFFSixNQUFNckIsT0FBT1gsZUFBZVksT0FBTyxJQUM3Qk4sV0FBV04sZUFBZU8sVUFBVSxJQUNwQzZCLGVBQWVwQyxlQUFlcUMsZUFBZSxJQUM3Q1gsZ0JBQWdCZixNQUNoQmhCLG9CQUFvQlcsVUFBVyxHQUFHO0lBRXhDWixpQkFBaUI7V0FBS0E7UUFBZ0JnQztLQUFlLEVBQUcsR0FBRztJQUUzRCxNQUFNWSxRQUFRRixhQUFhRyxRQUFRO0lBRW5DUCxtQ0FBbUMsTUFBTTdCLElBQUFBLHdCQUFVLEVBQUNtQyxPQUFPLE9BQU8vQztRQUNoRSxNQUFNaUQsMEJBQTBCQyw2QkFBNkJsRCxZQUFZRyxnQkFBZ0JGO1FBRXpGLElBQUksQ0FBQ2dELHlCQUF5QjtZQUM1QixNQUFNNUMsd0JBQXdCLE1BQU1DLHFCQUFxQk4sWUFBWUcsZ0JBQWdCQyxtQkFBbUJIO1lBRXhHLElBQUlJLHVCQUF1QjtnQkFDekIsT0FBTztZQUNUO1FBQ0Y7SUFDRjtJQUVBLE9BQU9vQztBQUNUO0FBRUEsU0FBU2IsbUJBQW1CNUIsVUFBVSxFQUFFQyxPQUFPO0lBQzdDLE1BQU0sRUFBRU0sZUFBZSxFQUFFLEdBQUdOLFNBQ3RCMEIsaUJBQWlCM0IsV0FBV3FCLE9BQU8sSUFDbkNaLGlCQUFpQkYsZ0JBQWdCNEMsSUFBSSxDQUFDLENBQUMxQztRQUNyQyxNQUFNMkMsd0JBQXdCM0MsZUFBZTRDLG1CQUFtQixDQUFDMUI7UUFFakUsSUFBSXlCLHVCQUF1QjtZQUN6QixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRVosT0FBTzNDO0FBQ1Q7QUFFQSxTQUFTNkMsd0JBQXdCN0MsY0FBYyxFQUFFUixPQUFPLEVBQUVNLGtCQUFrQixFQUFFO0lBQzVFLE1BQU1nRCx3Q0FBd0NoRCxnQkFBZ0JpRCxRQUFRLENBQUMvQztJQUV2RSxJQUFJLENBQUM4Qyx1Q0FBdUM7UUFDMUMsTUFBTVYsZUFBZXBDLGVBQWVxQyxlQUFlO1FBRW5ERCxhQUFhWSxpQkFBaUIsQ0FBQyxDQUFDekQ7WUFDOUIsTUFBTVMsaUJBQWlCbUIsbUJBQW1CNUIsWUFBWUM7WUFFdERxRCx3QkFBd0I3QyxnQkFBZ0JSLFNBQVNNO1FBQ25EO1FBRUFBLGdCQUFnQm1ELE9BQU8sQ0FBQ2pEO0lBQzFCO0lBRUEsT0FBT0Y7QUFDVDtBQUVBLFNBQVNHLHlCQUF5QkQsY0FBYyxFQUFFUixPQUFPO0lBQ3ZELE1BQU0sRUFBRWtCLEdBQUcsRUFBRXdDLHVCQUF1QixFQUFFLEdBQUcxRCxTQUNuQ21CLE9BQU9YLGVBQWVZLE9BQU8sSUFDN0JDLGNBQWNGLE1BQ2RiLGtCQUFrQitDLHdCQUF3QjdDLGdCQUFnQlI7SUFFaEVrQixJQUFJSSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUQsWUFBWSxvQkFBb0IsQ0FBQztJQUUvRGIsZUFBZW1ELFVBQVUsQ0FBQ3JELGlCQUFpQm9EO0lBRTNDeEMsSUFBSXlCLEtBQUssQ0FBQyxDQUFDLG9CQUFvQixFQUFFdEIsWUFBWSxrQkFBa0IsQ0FBQztBQUNsRTtBQUVBLFNBQVM0Qiw2QkFBNkJsRCxVQUFVLEVBQUVHLGNBQWMsRUFBRUYsT0FBTztJQUN2RSxJQUFJZ0QsMEJBQTBCO0lBRTlCLE1BQU10QixpQkFBaUIzQixXQUFXcUIsT0FBTyxJQUNuQ3dDLFFBQVExRCxlQUFlMkQsT0FBTyxDQUFDbkM7SUFFckMsSUFBSWtDLFFBQVEsQ0FBQyxHQUFHO1FBQ2QsTUFBTSxFQUFFMUMsR0FBRyxFQUFFLEdBQUdsQixTQUNWOEQseUJBQXlCNUQsZUFBZTZELEtBQUssQ0FBQ0gsUUFDOUNJLDBCQUEwQjtlQUNyQkY7WUFDSHBDO1NBQ0QsRUFDRHVDLGdDQUFnQ0Qsd0JBQXdCRSxJQUFJLENBQUNDLHVCQUFZO1FBRS9FakQsSUFBSWlCLE9BQU8sQ0FBQyxDQUFDLCtCQUErQixFQUFFOEIsOEJBQThCLEVBQUUsQ0FBQztRQUUvRWpCLDBCQUEwQjtJQUM1QjtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTVCw4QkFBOEIvQixjQUFjLEVBQUVULFVBQVUsRUFBRUcsY0FBYyxFQUFFRixPQUFPO0lBQ3hGLElBQUlzQywyQkFBMkI7SUFFL0IsTUFBTThCLG1CQUFtQnJFLFdBQVdzRSxtQkFBbUI7SUFFdkQsSUFBSUQscUJBQXFCLE1BQU07UUFDN0IsTUFBTUUsK0JBQStCOUQsZUFBZStELHFCQUFxQixDQUFDSDtRQUUxRSxJQUFJLENBQUNFLDhCQUE4QjtZQUNqQyxNQUFNLEVBQUVwRCxHQUFHLEVBQUUsR0FBR2xCLFNBQ1Z3RSxVQUFVaEUsZUFBZWlFLFVBQVUsSUFDbkN4QyxvQkFBb0JwQyxLQUFLSyxpQkFDekJnQyxnQkFBZ0JELG1CQUNoQnlDLGdCQUFnQkYsUUFBUUcsUUFBUSxJQUNoQzVDLG1CQUFtQmhDLFdBQVdpQyxRQUFRO1lBRTVDZCxJQUFJaUIsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFRCxjQUFjLDBCQUEwQixFQUFFSCxpQkFBaUIseUNBQXlDLEVBQUUyQyxjQUFjLGVBQWUsQ0FBQztZQUV4SnBDLDJCQUEyQjtRQUM3QjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVBLFNBQVNELGdDQUFnQzdCLGNBQWMsRUFBRUwsaUJBQWlCLEVBQUVELGNBQWMsRUFBRUYsT0FBTztJQUNqRyxJQUFJb0MsNkJBQTZCO0lBRWpDLElBQUlqQyxtQkFBbUI7UUFDckIsTUFBTVcsV0FBV04sZUFBZU8sVUFBVTtRQUUxQyxJQUFJLENBQUNELFVBQVU7WUFDYixNQUFNLEVBQUVJLEdBQUcsRUFBRSxHQUFHbEIsU0FDVm1CLE9BQU9YLGVBQWVZLE9BQU8sSUFDN0JhLG9CQUFvQnBDLEtBQUtLLGlCQUN6QndCLGlCQUFpQlAsTUFDakJlLGdCQUFnQkQsbUJBQW9CLEdBQUc7WUFFN0NmLElBQUlpQixPQUFPLENBQUMsQ0FBQyxLQUFLLEVBQUVULGVBQWUsc0NBQXNDLEVBQUVRLGNBQWMseUJBQXlCLENBQUM7WUFFbkhFLDZCQUE2QjtRQUMvQjtJQUNGO0lBRUEsT0FBT0E7QUFDVCJ9
206
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvdmVyaWZpY2F0aW9uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBhcnJheVV0aWxpdGllcyB9IGZyb20gXCJuZWNlc3NhcnlcIjtcblxuaW1wb3J0IHsgYXN5bmNFdmVyeSAgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2FzeW5jaHJvbm91c1wiO1xuaW1wb3J0IHsgU0lOR0xFX1NQQUNFIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCB7IGxhc3QgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHRzKGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c0NyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCBkZXBlbmRlbnROYW1lcyA9IFtdLFxuICAgICAgICBkZXBlbmRlbnRSZWxlYXNlZCA9IGZhbHNlLFxuICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBhd2FpdCBjcmVhdGVSZWxlYXNlQ29udGV4dChkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgZGVwZW5kZW50UmVsZWFzZWQsIGNvbnRleHQpO1xuXG4gIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0cyhjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5mb3JFYWNoKChyZWxlYXNlQ29udGV4dCkgPT4ge1xuICAgIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG4gIH0pO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gdmVyaWZ5UmVsZWFzZUNvbnRleHRzKGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VDb250ZXh0c1ZlcmlmeTtcblxuICBjb25zdCB7IHJlbGVhc2VDb250ZXh0cyB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dHNWZXJpZnkgPSBhd2FpdCBhc3luY0V2ZXJ5KHJlbGVhc2VDb250ZXh0cywgYXN5bmMgKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgY29uc3QgcmVsZWFzZUNvbnRleHRWZXJpZmllcyA9IGF3YWl0IHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KTtcblxuICAgIGlmIChyZWxlYXNlQ29udGV4dFZlcmlmaWVzKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHNWZXJpZnk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlUmVsZWFzZUNvbnRleHRzLFxuICBpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzLFxuICB2ZXJpZnlSZWxlYXNlQ29udGV4dHNcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHZlcmlmeVJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gZmFsc2U7XG5cbiAgY29uc3QgcmVsZWFzZWQgPSByZWxlYXNlQ29udGV4dC5pc1JlbGVhc2VkKCksXG4gICAgICAgIHZlcmlmaWVkID0gcmVsZWFzZUNvbnRleHQuaGFzVmVyaWZpZWQoKTtcblxuICBpZiAocmVsZWFzZWQgfHwgdmVyaWZpZWQpIHtcbiAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgIHJlbGVhc2VOYW1lID0gbmFtZTsgLy8vXG5cbiAgICBsb2cuaW5mbyhgVmVyaWZ5aW5nIHRoZSAnJHtyZWxlYXNlTmFtZX0nIHByb2plY3QuLi5gKTtcblxuICAgIGNvbnN0IHZlcmlmaWVzID0gYXdhaXQgcmVsZWFzZUNvbnRleHQudmVyaWZ5KCk7XG5cbiAgICBpZiAodmVyaWZpZXMpIHtcbiAgICAgIGxvZy5pbmZvKGAuLi52ZXJpZmllZCB0aGUgJyR7cmVsZWFzZU5hbWV9JyBwcm9qZWN0LmApO1xuXG4gICAgICByZWxlYXNlQ29udGV4dFZlcmlmaWVzID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVsZWFzZUNvbnRleHRWZXJpZmllcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGRlcGVuZGVudFJlbGVhc2VkLCBjb250ZXh0KSB7XG4gIGxldCByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSBmYWxzZTtcblxuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgZGVwZW5kZW5jeU5hbWUgPSBkZXBlbmRlbmN5LmdldE5hbWUoKTtcblxuICBsZXQgcmVsZWFzZUNvbnRleHQ7XG5cbiAgcmVsZWFzZUNvbnRleHQgPSBmaW5kUmVsZWFzZUNvbnRleHQoZGVwZW5kZW5jeSwgY29udGV4dCk7XG5cbiAgY29uc3QgcmVsZWFzZUNvbnRleHRGb3VuZCA9IChyZWxlYXNlQ29udGV4dCAhPT0gbnVsbCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgY29uc3QgZGVwZW5kZW50TmFtZXNMZW5ndGggPSBkZXBlbmRlbnROYW1lcy5sZW5ndGgsXG4gICAgICAgICAgZGVwZW5kZW5jeVN0cmluZyA9IGRlcGVuZGVuY3kuYXNTdHJpbmcoKTtcblxuICAgIGlmIChkZXBlbmRlbnROYW1lc0xlbmd0aCA9PT0gMCkge1xuICAgICAgbG9nLmluZm8oYENyZWF0aW5nIHRoZSAnJHtkZXBlbmRlbmN5TmFtZX0nIHBhY2thZ2UgY29udGV4dC4uLmApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsYXN0RGVwZW5kZW50TmFtZSA9IGxhc3QoZGVwZW5kZW50TmFtZXMpLFxuICAgICAgICAgICAgZGVwZW5kZW50TmFtZSA9IGxhc3REZXBlbmRlbnROYW1lOyAgLy8vXG5cbiAgICAgIGxvZy5pbmZvKGBDcmVhdGluZyB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgZ2l2ZW4gdGhlICcke2RlcGVuZGVudE5hbWV9JyBkZXBlbmRhbnQncyAnJHtkZXBlbmRlbmN5U3RyaW5nfScgZGVwZW5kZW5jeS4uLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeSB9ID0gY29udGV4dDtcblxuICAgIHJlbGVhc2VDb250ZXh0ID0gYXdhaXQgcmVsZWFzZUNvbnRleHRGcm9tRGVwZW5kZW5jeShkZXBlbmRlbmN5LCBjb250ZXh0KTtcbiAgfVxuXG4gIGlmIChyZWxlYXNlQ29udGV4dCA9PT0gbnVsbCkge1xuICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQgY291bGQgbm90IGJlIGNyZWF0ZWQuIFBlcmhhcHMgdGhlICdtZXRhLmpzb24nIGZpbGUgaXMgbWlzc2luZyBvciBpbnZhbGlkLmApO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlID0gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IGNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5KHJlbGVhc2VDb250ZXh0LCBkZXBlbmRlbmN5LCBkZXBlbmRlbnROYW1lcywgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlTWF0Y2hlc0RlcGVuZGVuY3kpIHtcbiAgICAgICAgaWYgKHJlbGVhc2VDb250ZXh0Rm91bmQpIHtcbiAgICAgICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkID0gYXdhaXQgY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkKSB7XG4gICAgICAgICAgICBhZGRSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCk7XG5cbiAgICAgICAgICAgIHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKCFyZWxlYXNlQ29udGV4dEZvdW5kKSB7XG4gICAgICByZWxlYXNlQ29udGV4dENyZWF0ZWQgP1xuICAgICAgICBsb2cuZGVidWcoYC4uLmNyZWF0ZWQgdGhlICcke2RlcGVuZGVuY3lOYW1lfScgcGFja2FnZSBjb250ZXh0LmApIDpcbiAgICAgICAgICBsb2cud2FybmluZyhgLi4udW5hYmxlIHRvIGNyZWF0ZSB0aGUgJyR7ZGVwZW5kZW5jeU5hbWV9JyBwYWNrYWdlIGNvbnRleHQuYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0Q3JlYXRlZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gY3JlYXRlRGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IGRlcGVuZGVuY3lSZWxlYXNlQ29udGV4dHNDcmVhdGVkO1xuXG4gIGNvbnN0IG5hbWUgPSByZWxlYXNlQ29udGV4dC5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpLFxuICAgICAgICBkZXBlbmRlbmNpZXMgPSByZWxlYXNlQ29udGV4dC5nZXREZXBlbmRlbmNpZXMoKSxcbiAgICAgICAgZGVwZW5kZW50TmFtZSA9IG5hbWUsICAvLy9cbiAgICAgICAgZGVwZW5kZW50UmVsZWFzZWQgPSByZWxlYXNlZDsgIC8vL1xuXG4gIGRlcGVuZGVudE5hbWVzID0gWyAuLi5kZXBlbmRlbnROYW1lcywgZGVwZW5kZW50TmFtZSBdOyAgLy8vXG5cbiAgY29uc3QgYXJyYXkgPSBkZXBlbmRlbmNpZXMuZ2V0QXJyYXkoKTtcblxuICBkZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzQ3JlYXRlZCA9IGF3YWl0IGFzeW5jRXZlcnkoYXJyYXksIGFzeW5jIChkZXBlbmRlbmN5KSA9PiB7XG4gICAgY29uc3QgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KTtcblxuICAgIGlmICghY3ljbGljRGVwZW5kZW5jeVByZXNlbnQpIHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0Q3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBkZXBlbmRlbnRSZWxlYXNlZCwgY29udGV4dCk7XG5cbiAgICAgIGlmIChyZWxlYXNlQ29udGV4dENyZWF0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQ7XG59XG5cbmZ1bmN0aW9uIGFkZFJlbGVhc2VDb250ZXh0KHJlbGVhc2VDb250ZXh0LCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgcmVsZWFzZUNvbnRleHRzIH0gPSBjb250ZXh0O1xuXG4gIHJlbGVhc2VDb250ZXh0cy5wdXNoKHJlbGVhc2VDb250ZXh0KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpIHtcbiAgY29uc3QgeyByZWxlYXNlQ29udGV4dHMgfSA9IGNvbnRleHQsXG4gICAgICAgIGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIHJlbGVhc2VDb250ZXh0ID0gcmVsZWFzZUNvbnRleHRzLmZpbmQoKHJlbGVhc2VDb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZGVwZW5kZW5jeU5hbWVNYXRjaGVzID0gcmVsZWFzZUNvbnRleHQubWF0Y2hEZXBlbmRlbmN5TmFtZShkZXBlbmRlbmN5TmFtZSk7XG5cbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeU5hbWVNYXRjaGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pIHx8IG51bGw7XG5cbiAgcmV0dXJuIHJlbGVhc2VDb250ZXh0O1xufVxuXG5mdW5jdGlvbiByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzID0gW10pIHtcbiAgY29uc3QgcmVsZWFzZUNvbnRleHRzSW5jbHVkZXNSZWxlYXNlQ29udGV4dCA9IHJlbGVhc2VDb250ZXh0cy5pbmNsdWRlcyhyZWxlYXNlQ29udGV4dCk7XG5cbiAgaWYgKCFyZWxlYXNlQ29udGV4dHNJbmNsdWRlc1JlbGVhc2VDb250ZXh0KSB7XG4gICAgY29uc3QgZGVwZW5kZW5jaWVzID0gcmVsZWFzZUNvbnRleHQuZ2V0RGVwZW5kZW5jaWVzKCk7XG5cbiAgICBkZXBlbmRlbmNpZXMuZm9yRWFjaERlcGVuZGVuY3koKGRlcGVuZGVuY3kpID0+IHtcbiAgICAgIGNvbnN0IHJlbGVhc2VDb250ZXh0ID0gZmluZFJlbGVhc2VDb250ZXh0KGRlcGVuZGVuY3ksIGNvbnRleHQpO1xuXG4gICAgICByZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyhyZWxlYXNlQ29udGV4dCwgY29udGV4dCwgcmVsZWFzZUNvbnRleHRzKTtcbiAgICB9KTtcblxuICAgIHJlbGVhc2VDb250ZXh0cy51bnNoaWZ0KHJlbGVhc2VDb250ZXh0KTtcbiAgfVxuXG4gIHJldHVybiByZWxlYXNlQ29udGV4dHM7XG59XG5cbmZ1bmN0aW9uIGluaXRpYWxpc2VSZWxlYXNlQ29udGV4dChyZWxlYXNlQ29udGV4dCwgY29udGV4dCkge1xuICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgbmFtZSA9IHJlbGVhc2VDb250ZXh0LmdldE5hbWUoKSxcbiAgICAgICAgcmVsZWFzZU5hbWUgPSBuYW1lLCAvLy9cbiAgICAgICAgcmVsZWFzZUNvbnRleHRzID0gcmV0cmlldmVSZWxlYXNlQ29udGV4dHMocmVsZWFzZUNvbnRleHQsIGNvbnRleHQpO1xuXG4gIGxvZy5pbmZvKGBJbml0aWFsaXNpbmcgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0Li4uYCk7XG5cbiAgY29uc3QgeyBGaWxlQ29udGV4dEZyb21GaWxlUGF0aCB9ID0gY29udGV4dDtcblxuICByZWxlYXNlQ29udGV4dC5pbml0aWFsaXNlKHJlbGVhc2VDb250ZXh0cywgRmlsZUNvbnRleHRGcm9tRmlsZVBhdGgpO1xuXG4gIGxvZy5kZWJ1ZyhgLi4uaW5pdGlhbGlzZWQgdGhlICcke3JlbGVhc2VOYW1lfScgcGFja2FnZSBjb250ZXh0LmApO1xufVxuXG5mdW5jdGlvbiBjaGVja0N5Y2xpY0RlcGVuZGVuY3lQcmVzZW50KGRlcGVuZGVuY3ksIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCA9IGZhbHNlO1xuXG4gIGNvbnN0IGRlcGVuZGVuY3lOYW1lID0gZGVwZW5kZW5jeS5nZXROYW1lKCksXG4gICAgICAgIGluZGV4ID0gZGVwZW5kZW50TmFtZXMuaW5kZXhPZihkZXBlbmRlbmN5TmFtZSk7XG5cbiAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICBjb25zdCB7IGxvZyB9ID0gY29udGV4dCxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVudE5hbWVzID0gZGVwZW5kZW50TmFtZXMuc2xpY2UoaW5kZXgpLFxuICAgICAgICAgIGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzID0gW1xuICAgICAgICAgICAgLi4uY2lyY3VsYXJEZXBlbmRlbnROYW1lcyxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lXG4gICAgICAgICAgXSxcbiAgICAgICAgICBjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZyA9IGNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzLmpvaW4oU0lOR0xFX1NQQUNFKTtcblxuICAgIGxvZy53YXJuaW5nKGBUaGVyZSBpcyBhIGN5Y2xpYyBkZXBlbmRlbmN5LCAnJHtjaXJjdWxhckRlcGVuZGVuY3lOYW1lc1N0cmluZ30nLmApO1xuXG4gICAgY3ljbGljRGVwZW5kZW5jeVByZXNlbnQgPSB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGN5Y2xpY0RlcGVuZGVuY3lQcmVzZW50O1xufVxuXG5mdW5jdGlvbiBjaGVja1JlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW5jeSwgZGVwZW5kZW50TmFtZXMsIGNvbnRleHQpIHtcbiAgbGV0IHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSA9IHRydWU7XG5cbiAgY29uc3Qgc2hvcnRlbmVkVmVyc2lvbiA9IGRlcGVuZGVuY3kuZ2V0U2hvcnRlbmVkVmVyc2lvbigpO1xuXG4gIGlmIChzaG9ydGVuZWRWZXJzaW9uICE9PSBudWxsKSB7XG4gICAgY29uc3QgZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbiA9IHJlbGVhc2VDb250ZXh0Lm1hdGNoU2hvcnRlbmVkVmVyc2lvbihzaG9ydGVuZWRWZXJzaW9uKTtcblxuICAgIGlmICghZW50cmllc01hdGNoU2hvcnRlbmVkVmVyc2lvbikge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZUNvbnRleHQuZ2V0VmVyc2lvbigpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZSwgIC8vL1xuICAgICAgICAgICAgdmVyc2lvblN0cmluZyA9IHZlcnNpb24udG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lTdHJpbmcgPSBkZXBlbmRlbmN5LmFzU3RyaW5nKCk7XG5cbiAgICAgIGxvZy53YXJuaW5nKGBUaGUgJyR7ZGVwZW5kZW50TmFtZX0nIGRlcGVuZGVudCByZXF1aXJlcyB0aGUgJyR7ZGVwZW5kZW5jeVN0cmluZ30nIGRlcGVuZGVuY3kgYnV0IGEgY29udGV4dCB3aXRoIHZlcnNpb24gJyR7dmVyc2lvblN0cmluZ30nIHdhcyBwcm92aWRlZC5gKTtcblxuICAgICAgcmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeTtcbn1cblxuZnVuY3Rpb24gY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZShyZWxlYXNlQ29udGV4dCwgZGVwZW5kZW50UmVsZWFzZWQsIGRlcGVuZGVudE5hbWVzLCBjb250ZXh0KSB7XG4gIGxldCBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSA9IGZhbHNlO1xuXG4gIGlmIChkZXBlbmRlbnRSZWxlYXNlZCkge1xuICAgIGNvbnN0IHJlbGVhc2VkID0gcmVsZWFzZUNvbnRleHQuaXNSZWxlYXNlZCgpO1xuXG4gICAgaWYgKCFyZWxlYXNlZCkge1xuICAgICAgY29uc3QgeyBsb2cgfSA9IGNvbnRleHQsXG4gICAgICAgICAgICBuYW1lID0gcmVsZWFzZUNvbnRleHQuZ2V0TmFtZSgpLFxuICAgICAgICAgICAgbGFzdERlcGVuZGVudE5hbWUgPSBsYXN0KGRlcGVuZGVudE5hbWVzKSxcbiAgICAgICAgICAgIGRlcGVuZGVuY3lOYW1lID0gbmFtZSwvLy9cbiAgICAgICAgICAgIGRlcGVuZGVudE5hbWUgPSBsYXN0RGVwZW5kZW50TmFtZTsgIC8vL1xuXG4gICAgICBsb2cud2FybmluZyhgVGhlICcke2RlcGVuZGVuY3lOYW1lfScgZGVwZW5kZW5jeSBpcyBhIHByb2plY3Qgd2hpbHN0IGl0cyAnJHtkZXBlbmRlbnROYW1lfScgZGVwZW5kZW50IGlzIGEgcGFja2FnZS5gKTtcblxuICAgICAgcHJvamVjdERlcGVuZGVuY3lPZlBhY2thZ2UgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBwcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVSZWxlYXNlQ29udGV4dHMiLCJpbml0aWFsaXNlUmVsZWFzZUNvbnRleHRzIiwidmVyaWZ5UmVsZWFzZUNvbnRleHRzIiwibGFzdCIsImFycmF5VXRpbGl0aWVzIiwiZGVwZW5kZW5jeSIsImNvbnRleHQiLCJyZWxlYXNlQ29udGV4dHNDcmVhdGVkIiwiZGVwZW5kZW50TmFtZXMiLCJkZXBlbmRlbnRSZWxlYXNlZCIsInJlbGVhc2VDb250ZXh0Q3JlYXRlZCIsImNyZWF0ZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRzIiwiZm9yRWFjaCIsInJlbGVhc2VDb250ZXh0IiwiaW5pdGlhbGlzZVJlbGVhc2VDb250ZXh0IiwicmVsZWFzZUNvbnRleHRzVmVyaWZ5IiwiYXN5bmNFdmVyeSIsInJlbGVhc2VDb250ZXh0VmVyaWZpZXMiLCJ2ZXJpZnlSZWxlYXNlQ29udGV4dCIsInJlbGVhc2VkIiwiaXNSZWxlYXNlZCIsInZlcmlmaWVkIiwiaGFzVmVyaWZpZWQiLCJsb2ciLCJuYW1lIiwiZ2V0TmFtZSIsInJlbGVhc2VOYW1lIiwiaW5mbyIsInZlcmlmaWVzIiwidmVyaWZ5IiwiZGVwZW5kZW5jeU5hbWUiLCJmaW5kUmVsZWFzZUNvbnRleHQiLCJyZWxlYXNlQ29udGV4dEZvdW5kIiwiZGVwZW5kZW50TmFtZXNMZW5ndGgiLCJsZW5ndGgiLCJkZXBlbmRlbmN5U3RyaW5nIiwiYXNTdHJpbmciLCJsYXN0RGVwZW5kZW50TmFtZSIsImRlcGVuZGVudE5hbWUiLCJyZWxlYXNlQ29udGV4dEZyb21EZXBlbmRlbmN5Iiwid2FybmluZyIsInByb2plY3REZXBlbmRlbmN5T2ZQYWNrYWdlIiwiY2hlY2tQcm9qZWN0RGVwZW5kZW5jeU9mUGFja2FnZSIsInJlbGVhc2VNYXRjaGVzRGVwZW5kZW5jeSIsImNoZWNrUmVsZWFzZU1hdGNoZXNEZXBlbmRlbmN5IiwiZGVwZW5kZW5jeVJlbGVhc2VDb250ZXh0c0NyZWF0ZWQiLCJjcmVhdGVEZXBlbmRlbmN5UmVsZWFzZUNvbnRleHRzIiwiYWRkUmVsZWFzZUNvbnRleHQiLCJkZWJ1ZyIsImRlcGVuZGVuY2llcyIsImdldERlcGVuZGVuY2llcyIsImFycmF5IiwiZ2V0QXJyYXkiLCJjeWNsaWNEZXBlbmRlbmN5UHJlc2VudCIsImNoZWNrQ3ljbGljRGVwZW5kZW5jeVByZXNlbnQiLCJwdXNoIiwiZmluZCIsImRlcGVuZGVuY3lOYW1lTWF0Y2hlcyIsIm1hdGNoRGVwZW5kZW5jeU5hbWUiLCJyZXRyaWV2ZVJlbGVhc2VDb250ZXh0cyIsInJlbGVhc2VDb250ZXh0c0luY2x1ZGVzUmVsZWFzZUNvbnRleHQiLCJpbmNsdWRlcyIsImZvckVhY2hEZXBlbmRlbmN5IiwidW5zaGlmdCIsIkZpbGVDb250ZXh0RnJvbUZpbGVQYXRoIiwiaW5pdGlhbGlzZSIsImluZGV4IiwiaW5kZXhPZiIsImNpcmN1bGFyRGVwZW5kZW50TmFtZXMiLCJzbGljZSIsImNpcmN1bGFyRGVwZW5kZW5jeU5hbWVzIiwiY2lyY3VsYXJEZXBlbmRlbmN5TmFtZXNTdHJpbmciLCJqb2luIiwiU0lOR0xFX1NQQUNFIiwic2hvcnRlbmVkVmVyc2lvbiIsImdldFNob3J0ZW5lZFZlcnNpb24iLCJlbnRyaWVzTWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwibWF0Y2hTaG9ydGVuZWRWZXJzaW9uIiwidmVyc2lvbiIsImdldFZlcnNpb24iLCJ2ZXJzaW9uU3RyaW5nIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7OztRQVNzQkE7ZUFBQUE7O1FBc0N0QjtlQUFBOztRQXhCZ0JDO2VBQUFBOztRQVFNQztlQUFBQTs7OzJCQTdCUzs4QkFFSDsyQkFDQztBQUU3QixNQUFNLEVBQUVDLElBQUksRUFBRSxHQUFHQyx5QkFBYztBQUV4QixlQUFlSixzQkFBc0JLLFVBQVUsRUFBRUMsT0FBTztJQUM3RCxJQUFJQyx5QkFBeUI7SUFFN0IsTUFBTUMsaUJBQWlCLEVBQUUsRUFDbkJDLG9CQUFvQixPQUNwQkMsd0JBQXdCLE1BQU1DLHFCQUFxQk4sWUFBWUcsZ0JBQWdCQyxtQkFBbUJIO0lBRXhHLElBQUlJLHVCQUF1QjtRQUN6QkgseUJBQXlCO0lBQzNCO0lBRUEsT0FBT0E7QUFDVDtBQUVPLFNBQVNOLDBCQUEwQkssT0FBTztJQUMvQyxNQUFNLEVBQUVNLGVBQWUsRUFBRSxHQUFHTjtJQUU1Qk0sZ0JBQWdCQyxPQUFPLENBQUMsQ0FBQ0M7UUFDdkJDLHlCQUF5QkQsZ0JBQWdCUjtJQUMzQztBQUNGO0FBRU8sZUFBZUosc0JBQXNCSSxPQUFPO0lBQ2pELElBQUlVO0lBRUosTUFBTSxFQUFFSixlQUFlLEVBQUUsR0FBR047SUFFNUJVLHdCQUF3QixNQUFNQyxJQUFBQSx3QkFBVSxFQUFDTCxpQkFBaUIsT0FBT0U7UUFDL0QsTUFBTUkseUJBQXlCLE1BQU1DLHFCQUFxQkwsZ0JBQWdCUjtRQUUxRSxJQUFJWSx3QkFBd0I7WUFDMUIsT0FBTztRQUNUO0lBQ0Y7SUFFQSxPQUFPRjtBQUNUO01BRUEsV0FBZTtJQUNiaEI7SUFDQUM7SUFDQUM7QUFDRjtBQUVBLGVBQWVpQixxQkFBcUJMLGNBQWMsRUFBRVIsT0FBTztJQUN6RCxJQUFJWSx5QkFBeUI7SUFFN0IsTUFBTUUsV0FBV04sZUFBZU8sVUFBVSxJQUNwQ0MsV0FBV1IsZUFBZVMsV0FBVztJQUUzQyxJQUFJSCxZQUFZRSxVQUFVO1FBQ3hCSix5QkFBeUI7SUFDM0IsT0FBTztRQUNMLE1BQU0sRUFBRU0sR0FBRyxFQUFFLEdBQUdsQixTQUNWbUIsT0FBT1gsZUFBZVksT0FBTyxJQUM3QkMsY0FBY0YsTUFBTSxHQUFHO1FBRTdCRCxJQUFJSSxJQUFJLENBQUMsQ0FBQyxlQUFlLEVBQUVELFlBQVksWUFBWSxDQUFDO1FBRXBELE1BQU1FLFdBQVcsTUFBTWYsZUFBZWdCLE1BQU07UUFFNUMsSUFBSUQsVUFBVTtZQUNaTCxJQUFJSSxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsRUFBRUQsWUFBWSxVQUFVLENBQUM7WUFFcERULHlCQUF5QjtRQUMzQjtJQUNGO0lBRUEsT0FBT0E7QUFDVDtBQUVBLGVBQWVQLHFCQUFxQk4sVUFBVSxFQUFFRyxjQUFjLEVBQUVDLGlCQUFpQixFQUFFSCxPQUFPO0lBQ3hGLElBQUlJLHdCQUF3QjtJQUU1QixNQUFNLEVBQUVjLEdBQUcsRUFBRSxHQUFHbEIsU0FDVnlCLGlCQUFpQjFCLFdBQVdxQixPQUFPO0lBRXpDLElBQUlaO0lBRUpBLGlCQUFpQmtCLG1CQUFtQjNCLFlBQVlDO0lBRWhELE1BQU0yQixzQkFBdUJuQixtQkFBbUI7SUFFaEQsSUFBSSxDQUFDbUIscUJBQXFCO1FBQ3hCLE1BQU1DLHVCQUF1QjFCLGVBQWUyQixNQUFNLEVBQzVDQyxtQkFBbUIvQixXQUFXZ0MsUUFBUTtRQUU1QyxJQUFJSCx5QkFBeUIsR0FBRztZQUM5QlYsSUFBSUksSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFRyxlQUFlLG9CQUFvQixDQUFDO1FBQ2hFLE9BQU87WUFDTCxNQUFNTyxvQkFBb0JuQyxLQUFLSyxpQkFDekIrQixnQkFBZ0JELG1CQUFvQixHQUFHO1lBRTdDZCxJQUFJSSxJQUFJLENBQUMsQ0FBQyxjQUFjLEVBQUVHLGVBQWUsNkJBQTZCLEVBQUVRLGNBQWMsZUFBZSxFQUFFSCxpQkFBaUIsZUFBZSxDQUFDO1FBQzFJO1FBRUEsTUFBTSxFQUFFSSw0QkFBNEIsRUFBRSxHQUFHbEM7UUFFekNRLGlCQUFpQixNQUFNMEIsNkJBQTZCbkMsWUFBWUM7SUFDbEU7SUFFQSxJQUFJUSxtQkFBbUIsTUFBTTtRQUMzQlUsSUFBSWlCLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRVYsZUFBZSwyRkFBMkYsQ0FBQztJQUNqSSxPQUFPO1FBQ0wsTUFBTVcsNkJBQTZCQyxnQ0FBZ0M3QixnQkFBZ0JMLG1CQUFtQkQsZ0JBQWdCRjtRQUV0SCxJQUFJLENBQUNvQyw0QkFBNEI7WUFDL0IsTUFBTUUsMkJBQTJCQyw4QkFBOEIvQixnQkFBZ0JULFlBQVlHLGdCQUFnQkY7WUFFM0csSUFBSXNDLDBCQUEwQjtnQkFDNUIsSUFBSVgscUJBQXFCO29CQUN2QnZCLHdCQUF3QjtnQkFDMUIsT0FBTztvQkFDTCxNQUFNb0MsbUNBQW1DLE1BQU1DLGdDQUFnQ2pDLGdCQUFnQlQsWUFBWUcsZ0JBQWdCRjtvQkFFM0gsSUFBSXdDLGtDQUFrQzt3QkFDcENFLGtCQUFrQmxDLGdCQUFnQlI7d0JBRWxDSSx3QkFBd0I7b0JBQzFCO2dCQUNGO1lBQ0Y7UUFDRjtRQUVBLElBQUksQ0FBQ3VCLHFCQUFxQjtZQUN4QnZCLHdCQUNFYyxJQUFJeUIsS0FBSyxDQUFDLENBQUMsZ0JBQWdCLEVBQUVsQixlQUFlLGtCQUFrQixDQUFDLElBQzdEUCxJQUFJaUIsT0FBTyxDQUFDLENBQUMseUJBQXlCLEVBQUVWLGVBQWUsa0JBQWtCLENBQUM7UUFDaEY7SUFDRjtJQUVBLE9BQU9yQjtBQUNUO0FBRUEsZUFBZXFDLGdDQUFnQ2pDLGNBQWMsRUFBRVQsVUFBVSxFQUFFRyxjQUFjLEVBQUVGLE9BQU87SUFDaEcsSUFBSXdDO0lBRUosTUFBTXJCLE9BQU9YLGVBQWVZLE9BQU8sSUFDN0JOLFdBQVdOLGVBQWVPLFVBQVUsSUFDcEM2QixlQUFlcEMsZUFBZXFDLGVBQWUsSUFDN0NaLGdCQUFnQmQsTUFDaEJoQixvQkFBb0JXLFVBQVcsR0FBRztJQUV4Q1osaUJBQWlCO1dBQUtBO1FBQWdCK0I7S0FBZSxFQUFHLEdBQUc7SUFFM0QsTUFBTWEsUUFBUUYsYUFBYUcsUUFBUTtJQUVuQ1AsbUNBQW1DLE1BQU03QixJQUFBQSx3QkFBVSxFQUFDbUMsT0FBTyxPQUFPL0M7UUFDaEUsTUFBTWlELDBCQUEwQkMsNkJBQTZCbEQsWUFBWUcsZ0JBQWdCRjtRQUV6RixJQUFJLENBQUNnRCx5QkFBeUI7WUFDNUIsTUFBTTVDLHdCQUF3QixNQUFNQyxxQkFBcUJOLFlBQVlHLGdCQUFnQkMsbUJBQW1CSDtZQUV4RyxJQUFJSSx1QkFBdUI7Z0JBQ3pCLE9BQU87WUFDVDtRQUNGO0lBQ0Y7SUFFQSxPQUFPb0M7QUFDVDtBQUVBLFNBQVNFLGtCQUFrQmxDLGNBQWMsRUFBRVIsT0FBTztJQUNoRCxNQUFNLEVBQUVNLGVBQWUsRUFBRSxHQUFHTjtJQUU1Qk0sZ0JBQWdCNEMsSUFBSSxDQUFDMUM7QUFDdkI7QUFFQSxTQUFTa0IsbUJBQW1CM0IsVUFBVSxFQUFFQyxPQUFPO0lBQzdDLE1BQU0sRUFBRU0sZUFBZSxFQUFFLEdBQUdOLFNBQ3RCeUIsaUJBQWlCMUIsV0FBV3FCLE9BQU8sSUFDbkNaLGlCQUFpQkYsZ0JBQWdCNkMsSUFBSSxDQUFDLENBQUMzQztRQUNyQyxNQUFNNEMsd0JBQXdCNUMsZUFBZTZDLG1CQUFtQixDQUFDNUI7UUFFakUsSUFBSTJCLHVCQUF1QjtZQUN6QixPQUFPO1FBQ1Q7SUFDRixNQUFNO0lBRVosT0FBTzVDO0FBQ1Q7QUFFQSxTQUFTOEMsd0JBQXdCOUMsY0FBYyxFQUFFUixPQUFPLEVBQUVNLGtCQUFrQixFQUFFO0lBQzVFLE1BQU1pRCx3Q0FBd0NqRCxnQkFBZ0JrRCxRQUFRLENBQUNoRDtJQUV2RSxJQUFJLENBQUMrQyx1Q0FBdUM7UUFDMUMsTUFBTVgsZUFBZXBDLGVBQWVxQyxlQUFlO1FBRW5ERCxhQUFhYSxpQkFBaUIsQ0FBQyxDQUFDMUQ7WUFDOUIsTUFBTVMsaUJBQWlCa0IsbUJBQW1CM0IsWUFBWUM7WUFFdERzRCx3QkFBd0I5QyxnQkFBZ0JSLFNBQVNNO1FBQ25EO1FBRUFBLGdCQUFnQm9ELE9BQU8sQ0FBQ2xEO0lBQzFCO0lBRUEsT0FBT0Y7QUFDVDtBQUVBLFNBQVNHLHlCQUF5QkQsY0FBYyxFQUFFUixPQUFPO0lBQ3ZELE1BQU0sRUFBRWtCLEdBQUcsRUFBRSxHQUFHbEIsU0FDVm1CLE9BQU9YLGVBQWVZLE9BQU8sSUFDN0JDLGNBQWNGLE1BQ2RiLGtCQUFrQmdELHdCQUF3QjlDLGdCQUFnQlI7SUFFaEVrQixJQUFJSSxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsRUFBRUQsWUFBWSxvQkFBb0IsQ0FBQztJQUUvRCxNQUFNLEVBQUVzQyx1QkFBdUIsRUFBRSxHQUFHM0Q7SUFFcENRLGVBQWVvRCxVQUFVLENBQUN0RCxpQkFBaUJxRDtJQUUzQ3pDLElBQUl5QixLQUFLLENBQUMsQ0FBQyxvQkFBb0IsRUFBRXRCLFlBQVksa0JBQWtCLENBQUM7QUFDbEU7QUFFQSxTQUFTNEIsNkJBQTZCbEQsVUFBVSxFQUFFRyxjQUFjLEVBQUVGLE9BQU87SUFDdkUsSUFBSWdELDBCQUEwQjtJQUU5QixNQUFNdkIsaUJBQWlCMUIsV0FBV3FCLE9BQU8sSUFDbkN5QyxRQUFRM0QsZUFBZTRELE9BQU8sQ0FBQ3JDO0lBRXJDLElBQUlvQyxRQUFRLENBQUMsR0FBRztRQUNkLE1BQU0sRUFBRTNDLEdBQUcsRUFBRSxHQUFHbEIsU0FDVitELHlCQUF5QjdELGVBQWU4RCxLQUFLLENBQUNILFFBQzlDSSwwQkFBMEI7ZUFDckJGO1lBQ0h0QztTQUNELEVBQ0R5QyxnQ0FBZ0NELHdCQUF3QkUsSUFBSSxDQUFDQyx1QkFBWTtRQUUvRWxELElBQUlpQixPQUFPLENBQUMsQ0FBQywrQkFBK0IsRUFBRStCLDhCQUE4QixFQUFFLENBQUM7UUFFL0VsQiwwQkFBMEI7SUFDNUI7SUFFQSxPQUFPQTtBQUNUO0FBRUEsU0FBU1QsOEJBQThCL0IsY0FBYyxFQUFFVCxVQUFVLEVBQUVHLGNBQWMsRUFBRUYsT0FBTztJQUN4RixJQUFJc0MsMkJBQTJCO0lBRS9CLE1BQU0rQixtQkFBbUJ0RSxXQUFXdUUsbUJBQW1CO0lBRXZELElBQUlELHFCQUFxQixNQUFNO1FBQzdCLE1BQU1FLCtCQUErQi9ELGVBQWVnRSxxQkFBcUIsQ0FBQ0g7UUFFMUUsSUFBSSxDQUFDRSw4QkFBOEI7WUFDakMsTUFBTSxFQUFFckQsR0FBRyxFQUFFLEdBQUdsQixTQUNWeUUsVUFBVWpFLGVBQWVrRSxVQUFVLElBQ25DMUMsb0JBQW9CbkMsS0FBS0ssaUJBQ3pCK0IsZ0JBQWdCRCxtQkFDaEIyQyxnQkFBZ0JGLFFBQVFHLFFBQVEsSUFDaEM5QyxtQkFBbUIvQixXQUFXZ0MsUUFBUTtZQUU1Q2IsSUFBSWlCLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRUYsY0FBYywwQkFBMEIsRUFBRUgsaUJBQWlCLHlDQUF5QyxFQUFFNkMsY0FBYyxlQUFlLENBQUM7WUFFeEpyQywyQkFBMkI7UUFDN0I7SUFDRjtJQUVBLE9BQU9BO0FBQ1Q7QUFFQSxTQUFTRCxnQ0FBZ0M3QixjQUFjLEVBQUVMLGlCQUFpQixFQUFFRCxjQUFjLEVBQUVGLE9BQU87SUFDakcsSUFBSW9DLDZCQUE2QjtJQUVqQyxJQUFJakMsbUJBQW1CO1FBQ3JCLE1BQU1XLFdBQVdOLGVBQWVPLFVBQVU7UUFFMUMsSUFBSSxDQUFDRCxVQUFVO1lBQ2IsTUFBTSxFQUFFSSxHQUFHLEVBQUUsR0FBR2xCLFNBQ1ZtQixPQUFPWCxlQUFlWSxPQUFPLElBQzdCWSxvQkFBb0JuQyxLQUFLSyxpQkFDekJ1QixpQkFBaUJOLE1BQ2pCYyxnQkFBZ0JELG1CQUFvQixHQUFHO1lBRTdDZCxJQUFJaUIsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFVixlQUFlLHNDQUFzQyxFQUFFUSxjQUFjLHlCQUF5QixDQUFDO1lBRW5IRyw2QkFBNkI7UUFDL0I7SUFDRjtJQUVBLE9BQU9BO0FBQ1QifQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "occam-languages",
3
3
  "author": "James Smith",
4
- "version": "0.0.138",
4
+ "version": "0.0.140",
5
5
  "license": "MIT, Anti-996",
6
6
  "homepage": "https://github.com/djalbat/occam-languages",
7
7
  "description": "Occam's common language functionality.",
@@ -12,6 +12,8 @@ export function fileContextsFromJSON(json, fileContexts, releaseContext, FileCon
12
12
  fileContext = FileContext.fromJSON(json, releaseContext);
13
13
 
14
14
  fileContexts.push(fileContext);
15
+
16
+ fileContext.initialise();
15
17
  }
16
18
  });
17
19
  }
@@ -81,7 +81,7 @@ async function verifyReleaseContext(releaseContext, context) {
81
81
  async function createReleaseContext(dependency, dependentNames, dependentReleased, context) {
82
82
  let releaseContextCreated = false;
83
83
 
84
- const { log, releaseContextFromDependency } = context,
84
+ const { log } = context,
85
85
  dependencyName = dependency.getName();
86
86
 
87
87
  let releaseContext;
@@ -103,6 +103,8 @@ async function createReleaseContext(dependency, dependentNames, dependentRelease
103
103
  log.info(`Creating the '${dependencyName}' package context given the '${dependentName}' dependant's '${dependencyString}' dependency...`);
104
104
  }
105
105
 
106
+ const { releaseContextFromDependency } = context;
107
+
106
108
  releaseContext = await releaseContextFromDependency(dependency, context);
107
109
  }
108
110
 
@@ -121,9 +123,7 @@ async function createReleaseContext(dependency, dependentNames, dependentRelease
121
123
  const dependencyReleaseContextsCreated = await createDependencyReleaseContexts(releaseContext, dependency, dependentNames, context);
122
124
 
123
125
  if (dependencyReleaseContextsCreated) {
124
- const { releaseContexts } = context;
125
-
126
- releaseContexts.push(releaseContext);
126
+ addReleaseContext(releaseContext, context);
127
127
 
128
128
  releaseContextCreated = true;
129
129
  }
@@ -169,6 +169,12 @@ async function createDependencyReleaseContexts(releaseContext, dependency, depen
169
169
  return dependencyReleaseContextsCreated;
170
170
  }
171
171
 
172
+ function addReleaseContext(releaseContext, context) {
173
+ const { releaseContexts } = context;
174
+
175
+ releaseContexts.push(releaseContext);
176
+ }
177
+
172
178
  function findReleaseContext(dependency, context) {
173
179
  const { releaseContexts } = context,
174
180
  dependencyName = dependency.getName(),
@@ -202,13 +208,15 @@ function retrieveReleaseContexts(releaseContext, context, releaseContexts = [])
202
208
  }
203
209
 
204
210
  function initialiseReleaseContext(releaseContext, context) {
205
- const { log, FileContextFromFilePath } = context,
211
+ const { log } = context,
206
212
  name = releaseContext.getName(),
207
213
  releaseName = name, ///
208
214
  releaseContexts = retrieveReleaseContexts(releaseContext, context);
209
215
 
210
216
  log.info(`Initialising the '${releaseName}' package context...`);
211
217
 
218
+ const { FileContextFromFilePath } = context;
219
+
212
220
  releaseContext.initialise(releaseContexts, FileContextFromFilePath);
213
221
 
214
222
  log.debug(`...initialised the '${releaseName}' package context.`);