@sapui5/sap.fe.macros 1.127.3 → 1.127.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sapui5/sap.fe.macros",
3
- "version": "1.127.3",
3
+ "version": "1.127.4",
4
4
  "description": "SAPUI5 Library sap.fe.macros",
5
5
  "keywords": [
6
6
  "sapui5",
@@ -6,7 +6,7 @@
6
6
  SAP UI development toolkit for HTML5 (SAPUI5)
7
7
  (c) Copyright 2009-2021 SAP SE. All rights reserved
8
8
  </copyright>
9
- <version>1.127.3</version>
9
+ <version>1.127.4</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.macros</documentation>
12
12
 
@@ -138,11 +138,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
138
138
  for (let oDependent of aDependents) {
139
139
  let oTargetDependent = oDependent;
140
140
  if (oModifier) {
141
- if (oModifier.getControlType(oDependent) === "sap.fe.macros.ValueHelp" && (await oModifier.getProperty(oDependent, "metaPath")) === mParameters.metaPath) {
142
- // in xml validate against the metaPath of the ValueHelp
143
- return true;
144
- } else if (oModifier.getControlType(oDependent) === "sap.fe.macros.ValueHelp" && oModifier.targets !== "xmlTree") {
145
- // in xml validate against the metaPath of the ValueHelp
141
+ if (oModifier.getControlType(oDependent) === "sap.fe.macros.ValueHelp" && oModifier.targets !== "xmlTree") {
146
142
  oTargetDependent = oDependent.getContent();
147
143
  }
148
144
  if (oTargetDependent && oModifier.getId(oTargetDependent) === sGeneratedId) {
@@ -225,4 +221,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/helpers/S
225
221
  };
226
222
  return DelegateUtil;
227
223
  }, false);
228
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOU19NQUNST0RBVEEiLCJfcmV0cmlldmVNb2RlbCIsImNvbnRyb2wiLCJkZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJzTW9kZWxOYW1lIiwibW9kZWxOYW1lIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJyZXNvbHZlIiwiYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwiZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllciIsInByb3BlcnR5IiwibW9kaWZpZXIiLCJjdXN0b21EYXRhIiwiRGVsZWdhdGVVdGlsIiwicmV0cmlldmVDdXN0b21EYXRhTm9kZSIsImxlbmd0aCIsImdldFByb3BlcnR5IiwidW5kZWZpbmVkIiwiRkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZIiwic2V0Q2FjaGVkUHJvcGVydGllcyIsImZldGNoZWRQcm9wZXJ0aWVzIiwid2luZG93IiwiRWxlbWVudCIsImtleSIsInNldEN1c3RvbURhdGEiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0Q3VzdG9tRGF0YSIsIm9Db250cm9sIiwic1Byb3BlcnR5Iiwib01vZGlmaWVyIiwiZ2V0QXR0cmlidXRlTlMiLCJkYXRhIiwiRnVuY3Rpb24iLCJ2VmFsdWUiLCJzZXRBdHRyaWJ1dGVOUyIsImZldGNoUHJvcGVydGllc0ZvckVudGl0eSIsInNFbnRpdHlTZXQiLCJvTWV0YU1vZGVsIiwicmVxdWVzdE9iamVjdCIsImZldGNoQW5ub3RhdGlvbnNGb3JFbnRpdHkiLCJmZXRjaE1vZGVsIiwiUHJvbWlzZSIsImdldERlbGVnYXRlIiwicGF5bG9hZCIsIm9Db250ZXh0IiwiY2FsbCIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50Iiwic0ZyYWdtZW50TmFtZSIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIm9PcHRpb25zIiwiQ29tbW9uVXRpbHMiLCJkb2VzVmFsdWVIZWxwRXhpc3QiLCJtUGFyYW1ldGVycyIsInNQcm9wZXJ0eU5hbWUiLCJzVmFsdWVIZWxwVHlwZSIsInNPcmlnaW5hbFByb3BlcnR5Iiwic0JpbmRpbmdQYXRoIiwib1Byb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic1ZhbHVlSGVscFByb3BlcnR5IiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eSIsImJJc0Fic29sdXRlIiwiaW5kZXhPZiIsImluY2x1ZGVzIiwiZ2V0T2JqZWN0Iiwic0dlbmVyYXRlZElkIiwiZ2VuZXJhdGVJRCIsImZsZXhJZCIsImdlbmVyYXRlIiwiZ2V0SWQiLCJnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCIsImNvbnRleHQiLCJnZXRQYXRoIiwidGhlbiIsImdldEFnZ3JlZ2F0aW9uIiwiYURlcGVuZGVudHMiLCJvRGVwZW5kZW50Iiwib1RhcmdldERlcGVuZGVudCIsImdldENvbnRyb2xUeXBlIiwibWV0YVBhdGgiLCJ0YXJnZXRzIiwiZ2V0Q29udGVudCIsImlzQSIsImlzVmFsdWVIZWxwUmVxdWlyZWQiLCJiSW5GaWx0ZXJGaWVsZCIsImJSZWFkT25seSIsImFsbCIsImFSZXN1bHRzIiwiY2F0Y2giLCJvRXJyb3IiLCJMb2ciLCJ3YXJuaW5nIiwiaXNNdWx0aVZhbHVlIiwib1Byb3BlcnR5IiwiYklzTXVsdGlWYWx1ZSIsImZpbHRlckV4cHJlc3Npb24iLCJ0eXBlIiwicHJvcGVydHlLZXkiLCJhUmV0cmlldmVkQ3VzdG9tRGF0YSIsImJpbmQiLCJvQ3VzdG9tRGF0YSIsInB1c2giXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlbGVnYXRlVXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sdW1uRXhwb3J0U2V0dGluZ3MsXG5cdEN1c3RvbUJhc2VkVGFibGVDb2x1bW4sXG5cdEV4dGVuc2lvbkZvckFuYWx5dGljcyxcblx0UHJvcGVydHlUeXBlQ29uZmlnLFxuXHRWaXN1YWxTZXR0aW5nc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZW5lcmF0ZSB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1N0YWJsZUlkSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IERpc3BsYXlNb2RlIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGlzcGxheU1vZGVGb3JtYXR0ZXJcIjtcbmltcG9ydCB7IGdldFJlbGF0aXZlUHJvcGVydHlQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvUHJvcGVydHlGb3JtYXR0ZXJzXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlSUQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVIZWxwVGVtcGxhdGluZ1wiO1xuaW1wb3J0IHR5cGUgVmFsdWVIZWxwIGZyb20gXCJzYXAvZmUvbWFjcm9zL1ZhbHVlSGVscFwiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuXG5jb25zdCBOU19NQUNST0RBVEEgPSBcImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIjtcblxuZXhwb3J0IHR5cGUgdGFibGVEZWxlZ2F0ZU1vZGVsID0ge1xuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGg6IGJvb2xlYW47XG5cdHJlYWRPbmx5OiBib29sZWFuO1xuXHR0YWJsZVR5cGU6IHN0cmluZztcblx0b25DaGFuZ2U6IEZ1bmN0aW9uO1xuXHRpZDogc3RyaW5nO1xuXHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGNvbHVtbkluZm86IEN1c3RvbUVsZW1lbnQ8Q3VzdG9tQmFzZWRUYWJsZUNvbHVtbj47XG5cdGNvbGxlY3Rpb246IHtcblx0XHRzUGF0aDogc3RyaW5nO1xuXHRcdG9Nb2RlbDogc3RyaW5nO1xuXHR9O1xuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5SW5mbyA9IHtcblx0YWRkaXRpb25hbExhYmVscz86IHN0cmluZ1tdO1xuXHRjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogQ29sdW1uRXhwb3J0U2V0dGluZ3MgfCBudWxsO1xuXHRjbGlwYm9hcmRTZXR0aW5ncz86IE9iamVjdCB8IG51bGw7XG5cdGZvcm1hdE9wdGlvbnM/OiBPYmplY3QgfCBudWxsO1xuXHRmaWx0ZXJhYmxlPzogYm9vbGVhbjtcblx0Z3JvdXA/OiBzdHJpbmc7XG5cdGdyb3VwYWJsZT86IGJvb2xlYW47XG5cdGdyb3VwTGFiZWw/OiBzdHJpbmc7XG5cdGlzS2V5PzogYm9vbGVhbjtcblx0bGFiZWw/OiBzdHJpbmc7XG5cdG1heENvbmRpdGlvbnM/OiBudW1iZXI7XG5cdG1ldGFkYXRhUGF0aD86IHN0cmluZztcblx0bW9kZT86IERpc3BsYXlNb2RlO1xuXHRuYW1lOiBzdHJpbmc7XG5cdGtleT86IHN0cmluZztcblx0cGF0aD86IHN0cmluZztcblx0cHJvcGVydHlJbmZvcz86IHN0cmluZ1tdO1xuXHRyZWxhdGl2ZVBhdGg/OiBzdHJpbmc7XG5cdHNvcnRhYmxlPzogYm9vbGVhbjtcblx0c29ydERpcmVjdGlvbj86IHN0cmluZztcblx0dGV4dD86IHN0cmluZztcblx0dG9vbHRpcD86IHN0cmluZztcblx0dHlwZUNvbmZpZz86IFByb3BlcnR5VHlwZUNvbmZpZztcblx0dHlwZT86IHN0cmluZztcblx0dW5pdD86IHN0cmluZztcblx0dmFsdWVQcm9wZXJ0eT86IHN0cmluZztcblx0dmlzaWJsZT86IGJvb2xlYW47XG5cdHZpc3VhbFNldHRpbmdzPzogVmlzdWFsU2V0dGluZ3M7XG5cdGV4cG9ydERhdGFQb2ludFRhcmdldFZhbHVlPzogc3RyaW5nO1xuXHRpc1BhcmFtZXRlcj86IGJvb2xlYW47XG5cdGFnZ3JlZ2F0YWJsZT86IGJvb2xlYW47XG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcblx0ZXh0ZW5zaW9uPzogRXh0ZW5zaW9uRm9yQW5hbHl0aWNzO1xufTtcblxuZnVuY3Rpb24gX3JldHJpZXZlTW9kZWwodGhpczogeyBtb2RlbE5hbWU6IHN0cmluZzsgY29udHJvbDogYW55OyByZXNvbHZlOiBGdW5jdGlvbiB9KSB7XG5cdHRoaXMuY29udHJvbC5kZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UoX3JldHJpZXZlTW9kZWwsIHRoaXMpO1xuXHRjb25zdCBzTW9kZWxOYW1lID0gdGhpcy5tb2RlbE5hbWUsXG5cdFx0b01vZGVsID0gdGhpcy5jb250cm9sLmdldE1vZGVsKHNNb2RlbE5hbWUpO1xuXG5cdGlmIChvTW9kZWwpIHtcblx0XHR0aGlzLnJlc29sdmUob01vZGVsKTtcblx0fSBlbHNlIHtcblx0XHR0aGlzLmNvbnRyb2wuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKF9yZXRyaWV2ZU1vZGVsLCB0aGlzKTtcblx0fVxufVxuZXhwb3J0IHR5cGUgTW9kaWZpZXIgPSB7XG5cdGdldEFnZ3JlZ2F0aW9uOiBGdW5jdGlvbjtcblx0Z2V0UHJvcGVydHk6IEZ1bmN0aW9uO1xuXHRzZXRQcm9wZXJ0eTogRnVuY3Rpb247XG5cdGluc2VydEFnZ3JlZ2F0aW9uOiBGdW5jdGlvbjtcbn07XG5hc3luYyBmdW5jdGlvbiBnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyKGNvbnRyb2w6IFVJNUVsZW1lbnQsIHByb3BlcnR5OiBzdHJpbmcsIG1vZGlmaWVyOiBNb2RpZmllcik6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG5cdGNvbnN0IGN1c3RvbURhdGEgPSBhd2FpdCBEZWxlZ2F0ZVV0aWwucmV0cmlldmVDdXN0b21EYXRhTm9kZShjb250cm9sLCBwcm9wZXJ0eSwgbW9kaWZpZXIpO1xuXHRpZiAoY3VzdG9tRGF0YS5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gbW9kaWZpZXIuZ2V0UHJvcGVydHkoY3VzdG9tRGF0YVswXSwgXCJ2YWx1ZVwiKTtcblx0fSBlbHNlIHtcblx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59XG5cbmNvbnN0IERlbGVnYXRlVXRpbCA9IHtcblx0RkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZOiBcInNhcF9mZV9Db250cm9sRGVsZWdhdGVfcHJvcGVydHlJbmZvTWFwXCIsXG5cdHNldENhY2hlZFByb3BlcnRpZXMoY29udHJvbDogYW55LCBmZXRjaGVkUHJvcGVydGllczogUHJvcGVydHlJbmZvW10pIHtcblx0XHQvLyBkbyBub3QgY2FjaGUgZHVyaW5nIHRlbXBsYXRpbmcsIGVsc2UgaXQgYmVjb21lcyBwYXJ0IG9mIHRoZSBjYWNoZWQgdmlld1xuXHRcdGlmIChjb250cm9sIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qga2V5ID0gRGVsZWdhdGVVdGlsLkZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWTtcblx0XHREZWxlZ2F0ZVV0aWwuc2V0Q3VzdG9tRGF0YShjb250cm9sLCBrZXksIGZldGNoZWRQcm9wZXJ0aWVzKTtcblx0fSxcblx0Z2V0Q2FjaGVkUHJvcGVydGllcyhjb250cm9sOiBhbnkpOiBQcm9wZXJ0eUluZm9bXSB8IG51bGwge1xuXHRcdC8vIHByb3BlcnRpZXMgYXJlIG5vdCBjYWNoZWQgZHVyaW5nIHRlbXBsYXRpbmdcblx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3Qga2V5ID0gRGVsZWdhdGVVdGlsLkZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWTtcblx0XHRyZXR1cm4gRGVsZWdhdGVVdGlsLmdldEN1c3RvbURhdGEoY29udHJvbCwga2V5KTtcblx0fSxcblxuXHRnZXRDdXN0b21EYXRhKG9Db250cm9sOiBhbnksIHNQcm9wZXJ0eTogYW55LCBvTW9kaWZpZXI/OiBhbnkpIHtcblx0XHQvLyBJZiBNb2RpZmllciBpcyBnaXZlbiwgdGhlIG1ldGhvZCBtdXN0IGV4ZWN1dGUgYXN5bmNocm9ub3VzbHkgYW5kIHJldHVybiBhIFByb21pc2Vcblx0XHRpZiAob01vZGlmaWVyKSB7XG5cdFx0XHRyZXR1cm4gZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcihvQ29udHJvbCwgc1Byb3BlcnR5LCBvTW9kaWZpZXIpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQvLyBEZWxlZ2F0ZSBpbnZva2VkIGZyb20gYSBub24tZmxleCBjaGFuZ2UgLSBGaWx0ZXJCYXJEZWxlZ2F0ZS5fYWRkUDEzbkl0ZW0gZm9yIE9QIHRhYmxlIGZpbHRlcmluZywgRmlsdGVyQmFyRGVsZWdhdGUuZmV0Y2hQcm9wZXJ0aWVzIGV0Yy5cblx0XHRcdGlmIChvQ29udHJvbCAmJiBzUHJvcGVydHkpIHtcblx0XHRcdFx0aWYgKG9Db250cm9sIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcblx0XHRcdFx0XHRyZXR1cm4gb0NvbnRyb2wuZ2V0QXR0cmlidXRlTlMoTlNfTUFDUk9EQVRBLCBzUHJvcGVydHkpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvQ29udHJvbC5kYXRhIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblx0XHRcdFx0XHRyZXR1cm4gb0NvbnRyb2wuZGF0YShzUHJvcGVydHkpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHRcdH1cblx0fSxcblx0c2V0Q3VzdG9tRGF0YShvQ29udHJvbDogYW55LCBzUHJvcGVydHk6IGFueSwgdlZhbHVlOiBhbnkpIHtcblx0XHRpZiAob0NvbnRyb2wgJiYgc1Byb3BlcnR5KSB7XG5cdFx0XHRpZiAob0NvbnRyb2wgaW5zdGFuY2VvZiB3aW5kb3cuRWxlbWVudCkge1xuXHRcdFx0XHRyZXR1cm4gb0NvbnRyb2wuc2V0QXR0cmlidXRlTlMoTlNfTUFDUk9EQVRBLCBgY3VzdG9tRGF0YToke3NQcm9wZXJ0eX1gLCB2VmFsdWUpO1xuXHRcdFx0fVxuXHRcdFx0aWYgKG9Db250cm9sLmRhdGEgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXHRcdFx0XHRyZXR1cm4gb0NvbnRyb2wuZGF0YShzUHJvcGVydHksIHZWYWx1ZSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRmZXRjaFByb3BlcnRpZXNGb3JFbnRpdHkoc0VudGl0eVNldDogYW55LCBvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRyZXR1cm4gb01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NFbnRpdHlTZXR9L2ApO1xuXHR9LFxuXHRmZXRjaEFubm90YXRpb25zRm9yRW50aXR5KHNFbnRpdHlTZXQ6IGFueSwgb01ldGFNb2RlbDogYW55KSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzRW50aXR5U2V0fUBgKTtcblx0fSxcblx0ZmV0Y2hNb2RlbChvQ29udHJvbDogYW55KTogUHJvbWlzZTxNb2RlbD4ge1xuXHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuXHRcdFx0Y29uc3Qgc01vZGVsTmFtZSA9IG9Db250cm9sLmdldERlbGVnYXRlKCkucGF5bG9hZCAmJiBvQ29udHJvbC5nZXREZWxlZ2F0ZSgpLnBheWxvYWQubW9kZWxOYW1lLFxuXHRcdFx0XHRvQ29udGV4dCA9IHsgbW9kZWxOYW1lOiBzTW9kZWxOYW1lLCBjb250cm9sOiBvQ29udHJvbCwgcmVzb2x2ZTogcmVzb2x2ZSB9O1xuXHRcdFx0X3JldHJpZXZlTW9kZWwuY2FsbChvQ29udGV4dCk7XG5cdFx0fSk7XG5cdH0sXG5cdHRlbXBsYXRlQ29udHJvbEZyYWdtZW50KHNGcmFnbWVudE5hbWU6IGFueSwgb1ByZXByb2Nlc3NvclNldHRpbmdzOiBhbnksIG9PcHRpb25zOiBhbnksIG9Nb2RpZmllcj86IGFueSkge1xuXHRcdHJldHVybiBDb21tb25VdGlscy50ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChzRnJhZ21lbnROYW1lLCBvUHJlcHJvY2Vzc29yU2V0dGluZ3MsIG9PcHRpb25zLCBvTW9kaWZpZXIpO1xuXHR9LFxuXHRkb2VzVmFsdWVIZWxwRXhpc3QobVBhcmFtZXRlcnM6IGFueSkge1xuXHRcdGNvbnN0IHNQcm9wZXJ0eU5hbWUgPSBtUGFyYW1ldGVycy5zUHJvcGVydHlOYW1lIHx8IFwiXCI7XG5cdFx0Y29uc3Qgc1ZhbHVlSGVscFR5cGUgPSBtUGFyYW1ldGVycy5zVmFsdWVIZWxwVHlwZSB8fCBcIlwiO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSBtUGFyYW1ldGVycy5vTWV0YU1vZGVsO1xuXHRcdGNvbnN0IG9Nb2RpZmllciA9IG1QYXJhbWV0ZXJzLm9Nb2RpZmllcjtcblx0XHRjb25zdCBzT3JpZ2luYWxQcm9wZXJ0eSA9IGAke21QYXJhbWV0ZXJzLnNCaW5kaW5nUGF0aH0vJHtzUHJvcGVydHlOYW1lfWA7XG5cdFx0Y29uc3Qgb1Byb3BlcnR5Q29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc09yaWdpbmFsUHJvcGVydHkpO1xuXHRcdGxldCBzVmFsdWVIZWxwUHJvcGVydHkgPSBGaWVsZEhlbHBlci52YWx1ZUhlbHBQcm9wZXJ0eShvUHJvcGVydHlDb250ZXh0KTtcblx0XHRjb25zdCBiSXNBYnNvbHV0ZSA9IG1QYXJhbWV0ZXJzLnNCaW5kaW5nUGF0aCAmJiBtUGFyYW1ldGVycy5zQmluZGluZ1BhdGguaW5kZXhPZihcIi9cIikgPT09IDA7XG5cblx0XHQvLyB1bml0L2N1cnJlbmN5XG5cdFx0aWYgKHNWYWx1ZUhlbHBQcm9wZXJ0eS5pbmNsdWRlcyhcIiRQYXRoXCIpKSB7XG5cdFx0XHRzVmFsdWVIZWxwUHJvcGVydHkgPSBvTWV0YU1vZGVsLmdldE9iamVjdChzVmFsdWVIZWxwUHJvcGVydHkpO1xuXHRcdH1cblx0XHRpZiAoYklzQWJzb2x1dGUgJiYgc1ZhbHVlSGVscFByb3BlcnR5LmluZGV4T2YoXCIvXCIpICE9PSAwKSB7XG5cdFx0XHRzVmFsdWVIZWxwUHJvcGVydHkgPSBgJHttUGFyYW1ldGVycy5zQmluZGluZ1BhdGh9LyR7c1ZhbHVlSGVscFByb3BlcnR5fWA7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc0dlbmVyYXRlZElkID0gZ2VuZXJhdGVJRChcblx0XHRcdG1QYXJhbWV0ZXJzLmZsZXhJZCxcblx0XHRcdGdlbmVyYXRlKFtvTW9kaWZpZXIgPyBvTW9kaWZpZXIuZ2V0SWQobVBhcmFtZXRlcnMub0NvbnRyb2wpIDogbVBhcmFtZXRlcnMub0NvbnRyb2wuZ2V0SWQoKSwgc1ZhbHVlSGVscFR5cGVdKSxcblx0XHRcdGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKG9Qcm9wZXJ0eUNvbnRleHQuZ2V0UHJvcGVydHkoc09yaWdpbmFsUHJvcGVydHkpLCB7XG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRnZXRNb2RlbDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWw7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQYXRoOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc09yaWdpbmFsUHJvcGVydHk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGFzIGFueVxuXHRcdFx0fSksXG5cdFx0XHRnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aChvUHJvcGVydHlDb250ZXh0LmdldFByb3BlcnR5KHNWYWx1ZUhlbHBQcm9wZXJ0eSksIHtcblx0XHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHRcdGdldE1vZGVsOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbVBhcmFtZXRlcnMub01ldGFNb2RlbDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFBhdGg6ICgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBzVmFsdWVIZWxwUHJvcGVydHk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGFzIGFueVxuXHRcdFx0fSlcblx0XHQpO1xuXG5cdFx0cmV0dXJuIFByb21pc2UucmVzb2x2ZSgpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdGlmIChvTW9kaWZpZXIpIHtcblx0XHRcdFx0XHRyZXR1cm4gb01vZGlmaWVyLmdldEFnZ3JlZ2F0aW9uKG1QYXJhbWV0ZXJzLm9Db250cm9sLCBcImRlcGVuZGVudHNcIik7XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIG1QYXJhbWV0ZXJzLm9Db250cm9sLmdldEFnZ3JlZ2F0aW9uKFwiZGVwZW5kZW50c1wiKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihhc3luYyBmdW5jdGlvbiAoYURlcGVuZGVudHM6IFVJNUVsZW1lbnRbXSkge1xuXHRcdFx0XHRpZiAoYURlcGVuZGVudHMpIHtcblx0XHRcdFx0XHRmb3IgKGxldCBvRGVwZW5kZW50IG9mIGFEZXBlbmRlbnRzKSB7XG5cdFx0XHRcdFx0XHRsZXQgb1RhcmdldERlcGVuZGVudDogVUk1RWxlbWVudCB8IHVuZGVmaW5lZCA9IG9EZXBlbmRlbnQ7XG5cdFx0XHRcdFx0XHRpZiAob01vZGlmaWVyKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChcblx0XHRcdFx0XHRcdFx0XHRvTW9kaWZpZXIuZ2V0Q29udHJvbFR5cGUob0RlcGVuZGVudCkgPT09IFwic2FwLmZlLm1hY3Jvcy5WYWx1ZUhlbHBcIiAmJlxuXHRcdFx0XHRcdFx0XHRcdChhd2FpdCBvTW9kaWZpZXIuZ2V0UHJvcGVydHkob0RlcGVuZGVudCwgXCJtZXRhUGF0aFwiKSkgPT09IG1QYXJhbWV0ZXJzLm1ldGFQYXRoXG5cdFx0XHRcdFx0XHRcdCkge1xuXHRcdFx0XHRcdFx0XHRcdC8vIGluIHhtbCB2YWxpZGF0ZSBhZ2FpbnN0IHRoZSBtZXRhUGF0aCBvZiB0aGUgVmFsdWVIZWxwXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoXG5cdFx0XHRcdFx0XHRcdFx0b01vZGlmaWVyLmdldENvbnRyb2xUeXBlKG9EZXBlbmRlbnQpID09PSBcInNhcC5mZS5tYWNyb3MuVmFsdWVIZWxwXCIgJiZcblx0XHRcdFx0XHRcdFx0XHRvTW9kaWZpZXIudGFyZ2V0cyAhPT0gXCJ4bWxUcmVlXCJcblx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0Ly8gaW4geG1sIHZhbGlkYXRlIGFnYWluc3QgdGhlIG1ldGFQYXRoIG9mIHRoZSBWYWx1ZUhlbHBcblx0XHRcdFx0XHRcdFx0XHRvVGFyZ2V0RGVwZW5kZW50ID0gKG9EZXBlbmRlbnQgYXMgVmFsdWVIZWxwKS5nZXRDb250ZW50KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKG9UYXJnZXREZXBlbmRlbnQgJiYgb01vZGlmaWVyLmdldElkKG9UYXJnZXREZXBlbmRlbnQpID09PSBzR2VuZXJhdGVkSWQpIHtcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0aWYgKG9EZXBlbmRlbnQuaXNBPFZhbHVlSGVscD4oXCJzYXAuZmUubWFjcm9zLlZhbHVlSGVscFwiKSkge1xuXHRcdFx0XHRcdFx0XHRcdG9UYXJnZXREZXBlbmRlbnQgPSBvRGVwZW5kZW50LmdldENvbnRlbnQoKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAob1RhcmdldERlcGVuZGVudD8uZ2V0SWQoKSA9PT0gc0dlbmVyYXRlZElkKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fSk7XG5cdH0sXG5cdGlzVmFsdWVIZWxwUmVxdWlyZWQobVBhcmFtZXRlcnM6IGFueSwgYkluRmlsdGVyRmllbGQ/OiBib29sZWFuKSB7XG5cdFx0Y29uc3Qgc1Byb3BlcnR5TmFtZSA9IG1QYXJhbWV0ZXJzLnNQcm9wZXJ0eU5hbWUgfHwgXCJcIixcblx0XHRcdG9NZXRhTW9kZWwgPSBtUGFyYW1ldGVycy5vTWV0YU1vZGVsLFxuXHRcdFx0c1Byb3BlcnR5ID0gYCR7bVBhcmFtZXRlcnMuc0JpbmRpbmdQYXRofS8ke3NQcm9wZXJ0eU5hbWV9YCxcblx0XHRcdG9Qcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNQcm9wZXJ0eSksXG5cdFx0XHRzVmFsdWVIZWxwUHJvcGVydHkgPSBGaWVsZEhlbHBlci52YWx1ZUhlbHBQcm9wZXJ0eShvUHJvcGVydHlDb250ZXh0LCBiSW5GaWx0ZXJGaWVsZCk7XG5cblx0XHRyZXR1cm4gdGhpcy5nZXRDdXN0b21EYXRhKG1QYXJhbWV0ZXJzLm9Db250cm9sLCBcImRpc3BsYXlNb2RlUHJvcGVydHlCaW5kaW5nXCIsIG1QYXJhbWV0ZXJzLm9Nb2RpZmllcilcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChiUmVhZE9ubHk6IGFueSkge1xuXHRcdFx0XHQvLyBDaGVjayB3aGV0aGVyIHRoZSBjb250cm9sIGlzIHJlYWQtb25seS4gSWYgeWVzLCBubyBuZWVkIG9mIGEgdmFsdWUgaGVscC5cblx0XHRcdFx0YlJlYWRPbmx5ID0gdHlwZW9mIGJSZWFkT25seSA9PT0gXCJib29sZWFuXCIgPyBiUmVhZE9ubHkgOiBiUmVhZE9ubHkgPT09IFwidHJ1ZVwiO1xuXHRcdFx0XHRpZiAoYlJlYWRPbmx5KSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIEVsc2UsIGNoZWNrIHdoZXRoZXIgVmFsdWUgSGVscCByZWxldmFudCBhbm5vdGF0aW9uIGV4aXN0cyBmb3IgdGhlIHByb3BlcnR5LlxuXHRcdFx0XHQvLyBUT0RPIHVzZSBQcm9wZXJ0eUZvcm1hdHRlci5oYXNWYWx1ZUhlbHAgKCkgPT4gaWYgZG9pbmcgc28sIFFVbml0IHRlc3RzIGZhaWwgZHVlIHRvIG1vY2tlZCBtb2RlbCBpbXBsZW1lbnRhdGlvblxuXHRcdFx0XHRyZXR1cm4gUHJvbWlzZS5hbGwoW1xuXHRcdFx0XHRcdG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzVmFsdWVIZWxwUHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RXaXRoRml4ZWRWYWx1ZXNgKSxcblx0XHRcdFx0XHRvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c1ZhbHVlSGVscFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0UmVmZXJlbmNlc2ApLFxuXHRcdFx0XHRcdG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzVmFsdWVIZWxwUHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RNYXBwaW5nYCksXG5cdFx0XHRcdFx0b01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NWYWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdGApXG5cdFx0XHRcdF0pO1xuXHRcdFx0fSlcblx0XHRcdC50aGVuKGZ1bmN0aW9uIChhUmVzdWx0czogYW55W10pIHtcblx0XHRcdFx0cmV0dXJuICEhYVJlc3VsdHNbMF0gfHwgISFhUmVzdWx0c1sxXSB8fCAhIWFSZXN1bHRzWzJdIHx8ICEhYVJlc3VsdHNbM107XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRMb2cud2FybmluZyhcIkVycm9yIHdoaWxlIHJldHJpZXZpbmcgY3VzdG9tIGRhdGEgLyB2YWx1ZSBsaXN0IGFubm90YXRpb24gdmFsdWVzXCIsIG9FcnJvcik7XG5cdFx0XHR9KTtcblx0fSxcblx0aXNNdWx0aVZhbHVlKG9Qcm9wZXJ0eTogYW55KSB7XG5cdFx0bGV0IGJJc011bHRpVmFsdWUgPSB0cnVlO1xuXHRcdC8vU2luZ2xlVmFsdWUgfCBNdWx0aVZhbHVlIHwgU2luZ2xlUmFuZ2UgfCBNdWx0aVJhbmdlIHwgU2VhcmNoRXhwcmVzc2lvbiB8IE11bHRpUmFuZ2VPclNlYXJjaEV4cHJlc3Npb25cblx0XHRzd2l0Y2ggKG9Qcm9wZXJ0eS5maWx0ZXJFeHByZXNzaW9uKSB7XG5cdFx0XHRjYXNlIFwiU2VhcmNoRXhwcmVzc2lvblwiOlxuXHRcdFx0Y2FzZSBcIlNpbmdsZVJhbmdlXCI6XG5cdFx0XHRjYXNlIFwiU2luZ2xlVmFsdWVcIjpcblx0XHRcdFx0YklzTXVsdGlWYWx1ZSA9IGZhbHNlO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdGJyZWFrO1xuXHRcdH1cblx0XHRpZiAob1Byb3BlcnR5LnR5cGUgJiYgb1Byb3BlcnR5LnR5cGUuaW5kZXhPZihcIkJvb2xlYW5cIikgPiAwKSB7XG5cdFx0XHRiSXNNdWx0aVZhbHVlID0gZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBiSXNNdWx0aVZhbHVlO1xuXHR9LFxuXHQvKipcblx0ICogUmV0cmlldmVzIGEgY3VzdG9tIGRhdGEgbm9kZSBmcm9tIHRoZSBjb250cm9sLlxuXHQgKlxuXHQgKiBAcGFyYW0gY29udHJvbCBUaGUgY29udHJvbCBmcm9tIHdoaWNoIHRvIHJldHJpZXZlIHRoZSBjdXN0b20gZGF0YSBub2RlXG5cdCAqIEBwYXJhbSBwcm9wZXJ0eUtleSBUaGUga2V5IG9mIHRoZSBjdXN0b20gZGF0YSBub2RlIHRvIHJldHJpZXZlXG5cdCAqIEBwYXJhbSBtb2RpZmllciBUaGUgbW9kaWZpZXIgZm9yIHRoZSBjb250cm9sXG5cdCAqIEByZXR1cm5zIC0gVGhlIGN1c3RvbSBkYXRhIG5vZGVcblx0ICpcblx0ICovXG5cdGFzeW5jIHJldHJpZXZlQ3VzdG9tRGF0YU5vZGUoY29udHJvbDogVUk1RWxlbWVudCwgcHJvcGVydHlLZXk6IHN0cmluZywgbW9kaWZpZXI6IE1vZGlmaWVyKTogUHJvbWlzZTxFbGVtZW50W10+IHtcblx0XHRjb25zdCBjdXN0b21EYXRhOiBFbGVtZW50W10gPSBbXTtcblx0XHRjb25zdCBhUmV0cmlldmVkQ3VzdG9tRGF0YSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oXG5cdFx0XHRtb2RpZmllci5nZXRBZ2dyZWdhdGlvbi5iaW5kKG1vZGlmaWVyLCBjb250cm9sLCBcImN1c3RvbURhdGFcIikgYXMgKCkgPT4gRWxlbWVudFtdXG5cdFx0KTtcblxuXHRcdC8vIFByb2Nlc3MgZWFjaCByZXRyaWV2ZWQgY3VzdG9tIGRhdGEgZWxlbWVudFxuXHRcdGZvciAoY29uc3Qgb0N1c3RvbURhdGEgb2YgYVJldHJpZXZlZEN1c3RvbURhdGEpIHtcblx0XHRcdGNvbnN0IGtleSA9IGF3YWl0IG1vZGlmaWVyLmdldFByb3BlcnR5KG9DdXN0b21EYXRhLCBcImtleVwiKTtcblx0XHRcdGlmIChrZXkgPT09IHByb3BlcnR5S2V5KSB7XG5cdFx0XHRcdGN1c3RvbURhdGEucHVzaChvQ3VzdG9tRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGN1c3RvbURhdGE7XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZVV0aWw7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUFtQkEsTUFBTUEsWUFBWSxHQUFHLGtFQUFrRTtFQXdEdkYsU0FBU0MsY0FBYyxHQUErRDtJQUNyRixJQUFJLENBQUNDLE9BQU8sQ0FBQ0Msd0JBQXdCLENBQUNGLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFDM0QsTUFBTUcsVUFBVSxHQUFHLElBQUksQ0FBQ0MsU0FBUztNQUNoQ0MsTUFBTSxHQUFHLElBQUksQ0FBQ0osT0FBTyxDQUFDSyxRQUFRLENBQUNILFVBQVUsQ0FB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
224
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOU19NQUNST0RBVEEiLCJfcmV0cmlldmVNb2RlbCIsImNvbnRyb2wiLCJkZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJzTW9kZWxOYW1lIiwibW9kZWxOYW1lIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJyZXNvbHZlIiwiYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwiZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllciIsInByb3BlcnR5IiwibW9kaWZpZXIiLCJjdXN0b21EYXRhIiwiRGVsZWdhdGVVdGlsIiwicmV0cmlldmVDdXN0b21EYXRhTm9kZSIsImxlbmd0aCIsImdldFByb3BlcnR5IiwidW5kZWZpbmVkIiwiRkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZIiwic2V0Q2FjaGVkUHJvcGVydGllcyIsImZldGNoZWRQcm9wZXJ0aWVzIiwid2luZG93IiwiRWxlbWVudCIsImtleSIsInNldEN1c3RvbURhdGEiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0Q3VzdG9tRGF0YSIsIm9Db250cm9sIiwic1Byb3BlcnR5Iiwib01vZGlmaWVyIiwiZ2V0QXR0cmlidXRlTlMiLCJkYXRhIiwiRnVuY3Rpb24iLCJ2VmFsdWUiLCJzZXRBdHRyaWJ1dGVOUyIsImZldGNoUHJvcGVydGllc0ZvckVudGl0eSIsInNFbnRpdHlTZXQiLCJvTWV0YU1vZGVsIiwicmVxdWVzdE9iamVjdCIsImZldGNoQW5ub3RhdGlvbnNGb3JFbnRpdHkiLCJmZXRjaE1vZGVsIiwiUHJvbWlzZSIsImdldERlbGVnYXRlIiwicGF5bG9hZCIsIm9Db250ZXh0IiwiY2FsbCIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50Iiwic0ZyYWdtZW50TmFtZSIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIm9PcHRpb25zIiwiQ29tbW9uVXRpbHMiLCJkb2VzVmFsdWVIZWxwRXhpc3QiLCJtUGFyYW1ldGVycyIsInNQcm9wZXJ0eU5hbWUiLCJzVmFsdWVIZWxwVHlwZSIsInNPcmlnaW5hbFByb3BlcnR5Iiwic0JpbmRpbmdQYXRoIiwib1Byb3BlcnR5Q29udGV4dCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic1ZhbHVlSGVscFByb3BlcnR5IiwiRmllbGRIZWxwZXIiLCJ2YWx1ZUhlbHBQcm9wZXJ0eSIsImJJc0Fic29sdXRlIiwiaW5kZXhPZiIsImluY2x1ZGVzIiwiZ2V0T2JqZWN0Iiwic0dlbmVyYXRlZElkIiwiZ2VuZXJhdGVJRCIsImZsZXhJZCIsImdlbmVyYXRlIiwiZ2V0SWQiLCJnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCIsImNvbnRleHQiLCJnZXRQYXRoIiwidGhlbiIsImdldEFnZ3JlZ2F0aW9uIiwiYURlcGVuZGVudHMiLCJvRGVwZW5kZW50Iiwib1RhcmdldERlcGVuZGVudCIsImdldENvbnRyb2xUeXBlIiwidGFyZ2V0cyIsImdldENvbnRlbnQiLCJpc0EiLCJpc1ZhbHVlSGVscFJlcXVpcmVkIiwiYkluRmlsdGVyRmllbGQiLCJiUmVhZE9ubHkiLCJhbGwiLCJhUmVzdWx0cyIsImNhdGNoIiwib0Vycm9yIiwiTG9nIiwid2FybmluZyIsImlzTXVsdGlWYWx1ZSIsIm9Qcm9wZXJ0eSIsImJJc011bHRpVmFsdWUiLCJmaWx0ZXJFeHByZXNzaW9uIiwidHlwZSIsInByb3BlcnR5S2V5IiwiYVJldHJpZXZlZEN1c3RvbURhdGEiLCJiaW5kIiwib0N1c3RvbURhdGEiLCJwdXNoIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJEZWxlZ2F0ZVV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSB7XG5cdENvbHVtbkV4cG9ydFNldHRpbmdzLFxuXHRDdXN0b21CYXNlZFRhYmxlQ29sdW1uLFxuXHRFeHRlbnNpb25Gb3JBbmFseXRpY3MsXG5cdFByb3BlcnR5VHlwZUNvbmZpZyxcblx0VmlzdWFsU2V0dGluZ3Ncbn0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL1RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEN1c3RvbUVsZW1lbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9oZWxwZXJzL0NvbmZpZ3VyYWJsZU9iamVjdFwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IEZpZWxkSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkSGVscGVyXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUlEIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvaW50ZXJuYWwvdmFsdWVoZWxwL1ZhbHVlSGVscFRlbXBsYXRpbmdcIjtcbmltcG9ydCB0eXBlIFZhbHVlSGVscCBmcm9tIFwic2FwL2ZlL21hY3Jvcy9WYWx1ZUhlbHBcIjtcbmltcG9ydCB0eXBlIFVJNUVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCB0eXBlIE1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvTW9kZWxcIjtcblxuY29uc3QgTlNfTUFDUk9EQVRBID0gXCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUuQ3VzdG9tRGF0YS8xXCI7XG5cbmV4cG9ydCB0eXBlIHRhYmxlRGVsZWdhdGVNb2RlbCA9IHtcblx0ZW5hYmxlQXV0b0NvbHVtbldpZHRoOiBib29sZWFuO1xuXHRyZWFkT25seTogYm9vbGVhbjtcblx0dGFibGVUeXBlOiBzdHJpbmc7XG5cdG9uQ2hhbmdlOiBGdW5jdGlvbjtcblx0aWQ6IHN0cmluZztcblx0bmF2aWdhdGlvblByb3BlcnR5UGF0aDogc3RyaW5nO1xuXHRjb2x1bW5JbmZvOiBDdXN0b21FbGVtZW50PEN1c3RvbUJhc2VkVGFibGVDb2x1bW4+O1xuXHRjb2xsZWN0aW9uOiB7XG5cdFx0c1BhdGg6IHN0cmluZztcblx0XHRvTW9kZWw6IHN0cmluZztcblx0fTtcblx0d2lkdGhJbmNsdWRpbmdDb2x1bW5IZWFkZXI6IGJvb2xlYW47XG59O1xuXG5leHBvcnQgdHlwZSBQcm9wZXJ0eUluZm8gPSB7XG5cdGFkZGl0aW9uYWxMYWJlbHM/OiBzdHJpbmdbXTtcblx0Y2FzZVNlbnNpdGl2ZT86IGJvb2xlYW47XG5cdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRkZXNjcmlwdGlvblByb3BlcnR5Pzogc3RyaW5nO1xuXHRleHBvcnRTZXR0aW5ncz86IENvbHVtbkV4cG9ydFNldHRpbmdzIHwgbnVsbDtcblx0Y2xpcGJvYXJkU2V0dGluZ3M/OiBPYmplY3QgfCBudWxsO1xuXHRmb3JtYXRPcHRpb25zPzogT2JqZWN0IHwgbnVsbDtcblx0ZmlsdGVyYWJsZT86IGJvb2xlYW47XG5cdGdyb3VwPzogc3RyaW5nO1xuXHRncm91cGFibGU/OiBib29sZWFuO1xuXHRncm91cExhYmVsPzogc3RyaW5nO1xuXHRpc0tleT86IGJvb2xlYW47XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRtYXhDb25kaXRpb25zPzogbnVtYmVyO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdG1vZGU/OiBEaXNwbGF5TW9kZTtcblx0bmFtZTogc3RyaW5nO1xuXHRrZXk/OiBzdHJpbmc7XG5cdHBhdGg/OiBzdHJpbmc7XG5cdHByb3BlcnR5SW5mb3M/OiBzdHJpbmdbXTtcblx0cmVsYXRpdmVQYXRoPzogc3RyaW5nO1xuXHRzb3J0YWJsZT86IGJvb2xlYW47XG5cdHNvcnREaXJlY3Rpb24/OiBzdHJpbmc7XG5cdHRleHQ/OiBzdHJpbmc7XG5cdHRvb2x0aXA/OiBzdHJpbmc7XG5cdHR5cGVDb25maWc/OiBQcm9wZXJ0eVR5cGVDb25maWc7XG5cdHR5cGU/OiBzdHJpbmc7XG5cdHVuaXQ/OiBzdHJpbmc7XG5cdHZhbHVlUHJvcGVydHk/OiBzdHJpbmc7XG5cdHZpc2libGU/OiBib29sZWFuO1xuXHR2aXN1YWxTZXR0aW5ncz86IFZpc3VhbFNldHRpbmdzO1xuXHRleHBvcnREYXRhUG9pbnRUYXJnZXRWYWx1ZT86IHN0cmluZztcblx0aXNQYXJhbWV0ZXI/OiBib29sZWFuO1xuXHRhZ2dyZWdhdGFibGU/OiBib29sZWFuO1xuXHRyZXF1aXJlZD86IGJvb2xlYW47XG5cdGV4dGVuc2lvbj86IEV4dGVuc2lvbkZvckFuYWx5dGljcztcbn07XG5cbmZ1bmN0aW9uIF9yZXRyaWV2ZU1vZGVsKHRoaXM6IHsgbW9kZWxOYW1lOiBzdHJpbmc7IGNvbnRyb2w6IGFueTsgcmVzb2x2ZTogRnVuY3Rpb24gfSkge1xuXHR0aGlzLmNvbnRyb2wuZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKF9yZXRyaWV2ZU1vZGVsLCB0aGlzKTtcblx0Y29uc3Qgc01vZGVsTmFtZSA9IHRoaXMubW9kZWxOYW1lLFxuXHRcdG9Nb2RlbCA9IHRoaXMuY29udHJvbC5nZXRNb2RlbChzTW9kZWxOYW1lKTtcblxuXHRpZiAob01vZGVsKSB7XG5cdFx0dGhpcy5yZXNvbHZlKG9Nb2RlbCk7XG5cdH0gZWxzZSB7XG5cdFx0dGhpcy5jb250cm9sLmF0dGFjaE1vZGVsQ29udGV4dENoYW5nZShfcmV0cmlldmVNb2RlbCwgdGhpcyk7XG5cdH1cbn1cbmV4cG9ydCB0eXBlIE1vZGlmaWVyID0ge1xuXHRnZXRBZ2dyZWdhdGlvbjogRnVuY3Rpb247XG5cdGdldFByb3BlcnR5OiBGdW5jdGlvbjtcblx0c2V0UHJvcGVydHk6IEZ1bmN0aW9uO1xuXHRpbnNlcnRBZ2dyZWdhdGlvbjogRnVuY3Rpb247XG59O1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllcihjb250cm9sOiBVSTVFbGVtZW50LCBwcm9wZXJ0eTogc3RyaW5nLCBtb2RpZmllcjogTW9kaWZpZXIpOiBQcm9taXNlPHN0cmluZyB8IHVuZGVmaW5lZD4ge1xuXHRjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgRGVsZWdhdGVVdGlsLnJldHJpZXZlQ3VzdG9tRGF0YU5vZGUoY29udHJvbCwgcHJvcGVydHksIG1vZGlmaWVyKTtcblx0aWYgKGN1c3RvbURhdGEubGVuZ3RoID09PSAxKSB7XG5cdFx0cmV0dXJuIG1vZGlmaWVyLmdldFByb3BlcnR5KGN1c3RvbURhdGFbMF0sIFwidmFsdWVcIik7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufVxuXG5jb25zdCBEZWxlZ2F0ZVV0aWwgPSB7XG5cdEZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWTogXCJzYXBfZmVfQ29udHJvbERlbGVnYXRlX3Byb3BlcnR5SW5mb01hcFwiLFxuXHRzZXRDYWNoZWRQcm9wZXJ0aWVzKGNvbnRyb2w6IGFueSwgZmV0Y2hlZFByb3BlcnRpZXM6IFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0Ly8gZG8gbm90IGNhY2hlIGR1cmluZyB0ZW1wbGF0aW5nLCBlbHNlIGl0IGJlY29tZXMgcGFydCBvZiB0aGUgY2FjaGVkIHZpZXdcblx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGtleSA9IERlbGVnYXRlVXRpbC5GRVRDSEVEX1BST1BFUlRJRVNfREFUQV9LRVk7XG5cdFx0RGVsZWdhdGVVdGlsLnNldEN1c3RvbURhdGEoY29udHJvbCwga2V5LCBmZXRjaGVkUHJvcGVydGllcyk7XG5cdH0sXG5cdGdldENhY2hlZFByb3BlcnRpZXMoY29udHJvbDogYW55KTogUHJvcGVydHlJbmZvW10gfCBudWxsIHtcblx0XHQvLyBwcm9wZXJ0aWVzIGFyZSBub3QgY2FjaGVkIGR1cmluZyB0ZW1wbGF0aW5nXG5cdFx0aWYgKGNvbnRyb2wgaW5zdGFuY2VvZiB3aW5kb3cuRWxlbWVudCkge1xuXHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0fVxuXHRcdGNvbnN0IGtleSA9IERlbGVnYXRlVXRpbC5GRVRDSEVEX1BST1BFUlRJRVNfREFUQV9LRVk7XG5cdFx0cmV0dXJuIERlbGVnYXRlVXRpbC5nZXRDdXN0b21EYXRhKGNvbnRyb2wsIGtleSk7XG5cdH0sXG5cblx0Z2V0Q3VzdG9tRGF0YShvQ29udHJvbDogYW55LCBzUHJvcGVydHk6IGFueSwgb01vZGlmaWVyPzogYW55KSB7XG5cdFx0Ly8gSWYgTW9kaWZpZXIgaXMgZ2l2ZW4sIHRoZSBtZXRob2QgbXVzdCBleGVjdXRlIGFzeW5jaHJvbm91c2x5IGFuZCByZXR1cm4gYSBQcm9taXNlXG5cdFx0aWYgKG9Nb2RpZmllcikge1xuXHRcdFx0cmV0dXJuIGdldEN1c3RvbURhdGFXaXRoTW9kaWZpZXIob0NvbnRyb2wsIHNQcm9wZXJ0eSwgb01vZGlmaWVyKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gRGVsZWdhdGUgaW52b2tlZCBmcm9tIGEgbm9uLWZsZXggY2hhbmdlIC0gRmlsdGVyQmFyRGVsZWdhdGUuX2FkZFAxM25JdGVtIGZvciBPUCB0YWJsZSBmaWx0ZXJpbmcsIEZpbHRlckJhckRlbGVnYXRlLmZldGNoUHJvcGVydGllcyBldGMuXG5cdFx0XHRpZiAob0NvbnRyb2wgJiYgc1Byb3BlcnR5KSB7XG5cdFx0XHRcdGlmIChvQ29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sLmdldEF0dHJpYnV0ZU5TKE5TX01BQ1JPREFUQSwgc1Byb3BlcnR5KTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAob0NvbnRyb2wuZGF0YSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Db250cm9sLmRhdGEoc1Byb3BlcnR5KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0XHR9XG5cdH0sXG5cdHNldEN1c3RvbURhdGEob0NvbnRyb2w6IGFueSwgc1Byb3BlcnR5OiBhbnksIHZWYWx1ZTogYW55KSB7XG5cdFx0aWYgKG9Db250cm9sICYmIHNQcm9wZXJ0eSkge1xuXHRcdFx0aWYgKG9Db250cm9sIGluc3RhbmNlb2Ygd2luZG93LkVsZW1lbnQpIHtcblx0XHRcdFx0cmV0dXJuIG9Db250cm9sLnNldEF0dHJpYnV0ZU5TKE5TX01BQ1JPREFUQSwgYGN1c3RvbURhdGE6JHtzUHJvcGVydHl9YCwgdlZhbHVlKTtcblx0XHRcdH1cblx0XHRcdGlmIChvQ29udHJvbC5kYXRhIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcblx0XHRcdFx0cmV0dXJuIG9Db250cm9sLmRhdGEoc1Byb3BlcnR5LCB2VmFsdWUpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0ZmV0Y2hQcm9wZXJ0aWVzRm9yRW50aXR5KHNFbnRpdHlTZXQ6IGFueSwgb01ldGFNb2RlbDogYW55KSB7XG5cdFx0cmV0dXJuIG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzRW50aXR5U2V0fS9gKTtcblx0fSxcblx0ZmV0Y2hBbm5vdGF0aW9uc0ZvckVudGl0eShzRW50aXR5U2V0OiBhbnksIG9NZXRhTW9kZWw6IGFueSkge1xuXHRcdHJldHVybiBvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c0VudGl0eVNldH1AYCk7XG5cdH0sXG5cdGZldGNoTW9kZWwob0NvbnRyb2w6IGFueSk6IFByb21pc2U8TW9kZWw+IHtcblx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcblx0XHRcdGNvbnN0IHNNb2RlbE5hbWUgPSBvQ29udHJvbC5nZXREZWxlZ2F0ZSgpLnBheWxvYWQgJiYgb0NvbnRyb2wuZ2V0RGVsZWdhdGUoKS5wYXlsb2FkLm1vZGVsTmFtZSxcblx0XHRcdFx0b0NvbnRleHQgPSB7IG1vZGVsTmFtZTogc01vZGVsTmFtZSwgY29udHJvbDogb0NvbnRyb2wsIHJlc29sdmU6IHJlc29sdmUgfTtcblx0XHRcdF9yZXRyaWV2ZU1vZGVsLmNhbGwob0NvbnRleHQpO1xuXHRcdH0pO1xuXHR9LFxuXHR0ZW1wbGF0ZUNvbnRyb2xGcmFnbWVudChzRnJhZ21lbnROYW1lOiBhbnksIG9QcmVwcm9jZXNzb3JTZXR0aW5nczogYW55LCBvT3B0aW9uczogYW55LCBvTW9kaWZpZXI/OiBhbnkpIHtcblx0XHRyZXR1cm4gQ29tbW9uVXRpbHMudGVtcGxhdGVDb250cm9sRnJhZ21lbnQoc0ZyYWdtZW50TmFtZSwgb1ByZXByb2Nlc3NvclNldHRpbmdzLCBvT3B0aW9ucywgb01vZGlmaWVyKTtcblx0fSxcblx0ZG9lc1ZhbHVlSGVscEV4aXN0KG1QYXJhbWV0ZXJzOiBhbnkpIHtcblx0XHRjb25zdCBzUHJvcGVydHlOYW1lID0gbVBhcmFtZXRlcnMuc1Byb3BlcnR5TmFtZSB8fCBcIlwiO1xuXHRcdGNvbnN0IHNWYWx1ZUhlbHBUeXBlID0gbVBhcmFtZXRlcnMuc1ZhbHVlSGVscFR5cGUgfHwgXCJcIjtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gbVBhcmFtZXRlcnMub01ldGFNb2RlbDtcblx0XHRjb25zdCBvTW9kaWZpZXIgPSBtUGFyYW1ldGVycy5vTW9kaWZpZXI7XG5cdFx0Y29uc3Qgc09yaWdpbmFsUHJvcGVydHkgPSBgJHttUGFyYW1ldGVycy5zQmluZGluZ1BhdGh9LyR7c1Byb3BlcnR5TmFtZX1gO1xuXHRcdGNvbnN0IG9Qcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNPcmlnaW5hbFByb3BlcnR5KTtcblx0XHRsZXQgc1ZhbHVlSGVscFByb3BlcnR5ID0gRmllbGRIZWxwZXIudmFsdWVIZWxwUHJvcGVydHkob1Byb3BlcnR5Q29udGV4dCk7XG5cdFx0Y29uc3QgYklzQWJzb2x1dGUgPSBtUGFyYW1ldGVycy5zQmluZGluZ1BhdGggJiYgbVBhcmFtZXRlcnMuc0JpbmRpbmdQYXRoLmluZGV4T2YoXCIvXCIpID09PSAwO1xuXG5cdFx0Ly8gdW5pdC9jdXJyZW5jeVxuXHRcdGlmIChzVmFsdWVIZWxwUHJvcGVydHkuaW5jbHVkZXMoXCIkUGF0aFwiKSkge1xuXHRcdFx0c1ZhbHVlSGVscFByb3BlcnR5ID0gb01ldGFNb2RlbC5nZXRPYmplY3Qoc1ZhbHVlSGVscFByb3BlcnR5KTtcblx0XHR9XG5cdFx0aWYgKGJJc0Fic29sdXRlICYmIHNWYWx1ZUhlbHBQcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSAhPT0gMCkge1xuXHRcdFx0c1ZhbHVlSGVscFByb3BlcnR5ID0gYCR7bVBhcmFtZXRlcnMuc0JpbmRpbmdQYXRofS8ke3NWYWx1ZUhlbHBQcm9wZXJ0eX1gO1xuXHRcdH1cblxuXHRcdGNvbnN0IHNHZW5lcmF0ZWRJZCA9IGdlbmVyYXRlSUQoXG5cdFx0XHRtUGFyYW1ldGVycy5mbGV4SWQsXG5cdFx0XHRnZW5lcmF0ZShbb01vZGlmaWVyID8gb01vZGlmaWVyLmdldElkKG1QYXJhbWV0ZXJzLm9Db250cm9sKSA6IG1QYXJhbWV0ZXJzLm9Db250cm9sLmdldElkKCksIHNWYWx1ZUhlbHBUeXBlXSksXG5cdFx0XHRnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aChvUHJvcGVydHlDb250ZXh0LmdldFByb3BlcnR5KHNPcmlnaW5hbFByb3BlcnR5KSwge1xuXHRcdFx0XHRjb250ZXh0OiB7XG5cdFx0XHRcdFx0Z2V0TW9kZWw6ICgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBtUGFyYW1ldGVycy5vTWV0YU1vZGVsO1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0Z2V0UGF0aDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNPcmlnaW5hbFByb3BlcnR5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBhcyBhbnlcblx0XHRcdH0pLFxuXHRcdFx0Z2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgob1Byb3BlcnR5Q29udGV4dC5nZXRQcm9wZXJ0eShzVmFsdWVIZWxwUHJvcGVydHkpLCB7XG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRnZXRNb2RlbDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWw7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQYXRoOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc1ZhbHVlSGVscFByb3BlcnR5O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBhcyBhbnlcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRpZiAob01vZGlmaWVyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Nb2RpZmllci5nZXRBZ2dyZWdhdGlvbihtUGFyYW1ldGVycy5vQ29udHJvbCwgXCJkZXBlbmRlbnRzXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtUGFyYW1ldGVycy5vQ29udHJvbC5nZXRBZ2dyZWdhdGlvbihcImRlcGVuZGVudHNcIik7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oYXN5bmMgZnVuY3Rpb24gKGFEZXBlbmRlbnRzOiBVSTVFbGVtZW50W10pIHtcblx0XHRcdFx0aWYgKGFEZXBlbmRlbnRzKSB7XG5cdFx0XHRcdFx0Zm9yIChsZXQgb0RlcGVuZGVudCBvZiBhRGVwZW5kZW50cykge1xuXHRcdFx0XHRcdFx0bGV0IG9UYXJnZXREZXBlbmRlbnQ6IFVJNUVsZW1lbnQgfCB1bmRlZmluZWQgPSBvRGVwZW5kZW50O1xuXHRcdFx0XHRcdFx0aWYgKG9Nb2RpZmllcikge1xuXHRcdFx0XHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0XHRcdFx0b01vZGlmaWVyLmdldENvbnRyb2xUeXBlKG9EZXBlbmRlbnQpID09PSBcInNhcC5mZS5tYWNyb3MuVmFsdWVIZWxwXCIgJiZcblx0XHRcdFx0XHRcdFx0XHRvTW9kaWZpZXIudGFyZ2V0cyAhPT0gXCJ4bWxUcmVlXCJcblx0XHRcdFx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0XHRcdFx0b1RhcmdldERlcGVuZGVudCA9IChvRGVwZW5kZW50IGFzIFZhbHVlSGVscCkuZ2V0Q29udGVudCgpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChvVGFyZ2V0RGVwZW5kZW50ICYmIG9Nb2RpZmllci5nZXRJZChvVGFyZ2V0RGVwZW5kZW50KSA9PT0gc0dlbmVyYXRlZElkKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGlmIChvRGVwZW5kZW50LmlzQTxWYWx1ZUhlbHA+KFwic2FwLmZlLm1hY3Jvcy5WYWx1ZUhlbHBcIikpIHtcblx0XHRcdFx0XHRcdFx0XHRvVGFyZ2V0RGVwZW5kZW50ID0gb0RlcGVuZGVudC5nZXRDb250ZW50KCk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKG9UYXJnZXREZXBlbmRlbnQ/LmdldElkKCkgPT09IHNHZW5lcmF0ZWRJZCkge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH0pO1xuXHR9LFxuXHRpc1ZhbHVlSGVscFJlcXVpcmVkKG1QYXJhbWV0ZXJzOiBhbnksIGJJbkZpbHRlckZpZWxkPzogYm9vbGVhbikge1xuXHRcdGNvbnN0IHNQcm9wZXJ0eU5hbWUgPSBtUGFyYW1ldGVycy5zUHJvcGVydHlOYW1lIHx8IFwiXCIsXG5cdFx0XHRvTWV0YU1vZGVsID0gbVBhcmFtZXRlcnMub01ldGFNb2RlbCxcblx0XHRcdHNQcm9wZXJ0eSA9IGAke21QYXJhbWV0ZXJzLnNCaW5kaW5nUGF0aH0vJHtzUHJvcGVydHlOYW1lfWAsXG5cdFx0XHRvUHJvcGVydHlDb250ZXh0ID0gb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChzUHJvcGVydHkpLFxuXHRcdFx0c1ZhbHVlSGVscFByb3BlcnR5ID0gRmllbGRIZWxwZXIudmFsdWVIZWxwUHJvcGVydHkob1Byb3BlcnR5Q29udGV4dCwgYkluRmlsdGVyRmllbGQpO1xuXG5cdFx0cmV0dXJuIHRoaXMuZ2V0Q3VzdG9tRGF0YShtUGFyYW1ldGVycy5vQ29udHJvbCwgXCJkaXNwbGF5TW9kZVByb3BlcnR5QmluZGluZ1wiLCBtUGFyYW1ldGVycy5vTW9kaWZpZXIpXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoYlJlYWRPbmx5OiBhbnkpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgd2hldGhlciB0aGUgY29udHJvbCBpcyByZWFkLW9ubHkuIElmIHllcywgbm8gbmVlZCBvZiBhIHZhbHVlIGhlbHAuXG5cdFx0XHRcdGJSZWFkT25seSA9IHR5cGVvZiBiUmVhZE9ubHkgPT09IFwiYm9vbGVhblwiID8gYlJlYWRPbmx5IDogYlJlYWRPbmx5ID09PSBcInRydWVcIjtcblx0XHRcdFx0aWYgKGJSZWFkT25seSkge1xuXHRcdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBFbHNlLCBjaGVjayB3aGV0aGVyIFZhbHVlIEhlbHAgcmVsZXZhbnQgYW5ub3RhdGlvbiBleGlzdHMgZm9yIHRoZSBwcm9wZXJ0eS5cblx0XHRcdFx0Ly8gVE9ETyB1c2UgUHJvcGVydHlGb3JtYXR0ZXIuaGFzVmFsdWVIZWxwICgpID0+IGlmIGRvaW5nIHNvLCBRVW5pdCB0ZXN0cyBmYWlsIGR1ZSB0byBtb2NrZWQgbW9kZWwgaW1wbGVtZW50YXRpb25cblx0XHRcdFx0cmV0dXJuIFByb21pc2UuYWxsKFtcblx0XHRcdFx0XHRvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c1ZhbHVlSGVscFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0V2l0aEZpeGVkVmFsdWVzYCksXG5cdFx0XHRcdFx0b01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NWYWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFJlZmVyZW5jZXNgKSxcblx0XHRcdFx0XHRvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c1ZhbHVlSGVscFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0TWFwcGluZ2ApLFxuXHRcdFx0XHRcdG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzVmFsdWVIZWxwUHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RgKVxuXHRcdFx0XHRdKTtcblx0XHRcdH0pXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoYVJlc3VsdHM6IGFueVtdKSB7XG5cdFx0XHRcdHJldHVybiAhIWFSZXN1bHRzWzBdIHx8ICEhYVJlc3VsdHNbMV0gfHwgISFhUmVzdWx0c1syXSB8fCAhIWFSZXN1bHRzWzNdO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0TG9nLndhcm5pbmcoXCJFcnJvciB3aGlsZSByZXRyaWV2aW5nIGN1c3RvbSBkYXRhIC8gdmFsdWUgbGlzdCBhbm5vdGF0aW9uIHZhbHVlc1wiLCBvRXJyb3IpO1xuXHRcdFx0fSk7XG5cdH0sXG5cdGlzTXVsdGlWYWx1ZShvUHJvcGVydHk6IGFueSkge1xuXHRcdGxldCBiSXNNdWx0aVZhbHVlID0gdHJ1ZTtcblx0XHQvL1NpbmdsZVZhbHVlIHwgTXVsdGlWYWx1ZSB8IFNpbmdsZVJhbmdlIHwgTXVsdGlSYW5nZSB8IFNlYXJjaEV4cHJlc3Npb24gfCBNdWx0aVJhbmdlT3JTZWFyY2hFeHByZXNzaW9uXG5cdFx0c3dpdGNoIChvUHJvcGVydHkuZmlsdGVyRXhwcmVzc2lvbikge1xuXHRcdFx0Y2FzZSBcIlNlYXJjaEV4cHJlc3Npb25cIjpcblx0XHRcdGNhc2UgXCJTaW5nbGVSYW5nZVwiOlxuXHRcdFx0Y2FzZSBcIlNpbmdsZVZhbHVlXCI6XG5cdFx0XHRcdGJJc011bHRpVmFsdWUgPSBmYWxzZTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdFx0aWYgKG9Qcm9wZXJ0eS50eXBlICYmIG9Qcm9wZXJ0eS50eXBlLmluZGV4T2YoXCJCb29sZWFuXCIpID4gMCkge1xuXHRcdFx0YklzTXVsdGlWYWx1ZSA9IGZhbHNlO1xuXHRcdH1cblx0XHRyZXR1cm4gYklzTXVsdGlWYWx1ZTtcblx0fSxcblx0LyoqXG5cdCAqIFJldHJpZXZlcyBhIGN1c3RvbSBkYXRhIG5vZGUgZnJvbSB0aGUgY29udHJvbC5cblx0ICpcblx0ICogQHBhcmFtIGNvbnRyb2wgVGhlIGNvbnRyb2wgZnJvbSB3aGljaCB0byByZXRyaWV2ZSB0aGUgY3VzdG9tIGRhdGEgbm9kZVxuXHQgKiBAcGFyYW0gcHJvcGVydHlLZXkgVGhlIGtleSBvZiB0aGUgY3VzdG9tIGRhdGEgbm9kZSB0byByZXRyaWV2ZVxuXHQgKiBAcGFyYW0gbW9kaWZpZXIgVGhlIG1vZGlmaWVyIGZvciB0aGUgY29udHJvbFxuXHQgKiBAcmV0dXJucyAtIFRoZSBjdXN0b20gZGF0YSBub2RlXG5cdCAqXG5cdCAqL1xuXHRhc3luYyByZXRyaWV2ZUN1c3RvbURhdGFOb2RlKGNvbnRyb2w6IFVJNUVsZW1lbnQsIHByb3BlcnR5S2V5OiBzdHJpbmcsIG1vZGlmaWVyOiBNb2RpZmllcik6IFByb21pc2U8RWxlbWVudFtdPiB7XG5cdFx0Y29uc3QgY3VzdG9tRGF0YTogRWxlbWVudFtdID0gW107XG5cdFx0Y29uc3QgYVJldHJpZXZlZEN1c3RvbURhdGEgPSBhd2FpdCBQcm9taXNlLnJlc29sdmUoKS50aGVuKFxuXHRcdFx0bW9kaWZpZXIuZ2V0QWdncmVnYXRpb24uYmluZChtb2RpZmllciwgY29udHJvbCwgXCJjdXN0b21EYXRhXCIpIGFzICgpID0+IEVsZW1lbnRbXVxuXHRcdCk7XG5cblx0XHQvLyBQcm9jZXNzIGVhY2ggcmV0cmlldmVkIGN1c3RvbSBkYXRhIGVsZW1lbnRcblx0XHRmb3IgKGNvbnN0IG9DdXN0b21EYXRhIG9mIGFSZXRyaWV2ZWRDdXN0b21EYXRhKSB7XG5cdFx0XHRjb25zdCBrZXkgPSBhd2FpdCBtb2RpZmllci5nZXRQcm9wZXJ0eShvQ3VzdG9tRGF0YSwgXCJrZXlcIik7XG5cdFx0XHRpZiAoa2V5ID09PSBwcm9wZXJ0eUtleSkge1xuXHRcdFx0XHRjdXN0b21EYXRhLnB1c2gob0N1c3RvbURhdGEpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHJldHVybiBjdXN0b21EYXRhO1xuXHR9XG59O1xuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVVdGlsO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7O0VBbUJBLE1BQU1BLFlBQVksR0FBRyxrRUFBa0U7RUF3RHZGLFNBQVNDLGNBQWMsR0FBK0Q7SUFDckYsSUFBSSxDQUFDQyxPQUFPLENBQUNDLHdCQUF3QixDQUFDRixjQUFjLEVBQUUsSUFBSSxDQUFDO0lBQzNELE1BQU1HLFVBQVUsR0FBRyxJQUFJLENBQUNDLFNBQVM7TUFDaENDLE1BQU0sR0FBRyxJQUFJLENBQUNKLE9BQU8sQ0FBQ0ssUUFBUSxDQUFDSCxVQUFVLENBQUM7SUFFM0MsSUFBSUUsTUFBTSxFQUFFO01BQ1gsSUFBSSxDQUFDRSxPQUFPLENBQUNGLE1BQU0sQ0FBQztJQUNyQixDQUFDLE1BQU07TUFDTixJQUFJLENBQUNKLE9BQU8sQ0FBQ08sd0JBQXdCLENBQUNSLGNBQWMsRUFBRSxJQUFJLENBQUM7SUFDNUQ7RUFDRDtFQU9BLGVBQWVTLHlCQUF5QixDQUFDUixPQUFtQixFQUFFUyxRQUFnQixFQUFFQyxRQUFrQixFQUErQjtJQUNoSSxNQUFNQyxVQUFVLEdBQUcsTUFBTUMsWUFBWSxDQUFDQyxzQkFBc0IsQ0FBQ2IsT0FBTyxFQUFFUyxRQUFRLEVBQUVDLFFBQVEsQ0FBQztJQUN6RixJQUFJQyxVQUFVLENBQUNHLE1BQU0sS0FBSyxDQUFDLEVBQUU7TUFDNUIsT0FBT0osUUFBUSxDQUFDSyxXQUFXLENBQUNKLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7SUFDcEQsQ0FBQyxNQUFNO01B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
@@ -217,16 +217,9 @@ const DelegateUtil = {
217
217
  let oTargetDependent: UI5Element | undefined = oDependent;
218
218
  if (oModifier) {
219
219
  if (
220
- oModifier.getControlType(oDependent) === "sap.fe.macros.ValueHelp" &&
221
- (await oModifier.getProperty(oDependent, "metaPath")) === mParameters.metaPath
222
- ) {
223
- // in xml validate against the metaPath of the ValueHelp
224
- return true;
225
- } else if (
226
220
  oModifier.getControlType(oDependent) === "sap.fe.macros.ValueHelp" &&
227
221
  oModifier.targets !== "xmlTree"
228
222
  ) {
229
- // in xml validate against the metaPath of the ValueHelp
230
223
  oTargetDependent = (oDependent as ValueHelp).getContent();
231
224
  }
232
225
  if (oTargetDependent && oModifier.getId(oTargetDependent) === sGeneratedId) {
@@ -261,6 +261,10 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/chart/TimeUnitType",
261
261
  if (oFilterInfo.bindingPath) {
262
262
  oBindingInfo.path = oFilterInfo.bindingPath;
263
263
  }
264
+ if (CommonUtils.getTargetView(oChart).getViewData().viewLevel > 0 && oBindingInfo.path && oChart.getBindingContext()) {
265
+ oBindingInfo.path = ChartHelper.getCollectionName(oBindingInfo.path);
266
+ }
267
+
264
268
  // remove prefixes so that entityset will match with the property names with these field
265
269
  if (oFilterInfo.filters) {
266
270
  oFilterInfo.filters.forEach(element => {
@@ -546,4 +550,4 @@ sap.ui.define(["sap/base/Log", "sap/base/util/merge", "sap/chart/TimeUnitType",
546
550
  };
547
551
  return ChartDelegate;
548
552
  }, false);
549
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydERlbGVnYXRlIiwiT2JqZWN0IiwiYXNzaWduIiwiQmFzZUNoYXJ0RGVsZWdhdGUiLCJhcGlWZXJzaW9uIiwiX2xvYWRDaGFydCIsIkxpYnJhcnkiLCJsb2FkIiwibmFtZSIsIl9zZXRDaGFydE5vRGF0YVRleHQiLCJvQ2hhcnQiLCJvQmluZGluZ0luZm8iLCJzTm9EYXRhS2V5Iiwib0NoYXJ0RmlsdGVySW5mbyIsIkNoYXJ0VXRpbHMiLCJnZXRBbGxGaWx0ZXJJbmZvIiwic3VmZml4UmVzb3VyY2VLZXkiLCJwYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0ciIsIl9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMiLCJkYXRhIiwiZ2V0RmlsdGVyIiwic2VhcmNoIiwiZmlsdGVycyIsImxlbmd0aCIsInNldE5vRGF0YVRleHQiLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0VGV4dCIsInVuZGVmaW5lZCIsIl9oYW5kbGVQcm9wZXJ0eSIsIm9Db250ZXh0Iiwib01EQ0NoYXJ0IiwibUVudGl0eVNldEFubm90YXRpb25zIiwibUtub3duQWdncmVnYXRhYmxlUHJvcHMiLCJtQ3VzdG9tQWdncmVnYXRlcyIsImFQcm9wZXJ0aWVzIiwic0NyaXRpY2FsaXR5Iiwib0FwcGx5U3VwcG9ydGVkIiwiQ29tbW9uSGVscGVyIiwicGFyc2VDdXN0b21EYXRhIiwic29ydFJlc3RyaWN0aW9uc0luZm8iLCJnZXRTb3J0UmVzdHJpY3Rpb25zSW5mbyIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZW50aXR5VHlwZVBhdGgiLCJiaW5kaW5nUGF0aCIsIk1vZGVsSGVscGVyIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlclJlc3RyaWN0aW9ucyIsIkNvbW1vblV0aWxzIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwicHJvcGVydHlGaWx0ZXJhYmxlRGF0YSIsImdldEZpbHRlcmFibGVEYXRhIiwiTm9uRmlsdGVyYWJsZVByb3BlcnRpZXMiLCJrZXlzIiwiRmlsdGVyQWxsb3dlZEV4cHJlc3Npb25zIiwib09iaiIsImdldE9iamVjdCIsImdldFBhdGgiLCJzS2V5IiwiYU1vZGVzIiwiZ2V0UDEzbk1vZGUiLCJjaGVja0Zvck5vbmZpbHRlcmFibGVFbnRpdHlTZXQiLCIka2luZCIsIiRpc0NvbGxlY3Rpb24iLCJvUHJvcGVydHlBbm5vdGF0aW9ucyIsInNQYXRoIiwiZ2V0TWV0YUNvbnRleHQiLCJhR3JvdXBhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJhQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJiR3JvdXBhYmxlIiwiY2hlY2tQcm9wZXJ0eVR5cGUiLCJiQWdncmVnYXRhYmxlIiwiY2hlY2tQcm9wZXJ0eUlzQm90aEdyb3VwYWJsZUFuZEFnZ3JlZ2F0YWJsZSIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJhQWdncmVnYXRlUHJvcGVydGllcyIsIl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlIiwiJFR5cGUiLCJmb3JFYWNoIiwib0FnZ3JlZ2F0ZVByb3BlcnR5IiwicHVzaCIsImluY2x1ZGVzIiwiYUtub3duQWdncmVnYXRhYmxlUHJvcHMiLCJhR3JvdXBhYmxlUHJvcGVydGllc1ZhbHVlcyIsIm1hcCIsIm9Qcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJhZGRQcm9wZXJ0eVRvQ2hhcnQiLCJmaWx0ZXJhYmxlIiwic05hbWUiLCJzVGV4dFByb3BlcnR5IiwiJFBhdGgiLCJiSXNOYXZpZ2F0aW9uVGV4dCIsIkxvZyIsImVycm9yIiwiaW5kZXhPZiIsIl9nZXRTb3J0YWJsZSIsInByb3BlcnR5SW5mbyIsImlzRmlsdGVyYWJsZSIsIm9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvIiwiaXNTb3J0YWJsZSIsImJJc0dyb3VwYWJsZSIsImJJc0FnZ3JlZ2F0YWJsZSIsImJJc0hpZGRlbiIsImxhYmVsIiwidG9TdHJpbmciLCJzb3J0YWJsZSIsImdyb3VwYWJsZSIsImFnZ3JlZ2F0YWJsZSIsIm1heENvbmRpdGlvbnMiLCJpc011bHRpVmFsdWVGaWx0ZXJFeHByZXNzaW9uIiwicm9sZSIsIkNoYXJ0SXRlbVJvbGVUeXBlIiwiY2F0ZWdvcnkiLCJjcml0aWNhbGl0eSIsImRhdGFUeXBlIiwidmlzaWJsZSIsInRleHRQcm9wZXJ0eSIsInRleHRGb3JtYXR0ZXIiLCJ0aW1lVW5pdFR5cGUiLCJfZ2V0VGltZVR5cGUiLCJmb3JtYXRPcHRpb25zIiwic3R5bGUiLCJUaW1lVW5pdFR5cGUiLCJEYXRlIiwiZmlzY2FseWVhciIsImZpc2NhbHllYXJwZXJpb2QiLCJ5ZWFybW9udGgiLCJ5ZWFycXVhcnRlciIsInllYXJ3ZWVrIiwieWVhcm1vbnRoZGF5IiwiYkVudGl0eVNldEZpbGVyYWJsZSIsImdldE1ldGFNb2RlbCIsIkZpbHRlcmFibGUiLCJmaWx0ZXIiLCJpdGVtIiwic2V0UDEzbk1vZGUiLCJlbGVtZW50IiwiUHJvcGVydHkiLCJjdXN0b21Qcm9wZXJ0aWVzIiwiRXJyb3IiLCJmb3JtYXRUZXh0Iiwib1ZhbHVlMSIsIm9WYWx1ZTIiLCJzVmFsdWUiLCJ0eXBlQ29uZmlnIiwidHlwZUluc3RhbmNlIiwiZm9ybWF0VmFsdWUiLCJvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiIsIiRFbnVtTWVtYmVyIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aEJyYWNrZXRzIiwidXBkYXRlQmluZGluZ0luZm8iLCJpbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJzZXRQcm9wZXJ0eSIsIm9GaWx0ZXIiLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJtQ29uZGl0aW9ucyIsImdldENvbmRpdGlvbnMiLCJwYXJhbWV0ZXJzIiwib0luZm8iLCJGaWx0ZXJVdGlscyIsImdldEZpbHRlckluZm8iLCJlbmFibGVTZWFyY2giLCIkc2VhcmNoIiwibm9ybWFsaXplU2VhcmNoVGVybSIsInNQYXJhbWV0ZXJQYXRoIiwiRGVsZWdhdGVVdGlsIiwiZ2V0UGFyYW1ldGVyc0luZm8iLCJ2aWV3IiwiZ2V0VGFyZ2V0VmlldyIsIm9GaWx0ZXJJbmZvIiwiZ2V0UGFyZW50IiwiZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzIiwiZXZlbnRzIiwiZGF0YVJlcXVlc3RlZCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwiYmluZCIsIkZpbHRlciIsImFuZCIsInNvcnRlciIsImdldFNvcnRlcnMiLCJfY2hlY2tBbmRBZGREcmFmdEZpbHRlciIsImZldGNoUHJvcGVydGllcyIsIm9Nb2RlbCIsIl9nZXRNb2RlbCIsInBDcmVhdGVQcm9wZXJ0eUluZm9zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJyZXNvbHZlciIsIm9uTW9kZWxDb250ZXh0Q2hhbmdlIiwidGhlbiIsIm9SZXRyaWV2ZWRNb2RlbCIsIl9jcmVhdGVQcm9wZXJ0eUluZm9zIiwiTWFjcm9zRGVsZWdhdGVVdGlsIiwic2V0Q2FjaGVkUHJvcGVydGllcyIsIm9FdmVudCIsIm9EYXRhIiwiZ2V0U291cmNlIiwiZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwic0VudGl0eVNldFBhdGgiLCJvTWV0YU1vZGVsIiwiYVJlc3VsdHMiLCJhbGwiLCJyZXF1ZXN0T2JqZWN0Iiwib0VudGl0eVR5cGUiLCJnZXRDdXN0b21BZ2dyZWdhdGUiLCJzQW5ubyIsInNBbm5vS2V5IiwicmVwbGFjZSIsImFBbm5vIiwic3BsaXQiLCJtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzIiwic0FnZ3JlZ2F0YWJsZSIsInNQcm9wS2V5IiwicHJvcGVydHlQYXRoIiwiYWdncmVnYXRpb25NZXRob2QiLCJDaGFydEhlbHBlciIsImZldGNoQ3JpdGljYWxpdHkiLCJjcmVhdGVCaW5kaW5nQ29udGV4dCIsImFEaW1lbnNpb25zIiwiYU1lYXN1cmVzIiwiYUNoYXJ0SXRlbXMiLCJnZXRJdGVtcyIsImtleSIsImdldFR5cGUiLCJnZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kIiwiZ2V0UHJvcGVydHlLZXkiLCJ2YWwiLCJheGlzMSIsImRhdGFwb2ludCIsInVuaXRQYXRoIiwic0N1c3RvbSIsIm9JdGVtIiwibWVyZ2UiLCJyZWJpbmQiLCJzU2VhcmNoIiwib0lubmVyQ2hhcnQiLCJnZXRDb250cm9sRGVsZWdhdGUiLCJnZXRJbm5lckNoYXJ0Iiwib0NoYXJ0QmluZGluZyIsImdldEJpbmRpbmciLCJzdXNwZW5kIiwic2V0QWdncmVnYXRpb24iLCJvSW5uZXJDaGFydERlbGVnYXRlIiwib25CZWZvcmVSZW5kZXJpbmciLCJyZXN1bWUiLCJyZW1vdmVFdmVudERlbGVnYXRlIiwiYWRkRXZlbnREZWxlZ2F0ZSIsImZpcmVFdmVudCIsIl9zZXRDaGFydCIsIm9DaGFydEFQSSIsInNldFZpelByb3BlcnRpZXMiLCJkZXRhY2hTZWxlY3REYXRhIiwiaGFuZGxlU2VsZWN0aW9uQ2hhbmdlIiwiZGV0YWNoRGVzZWxlY3REYXRhIiwiZGV0YWNoRHJpbGxlZFVwIiwiYXR0YWNoU2VsZWN0RGF0YSIsImF0dGFjaERlc2VsZWN0RGF0YSIsImF0dGFjaERyaWxsZWRVcCIsInNldFNlbGVjdGlvbk1vZGUiLCJnZXRQYXlsb2FkIiwic2VsZWN0aW9uTW9kZSIsInRvVXBwZXJDYXNlIiwiX2dldEJpbmRpbmdJbmZvIiwiX2dldEJpbmRpbmdJbmZvRnJvbVN0YXRlIiwib01ldGFkYXRhSW5mbyIsImdldERlbGVnYXRlIiwicGF5bG9hZCIsIm9QYXJhbXMiLCJlbnRpdHlTZXQiLCJjaGFydENvbnRleHRQYXRoIiwicmVtb3ZlSXRlbUZyb21Jbm5lckNoYXJ0Iiwib01EQ0NoYXJ0SXRlbSIsImNhbGwiLCJmaXJlRGVzZWxlY3REYXRhIiwic29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5IiwiYklzVHJhbnNBZ2dyZWdhdGUiLCJGaWx0ZXJPcGVyYXRvciIsIkVRIiwiYUZpbHRlcnMiLCJraW5kIiwiZ2V0UHJvcGVydHlGcm9tTmFtZUFuZEtpbmQiLCJtZGNDaGFydCIsImdldFByb3BlcnR5SGVscGVyIiwiZ2V0UHJvcGVydHkiLCJnZXRGaWx0ZXJEZWxlZ2F0ZSIsIkZpbHRlckJhckRlbGVnYXRlIiwiYWRkSXRlbSIsIm9QYXJlbnRDb250cm9sIiwic1Byb3BlcnR5SW5mb05hbWUiLCJwcm9wIiwib0ZpbHRlckl0ZW0iLCJiaW5kUHJvcGVydHkiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkNoYXJ0RGVsZWdhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eVBhdGggfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB7IENvbW1vbkFubm90YXRpb25UZXJtcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvQ29tbW9uXCI7XG5pbXBvcnQgdHlwZSB7IFRleHRBcnJhbmdlbWVudCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IG1lcmdlIGZyb20gXCJzYXAvYmFzZS91dGlsL21lcmdlXCI7XG5pbXBvcnQgdHlwZSBzYXBDaGFydCBmcm9tIFwic2FwL2NoYXJ0L0NoYXJ0XCI7XG5pbXBvcnQgVGltZVVuaXRUeXBlIGZyb20gXCJzYXAvY2hhcnQvVGltZVVuaXRUeXBlXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvbk1vZGUgfSBmcm9tIFwic2FwL2NoYXJ0L2xpYnJhcnlcIjtcbmltcG9ydCB0eXBlIHsgX0ZpbHRlclJlc3RyaWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgdmFsdWVGb3JtYXR0ZXJzIGZyb20gXCJzYXAvZmUvY29yZS9mb3JtYXR0ZXJzL1ZhbHVlRm9ybWF0dGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEZpbHRlclJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGUsXG5cdFNvcnRSZXN0cmljdGlvbnNJbmZvVHlwZSxcblx0U29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGVcbn0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YU1vZGVsRnVuY3Rpb25cIjtcbmltcG9ydCB7IGdldEZpbHRlcmFibGVEYXRhLCBnZXRTb3J0UmVzdHJpY3Rpb25zSW5mbywgaXNNdWx0aVZhbHVlRmlsdGVyRXhwcmVzc2lvbiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFNb2RlbEZ1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IEludGVybmFsTW9kZWxDb250ZXh0IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNb2RlbCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL1Jlc291cmNlTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvQ29sbGVjdGlvbkJpbmRpbmdJbmZvXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUluZm8gfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBNYWNyb3NEZWxlZ2F0ZVV0aWwgZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgQ2hhcnRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY2hhcnQvQ2hhcnRIZWxwZXJcIjtcbmltcG9ydCBDaGFydFV0aWxzIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0VXRpbHNcIjtcbmltcG9ydCBGaWx0ZXJVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWx0ZXIvRmlsdGVyVXRpbHNcIjtcbmltcG9ydCB0eXBlIFVJNUV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgRXZlbnRQcm92aWRlciBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRQcm92aWRlclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0eUJpbmRpbmdJbmZvIH0gZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgTGlicmFyeSBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgdHlwZSBDaGFydCBmcm9tIFwic2FwL3VpL21kYy9DaGFydFwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRJdGVtIGZyb20gXCJzYXAvdWkvbWRjL2NoYXJ0L0NoYXJ0SXRlbVwiO1xuaW1wb3J0IHR5cGUgQ2hhcnRQcm9wZXJ0eSBmcm9tIFwic2FwL3VpL21kYy9jaGFydC9DaGFydFByb3BlcnR5XCI7XG5pbXBvcnQgQ2hhcnRJdGVtUm9sZVR5cGUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvQ2hhcnRJdGVtUm9sZVR5cGVcIjtcbmltcG9ydCB0eXBlIENoYXJ0UDEzbk1vZGUgZnJvbSBcInNhcC91aS9tZGMvZW51bXMvQ2hhcnRQMTNuTW9kZVwiO1xuaW1wb3J0IERlbGVnYXRlVXRpbCBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS92NC91dGlsL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IEJhc2VDaGFydERlbGVnYXRlIGZyb20gXCJzYXAvdWkvbWRjL29kYXRhL3Y0L3ZpekNoYXJ0L0NoYXJ0RGVsZWdhdGVcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyXCI7XG5pbXBvcnQgRmlsdGVyT3BlcmF0b3IgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJPcGVyYXRvclwiO1xuaW1wb3J0IHR5cGUgT0RhdGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgRXhwYW5kUGF0aFR5cGUsIE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24sIE1ldGFNb2RlbFByb3BlcnR5IH0gZnJvbSBcInR5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IHsgdHlwZSBNZXRhTW9kZWxFbnVtIH0gZnJvbSBcInR5cGVzL21ldGFtb2RlbF90eXBlc1wiO1xuaW1wb3J0IEZpbHRlckJhckRlbGVnYXRlIGZyb20gXCIuLi9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGVcIjtcbmltcG9ydCB0eXBlIENoYXJ0QVBJIGZyb20gXCIuL0NoYXJ0QVBJXCI7XG5cbmNvbnN0IENoYXJ0RGVsZWdhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBCYXNlQ2hhcnREZWxlZ2F0ZSk7XG5CYXNlQ2hhcnREZWxlZ2F0ZS5hcGlWZXJzaW9uID0gMjtcbkNoYXJ0RGVsZWdhdGUuX2xvYWRDaGFydCA9IGFzeW5jIGZ1bmN0aW9uICgpOiBQcm9taXNlPHVua25vd24+IHtcblx0YXdhaXQgTGlicmFyeS5sb2FkKHsgbmFtZTogXCJzYXAuY2hhcnRcIiB9KTtcblx0cmV0dXJuIEJhc2VDaGFydERlbGVnYXRlLl9sb2FkQ2hhcnQoKTtcbn07XG5DaGFydERlbGVnYXRlLl9zZXRDaGFydE5vRGF0YVRleHQgPSBmdW5jdGlvbiAob0NoYXJ0OiBDaGFydCwgb0JpbmRpbmdJbmZvOiBQcm9wZXJ0eUJpbmRpbmdJbmZvKTogdm9pZCB7XG5cdGxldCBzTm9EYXRhS2V5ID0gXCJcIjtcblx0Y29uc3Qgb0NoYXJ0RmlsdGVySW5mbyA9IENoYXJ0VXRpbHMuZ2V0QWxsRmlsdGVySW5mbyhvQ2hhcnQpLFxuXHRcdHN1ZmZpeFJlc291cmNlS2V5ID0gb0JpbmRpbmdJbmZvLnBhdGguc3RhcnRzV2l0aChcIi9cIikgPyBvQmluZGluZ0luZm8ucGF0aC5zdWJzdHIoMSkgOiBvQmluZGluZ0luZm8ucGF0aDtcblx0Y29uc3QgX2dldE5vRGF0YVRleHRXaXRoRmlsdGVycyA9IGZ1bmN0aW9uICgpOiBzdHJpbmcge1xuXHRcdGlmIChvQ2hhcnQuZGF0YShcIm11bHRpVmlld3NcIikpIHtcblx0XHRcdHJldHVybiBcIk1fVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVF9NVUxUSV9WSUVXXCI7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBcIlRfVEFCTEVfQU5EX0NIQVJUX05PX0RBVEFfVEVYVF9XSVRIX0ZJTFRFUlwiO1xuXHRcdH1cblx0fTtcblx0aWYgKG9DaGFydC5nZXRGaWx0ZXIoKSkge1xuXHRcdGlmIChvQ2hhcnRGaWx0ZXJJbmZvLnNlYXJjaCB8fCAob0NoYXJ0RmlsdGVySW5mby5maWx0ZXJzICYmIG9DaGFydEZpbHRlckluZm8uZmlsdGVycy5sZW5ndGgpKSB7XG5cdFx0XHRzTm9EYXRhS2V5ID0gX2dldE5vRGF0YVRleHRXaXRoRmlsdGVycygpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRzTm9EYXRhS2V5ID0gXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRcIjtcblx0XHR9XG5cdH0gZWxzZSBpZiAob0NoYXJ0RmlsdGVySW5mby5zZWFyY2ggfHwgKG9DaGFydEZpbHRlckluZm8uZmlsdGVycyAmJiBvQ2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMubGVuZ3RoKSkge1xuXHRcdHNOb0RhdGFLZXkgPSBfZ2V0Tm9EYXRhVGV4dFdpdGhGaWx0ZXJzKCk7XG5cdH0gZWxzZSB7XG5cdFx0c05vRGF0YUtleSA9IFwiTV9UQUJMRV9BTkRfQ0hBUlRfTk9fRklMVEVSU19OT19EQVRBX1RFWFRcIjtcblx0fVxuXHRvQ2hhcnQuc2V0Tm9EYXRhVGV4dChnZXRSZXNvdXJjZU1vZGVsKG9DaGFydCkuZ2V0VGV4dChzTm9EYXRhS2V5LCB1bmRlZmluZWQsIHN1ZmZpeFJlc291cmNlS2V5KSk7XG59O1xuXG5DaGFydERlbGVnYXRlLl9oYW5kbGVQcm9wZXJ0eSA9IGZ1bmN0aW9uIChcblx0b0NvbnRleHQ6IENvbnRleHQsXG5cdG9NRENDaGFydDogQ2hhcnQsXG5cdG1FbnRpdHlTZXRBbm5vdGF0aW9uczogTWV0YU1vZGVsRW50aXR5U2V0QW5ub3RhdGlvbixcblx0bUtub3duQWdncmVnYXRhYmxlUHJvcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+Pixcblx0bUN1c3RvbUFnZ3JlZ2F0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRhUHJvcGVydGllczogQ2hhcnRQcm9wZXJ0eVtdLFxuXHRzQ3JpdGljYWxpdHk6IHN0cmluZ1xuKTogdm9pZCB7XG5cdGNvbnN0IG9BcHBseVN1cHBvcnRlZCA9IENvbW1vbkhlbHBlci5wYXJzZUN1c3RvbURhdGEob01EQ0NoYXJ0LmRhdGEoXCJhcHBseVN1cHBvcnRlZFwiKSk7XG5cdGNvbnN0IHNvcnRSZXN0cmljdGlvbnNJbmZvID0gZ2V0U29ydFJlc3RyaWN0aW9uc0luZm8obUVudGl0eVNldEFubm90YXRpb25zKTtcblx0Y29uc3QgbWV0YU1vZGVsID0gb0NvbnRleHQuZ2V0TW9kZWwoKTtcblx0Y29uc3QgZW50aXR5VHlwZVBhdGggPSBvTURDQ2hhcnQuZGF0YShcImVudGl0eVR5cGVcIik7XG5cdGNvbnN0IGJpbmRpbmdQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChlbnRpdHlUeXBlUGF0aCk7XG5cdGNvbnN0IGZpbHRlclJlc3RyaWN0aW9uczogX0ZpbHRlclJlc3RyaWN0aW9ucyA9IENvbW1vblV0aWxzLmdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aChiaW5kaW5nUGF0aCwgbWV0YU1vZGVsKTtcblx0Y29uc3QgcHJvcGVydHlGaWx0ZXJhYmxlRGF0YTogUmVjb3JkPHN0cmluZywgRmlsdGVyUmVzdHJpY3Rpb25zUHJvcGVydHlJbmZvVHlwZT4gPSB7fTtcblx0Z2V0RmlsdGVyYWJsZURhdGEoXG5cdFx0cHJvcGVydHlGaWx0ZXJhYmxlRGF0YSxcblx0XHRmaWx0ZXJSZXN0cmljdGlvbnMuTm9uRmlsdGVyYWJsZVByb3BlcnRpZXMsXG5cdFx0T2JqZWN0LmtleXMoZmlsdGVyUmVzdHJpY3Rpb25zLkZpbHRlckFsbG93ZWRFeHByZXNzaW9ucylcblx0KTtcblx0Y29uc3Qgb09iaiA9IG9Db250ZXh0LmdldE1vZGVsKCkuZ2V0T2JqZWN0KG9Db250ZXh0LmdldFBhdGgoKSk7XG5cdGNvbnN0IHNLZXkgPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE9iamVjdChgJHtvQ29udGV4dC5nZXRQYXRoKCl9QHNhcHVpLm5hbWVgKSBhcyBzdHJpbmc7XG5cdGNvbnN0IGFNb2RlcyA9IG9NRENDaGFydC5nZXRQMTNuTW9kZSgpO1xuXHRjaGVja0Zvck5vbmZpbHRlcmFibGVFbnRpdHlTZXQob01EQ0NoYXJ0LCBhTW9kZXMpO1xuXG5cdGlmIChvT2JqICYmIG9PYmouJGtpbmQgPT09IFwiUHJvcGVydHlcIikge1xuXHRcdC8vIGlnbm9yZSAoYXMgZm9yIG5vdykgYWxsIGNvbXBsZXggcHJvcGVydGllc1xuXHRcdC8vIG5vdCBjbGVhciBpZiB0aGV5IG1pZ2h0IGJlIG5lc3RpbmcgKGNvbXBsZXggaW4gY29tcGxleClcblx0XHQvLyBub3QgY2xlYXIgaG93IHRoZXkgYXJlIHJlcHJlc2VudGVkIGluIG5vbi1maWx0ZXJhYmxlIGFubm90YXRpb25cblx0XHQvLyBldGMuXG5cdFx0aWYgKG9PYmouJGlzQ29sbGVjdGlvbikge1xuXHRcdFx0Ly9Mb2cud2FybmluZyhcIkNvbXBsZXggcHJvcGVydHkgd2l0aCB0eXBlIFwiICsgb09iai4kVHlwZSArIFwiIGhhcyBiZWVuIGlnbm9yZWRcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgb1Byb3BlcnR5QW5ub3RhdGlvbnMgPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KGAke29Db250ZXh0LmdldFBhdGgoKX1AYCk7XG5cdFx0Y29uc3Qgc1BhdGggPSBtZXRhTW9kZWwuZ2V0T2JqZWN0KFwiQHNhcHVpLm5hbWVcIiwgbWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KG9Db250ZXh0LmdldFBhdGgoKSkpO1xuXG5cdFx0Y29uc3QgYUdyb3VwYWJsZVByb3BlcnRpZXMgPSBvQXBwbHlTdXBwb3J0ZWQgJiYgb0FwcGx5U3VwcG9ydGVkLkdyb3VwYWJsZVByb3BlcnRpZXM7XG5cdFx0Y29uc3QgYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgPSBvQXBwbHlTdXBwb3J0ZWQgJiYgb0FwcGx5U3VwcG9ydGVkLkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXM7XG5cdFx0bGV0IGJHcm91cGFibGUgPSBhR3JvdXBhYmxlUHJvcGVydGllcyA/IGNoZWNrUHJvcGVydHlUeXBlKGFHcm91cGFibGVQcm9wZXJ0aWVzLCBzUGF0aCkgOiBmYWxzZTtcblx0XHRsZXQgYkFnZ3JlZ2F0YWJsZSA9IGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID8gY2hlY2tQcm9wZXJ0eVR5cGUoYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMsIHNQYXRoKSA6IGZhbHNlO1xuXG5cdFx0aWYgKCFhR3JvdXBhYmxlUHJvcGVydGllcyB8fCAoYUdyb3VwYWJsZVByb3BlcnRpZXMgJiYgIWFHcm91cGFibGVQcm9wZXJ0aWVzLmxlbmd0aCkpIHtcblx0XHRcdGJHcm91cGFibGUgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuR3JvdXBhYmxlXCJdO1xuXHRcdH1cblx0XHRpZiAoIWFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzIHx8IChhQWdncmVnYXRhYmxlUHJvcGVydGllcyAmJiAhYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMubGVuZ3RoKSkge1xuXHRcdFx0YkFnZ3JlZ2F0YWJsZSA9IG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5BZ2dyZWdhdGFibGVcIl07XG5cdFx0fVxuXG5cdFx0Ly9SaWdodCBub3c6IHNraXAgdGhlbSwgc2luY2Ugd2UgY2FuJ3QgY3JlYXRlIGEgY2hhcnQgZnJvbSBpdFxuXHRcdGlmICghYkdyb3VwYWJsZSAmJiAhYkFnZ3JlZ2F0YWJsZSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRjaGVja1Byb3BlcnR5SXNCb3RoR3JvdXBhYmxlQW5kQWdncmVnYXRhYmxlKG1DdXN0b21BZ2dyZWdhdGVzLCBzS2V5LCBiR3JvdXBhYmxlLCBiQWdncmVnYXRhYmxlKTtcblx0XHRjb25zdCBjdXN0b21BZ2dyZWdhdGVzID0gT2JqZWN0LmtleXMobUN1c3RvbUFnZ3JlZ2F0ZXMpO1xuXHRcdGlmIChiQWdncmVnYXRhYmxlKSB7XG5cdFx0XHRjb25zdCBhQWdncmVnYXRlUHJvcGVydGllcyA9IENoYXJ0RGVsZWdhdGUuX2NyZWF0ZVByb3BlcnR5SW5mb3NGb3JBZ2dyZWdhdGFibGUoXG5cdFx0XHRcdG9NRENDaGFydCxcblx0XHRcdFx0c0tleSxcblx0XHRcdFx0b1Byb3BlcnR5QW5ub3RhdGlvbnMsXG5cdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9ucyxcblx0XHRcdFx0c29ydFJlc3RyaWN0aW9uc0luZm8sXG5cdFx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzLFxuXHRcdFx0XHRtQ3VzdG9tQWdncmVnYXRlcyxcblx0XHRcdFx0b09iai4kVHlwZVxuXHRcdFx0KTtcblx0XHRcdGFBZ2dyZWdhdGVQcm9wZXJ0aWVzLmZvckVhY2goZnVuY3Rpb24gKG9BZ2dyZWdhdGVQcm9wZXJ0eTogQ2hhcnRQcm9wZXJ0eSkge1xuXHRcdFx0XHRhUHJvcGVydGllcy5wdXNoKG9BZ2dyZWdhdGVQcm9wZXJ0eSk7XG5cdFx0XHR9KTtcblx0XHRcdC8vQWRkIHRyYW5zZm9ybWF0aW9uIGFnZ3JlZ2F0ZWQgcHJvcGVydGllcyB0byBjaGFydCBwcm9wZXJ0aWVzXG5cdFx0XHRpZiAoYU1vZGVzICYmIGFNb2Rlcy5pbmNsdWRlcyhcIkZpbHRlclwiKSkge1xuXHRcdFx0XHRjb25zdCBhS25vd25BZ2dyZWdhdGFibGVQcm9wcyA9IE9iamVjdC5rZXlzKG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzKTtcblx0XHRcdFx0Y29uc3QgYUdyb3VwYWJsZVByb3BlcnRpZXNWYWx1ZXMgPSBhR3JvdXBhYmxlUHJvcGVydGllcy5tYXAoXG5cdFx0XHRcdFx0KG9Qcm9wZXJ0eTogeyAkUHJvcGVydHlQYXRoOiBzdHJpbmcgfSkgPT4gb1Byb3BlcnR5LiRQcm9wZXJ0eVBhdGhcblx0XHRcdFx0KTtcblx0XHRcdFx0Ly8gQWRkIHRyYW5zZm9ybWF0aW9uIGFnZ3JlZ2F0ZWQgcHJvcGVydHkgdG8gY2hhcnQgc28gdGhhdCBpbiB0aGUgZmlsdGVyIGRyb3Bkb3duIGl0J3MgdmlzaWJsZVxuXHRcdFx0XHQvLyBBbHNvIG1hcmsgdmlzaWJpbGl0eSBmYWxzZSBhcyB0aGlzIHByb3BlcnR5IHNob3VsZCBub3QgY29tZSB1cCBpbiB1bmRlciBjaGFydCBzZWN0aW9uIG9mIHBlcnNvbmFsaXphdGlvbiBkaWFsb2dcblx0XHRcdFx0aWYgKGFLbm93bkFnZ3JlZ2F0YWJsZVByb3BzLmluY2x1ZGVzKHNLZXkpICYmICFhR3JvdXBhYmxlUHJvcGVydGllc1ZhbHVlcy5pbmNsdWRlcyhzS2V5KSkge1xuXHRcdFx0XHRcdGFQcm9wZXJ0aWVzID0gYWRkUHJvcGVydHlUb0NoYXJ0KFxuXHRcdFx0XHRcdFx0YVByb3BlcnRpZXMsXG5cdFx0XHRcdFx0XHRzS2V5LFxuXHRcdFx0XHRcdFx0b1Byb3BlcnR5QW5ub3RhdGlvbnMsXG5cdFx0XHRcdFx0XHRjdXN0b21BZ2dyZWdhdGVzLmluY2x1ZGVzKHNLZXkpID8gZmFsc2UgOiBwcm9wZXJ0eUZpbHRlcmFibGVEYXRhPy5bc0tleV0/LmZpbHRlcmFibGUgPz8gdHJ1ZSxcblx0XHRcdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9ucyxcblx0XHRcdFx0XHRcdGZhbHNlLCAvLyAnaXNTb3J0YWJsZScgaXMgc2V0IHRvICdmYWxzZScgdG8gYXZvaWQgZHVwbGljYXRlIGVudHJpZXMgaW4gdGhlIHNvcnQgcXVldWUgZm9yIGFnZ3JlZ2F0YWJsZSBwcm9wZXJ0aWVzLiBUaGVzZSBwcm9wZXJ0aWVzIGFyZSBhbHJlYWR5IHF1ZXVlZCBmb3Igc29ydGluZyBpbiB0aGUgJ2NyZWF0ZVByb3BlcnR5SW5mb3NGb3JBZ2dyZWdhdGFibGUnIG1ldGhvZC5cblx0XHRcdFx0XHRcdG9NRENDaGFydCxcblx0XHRcdFx0XHRcdHNDcml0aWNhbGl0eSxcblx0XHRcdFx0XHRcdG9PYmosXG5cdFx0XHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZXMuaW5jbHVkZXMoc0tleSkgPyBmYWxzZSA6IHRydWUsXG5cdFx0XHRcdFx0XHR1bmRlZmluZWQsXG5cdFx0XHRcdFx0XHR0cnVlXG5cdFx0XHRcdFx0KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoYkdyb3VwYWJsZSkge1xuXHRcdFx0Y29uc3Qgc05hbWUgPSBzS2V5IHx8IFwiXCIsXG5cdFx0XHRcdHNUZXh0UHJvcGVydHkgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBcIiArIENvbW1vbkFubm90YXRpb25UZXJtcy5UZXh0XVxuXHRcdFx0XHRcdD8gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAXCIgKyBDb21tb25Bbm5vdGF0aW9uVGVybXMuVGV4dF0uJFBhdGhcblx0XHRcdFx0XHQ6IG51bGw7XG5cdFx0XHRsZXQgYklzTmF2aWdhdGlvblRleHQgPSBmYWxzZTtcblx0XHRcdGlmIChzTmFtZSAmJiBzTmFtZS5pbmNsdWRlcyhcIi9cIikpIHtcblx0XHRcdFx0TG9nLmVycm9yKGAkZXhwYW5kIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLiBQcm9wZXJ0eTogJHtzTmFtZX0gZnJvbSBhbiBhc3NvY2lhdGlvbiBjYW5ub3QgYmUgdXNlZGApO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoc1RleHRQcm9wZXJ0eSAmJiBzVGV4dFByb3BlcnR5LmluZGV4T2YoXCIvXCIpID4gLTEpIHtcblx0XHRcdFx0TG9nLmVycm9yKGAkZXhwYW5kIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLiBUZXh0IFByb3BlcnR5OiAke3NUZXh0UHJvcGVydHl9IGZyb20gYW4gYXNzb2NpYXRpb24gY2Fubm90IGJlIHVzZWRgKTtcblx0XHRcdFx0YklzTmF2aWdhdGlvblRleHQgPSB0cnVlO1xuXHRcdFx0fVxuXHRcdFx0YVByb3BlcnRpZXMgPSBhZGRQcm9wZXJ0eVRvQ2hhcnQoXG5cdFx0XHRcdGFQcm9wZXJ0aWVzLFxuXHRcdFx0XHRzS2V5LFxuXHRcdFx0XHRvUHJvcGVydHlBbm5vdGF0aW9ucyxcblx0XHRcdFx0Y3VzdG9tQWdncmVnYXRlcy5pbmNsdWRlcyhzS2V5KSA/IGZhbHNlIDogcHJvcGVydHlGaWx0ZXJhYmxlRGF0YT8uW3NLZXldPy5maWx0ZXJhYmxlID8/IHRydWUsXG5cdFx0XHRcdGZpbHRlclJlc3RyaWN0aW9ucyxcblx0XHRcdFx0Q2hhcnREZWxlZ2F0ZS5fZ2V0U29ydGFibGUob01EQ0NoYXJ0LCBzb3J0UmVzdHJpY3Rpb25zSW5mby5wcm9wZXJ0eUluZm9bc0tleV0sIGZhbHNlKSxcblx0XHRcdFx0b01EQ0NoYXJ0LFxuXHRcdFx0XHRzQ3JpdGljYWxpdHksXG5cdFx0XHRcdG9PYmosXG5cdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZXMuaW5jbHVkZXMoc0tleSkgPyBmYWxzZSA6IHRydWUsXG5cdFx0XHRcdGZhbHNlLFxuXHRcdFx0XHRiSXNOYXZpZ2F0aW9uVGV4dFxuXHRcdFx0KTtcblx0XHR9XG5cdH1cbn07XG5cbi8vIGNyZWF0ZSBwcm9wZXJ0aWVzIGZvciBjaGFydFxuZnVuY3Rpb24gYWRkUHJvcGVydHlUb0NoYXJ0KFxuXHRhUHJvcGVydGllczogQ2hhcnRQcm9wZXJ0eVtdLFxuXHRzS2V5OiBzdHJpbmcsXG5cdG9Qcm9wZXJ0eUFubm90YXRpb25zOiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRpc0ZpbHRlcmFibGU6IGJvb2xlYW4sXG5cdG9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvOiBfRmlsdGVyUmVzdHJpY3Rpb25zLFxuXHRpc1NvcnRhYmxlOiBib29sZWFuLFxuXHRvTURDQ2hhcnQ6IENoYXJ0LFxuXHRzQ3JpdGljYWxpdHk6IHN0cmluZyxcblx0b09iajogTWV0YU1vZGVsUHJvcGVydHksXG5cdGJJc0dyb3VwYWJsZTogYm9vbGVhbixcblx0YklzQWdncmVnYXRhYmxlOiBib29sZWFuLFxuXHRiSXNOYXZpZ2F0aW9uVGV4dD86IGJvb2xlYW4sXG5cdGJJc0hpZGRlbj86IGJvb2xlYW5cbik6IENoYXJ0UHJvcGVydHlbXSB7XG5cdGNvbnN0IG9Qcm9wZXJ0eTogQ2hhcnRQcm9wZXJ0eSA9IHtcblx0XHRuYW1lOiBcIl9mZV9ncm91cGFibGVfXCIgKyBzS2V5LFxuXHRcdGxhYmVsOiBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIl0/LnRvU3RyaW5nKCkgfHwgc0tleSxcblx0XHRzb3J0YWJsZTogaXNTb3J0YWJsZSxcblx0XHRmaWx0ZXJhYmxlOiBpc0ZpbHRlcmFibGUsXG5cdFx0Z3JvdXBhYmxlOiBiSXNHcm91cGFibGUsXG5cdFx0YWdncmVnYXRhYmxlOiBiSXNBZ2dyZWdhdGFibGUsXG5cdFx0bWF4Q29uZGl0aW9uczogaXNNdWx0aVZhbHVlRmlsdGVyRXhwcmVzc2lvbihvRmlsdGVyUmVzdHJpY3Rpb25zSW5mb1tcIkZpbHRlckFsbG93ZWRFeHByZXNzaW9uc1wiXT8uW3NLZXldPy5bMF0pID8gLTEgOiAxLFxuXHRcdHBhdGg6IHNLZXksXG5cdFx0cm9sZTogQ2hhcnRJdGVtUm9sZVR5cGUuY2F0ZWdvcnksIC8vc3RhbmRhcmQsIG5vcm1hbGx5IHRoaXMgc2hvdWxkIGJlIGludGVycHJldGVkIGZyb20gVUkuQ2hhcnQgYW5ub3RhdGlvblxuXHRcdGNyaXRpY2FsaXR5OiBzQ3JpdGljYWxpdHksIC8vVG8gYmUgaW1wbGVtZW50ZWQgYnkgRkVcblx0XHRkYXRhVHlwZTogb09iai4kVHlwZSxcblx0XHR2aXNpYmxlOiBiSXNIaWRkZW4gPyAhYklzSGlkZGVuIDogdHJ1ZSxcblx0XHR0ZXh0UHJvcGVydHk6XG5cdFx0XHQhYklzTmF2aWdhdGlvblRleHQgJiYgb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl1cblx0XHRcdFx0PyAob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRcIl0gYXMgeyAkUGF0aDogc3RyaW5nIH0pLiRQYXRoXG5cdFx0XHRcdDogbnVsbCwgLy9UbyBiZSBpbXBsZW1lbnRlZCBieSBGRVxuXHRcdHRleHRGb3JtYXR0ZXI6IChvUHJvcGVydHlBbm5vdGF0aW9ucyBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPilbXG5cdFx0XHRcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVGV4dEBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5UZXh0QXJyYW5nZW1lbnRcIlxuXHRcdF0gYXMgTWV0YU1vZGVsRW51bTxUZXh0QXJyYW5nZW1lbnQ+XG5cdH07XG5cdC8vIHRpbWVVbml0VHlwZSA9IHVuZGVmaW5lZCAtPiBjcmFzaGVzIHRoZSBjaGFydC4gdGhlcmVmb3JlOlxuXHRjb25zdCB0aW1lVW5pdFR5cGUgPSBDaGFydERlbGVnYXRlLl9nZXRUaW1lVHlwZShvT2JqLCBvUHJvcGVydHlBbm5vdGF0aW9ucyk7XG5cdGlmICh0aW1lVW5pdFR5cGUpIG9Qcm9wZXJ0eS50aW1lVW5pdFR5cGUgPSB0aW1lVW5pdFR5cGU7XG5cblx0aWYgKG9PYmouJFR5cGUgPT09IFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCIgfHwgb09iai4kVHlwZSA9PT0gXCJFZG0uVGltZU9mRGF5XCIpIHtcblx0XHRzd2l0Y2ggKG9PYmouJFR5cGUpIHtcblx0XHRcdGNhc2UgXCJFZG0uRGF0ZVRpbWVPZmZzZXRcIjpcblx0XHRcdFx0b1Byb3BlcnR5LmZvcm1hdE9wdGlvbnMgPSB7IHN0eWxlOiBcIm1lZGl1bS9zaG9ydFwiIH07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0Y2FzZSBcIkVkbS5UaW1lT2ZEYXlcIjpcblx0XHRcdFx0b1Byb3BlcnR5LmZvcm1hdE9wdGlvbnMgPSB7IHN0eWxlOiBcInNob3J0XCIgfTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHRkZWZhdWx0OlxuXHRcdFx0XHRicmVhaztcblx0XHR9XG5cdH1cblxuXHRhUHJvcGVydGllcy5wdXNoKG9Qcm9wZXJ0eSk7XG5cdHJldHVybiBhUHJvcGVydGllcztcbn1cblxuQ2hhcnREZWxlZ2F0ZS5fZ2V0VGltZVR5cGUgPSBmdW5jdGlvbiAob09iajogTWV0YU1vZGVsUHJvcGVydHksIG9Qcm9wZXJ0eUFubm90YXRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik6IFRpbWVVbml0VHlwZSB8IHVuZGVmaW5lZCB7XG5cdHN3aXRjaCAob09iai4kVHlwZSkge1xuXHRcdGNhc2UgXCJFZG0uRGF0ZVwiOlxuXHRcdFx0cmV0dXJuIFRpbWVVbml0VHlwZS5EYXRlO1xuXHRcdGNhc2UgXCJFZG0uU3RyaW5nXCI6XG5cdFx0XHRpZiAob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAXCIgKyBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNGaXNjYWxZZWFyXSkge1xuXHRcdFx0XHRyZXR1cm4gVGltZVVuaXRUeXBlLmZpc2NhbHllYXI7XG5cdFx0XHR9IGVsc2UgaWYgKG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQFwiICsgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhclBlcmlvZF0pIHtcblx0XHRcdFx0cmV0dXJuIFRpbWVVbml0VHlwZS5maXNjYWx5ZWFycGVyaW9kO1xuXHRcdFx0fSBlbHNlIGlmIChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBcIiArIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0NhbGVuZGFyWWVhck1vbnRoXSkge1xuXHRcdFx0XHRyZXR1cm4gVGltZVVuaXRUeXBlLnllYXJtb250aDtcblx0XHRcdH0gZWxzZSBpZiAob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAXCIgKyBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNDYWxlbmRhclllYXJRdWFydGVyXSkge1xuXHRcdFx0XHRyZXR1cm4gVGltZVVuaXRUeXBlLnllYXJxdWFydGVyO1xuXHRcdFx0fSBlbHNlIGlmIChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBcIiArIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0NhbGVuZGFyWWVhcldlZWtdKSB7XG5cdFx0XHRcdHJldHVybiBUaW1lVW5pdFR5cGUueWVhcndlZWs7XG5cdFx0XHR9IGVsc2UgaWYgKG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQFwiICsgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzQ2FsZW5kYXJEYXRlXSkge1xuXHRcdFx0XHRyZXR1cm4gVGltZVVuaXRUeXBlLnllYXJtb250aGRheTtcblx0XHRcdH1cblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gdW5kZWZpbmVkO1xuXHR9XG59O1xuXG4vLyBJZiBlbnRpdHlzZXQgaXMgbm9uIGZpbHRlcmFibGUsdGhlbiBmcm9tIHAxM24gbW9kZXMgcmVtb3ZlIEZpbHRlciBzbyB0aGF0IG9uIFVJIGZpbHRlciBvcHRpb24gZG9lc24ndCBzaG93IHVwXG5mdW5jdGlvbiBjaGVja0Zvck5vbmZpbHRlcmFibGVFbnRpdHlTZXQob01EQ0NoYXJ0OiBDaGFydCwgYU1vZGVzOiAoQ2hhcnRQMTNuTW9kZSB8IGtleW9mIHR5cGVvZiBDaGFydFAxM25Nb2RlKVtdKTogdm9pZCB7XG5cdGNvbnN0IGJFbnRpdHlTZXRGaWxlcmFibGUgPSBvTURDQ2hhcnRcblx0XHQ/LmdldE1vZGVsKClcblx0XHQ/LmdldE1ldGFNb2RlbCgpXG5cdFx0Py5nZXRPYmplY3QoYCR7b01EQ0NoYXJ0LmRhdGEoXCJ0YXJnZXRDb2xsZWN0aW9uUGF0aFwiKX1AT3JnLk9EYXRhLkNhcGFiaWxpdGllcy5WMS5GaWx0ZXJSZXN0cmljdGlvbnNgKT8uRmlsdGVyYWJsZTtcblx0aWYgKGJFbnRpdHlTZXRGaWxlcmFibGUgIT09IHVuZGVmaW5lZCAmJiAhYkVudGl0eVNldEZpbGVyYWJsZSkge1xuXHRcdGFNb2RlcyA9IGFNb2Rlcy5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gaXRlbSAhPT0gXCJGaWx0ZXJcIik7XG5cdFx0b01EQ0NoYXJ0LnNldFAxM25Nb2RlKGFNb2Rlcyk7XG5cdH1cbn1cblxuLy8gIGNoZWNrIGlmIEdyb3VwYWJsZSAvQWdncmVnYXRhYmxlIHByb3BlcnR5IGlzIHByZXNlbnQgb3Igbm90XG5mdW5jdGlvbiBjaGVja1Byb3BlcnR5VHlwZShcblx0YVByb3BlcnRpZXM6IChFeHBhbmRQYXRoVHlwZTxQcm9wZXJ0eVBhdGg+ICYgeyBQcm9wZXJ0eTogRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiB9KVtdLFxuXHRzUGF0aDogc3RyaW5nXG4pOiB0cnVlIHwgdW5kZWZpbmVkIHtcblx0aWYgKGFQcm9wZXJ0aWVzLmxlbmd0aCkge1xuXHRcdGZvciAoY29uc3QgZWxlbWVudCBvZiBhUHJvcGVydGllcykge1xuXHRcdFx0aWYgKGVsZW1lbnQ/LiRQcm9wZXJ0eVBhdGggPT09IHNQYXRoIHx8IGVsZW1lbnQ/LlByb3BlcnR5Py4kUHJvcGVydHlQYXRoID09PSBzUGF0aCkge1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cdH1cbn1cblxuLy9JZiBzYW1lIGN1c3RvbSBwcm9wZXJ0eSBpcyBjb25maWd1cmVkIGFzIGdyb3VwYWJsZSBhbmQgYWdncmVnYXRhYmxlIHRocm93IGFuIGVycm9yXG5mdW5jdGlvbiBjaGVja1Byb3BlcnR5SXNCb3RoR3JvdXBhYmxlQW5kQWdncmVnYXRhYmxlKFxuXHRtQ3VzdG9tQWdncmVnYXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG5cdHNLZXk6IHN0cmluZyxcblx0Ykdyb3VwYWJsZT86IGJvb2xlYW4sXG5cdGJBZ2dyZWdhdGFibGU/OiBib29sZWFuXG4pOiB2b2lkIHtcblx0Y29uc3QgY3VzdG9tUHJvcGVydGllcyA9IE9iamVjdC5rZXlzKG1DdXN0b21BZ2dyZWdhdGVzKTtcblx0aWYgKGJHcm91cGFibGUgJiYgYkFnZ3JlZ2F0YWJsZSAmJiBjdXN0b21Qcm9wZXJ0aWVzLmluY2x1ZGVzKHNLZXkpKSB7XG5cdFx0dGhyb3cgbmV3IEVycm9yKFwiU2FtZSBwcm9wZXJ0eSBjYW4gbm90IGJlIGNvbmZpZ3VyZWQgYXMgZ3JvdXBhYmxlIGFuZCBhZ2dyZWdhdGFibGVcIik7XG5cdH1cbn1cblxuQ2hhcnREZWxlZ2F0ZS5mb3JtYXRUZXh0ID0gZnVuY3Rpb24gKG9WYWx1ZTE6IHN0cmluZywgb1ZhbHVlMjogc3RyaW5nKTogc3RyaW5nIHtcblx0Y29uc3Qgc1ZhbHVlID0gdGhpcy50eXBlQ29uZmlnPy50eXBlSW5zdGFuY2U/LmZvcm1hdFZhbHVlKG9WYWx1ZTEsIFwic3RyaW5nXCIpIHx8IG9WYWx1ZTE7XG5cblx0aWYgKG9WYWx1ZTIpIHtcblx0XHRjb25zdCBvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiA9IHRoaXMudGV4dEZvcm1hdHRlcjtcblxuXHRcdGlmIChcblx0XHRcdCFvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiB8fFxuXHRcdFx0b1RleHRBcnJhbmdlbWVudEFubm90YXRpb24uJEVudW1NZW1iZXIgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVGV4dEFycmFuZ2VtZW50VHlwZS9UZXh0Rmlyc3RcIlxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHMob1ZhbHVlMiwgc1ZhbHVlKTtcblx0XHR9XG5cblx0XHRpZiAob1RleHRBcnJhbmdlbWVudEFubm90YXRpb24uJEVudW1NZW1iZXIgPT09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVGV4dEFycmFuZ2VtZW50VHlwZS9UZXh0TGFzdFwiKSB7XG5cdFx0XHRyZXR1cm4gdmFsdWVGb3JtYXR0ZXJzLmZvcm1hdFdpdGhCcmFja2V0cyhzVmFsdWUsIG9WYWx1ZTIpO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBvVmFsdWUyIHx8IHNWYWx1ZTtcbn07XG5cbkNoYXJ0RGVsZWdhdGUudXBkYXRlQmluZGluZ0luZm8gPSBmdW5jdGlvbiAob0NoYXJ0OiBDaGFydCwgb0JpbmRpbmdJbmZvOiBDb2xsZWN0aW9uQmluZGluZ0luZm8pOiB2b2lkIHtcblx0Y29uc3QgaW50ZXJuYWxCaW5kaW5nQ29udGV4dCA9IG9DaGFydC5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpIGFzIEludGVybmFsTW9kZWxDb250ZXh0O1xuXG5cdGludGVybmFsQmluZGluZ0NvbnRleHQuc2V0UHJvcGVydHkoXCJpc0luc2lnaHRzRW5hYmxlZFwiLCB0cnVlKTtcblx0Q2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnROb0RhdGFUZXh0KG9DaGFydCwgb0JpbmRpbmdJbmZvKTtcblx0Y29uc3Qgb0ZpbHRlciA9IEVsZW1lbnQuZ2V0RWxlbWVudEJ5SWQob0NoYXJ0LmdldEZpbHRlcigpKTtcblx0Y29uc3QgbUNvbmRpdGlvbnMgPSBvQ2hhcnQuZ2V0Q29uZGl0aW9ucygpO1xuXHRpZiAoIW9CaW5kaW5nSW5mbykge1xuXHRcdG9CaW5kaW5nSW5mbyA9IHt9O1xuXHR9XG5cdGlmICghb0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMpIHtcblx0XHRvQmluZGluZ0luZm8ucGFyYW1ldGVycyA9IHt9O1xuXHR9XG5cdGlmIChvRmlsdGVyKSB7XG5cdFx0Ly8gU2VhcmNoXG5cdFx0Y29uc3Qgb0luZm8gPSBGaWx0ZXJVdGlscy5nZXRGaWx0ZXJJbmZvKG9GaWx0ZXIsIHt9KTtcblx0XHRjb25zdCBvQXBwbHlTdXBwb3J0ZWQgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9DaGFydC5kYXRhKFwiYXBwbHlTdXBwb3J0ZWRcIikpO1xuXHRcdGlmIChvQXBwbHlTdXBwb3J0ZWQgJiYgb0FwcGx5U3VwcG9ydGVkLmVuYWJsZVNlYXJjaCAmJiBvSW5mby5zZWFyY2gpIHtcblx0XHRcdG9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzLiRzZWFyY2ggPSBDb21tb25VdGlscy5ub3JtYWxpemVTZWFyY2hUZXJtKG9JbmZvLnNlYXJjaCk7XG5cdFx0fSBlbHNlIGlmIChvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoKSB7XG5cdFx0XHRkZWxldGUgb0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaDtcblx0XHR9XG5cdH1cblx0Y29uc3Qgc1BhcmFtZXRlclBhdGggPSBtQ29uZGl0aW9ucyA/IERlbGVnYXRlVXRpbC5nZXRQYXJhbWV0ZXJzSW5mbyhvRmlsdGVyLCBtQ29uZGl0aW9ucykgOiBudWxsO1xuXHRpZiAoc1BhcmFtZXRlclBhdGgpIHtcblx0XHRvQmluZGluZ0luZm8ucGF0aCA9IHNQYXJhbWV0ZXJQYXRoO1xuXHR9XG5cdGNvbnN0IHZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9DaGFydCk7XG5cdGNvbnN0IG9GaWx0ZXJJbmZvID0gQ2hhcnRVdGlscy5nZXRBbGxGaWx0ZXJJbmZvKG9DaGFydCk7XG5cdGlmIChvRmlsdGVySW5mby5iaW5kaW5nUGF0aCkge1xuXHRcdG9CaW5kaW5nSW5mby5wYXRoID0gb0ZpbHRlckluZm8uYmluZGluZ1BhdGg7XG5cdH1cblx0Ly8gcmVtb3ZlIHByZWZpeGVzIHNvIHRoYXQgZW50aXR5c2V0IHdpbGwgbWF0Y2ggd2l0aCB0aGUgcHJvcGVydHkgbmFtZXMgd2l0aCB0aGVzZSBmaWVsZFxuXHRpZiAob0ZpbHRlckluZm8uZmlsdGVycykge1xuXHRcdG9GaWx0ZXJJbmZvLmZpbHRlcnMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xuXHRcdFx0aWYgKGVsZW1lbnQuZ2V0UGF0aCgpKSB7XG5cdFx0XHRcdChlbGVtZW50IGFzIHVua25vd24gYXMgeyBzUGF0aDogc3RyaW5nIH0pLnNQYXRoID0gKG9DaGFydC5nZXRQYXJlbnQoKSBhcyBDaGFydEFQSSkuZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzKFxuXHRcdFx0XHRcdGVsZW1lbnQuZ2V0UGF0aCgpIVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHR9XG5cdG9CaW5kaW5nSW5mby5ldmVudHMgPz89IHt9O1xuXHRvQmluZGluZ0luZm8uZXZlbnRzLmRhdGFSZXF1ZXN0ZWQgPSAob0NoYXJ0LmdldFBhcmVudCgpIGFzIENoYXJ0QVBJKS5vbkludGVybmFsRGF0YVJlcXVlc3RlZC5iaW5kKG9DaGFydC5nZXRQYXJlbnQoKSk7XG5cblx0b0JpbmRpbmdJbmZvLmZpbHRlcnMgPSBvRmlsdGVySW5mby5maWx0ZXJzLmxlbmd0aCA+IDAgPyBuZXcgRmlsdGVyKHsgZmlsdGVyczogb0ZpbHRlckluZm8uZmlsdGVycywgYW5kOiB0cnVlIH0pIDogdW5kZWZpbmVkO1xuXHRvQmluZGluZ0luZm8uc29ydGVyID0gdGhpcy5nZXRTb3J0ZXJzKG9DaGFydCk7XG5cdENoYXJ0RGVsZWdhdGUuX2NoZWNrQW5kQWRkRHJhZnRGaWx0ZXIob0NoYXJ0LCBvQmluZGluZ0luZm8pO1xufTtcblxuQ2hhcnREZWxlZ2F0ZS5mZXRjaFByb3BlcnRpZXMgPSBhc3luYyBmdW5jdGlvbiAob01EQ0NoYXJ0OiBDaGFydCk6IFByb21pc2U8UHJvcGVydHlJbmZvW10+IHtcblx0Y29uc3Qgb01vZGVsID0gdGhpcy5fZ2V0TW9kZWwob01EQ0NoYXJ0KTtcblx0bGV0IHBDcmVhdGVQcm9wZXJ0eUluZm9zOiBQcm9taXNlPFByb3BlcnR5SW5mb1tdPjtcblxuXHRpZiAoIW9Nb2RlbCkge1xuXHRcdHBDcmVhdGVQcm9wZXJ0eUluZm9zID0gbmV3IFByb21pc2U8T0RhdGFNb2RlbD4oKHJlc29sdmUpOiB2b2lkID0+IHtcblx0XHRcdG9NRENDaGFydC5hdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UoXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRyZXNvbHZlcjogcmVzb2x2ZVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRvbk1vZGVsQ29udGV4dENoYW5nZSBhcyAoZXY6IFVJNUV2ZW50KSA9PiB2b2lkLFxuXHRcdFx0XHR0aGlzXG5cdFx0XHQpO1xuXHRcdH0pLnRoZW4oKG9SZXRyaWV2ZWRNb2RlbDogT0RhdGFNb2RlbCkgPT4ge1xuXHRcdFx0cmV0dXJuIHRoaXMuX2NyZWF0ZVByb3BlcnR5SW5mb3Mob01EQ0NoYXJ0LCBvUmV0cmlldmVkTW9kZWwpO1xuXHRcdH0pO1xuXHR9IGVsc2Uge1xuXHRcdHBDcmVhdGVQcm9wZXJ0eUluZm9zID0gdGhpcy5fY3JlYXRlUHJvcGVydHlJbmZvcyhvTURDQ2hhcnQsIG9Nb2RlbCk7XG5cdH1cblxuXHRyZXR1cm4gcENyZWF0ZVByb3BlcnR5SW5mb3MudGhlbihmdW5jdGlvbiAoYVByb3BlcnRpZXM6IFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0aWYgKG9NRENDaGFydC5kYXRhKSB7XG5cdFx0XHRvTURDQ2hhcnQuZGF0YShcIiRtZGNDaGFydFByb3BlcnR5SW5mb1wiLCBhUHJvcGVydGllcyk7XG5cdFx0XHQvLyBzdG9yZSB0aGUgcHJvcGVydGllcyB0byBmZXRjaCBkdXJpbmcgcDEzbiBjYWxjdWxhdGlvblxuXHRcdFx0TWFjcm9zRGVsZWdhdGVVdGlsLnNldENhY2hlZFByb3BlcnRpZXMob01EQ0NoYXJ0LCBhUHJvcGVydGllcyk7XG5cdFx0fVxuXHRcdHJldHVybiBhUHJvcGVydGllcztcblx0fSk7XG59O1xuZnVuY3Rpb24gb25Nb2RlbENvbnRleHRDaGFuZ2UodGhpczogdHlwZW9mIENoYXJ0RGVsZWdhdGUsIG9FdmVudDogVUk1RXZlbnQ8e30sIENoYXJ0Piwgb0RhdGE6IHsgcmVzb2x2ZXI6IEZ1bmN0aW9uIH0pOiB2b2lkIHtcblx0Y29uc3Qgb01EQ0NoYXJ0ID0gb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRjb25zdCBvTW9kZWwgPSB0aGlzLl9nZXRNb2RlbChvTURDQ2hhcnQpO1xuXG5cdGlmIChvTW9kZWwpIHtcblx0XHRvTURDQ2hhcnQuZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKG9uTW9kZWxDb250ZXh0Q2hhbmdlIGFzIChldjogVUk1RXZlbnQpID0+IHZvaWQpO1xuXHRcdG9EYXRhLnJlc29sdmVyKG9Nb2RlbCk7XG5cdH1cbn1cbkNoYXJ0RGVsZWdhdGUuX2NyZWF0ZVByb3BlcnR5SW5mb3MgPSBhc3luYyBmdW5jdGlvbiAob01EQ0NoYXJ0OiBDaGFydCwgb01vZGVsOiBPRGF0YU1vZGVsKTogUHJvbWlzZTxQcm9wZXJ0eUluZm9bXT4ge1xuXHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IGAvJHtvTURDQ2hhcnQuZGF0YShcImVudGl0eVNldFwiKX1gO1xuXG5cdGNvbnN0IG9NZXRhTW9kZWwgPSBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdGNvbnN0IGFSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoW29NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzRW50aXR5U2V0UGF0aH0vYCksIG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzRW50aXR5U2V0UGF0aH1AYCldKTtcblx0Y29uc3QgYVByb3BlcnRpZXM6IFByb3BlcnR5SW5mb1tdID0gW107XG5cdGNvbnN0IG9FbnRpdHlUeXBlID0gYVJlc3VsdHNbMF07XG5cdGNvbnN0IG1FbnRpdHlTZXRBbm5vdGF0aW9ucyA9IGFSZXN1bHRzWzFdO1xuXHRjb25zdCBtQ3VzdG9tQWdncmVnYXRlcyA9IENvbW1vbkhlbHBlci5wYXJzZUN1c3RvbURhdGEob01EQ0NoYXJ0LmRhdGEoXCJjdXN0b21BZ2dcIikpO1xuXHRnZXRDdXN0b21BZ2dyZWdhdGUobUN1c3RvbUFnZ3JlZ2F0ZXMsIG9NRENDaGFydCk7XG5cdGxldCBzQW5ubztcblx0Zm9yIChjb25zdCBzQW5ub0tleSBpbiBtRW50aXR5U2V0QW5ub3RhdGlvbnMpIHtcblx0XHRpZiAoc0Fubm9LZXkuc3RhcnRzV2l0aChcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQ3VzdG9tQWdncmVnYXRlXCIpKSB7XG5cdFx0XHRzQW5ubyA9IHNBbm5vS2V5LnJlcGxhY2UoXCJAT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkN1c3RvbUFnZ3JlZ2F0ZSNcIiwgXCJcIik7XG5cdFx0XHRjb25zdCBhQW5ubyA9IHNBbm5vLnNwbGl0KFwiQFwiKTtcblxuXHRcdFx0aWYgKGFBbm5vLmxlbmd0aCA9PSAyICYmIGFBbm5vWzFdID09IFwiY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCIpIHtcblx0XHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXNbYUFubm9bMF1dID0gbUVudGl0eVNldEFubm90YXRpb25zW3NBbm5vS2V5XTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0Y29uc3QgbVR5cGVBZ2dyZWdhdGFibGVQcm9wcyA9IENvbW1vbkhlbHBlci5wYXJzZUN1c3RvbURhdGEob01EQ0NoYXJ0LmRhdGEoXCJ0cmFuc0FnZ1wiKSk7XG5cdGNvbnN0IG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IG5hbWU6IHN0cmluZzsgbGFiZWw6IHN0cmluZyB9Pj4gPSB7fTtcblx0Zm9yIChjb25zdCBzQWdncmVnYXRhYmxlIGluIG1UeXBlQWdncmVnYXRhYmxlUHJvcHMpIHtcblx0XHRjb25zdCBzUHJvcEtleSA9IG1UeXBlQWdncmVnYXRhYmxlUHJvcHNbc0FnZ3JlZ2F0YWJsZV0ucHJvcGVydHlQYXRoO1xuXHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XSA9IG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NQcm9wS2V5XSB8fCB7fTtcblx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wc1tzUHJvcEtleV1bbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5hZ2dyZWdhdGlvbk1ldGhvZF0gPSB7XG5cdFx0XHRuYW1lOiBtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzW3NBZ2dyZWdhdGFibGVdLm5hbWUsXG5cdFx0XHRsYWJlbDogbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5sYWJlbFxuXHRcdH07XG5cdH1cblx0Zm9yIChjb25zdCBzS2V5IGluIG9FbnRpdHlUeXBlKSB7XG5cdFx0aWYgKHNLZXkuaW5kZXhPZihcIiRcIikgIT09IDApIHtcblx0XHRcdGNvbnN0IGNyaXRpY2FsaXR5ID0gQ2hhcnRIZWxwZXIuZmV0Y2hDcml0aWNhbGl0eShvTWV0YU1vZGVsLCBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KGAke3NFbnRpdHlTZXRQYXRofS8ke3NLZXl9YCkhKTtcblx0XHRcdENoYXJ0RGVsZWdhdGUuX2hhbmRsZVByb3BlcnR5KFxuXHRcdFx0XHRvTWV0YU1vZGVsLmdldE1ldGFDb250ZXh0KGAke3NFbnRpdHlTZXRQYXRofS8ke3NLZXl9YCksXG5cdFx0XHRcdG9NRENDaGFydCxcblx0XHRcdFx0bUVudGl0eVNldEFubm90YXRpb25zLFxuXHRcdFx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wcyxcblx0XHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXMsXG5cdFx0XHRcdGFQcm9wZXJ0aWVzLFxuXHRcdFx0XHRjcml0aWNhbGl0eVxuXHRcdFx0KTtcblx0XHR9XG5cdH1cblx0cmV0dXJuIGFQcm9wZXJ0aWVzO1xufTtcblxuZnVuY3Rpb24gZ2V0Q3VzdG9tQWdncmVnYXRlKG1DdXN0b21BZ2dyZWdhdGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiwgb01EQ0NoYXJ0OiBDaGFydCk6IHZvaWQge1xuXHRjb25zdCBhRGltZW5zaW9uczogc3RyaW5nW10gPSBbXSxcblx0XHRhTWVhc3VyZXM6IHN0cmluZ1tdID0gW107XG5cdGlmIChtQ3VzdG9tQWdncmVnYXRlcyAmJiBPYmplY3Qua2V5cyhtQ3VzdG9tQWdncmVnYXRlcykubGVuZ3RoID49IDEpIHtcblx0XHRjb25zdCBhQ2hhcnRJdGVtcyA9IG9NRENDaGFydC5nZXRJdGVtcygpO1xuXHRcdGZvciAoY29uc3Qga2V5IGluIGFDaGFydEl0ZW1zKSB7XG5cdFx0XHRpZiAoYUNoYXJ0SXRlbXNba2V5XS5nZXRUeXBlKCkgPT09IFwiZ3JvdXBhYmxlXCIpIHtcblx0XHRcdFx0YURpbWVuc2lvbnMucHVzaChDaGFydERlbGVnYXRlLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoYUNoYXJ0SXRlbXNba2V5XS5nZXRQcm9wZXJ0eUtleSgpLCBcImdyb3VwYWJsZVwiKSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFDaGFydEl0ZW1zW2tleV0uZ2V0VHlwZSgpID09PSBcImFnZ3JlZ2F0YWJsZVwiKSB7XG5cdFx0XHRcdGFNZWFzdXJlcy5wdXNoKFxuXHRcdFx0XHRcdENoYXJ0RGVsZWdhdGUuZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZChhQ2hhcnRJdGVtc1trZXldLmdldFByb3BlcnR5S2V5KCksIFwiYWdncmVnYXRhYmxlXCIpXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmIChcblx0XHRcdGFNZWFzdXJlcy5maWx0ZXIoZnVuY3Rpb24gKHZhbDogc3RyaW5nKSB7XG5cdFx0XHRcdHJldHVybiBhRGltZW5zaW9ucy5pbmNsdWRlcyh2YWwpO1xuXHRcdFx0fSkubGVuZ3RoID49IDFcblx0XHQpIHtcblx0XHRcdExvZy5lcnJvcihcIkRpbWVuc2lvbiBhbmQgTWVhc3VyZSBoYXMgdGhlIHNhbWVQcm9wZXJ0eSBDb25maWd1cmVkXCIpO1xuXHRcdH1cblx0fVxufVxuXG5DaGFydERlbGVnYXRlLl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlID0gZnVuY3Rpb24gKFxuXHRvTURDQ2hhcnQ6IENoYXJ0LFxuXHRzS2V5OiBzdHJpbmcsXG5cdG9Qcm9wZXJ0eUFubm90YXRpb25zOiBNZXRhTW9kZWxQcm9wZXJ0eUFubm90YXRpb25zLFxuXHRvRmlsdGVyUmVzdHJpY3Rpb25zSW5mbzogX0ZpbHRlclJlc3RyaWN0aW9ucyxcblx0c29ydFJlc3RyaWN0aW9uc0luZm86IFNvcnRSZXN0cmljdGlvbnNJbmZvVHlwZSxcblx0bUtub3duQWdncmVnYXRhYmxlUHJvcHM6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHsgbGFiZWw6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0+Pixcblx0bUN1c3RvbUFnZ3JlZ2F0ZXM6IHsgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogdW5rbm93biB9LFxuXHRkYXRhVHlwZTogc3RyaW5nXG4pOiBvYmplY3RbXSB7XG5cdGNvbnN0IGFBZ2dyZWdhdGVQcm9wZXJ0aWVzOiBvYmplY3RbXSA9IFtdO1xuXHRpZiAoT2JqZWN0LmtleXMobUtub3duQWdncmVnYXRhYmxlUHJvcHMpLmluY2x1ZGVzKHNLZXkpKSB7XG5cdFx0Zm9yIChjb25zdCBzQWdncmVnYXRhYmxlIGluIG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NLZXldKSB7XG5cdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5wdXNoKHtcblx0XHRcdFx0bmFtZTogXCJfZmVfYWdncmVnYXRhYmxlX1wiICsgbUtub3duQWdncmVnYXRhYmxlUHJvcHNbc0tleV1bc0FnZ3JlZ2F0YWJsZV0ubmFtZSxcblx0XHRcdFx0bGFiZWw6XG5cdFx0XHRcdFx0bUtub3duQWdncmVnYXRhYmxlUHJvcHNbc0tleV1bc0FnZ3JlZ2F0YWJsZV0ubGFiZWwgfHxcblx0XHRcdFx0XHRgJHtvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuTGFiZWxcIl19ICgke3NBZ2dyZWdhdGFibGV9KWAgfHxcblx0XHRcdFx0XHRgJHtzS2V5fSAoJHtzQWdncmVnYXRhYmxlfSlgLFxuXHRcdFx0XHRzb3J0YWJsZTogc29ydFJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3NLZXldID8gc29ydFJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3NLZXldLnNvcnRhYmxlIDogdHJ1ZSxcblx0XHRcdFx0ZmlsdGVyYWJsZTogZmFsc2UsXG5cdFx0XHRcdGdyb3VwYWJsZTogZmFsc2UsXG5cdFx0XHRcdGFnZ3JlZ2F0YWJsZTogdHJ1ZSxcblx0XHRcdFx0cGF0aDogc0tleSxcblx0XHRcdFx0ZGF0YVR5cGU6IGRhdGFUeXBlLFxuXHRcdFx0XHRhZ2dyZWdhdGlvbk1ldGhvZDogc0FnZ3JlZ2F0YWJsZSxcblx0XHRcdFx0bWF4Q29uZGl0aW9uczogaXNNdWx0aVZhbHVlRmlsdGVyRXhwcmVzc2lvbihvRmlsdGVyUmVzdHJpY3Rpb25zSW5mb1tcIkZpbHRlckFsbG93ZWRFeHByZXNzaW9uc1wiXT8uW3NLZXldPy5bMF0pID8gLTEgOiAxLFxuXHRcdFx0XHRyb2xlOiBDaGFydEl0ZW1Sb2xlVHlwZS5heGlzMSxcblx0XHRcdFx0ZGF0YXBvaW50OiBudWxsLCAvL1RvIGJlIGltcGxlbWVudGVkIGJ5IEZFXG5cdFx0XHRcdHVuaXRQYXRoOlxuXHRcdFx0XHRcdChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuTWVhc3VyZXMuVjEuSVNPQ3VycmVuY3lcIl0gYXMgeyAkUGF0aDogc3RyaW5nIH0pPy4kUGF0aCB8fFxuXHRcdFx0XHRcdChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuTWVhc3VyZXMuVjEuVW5pdFwiXSBhcyB7ICRQYXRoOiBzdHJpbmcgfSk/LiRQYXRoXG5cdFx0XHR9KTtcblx0XHR9XG5cdH1cblx0aWYgKE9iamVjdC5rZXlzKG1DdXN0b21BZ2dyZWdhdGVzKS5pbmNsdWRlcyhzS2V5KSkge1xuXHRcdGZvciAoY29uc3Qgc0N1c3RvbSBpbiBtQ3VzdG9tQWdncmVnYXRlcykge1xuXHRcdFx0aWYgKHNDdXN0b20gPT09IHNLZXkpIHtcblx0XHRcdFx0Y29uc3Qgb0l0ZW0gPSBtZXJnZSh7fSwgbUN1c3RvbUFnZ3JlZ2F0ZXNbc0N1c3RvbV0gYXMgb2JqZWN0LCB7XG5cdFx0XHRcdFx0bmFtZTogXCJfZmVfYWdncmVnYXRhYmxlX1wiICsgc0N1c3RvbSxcblx0XHRcdFx0XHRncm91cGFibGU6IGZhbHNlLFxuXHRcdFx0XHRcdGFnZ3JlZ2F0YWJsZTogdHJ1ZSxcblx0XHRcdFx0XHRmaWx0ZXJhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRyb2xlOiBDaGFydEl0ZW1Sb2xlVHlwZS5heGlzMSxcblx0XHRcdFx0XHRwYXRoOiBzQ3VzdG9tLFxuXHRcdFx0XHRcdGRhdGFUeXBlOiBkYXRhVHlwZSxcblx0XHRcdFx0XHRkYXRhcG9pbnQ6IG51bGwsIC8vVG8gYmUgaW1wbGVtZW50ZWQgYnkgRkVcblx0XHRcdFx0XHR1bml0UGF0aDpcblx0XHRcdFx0XHRcdChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuTWVhc3VyZXMuVjEuSVNPQ3VycmVuY3lcIl0gYXMgeyAkUGF0aDogc3RyaW5nIH0pPy4kUGF0aCB8fFxuXHRcdFx0XHRcdFx0KG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQE9yZy5PRGF0YS5NZWFzdXJlcy5WMS5Vbml0XCJdIGFzIHsgJFBhdGg6IHN0cmluZyB9KT8uJFBhdGhcblx0XHRcdFx0fSk7XG5cdFx0XHRcdGFBZ2dyZWdhdGVQcm9wZXJ0aWVzLnB1c2gob0l0ZW0pO1xuXG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gYUFnZ3JlZ2F0ZVByb3BlcnRpZXM7XG59O1xuQ2hhcnREZWxlZ2F0ZS5yZWJpbmQgPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBDaGFydCwgb0JpbmRpbmdJbmZvOiBQcm9wZXJ0eUJpbmRpbmdJbmZvKTogdm9pZCB7XG5cdGNvbnN0IHNTZWFyY2ggPSBvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoO1xuXG5cdGlmIChzU2VhcmNoKSB7XG5cdFx0ZGVsZXRlIG9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzLiRzZWFyY2g7XG5cdH1cblxuXHRCYXNlQ2hhcnREZWxlZ2F0ZS5yZWJpbmQob01EQ0NoYXJ0LCBvQmluZGluZ0luZm8pO1xuXG5cdGlmIChzU2VhcmNoKSB7XG5cdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSAob01EQ0NoYXJ0LmdldENvbnRyb2xEZWxlZ2F0ZSgpIGFzIHR5cGVvZiBDaGFydERlbGVnYXRlKS5nZXRJbm5lckNoYXJ0KG9NRENDaGFydCksXG5cdFx0XHRvQ2hhcnRCaW5kaW5nID0gb0lubmVyQ2hhcnQgJiYgb0lubmVyQ2hhcnQuZ2V0QmluZGluZyhcImRhdGFcIik7XG5cblx0XHQvLyBUZW1wb3Jhcnkgd29ya2Fyb3VuZCB1bnRpbCB0aGlzIGlzIGZpeGVkIGluIE1EQ0NoYXJ0IC8gVUk1IENoYXJ0XG5cdFx0Ly8gSW4gb3JkZXIgdG8gYXZvaWQgaGF2aW5nIDIgT0RhdGEgcmVxdWVzdHMsIHdlIG5lZWQgdG8gc3VzcGVuZCB0aGUgYmluZGluZyBiZWZvcmUgc2V0dGluZyBzb21lIGFnZ3JlZ2F0aW9uIHByb3BlcnRpZXNcblx0XHQvLyBhbmQgcmVzdW1lIGl0IG9uY2UgdGhlIGNoYXJ0IGhhcyBhZGRlZCBvdGhlciBhZ2dyZWdhdGlvbiBwcm9wZXJ0aWVzIChpbiBvbkJlZm9yZVJlbmRlcmluZylcblx0XHRvQ2hhcnRCaW5kaW5nLnN1c3BlbmQoKTtcblx0XHRvQ2hhcnRCaW5kaW5nLnNldEFnZ3JlZ2F0aW9uKHsgc2VhcmNoOiBzU2VhcmNoIH0pO1xuXG5cdFx0Y29uc3Qgb0lubmVyQ2hhcnREZWxlZ2F0ZSA9IHtcblx0XHRcdG9uQmVmb3JlUmVuZGVyaW5nOiBmdW5jdGlvbiAoKTogdm9pZCB7XG5cdFx0XHRcdG9DaGFydEJpbmRpbmcucmVzdW1lKCk7XG5cdFx0XHRcdG9Jbm5lckNoYXJ0LnJlbW92ZUV2ZW50RGVsZWdhdGUob0lubmVyQ2hhcnREZWxlZ2F0ZSk7XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRvSW5uZXJDaGFydC5hZGRFdmVudERlbGVnYXRlKG9Jbm5lckNoYXJ0RGVsZWdhdGUpO1xuXHR9XG5cblx0b01EQ0NoYXJ0LmZpcmVFdmVudChcImJpbmRpbmdVcGRhdGVkXCIpO1xufTtcbkNoYXJ0RGVsZWdhdGUuX3NldENoYXJ0ID0gZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQsIG9Jbm5lckNoYXJ0OiBzYXBDaGFydCk6IHZvaWQge1xuXHRjb25zdCBvQ2hhcnRBUEkgPSBvTURDQ2hhcnQuZ2V0UGFyZW50KCkgYXMgQ2hhcnRBUEk7XG5cdG9Jbm5lckNoYXJ0LnNldFZpelByb3BlcnRpZXMob01EQ0NoYXJ0LmRhdGEoXCJ2aXpQcm9wZXJ0aWVzXCIpKTtcblx0b0lubmVyQ2hhcnQuZGV0YWNoU2VsZWN0RGF0YShvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSBhcyAoZTogVUk1RXZlbnQ8b2JqZWN0LCBFdmVudFByb3ZpZGVyPikgPT4gdm9pZCk7XG5cdG9Jbm5lckNoYXJ0LmRldGFjaERlc2VsZWN0RGF0YShvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSBhcyAoZTogVUk1RXZlbnQ8b2JqZWN0LCBFdmVudFByb3ZpZGVyPikgPT4gdm9pZCk7XG5cdG9Jbm5lckNoYXJ0LmRldGFjaERyaWxsZWRVcChvQ2hhcnRBUEkuaGFuZGxlU2VsZWN0aW9uQ2hhbmdlLmJpbmQob0NoYXJ0QVBJKSBhcyAoZTogVUk1RXZlbnQ8b2JqZWN0LCBFdmVudFByb3ZpZGVyPikgPT4gdm9pZCk7XG5cdG9Jbm5lckNoYXJ0LmF0dGFjaFNlbGVjdERhdGEob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkgYXMgKGU6IFVJNUV2ZW50PG9iamVjdCwgRXZlbnRQcm92aWRlcj4pID0+IHZvaWQpO1xuXHRvSW5uZXJDaGFydC5hdHRhY2hEZXNlbGVjdERhdGEob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkgYXMgKGU6IFVJNUV2ZW50PG9iamVjdCwgRXZlbnRQcm92aWRlcj4pID0+IHZvaWQpO1xuXHRvSW5uZXJDaGFydC5hdHRhY2hEcmlsbGVkVXAob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkgYXMgKGU6IFVJNUV2ZW50PG9iamVjdCwgRXZlbnRQcm92aWRlcj4pID0+IHZvaWQpO1xuXG5cdG9Jbm5lckNoYXJ0LnNldFNlbGVjdGlvbk1vZGUoKG9NRENDaGFydC5nZXRQYXlsb2FkKCkgYXMgeyBzZWxlY3Rpb25Nb2RlOiBzdHJpbmcgfSkuc2VsZWN0aW9uTW9kZS50b1VwcGVyQ2FzZSgpIGFzIFNlbGVjdGlvbk1vZGUpO1xuXHRCYXNlQ2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnQob01EQ0NoYXJ0LCBvSW5uZXJDaGFydCk7XG59O1xuQ2hhcnREZWxlZ2F0ZS5fZ2V0QmluZGluZ0luZm8gPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBDaGFydCk6IFByb3BlcnR5QmluZGluZ0luZm8ge1xuXHRpZiAodGhpcy5fZ2V0QmluZGluZ0luZm9Gcm9tU3RhdGUob01EQ0NoYXJ0KSkge1xuXHRcdHJldHVybiB0aGlzLl9nZXRCaW5kaW5nSW5mb0Zyb21TdGF0ZShvTURDQ2hhcnQpO1xuXHR9XG5cblx0Y29uc3Qgb01ldGFkYXRhSW5mbyA9IChvTURDQ2hhcnQuZ2V0RGVsZWdhdGUoKSBhcyB7IHBheWxvYWQ6IHVua25vd24gfSkucGF5bG9hZCBhcyB7IHBhcmFtZXRlcnM6IG9iamVjdDsgY2hhcnRDb250ZXh0UGF0aDogc3RyaW5nIH07XG5cdGNvbnN0IG9QYXJhbXMgPSBtZXJnZSh7fSwgb01ldGFkYXRhSW5mby5wYXJhbWV0ZXJzLCB7XG5cdFx0ZW50aXR5U2V0OiBvTURDQ2hhcnQuZGF0YShcImVudGl0eVNldFwiKVxuXHR9KTtcblx0cmV0dXJuIHtcblx0XHRwYXRoOiBvTWV0YWRhdGFJbmZvLmNoYXJ0Q29udGV4dFBhdGgsXG5cdFx0ZXZlbnRzOiB7XG5cdFx0XHRkYXRhUmVxdWVzdGVkOiAob01EQ0NoYXJ0LmdldFBhcmVudCgpIGFzIENoYXJ0QVBJKS5vbkludGVybmFsRGF0YVJlcXVlc3RlZC5iaW5kKG9NRENDaGFydC5nZXRQYXJlbnQoKSlcblx0XHR9LFxuXHRcdHBhcmFtZXRlcnM6IG9QYXJhbXNcblx0fTtcbn07XG5DaGFydERlbGVnYXRlLnJlbW92ZUl0ZW1Gcm9tSW5uZXJDaGFydCA9IGZ1bmN0aW9uIChvTURDQ2hhcnQ6IENoYXJ0LCBvTURDQ2hhcnRJdGVtOiBDaGFydEl0ZW0pOiB2b2lkIHtcblx0QmFzZUNoYXJ0RGVsZWdhdGUucmVtb3ZlSXRlbUZyb21Jbm5lckNoYXJ0LmNhbGwodGhpcywgb01EQ0NoYXJ0LCBvTURDQ2hhcnRJdGVtKTtcblx0aWYgKG9NRENDaGFydEl0ZW0uZ2V0VHlwZSgpID09PSBcImdyb3VwYWJsZVwiKSB7XG5cdFx0Y29uc3Qgb0lubmVyQ2hhcnQgPSB0aGlzLmdldElubmVyQ2hhcnQob01EQ0NoYXJ0KTtcblx0XHRvSW5uZXJDaGFydC5maXJlRGVzZWxlY3REYXRhKCk7XG5cdH1cbn07XG5DaGFydERlbGVnYXRlLl9nZXRTb3J0YWJsZSA9IGZ1bmN0aW9uIChcblx0b01EQ0NoYXJ0OiBDaGFydCxcblx0c29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5OiBTb3J0UmVzdHJpY3Rpb25zUHJvcGVydHlJbmZvVHlwZSB8IHVuZGVmaW5lZCxcblx0YklzVHJhbnNBZ2dyZWdhdGU6IGJvb2xlYW5cbik6IGJvb2xlYW4ge1xuXHRpZiAoYklzVHJhbnNBZ2dyZWdhdGUpIHtcblx0XHRpZiAob01EQ0NoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHNvcnRSZXN0cmljdGlvbnNQcm9wZXJ0eSA/IHNvcnRSZXN0cmljdGlvbnNQcm9wZXJ0eS5zb3J0YWJsZSA6IHRydWU7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBzb3J0UmVzdHJpY3Rpb25zUHJvcGVydHkgPyBzb3J0UmVzdHJpY3Rpb25zUHJvcGVydHkuc29ydGFibGUgOiB0cnVlO1xufTtcbkNoYXJ0RGVsZWdhdGUuX2NoZWNrQW5kQWRkRHJhZnRGaWx0ZXIgPSBmdW5jdGlvbiAob0NoYXJ0OiBDaGFydCwgb0JpbmRpbmdJbmZvOiBQcm9wZXJ0eUJpbmRpbmdJbmZvKTogdm9pZCB7XG5cdGlmIChvQ2hhcnQuZGF0YShcImRyYWZ0U3VwcG9ydGVkXCIpID09PSBcInRydWVcIikge1xuXHRcdGlmICghb0JpbmRpbmdJbmZvKSB7XG5cdFx0XHRvQmluZGluZ0luZm8gPSB7fTtcblx0XHR9XG5cdFx0aWYgKCFvQmluZGluZ0luZm8uZmlsdGVycykge1xuXHRcdFx0b0JpbmRpbmdJbmZvLmZpbHRlcnMgPSBbXTtcblx0XHRcdG9CaW5kaW5nSW5mby5maWx0ZXJzLnB1c2gobmV3IEZpbHRlcihcIklzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdG9CaW5kaW5nSW5mby5maWx0ZXJzPy5hRmlsdGVycz8ucHVzaChuZXcgRmlsdGVyKFwiSXNBY3RpdmVFbnRpdHlcIiwgRmlsdGVyT3BlcmF0b3IuRVEsIHRydWUpKTtcblx0XHR9XG5cdH1cbn07XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiByZXR1cm5zIGFuIElEIHdoaWNoIHNob3VsZCBiZSB1c2VkIGluIHRoZSBpbnRlcm5hbCBjaGFydCBmb3IgdGhlIG1lYXN1cmUgb3IgZGltZW5zaW9uLlxuICogRm9yIHN0YW5kYXJkIGNhc2VzLCB0aGlzIGlzIGp1c3QgdGhlIElEIG9mIHRoZSBwcm9wZXJ0eS5cbiAqIElmIGl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgYW5vdGhlciBJRCBpbnRlcm5hbGx5IGluc2lkZSB0aGUgY2hhcnQgKGUuZy4gb24gZHVwbGljYXRlIHByb3BlcnR5IElEcykgdGhpcyBtZXRob2QgY2FuIGJlIG92ZXJ3cml0dGVuLlxuICogSW4gdGhpcyBjYXNlLCA8Y29kZT5nZXRQcm9wZXJ0eUZyb21OYW1lQW5kS2luZDwvY29kZT4gbmVlZHMgdG8gYmUgb3ZlcndyaXR0ZW4gYXMgd2VsbC5cbiAqXG4gKiBAcGFyYW0gbmFtZSBJRCBvZiB0aGUgcHJvcGVydHlcbiAqIEBwYXJhbSBraW5kIFR5cGUgb2YgdGhlIHByb3BlcnR5IChtZWFzdXJlIG9yIGRpbWVuc2lvbilcbiAqIEByZXR1cm5zIEludGVybmFsIElEIGZvciB0aGUgc2FwLmNoYXJ0LkNoYXJ0XG4gKi9cbkNoYXJ0RGVsZWdhdGUuZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZCA9IGZ1bmN0aW9uIChuYW1lOiBzdHJpbmcsIGtpbmQ6IHN0cmluZyk6IHN0cmluZyB7XG5cdHJldHVybiBuYW1lLnJlcGxhY2UoXCJfZmVfXCIgKyBraW5kICsgXCJfXCIsIFwiXCIpO1xufTtcblxuLyoqXG4gKiBUaGlzIG1hcHMgYW4gaWQgb2YgYW4gaW50ZXJuYWwgY2hhcnQgZGltZW5zaW9uIG9yIG1lYXN1cmUgJiB0eXBlIG9mIGEgcHJvcGVydHkgdG8gaXRzIGNvcnJlc3BvbmRpbmcgcHJvcGVydHkgZW50cnkuXG4gKlxuICogQHBhcmFtIG5hbWUgSUQgb2YgaW50ZXJuYWwgY2hhcnQgbWVhc3VyZSBvciBkaW1lbnNpb25cbiAqIEBwYXJhbSBraW5kIFRoZSBraW5kIG9mIHByb3BlcnR5IHRoYXQgaXMgdXNlZFxuICogQHBhcmFtIG1kY0NoYXJ0IFJlZmVyZW5jZSB0byB0aGUgTURDX0NoYXJ0XG4gKiBAcmV0dXJucyBQcm9wZXJ0eUluZm8gb2JqZWN0XG4gKi9cbkNoYXJ0RGVsZWdhdGUuZ2V0UHJvcGVydHlGcm9tTmFtZUFuZEtpbmQgPSBmdW5jdGlvbiAobmFtZTogc3RyaW5nLCBraW5kOiBzdHJpbmcsIG1kY0NoYXJ0OiBDaGFydCk6IHN0cmluZyB7XG5cdHJldHVybiBtZGNDaGFydC5nZXRQcm9wZXJ0eUhlbHBlcigpLmdldFByb3BlcnR5KFwiX2ZlX1wiICsga2luZCArIFwiX1wiICsgbmFtZSk7XG59O1xuXG4vKipcbiAqIFByb3ZpZGUgdGhlIGNoYXJ0J3MgZmlsdGVyIGRlbGVnYXRlIHRvIHByb3ZpZGUgYmFzaWMgZmlsdGVyIGZ1bmN0aW9uYWxpdHkgc3VjaCBhcyBhZGRpbmcgRmlsdGVyRmllbGRzLlxuICpcbiAqIEByZXR1cm5zIE9iamVjdCBmb3IgdGhlIHBlcnNvbmFsaXphdGlvbiBvZiB0aGUgY2hhcnQgZmlsdGVyXG4gKi9cbkNoYXJ0RGVsZWdhdGUuZ2V0RmlsdGVyRGVsZWdhdGUgPSBmdW5jdGlvbiAoKTogb2JqZWN0IHtcblx0cmV0dXJuIE9iamVjdC5hc3NpZ24oXG5cdFx0e1xuXHRcdFx0YXBpVmVyc2lvbjogMlxuXHRcdH0sXG5cdFx0RmlsdGVyQmFyRGVsZWdhdGUsXG5cdFx0e1xuXHRcdFx0YWRkSXRlbTogZnVuY3Rpb24gKG9QYXJlbnRDb250cm9sOiBDb250cm9sLCBzUHJvcGVydHlJbmZvTmFtZTogc3RyaW5nKSB7XG5cdFx0XHRcdGNvbnN0IHByb3AgPSBDaGFydERlbGVnYXRlLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoc1Byb3BlcnR5SW5mb05hbWUsIFwiZ3JvdXBhYmxlXCIpO1xuXHRcdFx0XHRyZXR1cm4gRmlsdGVyQmFyRGVsZWdhdGUuYWRkSXRlbShvUGFyZW50Q29udHJvbCwgcHJvcCkudGhlbigob0ZpbHRlckl0ZW06IENvbnRyb2wgfCB1bmRlZmluZWQpID0+IHtcblx0XHRcdFx0XHRvRmlsdGVySXRlbT8uYmluZFByb3BlcnR5KFwiY29uZGl0aW9uc1wiLCB7XG5cdFx0XHRcdFx0XHRwYXRoOiBcIiRmaWx0ZXJzPi9jb25kaXRpb25zL1wiICsgc1Byb3BlcnR5SW5mb05hbWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm4gb0ZpbHRlckl0ZW07XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoYXJ0RGVsZWdhdGU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7O0VBa0RBLE1BQU1BLGFBQWEsR0FBR0MsTUFBTSxDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUVDLGlCQUFpQixDQUFDO0VBQzFE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
553
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDaGFydERlbGVnYXRlIiwiT2JqZWN0IiwiYXNzaWduIiwiQmFzZUNoYXJ0RGVsZWdhdGUiLCJhcGlWZXJzaW9uIiwiX2xvYWRDaGFydCIsIkxpYnJhcnkiLCJsb2FkIiwibmFtZSIsIl9zZXRDaGFydE5vRGF0YVRleHQiLCJvQ2hhcnQiLCJvQmluZGluZ0luZm8iLCJzTm9EYXRhS2V5Iiwib0NoYXJ0RmlsdGVySW5mbyIsIkNoYXJ0VXRpbHMiLCJnZXRBbGxGaWx0ZXJJbmZvIiwic3VmZml4UmVzb3VyY2VLZXkiLCJwYXRoIiwic3RhcnRzV2l0aCIsInN1YnN0ciIsIl9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMiLCJkYXRhIiwiZ2V0RmlsdGVyIiwic2VhcmNoIiwiZmlsdGVycyIsImxlbmd0aCIsInNldE5vRGF0YVRleHQiLCJnZXRSZXNvdXJjZU1vZGVsIiwiZ2V0VGV4dCIsInVuZGVmaW5lZCIsIl9oYW5kbGVQcm9wZXJ0eSIsIm9Db250ZXh0Iiwib01EQ0NoYXJ0IiwibUVudGl0eVNldEFubm90YXRpb25zIiwibUtub3duQWdncmVnYXRhYmxlUHJvcHMiLCJtQ3VzdG9tQWdncmVnYXRlcyIsImFQcm9wZXJ0aWVzIiwic0NyaXRpY2FsaXR5Iiwib0FwcGx5U3VwcG9ydGVkIiwiQ29tbW9uSGVscGVyIiwicGFyc2VDdXN0b21EYXRhIiwic29ydFJlc3RyaWN0aW9uc0luZm8iLCJnZXRTb3J0UmVzdHJpY3Rpb25zSW5mbyIsIm1ldGFNb2RlbCIsImdldE1vZGVsIiwiZW50aXR5VHlwZVBhdGgiLCJiaW5kaW5nUGF0aCIsIk1vZGVsSGVscGVyIiwiZ2V0RW50aXR5U2V0UGF0aCIsImZpbHRlclJlc3RyaWN0aW9ucyIsIkNvbW1vblV0aWxzIiwiZ2V0RmlsdGVyUmVzdHJpY3Rpb25zQnlQYXRoIiwicHJvcGVydHlGaWx0ZXJhYmxlRGF0YSIsImdldEZpbHRlcmFibGVEYXRhIiwiTm9uRmlsdGVyYWJsZVByb3BlcnRpZXMiLCJrZXlzIiwiRmlsdGVyQWxsb3dlZEV4cHJlc3Npb25zIiwib09iaiIsImdldE9iamVjdCIsImdldFBhdGgiLCJzS2V5IiwiYU1vZGVzIiwiZ2V0UDEzbk1vZGUiLCJjaGVja0Zvck5vbmZpbHRlcmFibGVFbnRpdHlTZXQiLCIka2luZCIsIiRpc0NvbGxlY3Rpb24iLCJvUHJvcGVydHlBbm5vdGF0aW9ucyIsInNQYXRoIiwiZ2V0TWV0YUNvbnRleHQiLCJhR3JvdXBhYmxlUHJvcGVydGllcyIsIkdyb3VwYWJsZVByb3BlcnRpZXMiLCJhQWdncmVnYXRhYmxlUHJvcGVydGllcyIsIkFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMiLCJiR3JvdXBhYmxlIiwiY2hlY2tQcm9wZXJ0eVR5cGUiLCJiQWdncmVnYXRhYmxlIiwiY2hlY2tQcm9wZXJ0eUlzQm90aEdyb3VwYWJsZUFuZEFnZ3JlZ2F0YWJsZSIsImN1c3RvbUFnZ3JlZ2F0ZXMiLCJhQWdncmVnYXRlUHJvcGVydGllcyIsIl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlIiwiJFR5cGUiLCJmb3JFYWNoIiwib0FnZ3JlZ2F0ZVByb3BlcnR5IiwicHVzaCIsImluY2x1ZGVzIiwiYUtub3duQWdncmVnYXRhYmxlUHJvcHMiLCJhR3JvdXBhYmxlUHJvcGVydGllc1ZhbHVlcyIsIm1hcCIsIm9Qcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJhZGRQcm9wZXJ0eVRvQ2hhcnQiLCJmaWx0ZXJhYmxlIiwic05hbWUiLCJzVGV4dFByb3BlcnR5IiwiJFBhdGgiLCJiSXNOYXZpZ2F0aW9uVGV4dCIsIkxvZyIsImVycm9yIiwiaW5kZXhPZiIsIl9nZXRTb3J0YWJsZSIsInByb3BlcnR5SW5mbyIsImlzRmlsdGVyYWJsZSIsIm9GaWx0ZXJSZXN0cmljdGlvbnNJbmZvIiwiaXNTb3J0YWJsZSIsImJJc0dyb3VwYWJsZSIsImJJc0FnZ3JlZ2F0YWJsZSIsImJJc0hpZGRlbiIsImxhYmVsIiwidG9TdHJpbmciLCJzb3J0YWJsZSIsImdyb3VwYWJsZSIsImFnZ3JlZ2F0YWJsZSIsIm1heENvbmRpdGlvbnMiLCJpc011bHRpVmFsdWVGaWx0ZXJFeHByZXNzaW9uIiwicm9sZSIsIkNoYXJ0SXRlbVJvbGVUeXBlIiwiY2F0ZWdvcnkiLCJjcml0aWNhbGl0eSIsImRhdGFUeXBlIiwidmlzaWJsZSIsInRleHRQcm9wZXJ0eSIsInRleHRGb3JtYXR0ZXIiLCJ0aW1lVW5pdFR5cGUiLCJfZ2V0VGltZVR5cGUiLCJmb3JtYXRPcHRpb25zIiwic3R5bGUiLCJUaW1lVW5pdFR5cGUiLCJEYXRlIiwiZmlzY2FseWVhciIsImZpc2NhbHllYXJwZXJpb2QiLCJ5ZWFybW9udGgiLCJ5ZWFycXVhcnRlciIsInllYXJ3ZWVrIiwieWVhcm1vbnRoZGF5IiwiYkVudGl0eVNldEZpbGVyYWJsZSIsImdldE1ldGFNb2RlbCIsIkZpbHRlcmFibGUiLCJmaWx0ZXIiLCJpdGVtIiwic2V0UDEzbk1vZGUiLCJlbGVtZW50IiwiUHJvcGVydHkiLCJjdXN0b21Qcm9wZXJ0aWVzIiwiRXJyb3IiLCJmb3JtYXRUZXh0Iiwib1ZhbHVlMSIsIm9WYWx1ZTIiLCJzVmFsdWUiLCJ0eXBlQ29uZmlnIiwidHlwZUluc3RhbmNlIiwiZm9ybWF0VmFsdWUiLCJvVGV4dEFycmFuZ2VtZW50QW5ub3RhdGlvbiIsIiRFbnVtTWVtYmVyIiwidmFsdWVGb3JtYXR0ZXJzIiwiZm9ybWF0V2l0aEJyYWNrZXRzIiwidXBkYXRlQmluZGluZ0luZm8iLCJpbnRlcm5hbEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZ0NvbnRleHQiLCJzZXRQcm9wZXJ0eSIsIm9GaWx0ZXIiLCJFbGVtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJtQ29uZGl0aW9ucyIsImdldENvbmRpdGlvbnMiLCJwYXJhbWV0ZXJzIiwib0luZm8iLCJGaWx0ZXJVdGlscyIsImdldEZpbHRlckluZm8iLCJlbmFibGVTZWFyY2giLCIkc2VhcmNoIiwibm9ybWFsaXplU2VhcmNoVGVybSIsInNQYXJhbWV0ZXJQYXRoIiwiRGVsZWdhdGVVdGlsIiwiZ2V0UGFyYW1ldGVyc0luZm8iLCJ2aWV3IiwiZ2V0VGFyZ2V0VmlldyIsIm9GaWx0ZXJJbmZvIiwiZ2V0Vmlld0RhdGEiLCJ2aWV3TGV2ZWwiLCJDaGFydEhlbHBlciIsImdldENvbGxlY3Rpb25OYW1lIiwiZ2V0UGFyZW50IiwiZ2V0Q2hhcnRQcm9wZXJ0aWVzV2l0aG91dFByZWZpeGVzIiwiZXZlbnRzIiwiZGF0YVJlcXVlc3RlZCIsIm9uSW50ZXJuYWxEYXRhUmVxdWVzdGVkIiwiYmluZCIsIkZpbHRlciIsImFuZCIsInNvcnRlciIsImdldFNvcnRlcnMiLCJfY2hlY2tBbmRBZGREcmFmdEZpbHRlciIsImZldGNoUHJvcGVydGllcyIsIm9Nb2RlbCIsIl9nZXRNb2RlbCIsInBDcmVhdGVQcm9wZXJ0eUluZm9zIiwiUHJvbWlzZSIsInJlc29sdmUiLCJhdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJyZXNvbHZlciIsIm9uTW9kZWxDb250ZXh0Q2hhbmdlIiwidGhlbiIsIm9SZXRyaWV2ZWRNb2RlbCIsIl9jcmVhdGVQcm9wZXJ0eUluZm9zIiwiTWFjcm9zRGVsZWdhdGVVdGlsIiwic2V0Q2FjaGVkUHJvcGVydGllcyIsIm9FdmVudCIsIm9EYXRhIiwiZ2V0U291cmNlIiwiZGV0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwic0VudGl0eVNldFBhdGgiLCJvTWV0YU1vZGVsIiwiYVJlc3VsdHMiLCJhbGwiLCJyZXF1ZXN0T2JqZWN0Iiwib0VudGl0eVR5cGUiLCJnZXRDdXN0b21BZ2dyZWdhdGUiLCJzQW5ubyIsInNBbm5vS2V5IiwicmVwbGFjZSIsImFBbm5vIiwic3BsaXQiLCJtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzIiwic0FnZ3JlZ2F0YWJsZSIsInNQcm9wS2V5IiwicHJvcGVydHlQYXRoIiwiYWdncmVnYXRpb25NZXRob2QiLCJmZXRjaENyaXRpY2FsaXR5IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJhRGltZW5zaW9ucyIsImFNZWFzdXJlcyIsImFDaGFydEl0ZW1zIiwiZ2V0SXRlbXMiLCJrZXkiLCJnZXRUeXBlIiwiZ2V0SW50ZXJuYWxDaGFydE5hbWVGcm9tUHJvcGVydHlOYW1lQW5kS2luZCIsImdldFByb3BlcnR5S2V5IiwidmFsIiwiYXhpczEiLCJkYXRhcG9pbnQiLCJ1bml0UGF0aCIsInNDdXN0b20iLCJvSXRlbSIsIm1lcmdlIiwicmViaW5kIiwic1NlYXJjaCIsIm9Jbm5lckNoYXJ0IiwiZ2V0Q29udHJvbERlbGVnYXRlIiwiZ2V0SW5uZXJDaGFydCIsIm9DaGFydEJpbmRpbmciLCJnZXRCaW5kaW5nIiwic3VzcGVuZCIsInNldEFnZ3JlZ2F0aW9uIiwib0lubmVyQ2hhcnREZWxlZ2F0ZSIsIm9uQmVmb3JlUmVuZGVyaW5nIiwicmVzdW1lIiwicmVtb3ZlRXZlbnREZWxlZ2F0ZSIsImFkZEV2ZW50RGVsZWdhdGUiLCJmaXJlRXZlbnQiLCJfc2V0Q2hhcnQiLCJvQ2hhcnRBUEkiLCJzZXRWaXpQcm9wZXJ0aWVzIiwiZGV0YWNoU2VsZWN0RGF0YSIsImhhbmRsZVNlbGVjdGlvbkNoYW5nZSIsImRldGFjaERlc2VsZWN0RGF0YSIsImRldGFjaERyaWxsZWRVcCIsImF0dGFjaFNlbGVjdERhdGEiLCJhdHRhY2hEZXNlbGVjdERhdGEiLCJhdHRhY2hEcmlsbGVkVXAiLCJzZXRTZWxlY3Rpb25Nb2RlIiwiZ2V0UGF5bG9hZCIsInNlbGVjdGlvbk1vZGUiLCJ0b1VwcGVyQ2FzZSIsIl9nZXRCaW5kaW5nSW5mbyIsIl9nZXRCaW5kaW5nSW5mb0Zyb21TdGF0ZSIsIm9NZXRhZGF0YUluZm8iLCJnZXREZWxlZ2F0ZSIsInBheWxvYWQiLCJvUGFyYW1zIiwiZW50aXR5U2V0IiwiY2hhcnRDb250ZXh0UGF0aCIsInJlbW92ZUl0ZW1Gcm9tSW5uZXJDaGFydCIsIm9NRENDaGFydEl0ZW0iLCJjYWxsIiwiZmlyZURlc2VsZWN0RGF0YSIsInNvcnRSZXN0cmljdGlvbnNQcm9wZXJ0eSIsImJJc1RyYW5zQWdncmVnYXRlIiwiRmlsdGVyT3BlcmF0b3IiLCJFUSIsImFGaWx0ZXJzIiwia2luZCIsImdldFByb3BlcnR5RnJvbU5hbWVBbmRLaW5kIiwibWRjQ2hhcnQiLCJnZXRQcm9wZXJ0eUhlbHBlciIsImdldFByb3BlcnR5IiwiZ2V0RmlsdGVyRGVsZWdhdGUiLCJGaWx0ZXJCYXJEZWxlZ2F0ZSIsImFkZEl0ZW0iLCJvUGFyZW50Q29udHJvbCIsInNQcm9wZXJ0eUluZm9OYW1lIiwicHJvcCIsIm9GaWx0ZXJJdGVtIiwiYmluZFByb3BlcnR5Il0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJDaGFydERlbGVnYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHlQYXRoIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgeyBDb21tb25Bbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL0NvbW1vblwiO1xuaW1wb3J0IHR5cGUgeyBUZXh0QXJyYW5nZW1lbnQgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBtZXJnZSBmcm9tIFwic2FwL2Jhc2UvdXRpbC9tZXJnZVwiO1xuaW1wb3J0IHR5cGUgc2FwQ2hhcnQgZnJvbSBcInNhcC9jaGFydC9DaGFydFwiO1xuaW1wb3J0IFRpbWVVbml0VHlwZSBmcm9tIFwic2FwL2NoYXJ0L1RpbWVVbml0VHlwZVwiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25Nb2RlIH0gZnJvbSBcInNhcC9jaGFydC9saWJyYXJ5XCI7XG5pbXBvcnQgdHlwZSB7IF9GaWx0ZXJSZXN0cmljdGlvbnMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgTWV0YU1vZGVsUHJvcGVydHlBbm5vdGF0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL01ldGFNb2RlbENvbnZlcnRlclwiO1xuaW1wb3J0IHZhbHVlRm9ybWF0dGVycyBmcm9tIFwic2FwL2ZlL2NvcmUvZm9ybWF0dGVycy9WYWx1ZUZvcm1hdHRlclwiO1xuaW1wb3J0IHR5cGUge1xuXHRGaWx0ZXJSZXN0cmljdGlvbnNQcm9wZXJ0eUluZm9UeXBlLFxuXHRTb3J0UmVzdHJpY3Rpb25zSW5mb1R5cGUsXG5cdFNvcnRSZXN0cmljdGlvbnNQcm9wZXJ0eUluZm9UeXBlXG59IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFNb2RlbEZ1bmN0aW9uXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJhYmxlRGF0YSwgZ2V0U29ydFJlc3RyaWN0aW9uc0luZm8sIGlzTXVsdGlWYWx1ZUZpbHRlckV4cHJlc3Npb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9NZXRhTW9kZWxGdW5jdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBJbnRlcm5hbE1vZGVsQ29udGV4dCB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25CaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbGxlY3Rpb25CaW5kaW5nSW5mb1wiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvRGVsZWdhdGVVdGlsXCI7XG5pbXBvcnQgTWFjcm9zRGVsZWdhdGVVdGlsIGZyb20gXCJzYXAvZmUvbWFjcm9zL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IENoYXJ0SGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NoYXJ0L0NoYXJ0SGVscGVyXCI7XG5pbXBvcnQgQ2hhcnRVdGlscyBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jaGFydC9DaGFydFV0aWxzXCI7XG5pbXBvcnQgRmlsdGVyVXRpbHMgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmlsdGVyL0ZpbHRlclV0aWxzXCI7XG5pbXBvcnQgdHlwZSBVSTVFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIEV2ZW50UHJvdmlkZXIgZnJvbSBcInNhcC91aS9iYXNlL0V2ZW50UHJvdmlkZXJcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlCaW5kaW5nSW5mbyB9IGZyb20gXCJzYXAvdWkvYmFzZS9NYW5hZ2VkT2JqZWN0XCI7XG5pbXBvcnQgdHlwZSBDb250cm9sIGZyb20gXCJzYXAvdWkvY29yZS9Db250cm9sXCI7XG5pbXBvcnQgRWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IExpYnJhcnkgZnJvbSBcInNhcC91aS9jb3JlL0xpYlwiO1xuaW1wb3J0IHR5cGUgQ2hhcnQgZnJvbSBcInNhcC91aS9tZGMvQ2hhcnRcIjtcbmltcG9ydCB0eXBlIENoYXJ0SXRlbSBmcm9tIFwic2FwL3VpL21kYy9jaGFydC9DaGFydEl0ZW1cIjtcbmltcG9ydCB0eXBlIENoYXJ0UHJvcGVydHkgZnJvbSBcInNhcC91aS9tZGMvY2hhcnQvQ2hhcnRQcm9wZXJ0eVwiO1xuaW1wb3J0IENoYXJ0SXRlbVJvbGVUeXBlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0NoYXJ0SXRlbVJvbGVUeXBlXCI7XG5pbXBvcnQgdHlwZSBDaGFydFAxM25Nb2RlIGZyb20gXCJzYXAvdWkvbWRjL2VudW1zL0NoYXJ0UDEzbk1vZGVcIjtcbmltcG9ydCBEZWxlZ2F0ZVV0aWwgZnJvbSBcInNhcC91aS9tZGMvb2RhdGEvdjQvdXRpbC9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCBCYXNlQ2hhcnREZWxlZ2F0ZSBmcm9tIFwic2FwL3VpL21kYy9vZGF0YS92NC92aXpDaGFydC9DaGFydERlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSBDb250ZXh0IGZyb20gXCJzYXAvdWkvbW9kZWwvQ29udGV4dFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IEZpbHRlck9wZXJhdG9yIGZyb20gXCJzYXAvdWkvbW9kZWwvRmlsdGVyT3BlcmF0b3JcIjtcbmltcG9ydCB0eXBlIE9EYXRhTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IEV4cGFuZFBhdGhUeXBlLCBNZXRhTW9kZWxFbnRpdHlTZXRBbm5vdGF0aW9uLCBNZXRhTW9kZWxQcm9wZXJ0eSB9IGZyb20gXCJ0eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgTWV0YU1vZGVsRW51bSB9IGZyb20gXCJ0eXBlcy9tZXRhbW9kZWxfdHlwZXNcIjtcbmltcG9ydCBGaWx0ZXJCYXJEZWxlZ2F0ZSBmcm9tIFwiLi4vZmlsdGVyQmFyL0ZpbHRlckJhckRlbGVnYXRlXCI7XG5pbXBvcnQgdHlwZSBDaGFydEFQSSBmcm9tIFwiLi9DaGFydEFQSVwiO1xuXG5jb25zdCBDaGFydERlbGVnYXRlID0gT2JqZWN0LmFzc2lnbih7fSwgQmFzZUNoYXJ0RGVsZWdhdGUpO1xuQmFzZUNoYXJ0RGVsZWdhdGUuYXBpVmVyc2lvbiA9IDI7XG5DaGFydERlbGVnYXRlLl9sb2FkQ2hhcnQgPSBhc3luYyBmdW5jdGlvbiAoKTogUHJvbWlzZTx1bmtub3duPiB7XG5cdGF3YWl0IExpYnJhcnkubG9hZCh7IG5hbWU6IFwic2FwLmNoYXJ0XCIgfSk7XG5cdHJldHVybiBCYXNlQ2hhcnREZWxlZ2F0ZS5fbG9hZENoYXJ0KCk7XG59O1xuQ2hhcnREZWxlZ2F0ZS5fc2V0Q2hhcnROb0RhdGFUZXh0ID0gZnVuY3Rpb24gKG9DaGFydDogQ2hhcnQsIG9CaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHZvaWQge1xuXHRsZXQgc05vRGF0YUtleSA9IFwiXCI7XG5cdGNvbnN0IG9DaGFydEZpbHRlckluZm8gPSBDaGFydFV0aWxzLmdldEFsbEZpbHRlckluZm8ob0NoYXJ0KSxcblx0XHRzdWZmaXhSZXNvdXJjZUtleSA9IG9CaW5kaW5nSW5mby5wYXRoLnN0YXJ0c1dpdGgoXCIvXCIpID8gb0JpbmRpbmdJbmZvLnBhdGguc3Vic3RyKDEpIDogb0JpbmRpbmdJbmZvLnBhdGg7XG5cdGNvbnN0IF9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMgPSBmdW5jdGlvbiAoKTogc3RyaW5nIHtcblx0XHRpZiAob0NoYXJ0LmRhdGEoXCJtdWx0aVZpZXdzXCIpKSB7XG5cdFx0XHRyZXR1cm4gXCJNX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRfTVVMVElfVklFV1wiO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gXCJUX1RBQkxFX0FORF9DSEFSVF9OT19EQVRBX1RFWFRfV0lUSF9GSUxURVJcIjtcblx0XHR9XG5cdH07XG5cdGlmIChvQ2hhcnQuZ2V0RmlsdGVyKCkpIHtcblx0XHRpZiAob0NoYXJ0RmlsdGVySW5mby5zZWFyY2ggfHwgKG9DaGFydEZpbHRlckluZm8uZmlsdGVycyAmJiBvQ2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMubGVuZ3RoKSkge1xuXHRcdFx0c05vRGF0YUtleSA9IF9nZXROb0RhdGFUZXh0V2l0aEZpbHRlcnMoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0c05vRGF0YUtleSA9IFwiVF9UQUJMRV9BTkRfQ0hBUlRfTk9fREFUQV9URVhUXCI7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKG9DaGFydEZpbHRlckluZm8uc2VhcmNoIHx8IChvQ2hhcnRGaWx0ZXJJbmZvLmZpbHRlcnMgJiYgb0NoYXJ0RmlsdGVySW5mby5maWx0ZXJzLmxlbmd0aCkpIHtcblx0XHRzTm9EYXRhS2V5ID0gX2dldE5vRGF0YVRleHRXaXRoRmlsdGVycygpO1xuXHR9IGVsc2Uge1xuXHRcdHNOb0RhdGFLZXkgPSBcIk1fVEFCTEVfQU5EX0NIQVJUX05PX0ZJTFRFUlNfTk9fREFUQV9URVhUXCI7XG5cdH1cblx0b0NoYXJ0LnNldE5vRGF0YVRleHQoZ2V0UmVzb3VyY2VNb2RlbChvQ2hhcnQpLmdldFRleHQoc05vRGF0YUtleSwgdW5kZWZpbmVkLCBzdWZmaXhSZXNvdXJjZUtleSkpO1xufTtcblxuQ2hhcnREZWxlZ2F0ZS5faGFuZGxlUHJvcGVydHkgPSBmdW5jdGlvbiAoXG5cdG9Db250ZXh0OiBDb250ZXh0LFxuXHRvTURDQ2hhcnQ6IENoYXJ0LFxuXHRtRW50aXR5U2V0QW5ub3RhdGlvbnM6IE1ldGFNb2RlbEVudGl0eVNldEFubm90YXRpb24sXG5cdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9Pj4sXG5cdG1DdXN0b21BZ2dyZWdhdGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcblx0YVByb3BlcnRpZXM6IENoYXJ0UHJvcGVydHlbXSxcblx0c0NyaXRpY2FsaXR5OiBzdHJpbmdcbik6IHZvaWQge1xuXHRjb25zdCBvQXBwbHlTdXBwb3J0ZWQgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwiYXBwbHlTdXBwb3J0ZWRcIikpO1xuXHRjb25zdCBzb3J0UmVzdHJpY3Rpb25zSW5mbyA9IGdldFNvcnRSZXN0cmljdGlvbnNJbmZvKG1FbnRpdHlTZXRBbm5vdGF0aW9ucyk7XG5cdGNvbnN0IG1ldGFNb2RlbCA9IG9Db250ZXh0LmdldE1vZGVsKCk7XG5cdGNvbnN0IGVudGl0eVR5cGVQYXRoID0gb01EQ0NoYXJ0LmRhdGEoXCJlbnRpdHlUeXBlXCIpO1xuXHRjb25zdCBiaW5kaW5nUGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoZW50aXR5VHlwZVBhdGgpO1xuXHRjb25zdCBmaWx0ZXJSZXN0cmljdGlvbnM6IF9GaWx0ZXJSZXN0cmljdGlvbnMgPSBDb21tb25VdGlscy5nZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgoYmluZGluZ1BhdGgsIG1ldGFNb2RlbCk7XG5cdGNvbnN0IHByb3BlcnR5RmlsdGVyYWJsZURhdGE6IFJlY29yZDxzdHJpbmcsIEZpbHRlclJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGU+ID0ge307XG5cdGdldEZpbHRlcmFibGVEYXRhKFxuXHRcdHByb3BlcnR5RmlsdGVyYWJsZURhdGEsXG5cdFx0ZmlsdGVyUmVzdHJpY3Rpb25zLk5vbkZpbHRlcmFibGVQcm9wZXJ0aWVzLFxuXHRcdE9iamVjdC5rZXlzKGZpbHRlclJlc3RyaWN0aW9ucy5GaWx0ZXJBbGxvd2VkRXhwcmVzc2lvbnMpXG5cdCk7XG5cdGNvbnN0IG9PYmogPSBvQ29udGV4dC5nZXRNb2RlbCgpLmdldE9iamVjdChvQ29udGV4dC5nZXRQYXRoKCkpO1xuXHRjb25zdCBzS2V5ID0gb0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRPYmplY3QoYCR7b0NvbnRleHQuZ2V0UGF0aCgpfUBzYXB1aS5uYW1lYCkgYXMgc3RyaW5nO1xuXHRjb25zdCBhTW9kZXMgPSBvTURDQ2hhcnQuZ2V0UDEzbk1vZGUoKTtcblx0Y2hlY2tGb3JOb25maWx0ZXJhYmxlRW50aXR5U2V0KG9NRENDaGFydCwgYU1vZGVzKTtcblxuXHRpZiAob09iaiAmJiBvT2JqLiRraW5kID09PSBcIlByb3BlcnR5XCIpIHtcblx0XHQvLyBpZ25vcmUgKGFzIGZvciBub3cpIGFsbCBjb21wbGV4IHByb3BlcnRpZXNcblx0XHQvLyBub3QgY2xlYXIgaWYgdGhleSBtaWdodCBiZSBuZXN0aW5nIChjb21wbGV4IGluIGNvbXBsZXgpXG5cdFx0Ly8gbm90IGNsZWFyIGhvdyB0aGV5IGFyZSByZXByZXNlbnRlZCBpbiBub24tZmlsdGVyYWJsZSBhbm5vdGF0aW9uXG5cdFx0Ly8gZXRjLlxuXHRcdGlmIChvT2JqLiRpc0NvbGxlY3Rpb24pIHtcblx0XHRcdC8vTG9nLndhcm5pbmcoXCJDb21wbGV4IHByb3BlcnR5IHdpdGggdHlwZSBcIiArIG9PYmouJFR5cGUgKyBcIiBoYXMgYmVlbiBpZ25vcmVkXCIpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGNvbnN0IG9Qcm9wZXJ0eUFubm90YXRpb25zID0gbWV0YU1vZGVsLmdldE9iamVjdChgJHtvQ29udGV4dC5nZXRQYXRoKCl9QGApO1xuXHRcdGNvbnN0IHNQYXRoID0gbWV0YU1vZGVsLmdldE9iamVjdChcIkBzYXB1aS5uYW1lXCIsIG1ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChvQ29udGV4dC5nZXRQYXRoKCkpKTtcblxuXHRcdGNvbnN0IGFHcm91cGFibGVQcm9wZXJ0aWVzID0gb0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5Hcm91cGFibGVQcm9wZXJ0aWVzO1xuXHRcdGNvbnN0IGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzID0gb0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5BZ2dyZWdhdGFibGVQcm9wZXJ0aWVzO1xuXHRcdGxldCBiR3JvdXBhYmxlID0gYUdyb3VwYWJsZVByb3BlcnRpZXMgPyBjaGVja1Byb3BlcnR5VHlwZShhR3JvdXBhYmxlUHJvcGVydGllcywgc1BhdGgpIDogZmFsc2U7XG5cdFx0bGV0IGJBZ2dyZWdhdGFibGUgPSBhQWdncmVnYXRhYmxlUHJvcGVydGllcyA/IGNoZWNrUHJvcGVydHlUeXBlKGFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzLCBzUGF0aCkgOiBmYWxzZTtcblxuXHRcdGlmICghYUdyb3VwYWJsZVByb3BlcnRpZXMgfHwgKGFHcm91cGFibGVQcm9wZXJ0aWVzICYmICFhR3JvdXBhYmxlUHJvcGVydGllcy5sZW5ndGgpKSB7XG5cdFx0XHRiR3JvdXBhYmxlID0gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkdyb3VwYWJsZVwiXTtcblx0XHR9XG5cdFx0aWYgKCFhQWdncmVnYXRhYmxlUHJvcGVydGllcyB8fCAoYUFnZ3JlZ2F0YWJsZVByb3BlcnRpZXMgJiYgIWFBZ2dyZWdhdGFibGVQcm9wZXJ0aWVzLmxlbmd0aCkpIHtcblx0XHRcdGJBZ2dyZWdhdGFibGUgPSBvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuQWdncmVnYXRpb24uVjEuQWdncmVnYXRhYmxlXCJdO1xuXHRcdH1cblxuXHRcdC8vUmlnaHQgbm93OiBza2lwIHRoZW0sIHNpbmNlIHdlIGNhbid0IGNyZWF0ZSBhIGNoYXJ0IGZyb20gaXRcblx0XHRpZiAoIWJHcm91cGFibGUgJiYgIWJBZ2dyZWdhdGFibGUpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y2hlY2tQcm9wZXJ0eUlzQm90aEdyb3VwYWJsZUFuZEFnZ3JlZ2F0YWJsZShtQ3VzdG9tQWdncmVnYXRlcywgc0tleSwgYkdyb3VwYWJsZSwgYkFnZ3JlZ2F0YWJsZSk7XG5cdFx0Y29uc3QgY3VzdG9tQWdncmVnYXRlcyA9IE9iamVjdC5rZXlzKG1DdXN0b21BZ2dyZWdhdGVzKTtcblx0XHRpZiAoYkFnZ3JlZ2F0YWJsZSkge1xuXHRcdFx0Y29uc3QgYUFnZ3JlZ2F0ZVByb3BlcnRpZXMgPSBDaGFydERlbGVnYXRlLl9jcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlKFxuXHRcdFx0XHRvTURDQ2hhcnQsXG5cdFx0XHRcdHNLZXksXG5cdFx0XHRcdG9Qcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHRmaWx0ZXJSZXN0cmljdGlvbnMsXG5cdFx0XHRcdHNvcnRSZXN0cmljdGlvbnNJbmZvLFxuXHRcdFx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wcyxcblx0XHRcdFx0bUN1c3RvbUFnZ3JlZ2F0ZXMsXG5cdFx0XHRcdG9PYmouJFR5cGVcblx0XHRcdCk7XG5cdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChvQWdncmVnYXRlUHJvcGVydHk6IENoYXJ0UHJvcGVydHkpIHtcblx0XHRcdFx0YVByb3BlcnRpZXMucHVzaChvQWdncmVnYXRlUHJvcGVydHkpO1xuXHRcdFx0fSk7XG5cdFx0XHQvL0FkZCB0cmFuc2Zvcm1hdGlvbiBhZ2dyZWdhdGVkIHByb3BlcnRpZXMgdG8gY2hhcnQgcHJvcGVydGllc1xuXHRcdFx0aWYgKGFNb2RlcyAmJiBhTW9kZXMuaW5jbHVkZXMoXCJGaWx0ZXJcIikpIHtcblx0XHRcdFx0Y29uc3QgYUtub3duQWdncmVnYXRhYmxlUHJvcHMgPSBPYmplY3Qua2V5cyhtS25vd25BZ2dyZWdhdGFibGVQcm9wcyk7XG5cdFx0XHRcdGNvbnN0IGFHcm91cGFibGVQcm9wZXJ0aWVzVmFsdWVzID0gYUdyb3VwYWJsZVByb3BlcnRpZXMubWFwKFxuXHRcdFx0XHRcdChvUHJvcGVydHk6IHsgJFByb3BlcnR5UGF0aDogc3RyaW5nIH0pID0+IG9Qcm9wZXJ0eS4kUHJvcGVydHlQYXRoXG5cdFx0XHRcdCk7XG5cdFx0XHRcdC8vIEFkZCB0cmFuc2Zvcm1hdGlvbiBhZ2dyZWdhdGVkIHByb3BlcnR5IHRvIGNoYXJ0IHNvIHRoYXQgaW4gdGhlIGZpbHRlciBkcm9wZG93biBpdCdzIHZpc2libGVcblx0XHRcdFx0Ly8gQWxzbyBtYXJrIHZpc2liaWxpdHkgZmFsc2UgYXMgdGhpcyBwcm9wZXJ0eSBzaG91bGQgbm90IGNvbWUgdXAgaW4gdW5kZXIgY2hhcnQgc2VjdGlvbiBvZiBwZXJzb25hbGl6YXRpb24gZGlhbG9nXG5cdFx0XHRcdGlmIChhS25vd25BZ2dyZWdhdGFibGVQcm9wcy5pbmNsdWRlcyhzS2V5KSAmJiAhYUdyb3VwYWJsZVByb3BlcnRpZXNWYWx1ZXMuaW5jbHVkZXMoc0tleSkpIHtcblx0XHRcdFx0XHRhUHJvcGVydGllcyA9IGFkZFByb3BlcnR5VG9DaGFydChcblx0XHRcdFx0XHRcdGFQcm9wZXJ0aWVzLFxuXHRcdFx0XHRcdFx0c0tleSxcblx0XHRcdFx0XHRcdG9Qcm9wZXJ0eUFubm90YXRpb25zLFxuXHRcdFx0XHRcdFx0Y3VzdG9tQWdncmVnYXRlcy5pbmNsdWRlcyhzS2V5KSA/IGZhbHNlIDogcHJvcGVydHlGaWx0ZXJhYmxlRGF0YT8uW3NLZXldPy5maWx0ZXJhYmxlID8/IHRydWUsXG5cdFx0XHRcdFx0XHRmaWx0ZXJSZXN0cmljdGlvbnMsXG5cdFx0XHRcdFx0XHRmYWxzZSwgLy8gJ2lzU29ydGFibGUnIGlzIHNldCB0byAnZmFsc2UnIHRvIGF2b2lkIGR1cGxpY2F0ZSBlbnRyaWVzIGluIHRoZSBzb3J0IHF1ZXVlIGZvciBhZ2dyZWdhdGFibGUgcHJvcGVydGllcy4gVGhlc2UgcHJvcGVydGllcyBhcmUgYWxyZWFkeSBxdWV1ZWQgZm9yIHNvcnRpbmcgaW4gdGhlICdjcmVhdGVQcm9wZXJ0eUluZm9zRm9yQWdncmVnYXRhYmxlJyBtZXRob2QuXG5cdFx0XHRcdFx0XHRvTURDQ2hhcnQsXG5cdFx0XHRcdFx0XHRzQ3JpdGljYWxpdHksXG5cdFx0XHRcdFx0XHRvT2JqLFxuXHRcdFx0XHRcdFx0ZmFsc2UsXG5cdFx0XHRcdFx0XHRjdXN0b21BZ2dyZWdhdGVzLmluY2x1ZGVzKHNLZXkpID8gZmFsc2UgOiB0cnVlLFxuXHRcdFx0XHRcdFx0dW5kZWZpbmVkLFxuXHRcdFx0XHRcdFx0dHJ1ZVxuXHRcdFx0XHRcdCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFx0aWYgKGJHcm91cGFibGUpIHtcblx0XHRcdGNvbnN0IHNOYW1lID0gc0tleSB8fCBcIlwiLFxuXHRcdFx0XHRzVGV4dFByb3BlcnR5ID0gb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAXCIgKyBDb21tb25Bbm5vdGF0aW9uVGVybXMuVGV4dF1cblx0XHRcdFx0XHQ/IG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQFwiICsgQ29tbW9uQW5ub3RhdGlvblRlcm1zLlRleHRdLiRQYXRoXG5cdFx0XHRcdFx0OiBudWxsO1xuXHRcdFx0bGV0IGJJc05hdmlnYXRpb25UZXh0ID0gZmFsc2U7XG5cdFx0XHRpZiAoc05hbWUgJiYgc05hbWUuaW5jbHVkZXMoXCIvXCIpKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgJGV4cGFuZCBpcyBub3QgeWV0IHN1cHBvcnRlZC4gUHJvcGVydHk6ICR7c05hbWV9IGZyb20gYW4gYXNzb2NpYXRpb24gY2Fubm90IGJlIHVzZWRgKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKHNUZXh0UHJvcGVydHkgJiYgc1RleHRQcm9wZXJ0eS5pbmRleE9mKFwiL1wiKSA+IC0xKSB7XG5cdFx0XHRcdExvZy5lcnJvcihgJGV4cGFuZCBpcyBub3QgeWV0IHN1cHBvcnRlZC4gVGV4dCBQcm9wZXJ0eTogJHtzVGV4dFByb3BlcnR5fSBmcm9tIGFuIGFzc29jaWF0aW9uIGNhbm5vdCBiZSB1c2VkYCk7XG5cdFx0XHRcdGJJc05hdmlnYXRpb25UZXh0ID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdGFQcm9wZXJ0aWVzID0gYWRkUHJvcGVydHlUb0NoYXJ0KFxuXHRcdFx0XHRhUHJvcGVydGllcyxcblx0XHRcdFx0c0tleSxcblx0XHRcdFx0b1Byb3BlcnR5QW5ub3RhdGlvbnMsXG5cdFx0XHRcdGN1c3RvbUFnZ3JlZ2F0ZXMuaW5jbHVkZXMoc0tleSkgPyBmYWxzZSA6IHByb3BlcnR5RmlsdGVyYWJsZURhdGE/LltzS2V5XT8uZmlsdGVyYWJsZSA/PyB0cnVlLFxuXHRcdFx0XHRmaWx0ZXJSZXN0cmljdGlvbnMsXG5cdFx0XHRcdENoYXJ0RGVsZWdhdGUuX2dldFNvcnRhYmxlKG9NRENDaGFydCwgc29ydFJlc3RyaWN0aW9uc0luZm8ucHJvcGVydHlJbmZvW3NLZXldLCBmYWxzZSksXG5cdFx0XHRcdG9NRENDaGFydCxcblx0XHRcdFx0c0NyaXRpY2FsaXR5LFxuXHRcdFx0XHRvT2JqLFxuXHRcdFx0XHRjdXN0b21BZ2dyZWdhdGVzLmluY2x1ZGVzKHNLZXkpID8gZmFsc2UgOiB0cnVlLFxuXHRcdFx0XHRmYWxzZSxcblx0XHRcdFx0YklzTmF2aWdhdGlvblRleHRcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG59O1xuXG4vLyBjcmVhdGUgcHJvcGVydGllcyBmb3IgY2hhcnRcbmZ1bmN0aW9uIGFkZFByb3BlcnR5VG9DaGFydChcblx0YVByb3BlcnRpZXM6IENoYXJ0UHJvcGVydHlbXSxcblx0c0tleTogc3RyaW5nLFxuXHRvUHJvcGVydHlBbm5vdGF0aW9uczogTWV0YU1vZGVsUHJvcGVydHlBbm5vdGF0aW9ucyxcblx0aXNGaWx0ZXJhYmxlOiBib29sZWFuLFxuXHRvRmlsdGVyUmVzdHJpY3Rpb25zSW5mbzogX0ZpbHRlclJlc3RyaWN0aW9ucyxcblx0aXNTb3J0YWJsZTogYm9vbGVhbixcblx0b01EQ0NoYXJ0OiBDaGFydCxcblx0c0NyaXRpY2FsaXR5OiBzdHJpbmcsXG5cdG9PYmo6IE1ldGFNb2RlbFByb3BlcnR5LFxuXHRiSXNHcm91cGFibGU6IGJvb2xlYW4sXG5cdGJJc0FnZ3JlZ2F0YWJsZTogYm9vbGVhbixcblx0YklzTmF2aWdhdGlvblRleHQ/OiBib29sZWFuLFxuXHRiSXNIaWRkZW4/OiBib29sZWFuXG4pOiBDaGFydFByb3BlcnR5W10ge1xuXHRjb25zdCBvUHJvcGVydHk6IENoYXJ0UHJvcGVydHkgPSB7XG5cdFx0bmFtZTogXCJfZmVfZ3JvdXBhYmxlX1wiICsgc0tleSxcblx0XHRsYWJlbDogb1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJdPy50b1N0cmluZygpIHx8IHNLZXksXG5cdFx0c29ydGFibGU6IGlzU29ydGFibGUsXG5cdFx0ZmlsdGVyYWJsZTogaXNGaWx0ZXJhYmxlLFxuXHRcdGdyb3VwYWJsZTogYklzR3JvdXBhYmxlLFxuXHRcdGFnZ3JlZ2F0YWJsZTogYklzQWdncmVnYXRhYmxlLFxuXHRcdG1heENvbmRpdGlvbnM6IGlzTXVsdGlWYWx1ZUZpbHRlckV4cHJlc3Npb24ob0ZpbHRlclJlc3RyaWN0aW9uc0luZm9bXCJGaWx0ZXJBbGxvd2VkRXhwcmVzc2lvbnNcIl0/LltzS2V5XT8uWzBdKSA/IC0xIDogMSxcblx0XHRwYXRoOiBzS2V5LFxuXHRcdHJvbGU6IENoYXJ0SXRlbVJvbGVUeXBlLmNhdGVnb3J5LCAvL3N0YW5kYXJkLCBub3JtYWxseSB0aGlzIHNob3VsZCBiZSBpbnRlcnByZXRlZCBmcm9tIFVJLkNoYXJ0IGFubm90YXRpb25cblx0XHRjcml0aWNhbGl0eTogc0NyaXRpY2FsaXR5LCAvL1RvIGJlIGltcGxlbWVudGVkIGJ5IEZFXG5cdFx0ZGF0YVR5cGU6IG9PYmouJFR5cGUsXG5cdFx0dmlzaWJsZTogYklzSGlkZGVuID8gIWJJc0hpZGRlbiA6IHRydWUsXG5cdFx0dGV4dFByb3BlcnR5OlxuXHRcdFx0IWJJc05hdmlnYXRpb25UZXh0ICYmIG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0XCJdXG5cdFx0XHRcdD8gKG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0XCJdIGFzIHsgJFBhdGg6IHN0cmluZyB9KS4kUGF0aFxuXHRcdFx0XHQ6IG51bGwsIC8vVG8gYmUgaW1wbGVtZW50ZWQgYnkgRkVcblx0XHR0ZXh0Rm9ybWF0dGVyOiAob1Byb3BlcnR5QW5ub3RhdGlvbnMgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pW1xuXHRcdFx0XCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuVGV4dEFycmFuZ2VtZW50XCJcblx0XHRdIGFzIE1ldGFNb2RlbEVudW08VGV4dEFycmFuZ2VtZW50PlxuXHR9O1xuXHQvLyB0aW1lVW5pdFR5cGUgPSB1bmRlZmluZWQgLT4gY3Jhc2hlcyB0aGUgY2hhcnQuIHRoZXJlZm9yZTpcblx0Y29uc3QgdGltZVVuaXRUeXBlID0gQ2hhcnREZWxlZ2F0ZS5fZ2V0VGltZVR5cGUob09iaiwgb1Byb3BlcnR5QW5ub3RhdGlvbnMpO1xuXHRpZiAodGltZVVuaXRUeXBlKSBvUHJvcGVydHkudGltZVVuaXRUeXBlID0gdGltZVVuaXRUeXBlO1xuXG5cdGlmIChvT2JqLiRUeXBlID09PSBcIkVkbS5EYXRlVGltZU9mZnNldFwiIHx8IG9PYmouJFR5cGUgPT09IFwiRWRtLlRpbWVPZkRheVwiKSB7XG5cdFx0c3dpdGNoIChvT2JqLiRUeXBlKSB7XG5cdFx0XHRjYXNlIFwiRWRtLkRhdGVUaW1lT2Zmc2V0XCI6XG5cdFx0XHRcdG9Qcm9wZXJ0eS5mb3JtYXRPcHRpb25zID0geyBzdHlsZTogXCJtZWRpdW0vc2hvcnRcIiB9O1xuXHRcdFx0XHRicmVhaztcblx0XHRcdGNhc2UgXCJFZG0uVGltZU9mRGF5XCI6XG5cdFx0XHRcdG9Qcm9wZXJ0eS5mb3JtYXRPcHRpb25zID0geyBzdHlsZTogXCJzaG9ydFwiIH07XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHR9XG5cblx0YVByb3BlcnRpZXMucHVzaChvUHJvcGVydHkpO1xuXHRyZXR1cm4gYVByb3BlcnRpZXM7XG59XG5cbkNoYXJ0RGVsZWdhdGUuX2dldFRpbWVUeXBlID0gZnVuY3Rpb24gKG9PYmo6IE1ldGFNb2RlbFByb3BlcnR5LCBvUHJvcGVydHlBbm5vdGF0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBUaW1lVW5pdFR5cGUgfCB1bmRlZmluZWQge1xuXHRzd2l0Y2ggKG9PYmouJFR5cGUpIHtcblx0XHRjYXNlIFwiRWRtLkRhdGVcIjpcblx0XHRcdHJldHVybiBUaW1lVW5pdFR5cGUuRGF0ZTtcblx0XHRjYXNlIFwiRWRtLlN0cmluZ1wiOlxuXHRcdFx0aWYgKG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQFwiICsgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzRmlzY2FsWWVhcl0pIHtcblx0XHRcdFx0cmV0dXJuIFRpbWVVbml0VHlwZS5maXNjYWx5ZWFyO1xuXHRcdFx0fSBlbHNlIGlmIChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBcIiArIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0Zpc2NhbFllYXJQZXJpb2RdKSB7XG5cdFx0XHRcdHJldHVybiBUaW1lVW5pdFR5cGUuZmlzY2FseWVhcnBlcmlvZDtcblx0XHRcdH0gZWxzZSBpZiAob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAXCIgKyBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNDYWxlbmRhclllYXJNb250aF0pIHtcblx0XHRcdFx0cmV0dXJuIFRpbWVVbml0VHlwZS55ZWFybW9udGg7XG5cdFx0XHR9IGVsc2UgaWYgKG9Qcm9wZXJ0eUFubm90YXRpb25zW1wiQFwiICsgQ29tbW9uQW5ub3RhdGlvblRlcm1zLklzQ2FsZW5kYXJZZWFyUXVhcnRlcl0pIHtcblx0XHRcdFx0cmV0dXJuIFRpbWVVbml0VHlwZS55ZWFycXVhcnRlcjtcblx0XHRcdH0gZWxzZSBpZiAob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAXCIgKyBDb21tb25Bbm5vdGF0aW9uVGVybXMuSXNDYWxlbmRhclllYXJXZWVrXSkge1xuXHRcdFx0XHRyZXR1cm4gVGltZVVuaXRUeXBlLnllYXJ3ZWVrO1xuXHRcdFx0fSBlbHNlIGlmIChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBcIiArIENvbW1vbkFubm90YXRpb25UZXJtcy5Jc0NhbGVuZGFyRGF0ZV0pIHtcblx0XHRcdFx0cmV0dXJuIFRpbWVVbml0VHlwZS55ZWFybW9udGhkYXk7XG5cdFx0XHR9XG5cdFx0XHRicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0cmV0dXJuIHVuZGVmaW5lZDtcblx0fVxufTtcblxuLy8gSWYgZW50aXR5c2V0IGlzIG5vbiBmaWx0ZXJhYmxlLHRoZW4gZnJvbSBwMTNuIG1vZGVzIHJlbW92ZSBGaWx0ZXIgc28gdGhhdCBvbiBVSSBmaWx0ZXIgb3B0aW9uIGRvZXNuJ3Qgc2hvdyB1cFxuZnVuY3Rpb24gY2hlY2tGb3JOb25maWx0ZXJhYmxlRW50aXR5U2V0KG9NRENDaGFydDogQ2hhcnQsIGFNb2RlczogKENoYXJ0UDEzbk1vZGUgfCBrZXlvZiB0eXBlb2YgQ2hhcnRQMTNuTW9kZSlbXSk6IHZvaWQge1xuXHRjb25zdCBiRW50aXR5U2V0RmlsZXJhYmxlID0gb01EQ0NoYXJ0XG5cdFx0Py5nZXRNb2RlbCgpXG5cdFx0Py5nZXRNZXRhTW9kZWwoKVxuXHRcdD8uZ2V0T2JqZWN0KGAke29NRENDaGFydC5kYXRhKFwidGFyZ2V0Q29sbGVjdGlvblBhdGhcIil9QE9yZy5PRGF0YS5DYXBhYmlsaXRpZXMuVjEuRmlsdGVyUmVzdHJpY3Rpb25zYCk/LkZpbHRlcmFibGU7XG5cdGlmIChiRW50aXR5U2V0RmlsZXJhYmxlICE9PSB1bmRlZmluZWQgJiYgIWJFbnRpdHlTZXRGaWxlcmFibGUpIHtcblx0XHRhTW9kZXMgPSBhTW9kZXMuZmlsdGVyKChpdGVtOiBzdHJpbmcpID0+IGl0ZW0gIT09IFwiRmlsdGVyXCIpO1xuXHRcdG9NRENDaGFydC5zZXRQMTNuTW9kZShhTW9kZXMpO1xuXHR9XG59XG5cbi8vICBjaGVjayBpZiBHcm91cGFibGUgL0FnZ3JlZ2F0YWJsZSBwcm9wZXJ0eSBpcyBwcmVzZW50IG9yIG5vdFxuZnVuY3Rpb24gY2hlY2tQcm9wZXJ0eVR5cGUoXG5cdGFQcm9wZXJ0aWVzOiAoRXhwYW5kUGF0aFR5cGU8UHJvcGVydHlQYXRoPiAmIHsgUHJvcGVydHk6IEV4cGFuZFBhdGhUeXBlPFByb3BlcnR5UGF0aD4gfSlbXSxcblx0c1BhdGg6IHN0cmluZ1xuKTogdHJ1ZSB8IHVuZGVmaW5lZCB7XG5cdGlmIChhUHJvcGVydGllcy5sZW5ndGgpIHtcblx0XHRmb3IgKGNvbnN0IGVsZW1lbnQgb2YgYVByb3BlcnRpZXMpIHtcblx0XHRcdGlmIChlbGVtZW50Py4kUHJvcGVydHlQYXRoID09PSBzUGF0aCB8fCBlbGVtZW50Py5Qcm9wZXJ0eT8uJFByb3BlcnR5UGF0aCA9PT0gc1BhdGgpIHtcblx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG59XG5cbi8vSWYgc2FtZSBjdXN0b20gcHJvcGVydHkgaXMgY29uZmlndXJlZCBhcyBncm91cGFibGUgYW5kIGFnZ3JlZ2F0YWJsZSB0aHJvdyBhbiBlcnJvclxuZnVuY3Rpb24gY2hlY2tQcm9wZXJ0eUlzQm90aEdyb3VwYWJsZUFuZEFnZ3JlZ2F0YWJsZShcblx0bUN1c3RvbUFnZ3JlZ2F0ZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuXHRzS2V5OiBzdHJpbmcsXG5cdGJHcm91cGFibGU/OiBib29sZWFuLFxuXHRiQWdncmVnYXRhYmxlPzogYm9vbGVhblxuKTogdm9pZCB7XG5cdGNvbnN0IGN1c3RvbVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhtQ3VzdG9tQWdncmVnYXRlcyk7XG5cdGlmIChiR3JvdXBhYmxlICYmIGJBZ2dyZWdhdGFibGUgJiYgY3VzdG9tUHJvcGVydGllcy5pbmNsdWRlcyhzS2V5KSkge1xuXHRcdHRocm93IG5ldyBFcnJvcihcIlNhbWUgcHJvcGVydHkgY2FuIG5vdCBiZSBjb25maWd1cmVkIGFzIGdyb3VwYWJsZSBhbmQgYWdncmVnYXRhYmxlXCIpO1xuXHR9XG59XG5cbkNoYXJ0RGVsZWdhdGUuZm9ybWF0VGV4dCA9IGZ1bmN0aW9uIChvVmFsdWUxOiBzdHJpbmcsIG9WYWx1ZTI6IHN0cmluZyk6IHN0cmluZyB7XG5cdGNvbnN0IHNWYWx1ZSA9IHRoaXMudHlwZUNvbmZpZz8udHlwZUluc3RhbmNlPy5mb3JtYXRWYWx1ZShvVmFsdWUxLCBcInN0cmluZ1wiKSB8fCBvVmFsdWUxO1xuXG5cdGlmIChvVmFsdWUyKSB7XG5cdFx0Y29uc3Qgb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24gPSB0aGlzLnRleHRGb3JtYXR0ZXI7XG5cblx0XHRpZiAoXG5cdFx0XHQhb1RleHRBcnJhbmdlbWVudEFubm90YXRpb24gfHxcblx0XHRcdG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uLiRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dEZpcnN0XCJcblx0XHQpIHtcblx0XHRcdHJldHVybiB2YWx1ZUZvcm1hdHRlcnMuZm9ybWF0V2l0aEJyYWNrZXRzKG9WYWx1ZTIsIHNWYWx1ZSk7XG5cdFx0fVxuXG5cdFx0aWYgKG9UZXh0QXJyYW5nZW1lbnRBbm5vdGF0aW9uLiRFbnVtTWVtYmVyID09PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlRleHRBcnJhbmdlbWVudFR5cGUvVGV4dExhc3RcIikge1xuXHRcdFx0cmV0dXJuIHZhbHVlRm9ybWF0dGVycy5mb3JtYXRXaXRoQnJhY2tldHMoc1ZhbHVlLCBvVmFsdWUyKTtcblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb1ZhbHVlMiB8fCBzVmFsdWU7XG59O1xuXG5DaGFydERlbGVnYXRlLnVwZGF0ZUJpbmRpbmdJbmZvID0gZnVuY3Rpb24gKG9DaGFydDogQ2hhcnQsIG9CaW5kaW5nSW5mbzogQ29sbGVjdGlvbkJpbmRpbmdJbmZvKTogdm9pZCB7XG5cdGNvbnN0IGludGVybmFsQmluZGluZ0NvbnRleHQgPSBvQ2hhcnQuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKSBhcyBJbnRlcm5hbE1vZGVsQ29udGV4dDtcblxuXHRpbnRlcm5hbEJpbmRpbmdDb250ZXh0LnNldFByb3BlcnR5KFwiaXNJbnNpZ2h0c0VuYWJsZWRcIiwgdHJ1ZSk7XG5cdENoYXJ0RGVsZWdhdGUuX3NldENoYXJ0Tm9EYXRhVGV4dChvQ2hhcnQsIG9CaW5kaW5nSW5mbyk7XG5cdGNvbnN0IG9GaWx0ZXIgPSBFbGVtZW50LmdldEVsZW1lbnRCeUlkKG9DaGFydC5nZXRGaWx0ZXIoKSk7XG5cdGNvbnN0IG1Db25kaXRpb25zID0gb0NoYXJ0LmdldENvbmRpdGlvbnMoKTtcblx0aWYgKCFvQmluZGluZ0luZm8pIHtcblx0XHRvQmluZGluZ0luZm8gPSB7fTtcblx0fVxuXHRpZiAoIW9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzKSB7XG5cdFx0b0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMgPSB7fTtcblx0fVxuXHRpZiAob0ZpbHRlcikge1xuXHRcdC8vIFNlYXJjaFxuXHRcdGNvbnN0IG9JbmZvID0gRmlsdGVyVXRpbHMuZ2V0RmlsdGVySW5mbyhvRmlsdGVyLCB7fSk7XG5cdFx0Y29uc3Qgb0FwcGx5U3VwcG9ydGVkID0gQ29tbW9uSGVscGVyLnBhcnNlQ3VzdG9tRGF0YShvQ2hhcnQuZGF0YShcImFwcGx5U3VwcG9ydGVkXCIpKTtcblx0XHRpZiAob0FwcGx5U3VwcG9ydGVkICYmIG9BcHBseVN1cHBvcnRlZC5lbmFibGVTZWFyY2ggJiYgb0luZm8uc2VhcmNoKSB7XG5cdFx0XHRvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoID0gQ29tbW9uVXRpbHMubm9ybWFsaXplU2VhcmNoVGVybShvSW5mby5zZWFyY2gpO1xuXHRcdH0gZWxzZSBpZiAob0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaCkge1xuXHRcdFx0ZGVsZXRlIG9CaW5kaW5nSW5mby5wYXJhbWV0ZXJzLiRzZWFyY2g7XG5cdFx0fVxuXHR9XG5cdGNvbnN0IHNQYXJhbWV0ZXJQYXRoID0gbUNvbmRpdGlvbnMgPyBEZWxlZ2F0ZVV0aWwuZ2V0UGFyYW1ldGVyc0luZm8ob0ZpbHRlciwgbUNvbmRpdGlvbnMpIDogbnVsbDtcblx0aWYgKHNQYXJhbWV0ZXJQYXRoKSB7XG5cdFx0b0JpbmRpbmdJbmZvLnBhdGggPSBzUGFyYW1ldGVyUGF0aDtcblx0fVxuXHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhvQ2hhcnQpO1xuXHRjb25zdCBvRmlsdGVySW5mbyA9IENoYXJ0VXRpbHMuZ2V0QWxsRmlsdGVySW5mbyhvQ2hhcnQpO1xuXHRpZiAob0ZpbHRlckluZm8uYmluZGluZ1BhdGgpIHtcblx0XHRvQmluZGluZ0luZm8ucGF0aCA9IG9GaWx0ZXJJbmZvLmJpbmRpbmdQYXRoO1xuXHR9XG5cblx0aWYgKENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob0NoYXJ0KS5nZXRWaWV3RGF0YSgpLnZpZXdMZXZlbCA+IDAgJiYgb0JpbmRpbmdJbmZvLnBhdGggJiYgb0NoYXJ0LmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRvQmluZGluZ0luZm8ucGF0aCA9IENoYXJ0SGVscGVyLmdldENvbGxlY3Rpb25OYW1lKG9CaW5kaW5nSW5mby5wYXRoKTtcblx0fVxuXG5cdC8vIHJlbW92ZSBwcmVmaXhlcyBzbyB0aGF0IGVudGl0eXNldCB3aWxsIG1hdGNoIHdpdGggdGhlIHByb3BlcnR5IG5hbWVzIHdpdGggdGhlc2UgZmllbGRcblx0aWYgKG9GaWx0ZXJJbmZvLmZpbHRlcnMpIHtcblx0XHRvRmlsdGVySW5mby5maWx0ZXJzLmZvckVhY2goKGVsZW1lbnQpID0+IHtcblx0XHRcdGlmIChlbGVtZW50LmdldFBhdGgoKSkge1xuXHRcdFx0XHQoZWxlbWVudCBhcyB1bmtub3duIGFzIHsgc1BhdGg6IHN0cmluZyB9KS5zUGF0aCA9IChvQ2hhcnQuZ2V0UGFyZW50KCkgYXMgQ2hhcnRBUEkpLmdldENoYXJ0UHJvcGVydGllc1dpdGhvdXRQcmVmaXhlcyhcblx0XHRcdFx0XHRlbGVtZW50LmdldFBhdGgoKSFcblx0XHRcdFx0KTtcblx0XHRcdH1cblx0XHR9KTtcblx0fVxuXHRvQmluZGluZ0luZm8uZXZlbnRzID8/PSB7fTtcblx0b0JpbmRpbmdJbmZvLmV2ZW50cy5kYXRhUmVxdWVzdGVkID0gKG9DaGFydC5nZXRQYXJlbnQoKSBhcyBDaGFydEFQSSkub25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQuYmluZChvQ2hhcnQuZ2V0UGFyZW50KCkpO1xuXG5cdG9CaW5kaW5nSW5mby5maWx0ZXJzID0gb0ZpbHRlckluZm8uZmlsdGVycy5sZW5ndGggPiAwID8gbmV3IEZpbHRlcih7IGZpbHRlcnM6IG9GaWx0ZXJJbmZvLmZpbHRlcnMsIGFuZDogdHJ1ZSB9KSA6IHVuZGVmaW5lZDtcblx0b0JpbmRpbmdJbmZvLnNvcnRlciA9IHRoaXMuZ2V0U29ydGVycyhvQ2hhcnQpO1xuXHRDaGFydERlbGVnYXRlLl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyKG9DaGFydCwgb0JpbmRpbmdJbmZvKTtcbn07XG5cbkNoYXJ0RGVsZWdhdGUuZmV0Y2hQcm9wZXJ0aWVzID0gYXN5bmMgZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQpOiBQcm9taXNlPFByb3BlcnR5SW5mb1tdPiB7XG5cdGNvbnN0IG9Nb2RlbCA9IHRoaXMuX2dldE1vZGVsKG9NRENDaGFydCk7XG5cdGxldCBwQ3JlYXRlUHJvcGVydHlJbmZvczogUHJvbWlzZTxQcm9wZXJ0eUluZm9bXT47XG5cblx0aWYgKCFvTW9kZWwpIHtcblx0XHRwQ3JlYXRlUHJvcGVydHlJbmZvcyA9IG5ldyBQcm9taXNlPE9EYXRhTW9kZWw+KChyZXNvbHZlKTogdm9pZCA9PiB7XG5cdFx0XHRvTURDQ2hhcnQuYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlKFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0cmVzb2x2ZXI6IHJlc29sdmVcblx0XHRcdFx0fSxcblx0XHRcdFx0b25Nb2RlbENvbnRleHRDaGFuZ2UgYXMgKGV2OiBVSTVFdmVudCkgPT4gdm9pZCxcblx0XHRcdFx0dGhpc1xuXHRcdFx0KTtcblx0XHR9KS50aGVuKChvUmV0cmlldmVkTW9kZWw6IE9EYXRhTW9kZWwpID0+IHtcblx0XHRcdHJldHVybiB0aGlzLl9jcmVhdGVQcm9wZXJ0eUluZm9zKG9NRENDaGFydCwgb1JldHJpZXZlZE1vZGVsKTtcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHRwQ3JlYXRlUHJvcGVydHlJbmZvcyA9IHRoaXMuX2NyZWF0ZVByb3BlcnR5SW5mb3Mob01EQ0NoYXJ0LCBvTW9kZWwpO1xuXHR9XG5cblx0cmV0dXJuIHBDcmVhdGVQcm9wZXJ0eUluZm9zLnRoZW4oZnVuY3Rpb24gKGFQcm9wZXJ0aWVzOiBQcm9wZXJ0eUluZm9bXSkge1xuXHRcdGlmIChvTURDQ2hhcnQuZGF0YSkge1xuXHRcdFx0b01EQ0NoYXJ0LmRhdGEoXCIkbWRjQ2hhcnRQcm9wZXJ0eUluZm9cIiwgYVByb3BlcnRpZXMpO1xuXHRcdFx0Ly8gc3RvcmUgdGhlIHByb3BlcnRpZXMgdG8gZmV0Y2ggZHVyaW5nIHAxM24gY2FsY3VsYXRpb25cblx0XHRcdE1hY3Jvc0RlbGVnYXRlVXRpbC5zZXRDYWNoZWRQcm9wZXJ0aWVzKG9NRENDaGFydCwgYVByb3BlcnRpZXMpO1xuXHRcdH1cblx0XHRyZXR1cm4gYVByb3BlcnRpZXM7XG5cdH0pO1xufTtcbmZ1bmN0aW9uIG9uTW9kZWxDb250ZXh0Q2hhbmdlKHRoaXM6IHR5cGVvZiBDaGFydERlbGVnYXRlLCBvRXZlbnQ6IFVJNUV2ZW50PHt9LCBDaGFydD4sIG9EYXRhOiB7IHJlc29sdmVyOiBGdW5jdGlvbiB9KTogdm9pZCB7XG5cdGNvbnN0IG9NRENDaGFydCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0Y29uc3Qgb01vZGVsID0gdGhpcy5fZ2V0TW9kZWwob01EQ0NoYXJ0KTtcblxuXHRpZiAob01vZGVsKSB7XG5cdFx0b01EQ0NoYXJ0LmRldGFjaE1vZGVsQ29udGV4dENoYW5nZShvbk1vZGVsQ29udGV4dENoYW5nZSBhcyAoZXY6IFVJNUV2ZW50KSA9PiB2b2lkKTtcblx0XHRvRGF0YS5yZXNvbHZlcihvTW9kZWwpO1xuXHR9XG59XG5DaGFydERlbGVnYXRlLl9jcmVhdGVQcm9wZXJ0eUluZm9zID0gYXN5bmMgZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQsIG9Nb2RlbDogT0RhdGFNb2RlbCk6IFByb21pc2U8UHJvcGVydHlJbmZvW10+IHtcblx0Y29uc3Qgc0VudGl0eVNldFBhdGggPSBgLyR7b01EQ0NoYXJ0LmRhdGEoXCJlbnRpdHlTZXRcIil9YDtcblxuXHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRjb25zdCBhUmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKFtvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c0VudGl0eVNldFBhdGh9L2ApLCBvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c0VudGl0eVNldFBhdGh9QGApXSk7XG5cdGNvbnN0IGFQcm9wZXJ0aWVzOiBQcm9wZXJ0eUluZm9bXSA9IFtdO1xuXHRjb25zdCBvRW50aXR5VHlwZSA9IGFSZXN1bHRzWzBdO1xuXHRjb25zdCBtRW50aXR5U2V0QW5ub3RhdGlvbnMgPSBhUmVzdWx0c1sxXTtcblx0Y29uc3QgbUN1c3RvbUFnZ3JlZ2F0ZXMgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwiY3VzdG9tQWdnXCIpKTtcblx0Z2V0Q3VzdG9tQWdncmVnYXRlKG1DdXN0b21BZ2dyZWdhdGVzLCBvTURDQ2hhcnQpO1xuXHRsZXQgc0Fubm87XG5cdGZvciAoY29uc3Qgc0Fubm9LZXkgaW4gbUVudGl0eVNldEFubm90YXRpb25zKSB7XG5cdFx0aWYgKHNBbm5vS2V5LnN0YXJ0c1dpdGgoXCJAT3JnLk9EYXRhLkFnZ3JlZ2F0aW9uLlYxLkN1c3RvbUFnZ3JlZ2F0ZVwiKSkge1xuXHRcdFx0c0Fubm8gPSBzQW5ub0tleS5yZXBsYWNlKFwiQE9yZy5PRGF0YS5BZ2dyZWdhdGlvbi5WMS5DdXN0b21BZ2dyZWdhdGUjXCIsIFwiXCIpO1xuXHRcdFx0Y29uc3QgYUFubm8gPSBzQW5uby5zcGxpdChcIkBcIik7XG5cblx0XHRcdGlmIChhQW5uby5sZW5ndGggPT0gMiAmJiBhQW5ub1sxXSA9PSBcImNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5MYWJlbFwiKSB7XG5cdFx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzW2FBbm5vWzBdXSA9IG1FbnRpdHlTZXRBbm5vdGF0aW9uc1tzQW5ub0tleV07XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cdGNvbnN0IG1UeXBlQWdncmVnYXRhYmxlUHJvcHMgPSBDb21tb25IZWxwZXIucGFyc2VDdXN0b21EYXRhKG9NRENDaGFydC5kYXRhKFwidHJhbnNBZ2dcIikpO1xuXHRjb25zdCBtS25vd25BZ2dyZWdhdGFibGVQcm9wczogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgeyBuYW1lOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmcgfT4+ID0ge307XG5cdGZvciAoY29uc3Qgc0FnZ3JlZ2F0YWJsZSBpbiBtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzKSB7XG5cdFx0Y29uc3Qgc1Byb3BLZXkgPSBtVHlwZUFnZ3JlZ2F0YWJsZVByb3BzW3NBZ2dyZWdhdGFibGVdLnByb3BlcnR5UGF0aDtcblx0XHRtS25vd25BZ2dyZWdhdGFibGVQcm9wc1tzUHJvcEtleV0gPSBtS25vd25BZ2dyZWdhdGFibGVQcm9wc1tzUHJvcEtleV0gfHwge307XG5cdFx0bUtub3duQWdncmVnYXRhYmxlUHJvcHNbc1Byb3BLZXldW21UeXBlQWdncmVnYXRhYmxlUHJvcHNbc0FnZ3JlZ2F0YWJsZV0uYWdncmVnYXRpb25NZXRob2RdID0ge1xuXHRcdFx0bmFtZTogbVR5cGVBZ2dyZWdhdGFibGVQcm9wc1tzQWdncmVnYXRhYmxlXS5uYW1lLFxuXHRcdFx0bGFiZWw6IG1UeXBlQWdncmVnYXRhYmxlUHJvcHNbc0FnZ3JlZ2F0YWJsZV0ubGFiZWxcblx0XHR9O1xuXHR9XG5cdGZvciAoY29uc3Qgc0tleSBpbiBvRW50aXR5VHlwZSkge1xuXHRcdGlmIChzS2V5LmluZGV4T2YoXCIkXCIpICE9PSAwKSB7XG5cdFx0XHRjb25zdCBjcml0aWNhbGl0eSA9IENoYXJ0SGVscGVyLmZldGNoQ3JpdGljYWxpdHkob01ldGFNb2RlbCwgb01ldGFNb2RlbC5jcmVhdGVCaW5kaW5nQ29udGV4dChgJHtzRW50aXR5U2V0UGF0aH0vJHtzS2V5fWApISk7XG5cdFx0XHRDaGFydERlbGVnYXRlLl9oYW5kbGVQcm9wZXJ0eShcblx0XHRcdFx0b01ldGFNb2RlbC5nZXRNZXRhQ29udGV4dChgJHtzRW50aXR5U2V0UGF0aH0vJHtzS2V5fWApLFxuXHRcdFx0XHRvTURDQ2hhcnQsXG5cdFx0XHRcdG1FbnRpdHlTZXRBbm5vdGF0aW9ucyxcblx0XHRcdFx0bUtub3duQWdncmVnYXRhYmxlUHJvcHMsXG5cdFx0XHRcdG1DdXN0b21BZ2dyZWdhdGVzLFxuXHRcdFx0XHRhUHJvcGVydGllcyxcblx0XHRcdFx0Y3JpdGljYWxpdHlcblx0XHRcdCk7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBhUHJvcGVydGllcztcbn07XG5cbmZ1bmN0aW9uIGdldEN1c3RvbUFnZ3JlZ2F0ZShtQ3VzdG9tQWdncmVnYXRlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sIG9NRENDaGFydDogQ2hhcnQpOiB2b2lkIHtcblx0Y29uc3QgYURpbWVuc2lvbnM6IHN0cmluZ1tdID0gW10sXG5cdFx0YU1lYXN1cmVzOiBzdHJpbmdbXSA9IFtdO1xuXHRpZiAobUN1c3RvbUFnZ3JlZ2F0ZXMgJiYgT2JqZWN0LmtleXMobUN1c3RvbUFnZ3JlZ2F0ZXMpLmxlbmd0aCA+PSAxKSB7XG5cdFx0Y29uc3QgYUNoYXJ0SXRlbXMgPSBvTURDQ2hhcnQuZ2V0SXRlbXMoKTtcblx0XHRmb3IgKGNvbnN0IGtleSBpbiBhQ2hhcnRJdGVtcykge1xuXHRcdFx0aWYgKGFDaGFydEl0ZW1zW2tleV0uZ2V0VHlwZSgpID09PSBcImdyb3VwYWJsZVwiKSB7XG5cdFx0XHRcdGFEaW1lbnNpb25zLnB1c2goQ2hhcnREZWxlZ2F0ZS5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKGFDaGFydEl0ZW1zW2tleV0uZ2V0UHJvcGVydHlLZXkoKSwgXCJncm91cGFibGVcIikpO1xuXHRcdFx0fSBlbHNlIGlmIChhQ2hhcnRJdGVtc1trZXldLmdldFR5cGUoKSA9PT0gXCJhZ2dyZWdhdGFibGVcIikge1xuXHRcdFx0XHRhTWVhc3VyZXMucHVzaChcblx0XHRcdFx0XHRDaGFydERlbGVnYXRlLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQoYUNoYXJ0SXRlbXNba2V5XS5nZXRQcm9wZXJ0eUtleSgpLCBcImFnZ3JlZ2F0YWJsZVwiKVxuXHRcdFx0XHQpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZiAoXG5cdFx0XHRhTWVhc3VyZXMuZmlsdGVyKGZ1bmN0aW9uICh2YWw6IHN0cmluZykge1xuXHRcdFx0XHRyZXR1cm4gYURpbWVuc2lvbnMuaW5jbHVkZXModmFsKTtcblx0XHRcdH0pLmxlbmd0aCA+PSAxXG5cdFx0KSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJEaW1lbnNpb24gYW5kIE1lYXN1cmUgaGFzIHRoZSBzYW1lUHJvcGVydHkgQ29uZmlndXJlZFwiKTtcblx0XHR9XG5cdH1cbn1cblxuQ2hhcnREZWxlZ2F0ZS5fY3JlYXRlUHJvcGVydHlJbmZvc0ZvckFnZ3JlZ2F0YWJsZSA9IGZ1bmN0aW9uIChcblx0b01EQ0NoYXJ0OiBDaGFydCxcblx0c0tleTogc3RyaW5nLFxuXHRvUHJvcGVydHlBbm5vdGF0aW9uczogTWV0YU1vZGVsUHJvcGVydHlBbm5vdGF0aW9ucyxcblx0b0ZpbHRlclJlc3RyaWN0aW9uc0luZm86IF9GaWx0ZXJSZXN0cmljdGlvbnMsXG5cdHNvcnRSZXN0cmljdGlvbnNJbmZvOiBTb3J0UmVzdHJpY3Rpb25zSW5mb1R5cGUsXG5cdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB7IGxhYmVsOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9Pj4sXG5cdG1DdXN0b21BZ2dyZWdhdGVzOiB7IFtwcm9wZXJ0eU5hbWU6IHN0cmluZ106IHVua25vd24gfSxcblx0ZGF0YVR5cGU6IHN0cmluZ1xuKTogb2JqZWN0W10ge1xuXHRjb25zdCBhQWdncmVnYXRlUHJvcGVydGllczogb2JqZWN0W10gPSBbXTtcblx0aWYgKE9iamVjdC5rZXlzKG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzKS5pbmNsdWRlcyhzS2V5KSkge1xuXHRcdGZvciAoY29uc3Qgc0FnZ3JlZ2F0YWJsZSBpbiBtS25vd25BZ2dyZWdhdGFibGVQcm9wc1tzS2V5XSkge1xuXHRcdFx0YUFnZ3JlZ2F0ZVByb3BlcnRpZXMucHVzaCh7XG5cdFx0XHRcdG5hbWU6IFwiX2ZlX2FnZ3JlZ2F0YWJsZV9cIiArIG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NLZXldW3NBZ2dyZWdhdGFibGVdLm5hbWUsXG5cdFx0XHRcdGxhYmVsOlxuXHRcdFx0XHRcdG1Lbm93bkFnZ3JlZ2F0YWJsZVByb3BzW3NLZXldW3NBZ2dyZWdhdGFibGVdLmxhYmVsIHx8XG5cdFx0XHRcdFx0YCR7b1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLkxhYmVsXCJdfSAoJHtzQWdncmVnYXRhYmxlfSlgIHx8XG5cdFx0XHRcdFx0YCR7c0tleX0gKCR7c0FnZ3JlZ2F0YWJsZX0pYCxcblx0XHRcdFx0c29ydGFibGU6IHNvcnRSZXN0cmljdGlvbnNJbmZvLnByb3BlcnR5SW5mb1tzS2V5XSA/IHNvcnRSZXN0cmljdGlvbnNJbmZvLnByb3BlcnR5SW5mb1tzS2V5XS5zb3J0YWJsZSA6IHRydWUsXG5cdFx0XHRcdGZpbHRlcmFibGU6IGZhbHNlLFxuXHRcdFx0XHRncm91cGFibGU6IGZhbHNlLFxuXHRcdFx0XHRhZ2dyZWdhdGFibGU6IHRydWUsXG5cdFx0XHRcdHBhdGg6IHNLZXksXG5cdFx0XHRcdGRhdGFUeXBlOiBkYXRhVHlwZSxcblx0XHRcdFx0YWdncmVnYXRpb25NZXRob2Q6IHNBZ2dyZWdhdGFibGUsXG5cdFx0XHRcdG1heENvbmRpdGlvbnM6IGlzTXVsdGlWYWx1ZUZpbHRlckV4cHJlc3Npb24ob0ZpbHRlclJlc3RyaWN0aW9uc0luZm9bXCJGaWx0ZXJBbGxvd2VkRXhwcmVzc2lvbnNcIl0/LltzS2V5XT8uWzBdKSA/IC0xIDogMSxcblx0XHRcdFx0cm9sZTogQ2hhcnRJdGVtUm9sZVR5cGUuYXhpczEsXG5cdFx0XHRcdGRhdGFwb2ludDogbnVsbCwgLy9UbyBiZSBpbXBsZW1lbnRlZCBieSBGRVxuXHRcdFx0XHR1bml0UGF0aDpcblx0XHRcdFx0XHQob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLk1lYXN1cmVzLlYxLklTT0N1cnJlbmN5XCJdIGFzIHsgJFBhdGg6IHN0cmluZyB9KT8uJFBhdGggfHxcblx0XHRcdFx0XHQob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLk1lYXN1cmVzLlYxLlVuaXRcIl0gYXMgeyAkUGF0aDogc3RyaW5nIH0pPy4kUGF0aFxuXHRcdFx0fSk7XG5cdFx0fVxuXHR9XG5cdGlmIChPYmplY3Qua2V5cyhtQ3VzdG9tQWdncmVnYXRlcykuaW5jbHVkZXMoc0tleSkpIHtcblx0XHRmb3IgKGNvbnN0IHNDdXN0b20gaW4gbUN1c3RvbUFnZ3JlZ2F0ZXMpIHtcblx0XHRcdGlmIChzQ3VzdG9tID09PSBzS2V5KSB7XG5cdFx0XHRcdGNvbnN0IG9JdGVtID0gbWVyZ2Uoe30sIG1DdXN0b21BZ2dyZWdhdGVzW3NDdXN0b21dIGFzIG9iamVjdCwge1xuXHRcdFx0XHRcdG5hbWU6IFwiX2ZlX2FnZ3JlZ2F0YWJsZV9cIiArIHNDdXN0b20sXG5cdFx0XHRcdFx0Z3JvdXBhYmxlOiBmYWxzZSxcblx0XHRcdFx0XHRhZ2dyZWdhdGFibGU6IHRydWUsXG5cdFx0XHRcdFx0ZmlsdGVyYWJsZTogZmFsc2UsXG5cdFx0XHRcdFx0cm9sZTogQ2hhcnRJdGVtUm9sZVR5cGUuYXhpczEsXG5cdFx0XHRcdFx0cGF0aDogc0N1c3RvbSxcblx0XHRcdFx0XHRkYXRhVHlwZTogZGF0YVR5cGUsXG5cdFx0XHRcdFx0ZGF0YXBvaW50OiBudWxsLCAvL1RvIGJlIGltcGxlbWVudGVkIGJ5IEZFXG5cdFx0XHRcdFx0dW5pdFBhdGg6XG5cdFx0XHRcdFx0XHQob1Byb3BlcnR5QW5ub3RhdGlvbnNbXCJAT3JnLk9EYXRhLk1lYXN1cmVzLlYxLklTT0N1cnJlbmN5XCJdIGFzIHsgJFBhdGg6IHN0cmluZyB9KT8uJFBhdGggfHxcblx0XHRcdFx0XHRcdChvUHJvcGVydHlBbm5vdGF0aW9uc1tcIkBPcmcuT0RhdGEuTWVhc3VyZXMuVjEuVW5pdFwiXSBhcyB7ICRQYXRoOiBzdHJpbmcgfSk/LiRQYXRoXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRhQWdncmVnYXRlUHJvcGVydGllcy5wdXNoKG9JdGVtKTtcblxuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblx0XHR9XG5cdH1cblx0cmV0dXJuIGFBZ2dyZWdhdGVQcm9wZXJ0aWVzO1xufTtcbkNoYXJ0RGVsZWdhdGUucmViaW5kID0gZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQsIG9CaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHZvaWQge1xuXHRjb25zdCBzU2VhcmNoID0gb0JpbmRpbmdJbmZvLnBhcmFtZXRlcnMuJHNlYXJjaDtcblxuXHRpZiAoc1NlYXJjaCkge1xuXHRcdGRlbGV0ZSBvQmluZGluZ0luZm8ucGFyYW1ldGVycy4kc2VhcmNoO1xuXHR9XG5cblx0QmFzZUNoYXJ0RGVsZWdhdGUucmViaW5kKG9NRENDaGFydCwgb0JpbmRpbmdJbmZvKTtcblxuXHRpZiAoc1NlYXJjaCkge1xuXHRcdGNvbnN0IG9Jbm5lckNoYXJ0ID0gKG9NRENDaGFydC5nZXRDb250cm9sRGVsZWdhdGUoKSBhcyB0eXBlb2YgQ2hhcnREZWxlZ2F0ZSkuZ2V0SW5uZXJDaGFydChvTURDQ2hhcnQpLFxuXHRcdFx0b0NoYXJ0QmluZGluZyA9IG9Jbm5lckNoYXJ0ICYmIG9Jbm5lckNoYXJ0LmdldEJpbmRpbmcoXCJkYXRhXCIpO1xuXG5cdFx0Ly8gVGVtcG9yYXJ5IHdvcmthcm91bmQgdW50aWwgdGhpcyBpcyBmaXhlZCBpbiBNRENDaGFydCAvIFVJNSBDaGFydFxuXHRcdC8vIEluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyAyIE9EYXRhIHJlcXVlc3RzLCB3ZSBuZWVkIHRvIHN1c3BlbmQgdGhlIGJpbmRpbmcgYmVmb3JlIHNldHRpbmcgc29tZSBhZ2dyZWdhdGlvbiBwcm9wZXJ0aWVzXG5cdFx0Ly8gYW5kIHJlc3VtZSBpdCBvbmNlIHRoZSBjaGFydCBoYXMgYWRkZWQgb3RoZXIgYWdncmVnYXRpb24gcHJvcGVydGllcyAoaW4gb25CZWZvcmVSZW5kZXJpbmcpXG5cdFx0b0NoYXJ0QmluZGluZy5zdXNwZW5kKCk7XG5cdFx0b0NoYXJ0QmluZGluZy5zZXRBZ2dyZWdhdGlvbih7IHNlYXJjaDogc1NlYXJjaCB9KTtcblxuXHRcdGNvbnN0IG9Jbm5lckNoYXJ0RGVsZWdhdGUgPSB7XG5cdFx0XHRvbkJlZm9yZVJlbmRlcmluZzogZnVuY3Rpb24gKCk6IHZvaWQge1xuXHRcdFx0XHRvQ2hhcnRCaW5kaW5nLnJlc3VtZSgpO1xuXHRcdFx0XHRvSW5uZXJDaGFydC5yZW1vdmVFdmVudERlbGVnYXRlKG9Jbm5lckNoYXJ0RGVsZWdhdGUpO1xuXHRcdFx0fVxuXHRcdH07XG5cdFx0b0lubmVyQ2hhcnQuYWRkRXZlbnREZWxlZ2F0ZShvSW5uZXJDaGFydERlbGVnYXRlKTtcblx0fVxuXG5cdG9NRENDaGFydC5maXJlRXZlbnQoXCJiaW5kaW5nVXBkYXRlZFwiKTtcbn07XG5DaGFydERlbGVnYXRlLl9zZXRDaGFydCA9IGZ1bmN0aW9uIChvTURDQ2hhcnQ6IENoYXJ0LCBvSW5uZXJDaGFydDogc2FwQ2hhcnQpOiB2b2lkIHtcblx0Y29uc3Qgb0NoYXJ0QVBJID0gb01EQ0NoYXJ0LmdldFBhcmVudCgpIGFzIENoYXJ0QVBJO1xuXHRvSW5uZXJDaGFydC5zZXRWaXpQcm9wZXJ0aWVzKG9NRENDaGFydC5kYXRhKFwidml6UHJvcGVydGllc1wiKSk7XG5cdG9Jbm5lckNoYXJ0LmRldGFjaFNlbGVjdERhdGEob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkgYXMgKGU6IFVJNUV2ZW50PG9iamVjdCwgRXZlbnRQcm92aWRlcj4pID0+IHZvaWQpO1xuXHRvSW5uZXJDaGFydC5kZXRhY2hEZXNlbGVjdERhdGEob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkgYXMgKGU6IFVJNUV2ZW50PG9iamVjdCwgRXZlbnRQcm92aWRlcj4pID0+IHZvaWQpO1xuXHRvSW5uZXJDaGFydC5kZXRhY2hEcmlsbGVkVXAob0NoYXJ0QVBJLmhhbmRsZVNlbGVjdGlvbkNoYW5nZS5iaW5kKG9DaGFydEFQSSkgYXMgKGU6IFVJNUV2ZW50PG9iamVjdCwgRXZlbnRQcm92aWRlcj4pID0+IHZvaWQpO1xuXHRvSW5uZXJDaGFydC5hdHRhY2hTZWxlY3REYXRhKG9DaGFydEFQSS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UuYmluZChvQ2hhcnRBUEkpIGFzIChlOiBVSTVFdmVudDxvYmplY3QsIEV2ZW50UHJvdmlkZXI+KSA9PiB2b2lkKTtcblx0b0lubmVyQ2hhcnQuYXR0YWNoRGVzZWxlY3REYXRhKG9DaGFydEFQSS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UuYmluZChvQ2hhcnRBUEkpIGFzIChlOiBVSTVFdmVudDxvYmplY3QsIEV2ZW50UHJvdmlkZXI+KSA9PiB2b2lkKTtcblx0b0lubmVyQ2hhcnQuYXR0YWNoRHJpbGxlZFVwKG9DaGFydEFQSS5oYW5kbGVTZWxlY3Rpb25DaGFuZ2UuYmluZChvQ2hhcnRBUEkpIGFzIChlOiBVSTVFdmVudDxvYmplY3QsIEV2ZW50UHJvdmlkZXI+KSA9PiB2b2lkKTtcblxuXHRvSW5uZXJDaGFydC5zZXRTZWxlY3Rpb25Nb2RlKChvTURDQ2hhcnQuZ2V0UGF5bG9hZCgpIGFzIHsgc2VsZWN0aW9uTW9kZTogc3RyaW5nIH0pLnNlbGVjdGlvbk1vZGUudG9VcHBlckNhc2UoKSBhcyBTZWxlY3Rpb25Nb2RlKTtcblx0QmFzZUNoYXJ0RGVsZWdhdGUuX3NldENoYXJ0KG9NRENDaGFydCwgb0lubmVyQ2hhcnQpO1xufTtcbkNoYXJ0RGVsZWdhdGUuX2dldEJpbmRpbmdJbmZvID0gZnVuY3Rpb24gKG9NRENDaGFydDogQ2hhcnQpOiBQcm9wZXJ0eUJpbmRpbmdJbmZvIHtcblx0aWYgKHRoaXMuX2dldEJpbmRpbmdJbmZvRnJvbVN0YXRlKG9NRENDaGFydCkpIHtcblx0XHRyZXR1cm4gdGhpcy5fZ2V0QmluZGluZ0luZm9Gcm9tU3RhdGUob01EQ0NoYXJ0KTtcblx0fVxuXG5cdGNvbnN0IG9NZXRhZGF0YUluZm8gPSAob01EQ0NoYXJ0LmdldERlbGVnYXRlKCkgYXMgeyBwYXlsb2FkOiB1bmtub3duIH0pLnBheWxvYWQgYXMgeyBwYXJhbWV0ZXJzOiBvYmplY3Q7IGNoYXJ0Q29udGV4dFBhdGg6IHN0cmluZyB9O1xuXHRjb25zdCBvUGFyYW1zID0gbWVyZ2Uoe30sIG9NZXRhZGF0YUluZm8ucGFyYW1ldGVycywge1xuXHRcdGVudGl0eVNldDogb01EQ0NoYXJ0LmRhdGEoXCJlbnRpdHlTZXRcIilcblx0fSk7XG5cdHJldHVybiB7XG5cdFx0cGF0aDogb01ldGFkYXRhSW5mby5jaGFydENvbnRleHRQYXRoLFxuXHRcdGV2ZW50czoge1xuXHRcdFx0ZGF0YVJlcXVlc3RlZDogKG9NRENDaGFydC5nZXRQYXJlbnQoKSBhcyBDaGFydEFQSSkub25JbnRlcm5hbERhdGFSZXF1ZXN0ZWQuYmluZChvTURDQ2hhcnQuZ2V0UGFyZW50KCkpXG5cdFx0fSxcblx0XHRwYXJhbWV0ZXJzOiBvUGFyYW1zXG5cdH07XG59O1xuQ2hhcnREZWxlZ2F0ZS5yZW1vdmVJdGVtRnJvbUlubmVyQ2hhcnQgPSBmdW5jdGlvbiAob01EQ0NoYXJ0OiBDaGFydCwgb01EQ0NoYXJ0SXRlbTogQ2hhcnRJdGVtKTogdm9pZCB7XG5cdEJhc2VDaGFydERlbGVnYXRlLnJlbW92ZUl0ZW1Gcm9tSW5uZXJDaGFydC5jYWxsKHRoaXMsIG9NRENDaGFydCwgb01EQ0NoYXJ0SXRlbSk7XG5cdGlmIChvTURDQ2hhcnRJdGVtLmdldFR5cGUoKSA9PT0gXCJncm91cGFibGVcIikge1xuXHRcdGNvbnN0IG9Jbm5lckNoYXJ0ID0gdGhpcy5nZXRJbm5lckNoYXJ0KG9NRENDaGFydCk7XG5cdFx0b0lubmVyQ2hhcnQuZmlyZURlc2VsZWN0RGF0YSgpO1xuXHR9XG59O1xuQ2hhcnREZWxlZ2F0ZS5fZ2V0U29ydGFibGUgPSBmdW5jdGlvbiAoXG5cdG9NRENDaGFydDogQ2hhcnQsXG5cdHNvcnRSZXN0cmljdGlvbnNQcm9wZXJ0eTogU29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5SW5mb1R5cGUgfCB1bmRlZmluZWQsXG5cdGJJc1RyYW5zQWdncmVnYXRlOiBib29sZWFuXG4pOiBib29sZWFuIHtcblx0aWYgKGJJc1RyYW5zQWdncmVnYXRlKSB7XG5cdFx0aWYgKG9NRENDaGFydC5kYXRhKFwiZHJhZnRTdXBwb3J0ZWRcIikgPT09IFwidHJ1ZVwiKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBzb3J0UmVzdHJpY3Rpb25zUHJvcGVydHkgPyBzb3J0UmVzdHJpY3Rpb25zUHJvcGVydHkuc29ydGFibGUgOiB0cnVlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gc29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5ID8gc29ydFJlc3RyaWN0aW9uc1Byb3BlcnR5LnNvcnRhYmxlIDogdHJ1ZTtcbn07XG5DaGFydERlbGVnYXRlLl9jaGVja0FuZEFkZERyYWZ0RmlsdGVyID0gZnVuY3Rpb24gKG9DaGFydDogQ2hhcnQsIG9CaW5kaW5nSW5mbzogUHJvcGVydHlCaW5kaW5nSW5mbyk6IHZvaWQge1xuXHRpZiAob0NoYXJ0LmRhdGEoXCJkcmFmdFN1cHBvcnRlZFwiKSA9PT0gXCJ0cnVlXCIpIHtcblx0XHRpZiAoIW9CaW5kaW5nSW5mbykge1xuXHRcdFx0b0JpbmRpbmdJbmZvID0ge307XG5cdFx0fVxuXHRcdGlmICghb0JpbmRpbmdJbmZvLmZpbHRlcnMpIHtcblx0XHRcdG9CaW5kaW5nSW5mby5maWx0ZXJzID0gW107XG5cdFx0XHRvQmluZGluZ0luZm8uZmlsdGVycy5wdXNoKG5ldyBGaWx0ZXIoXCJJc0FjdGl2ZUVudGl0eVwiLCBGaWx0ZXJPcGVyYXRvci5FUSwgdHJ1ZSkpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRvQmluZGluZ0luZm8uZmlsdGVycz8uYUZpbHRlcnM/LnB1c2gobmV3IEZpbHRlcihcIklzQWN0aXZlRW50aXR5XCIsIEZpbHRlck9wZXJhdG9yLkVRLCB0cnVlKSk7XG5cdFx0fVxuXHR9XG59O1xuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gcmV0dXJucyBhbiBJRCB3aGljaCBzaG91bGQgYmUgdXNlZCBpbiB0aGUgaW50ZXJuYWwgY2hhcnQgZm9yIHRoZSBtZWFzdXJlIG9yIGRpbWVuc2lvbi5cbiAqIEZvciBzdGFuZGFyZCBjYXNlcywgdGhpcyBpcyBqdXN0IHRoZSBJRCBvZiB0aGUgcHJvcGVydHkuXG4gKiBJZiBpdCBpcyBuZWNlc3NhcnkgdG8gdXNlIGFub3RoZXIgSUQgaW50ZXJuYWxseSBpbnNpZGUgdGhlIGNoYXJ0IChlLmcuIG9uIGR1cGxpY2F0ZSBwcm9wZXJ0eSBJRHMpIHRoaXMgbWV0aG9kIGNhbiBiZSBvdmVyd3JpdHRlbi5cbiAqIEluIHRoaXMgY2FzZSwgPGNvZGU+Z2V0UHJvcGVydHlGcm9tTmFtZUFuZEtpbmQ8L2NvZGU+IG5lZWRzIHRvIGJlIG92ZXJ3cml0dGVuIGFzIHdlbGwuXG4gKlxuICogQHBhcmFtIG5hbWUgSUQgb2YgdGhlIHByb3BlcnR5XG4gKiBAcGFyYW0ga2luZCBUeXBlIG9mIHRoZSBwcm9wZXJ0eSAobWVhc3VyZSBvciBkaW1lbnNpb24pXG4gKiBAcmV0dXJucyBJbnRlcm5hbCBJRCBmb3IgdGhlIHNhcC5jaGFydC5DaGFydFxuICovXG5DaGFydERlbGVnYXRlLmdldEludGVybmFsQ2hhcnROYW1lRnJvbVByb3BlcnR5TmFtZUFuZEtpbmQgPSBmdW5jdGlvbiAobmFtZTogc3RyaW5nLCBraW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gbmFtZS5yZXBsYWNlKFwiX2ZlX1wiICsga2luZCArIFwiX1wiLCBcIlwiKTtcbn07XG5cbi8qKlxuICogVGhpcyBtYXBzIGFuIGlkIG9mIGFuIGludGVybmFsIGNoYXJ0IGRpbWVuc2lvbiBvciBtZWFzdXJlICYgdHlwZSBvZiBhIHByb3BlcnR5IHRvIGl0cyBjb3JyZXNwb25kaW5nIHByb3BlcnR5IGVudHJ5LlxuICpcbiAqIEBwYXJhbSBuYW1lIElEIG9mIGludGVybmFsIGNoYXJ0IG1lYXN1cmUgb3IgZGltZW5zaW9uXG4gKiBAcGFyYW0ga2luZCBUaGUga2luZCBvZiBwcm9wZXJ0eSB0aGF0IGlzIHVzZWRcbiAqIEBwYXJhbSBtZGNDaGFydCBSZWZlcmVuY2UgdG8gdGhlIE1EQ19DaGFydFxuICogQHJldHVybnMgUHJvcGVydHlJbmZvIG9iamVjdFxuICovXG5DaGFydERlbGVnYXRlLmdldFByb3BlcnR5RnJvbU5hbWVBbmRLaW5kID0gZnVuY3Rpb24gKG5hbWU6IHN0cmluZywga2luZDogc3RyaW5nLCBtZGNDaGFydDogQ2hhcnQpOiBzdHJpbmcge1xuXHRyZXR1cm4gbWRjQ2hhcnQuZ2V0UHJvcGVydHlIZWxwZXIoKS5nZXRQcm9wZXJ0eShcIl9mZV9cIiArIGtpbmQgKyBcIl9cIiArIG5hbWUpO1xufTtcblxuLyoqXG4gKiBQcm92aWRlIHRoZSBjaGFydCdzIGZpbHRlciBkZWxlZ2F0ZSB0byBwcm92aWRlIGJhc2ljIGZpbHRlciBmdW5jdGlvbmFsaXR5IHN1Y2ggYXMgYWRkaW5nIEZpbHRlckZpZWxkcy5cbiAqXG4gKiBAcmV0dXJucyBPYmplY3QgZm9yIHRoZSBwZXJzb25hbGl6YXRpb24gb2YgdGhlIGNoYXJ0IGZpbHRlclxuICovXG5DaGFydERlbGVnYXRlLmdldEZpbHRlckRlbGVnYXRlID0gZnVuY3Rpb24gKCk6IG9iamVjdCB7XG5cdHJldHVybiBPYmplY3QuYXNzaWduKFxuXHRcdHtcblx0XHRcdGFwaVZlcnNpb246IDJcblx0XHR9LFxuXHRcdEZpbHRlckJhckRlbGVnYXRlLFxuXHRcdHtcblx0XHRcdGFkZEl0ZW06IGZ1bmN0aW9uIChvUGFyZW50Q29udHJvbDogQ29udHJvbCwgc1Byb3BlcnR5SW5mb05hbWU6IHN0cmluZykge1xuXHRcdFx0XHRjb25zdCBwcm9wID0gQ2hhcnREZWxlZ2F0ZS5nZXRJbnRlcm5hbENoYXJ0TmFtZUZyb21Qcm9wZXJ0eU5hbWVBbmRLaW5kKHNQcm9wZXJ0eUluZm9OYW1lLCBcImdyb3VwYWJsZVwiKTtcblx0XHRcdFx0cmV0dXJuIEZpbHRlckJhckRlbGVnYXRlLmFkZEl0ZW0ob1BhcmVudENvbnRyb2wsIHByb3ApLnRoZW4oKG9GaWx0ZXJJdGVtOiBDb250cm9sIHwgdW5kZWZpbmVkKSA9PiB7XG5cdFx0XHRcdFx0b0ZpbHRlckl0ZW0/LmJpbmRQcm9wZXJ0eShcImNvbmRpdGlvbnNcIiwge1xuXHRcdFx0XHRcdFx0cGF0aDogXCIkZmlsdGVycz4vY29uZGl0aW9ucy9cIiArIHNQcm9wZXJ0eUluZm9OYW1lXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuIG9GaWx0ZXJJdGVtO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGFydERlbGVnYXRlO1xuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFBQTtBQUFBOzs7Ozs7OztFQWtEQSxNQUFNQSxhQUFhLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFQyxpQkFBaUIsQ0FBQztFQUMxREEsaUJBQWlCLENBQUNDLFVBQVUsR0FBRyxDQUFDO0VBQ2hDSixhQUFhLENBQUNLLFVBQVUsR0FBRyxrQkFBb0M7SUFDOUQsTUFBTUMsT0FBTyxDQUFDQyxJQUFJLENBQUM7TUFBRUMsSUFBSSxFQUFFO0lBQVksQ0FBQyxDQUFDO0lBQ3pDLE9BQU9MLGlCQUFpQixDQUFDRSxVQUFVLEVBQUU7RUFDdEMsQ0FBQztFQUNETCxhQUFhLENBQUNTLG1CQUFtQixHQUFHLFVBQVVDLE1BQWEsRUFBRUMsWUFBaUMsRUFBUTtJQUNyRyxJQUFJQyxVQUFVLEdBQUcsRUFBRTtJQUNuQixNQUFNQyxnQkFBZ0IsR0FBR0MsVUFBVSxDQUFDQyxnQkFBZ0IsQ0FBQ0wsTUFBTSxDQUFDO01BQzNETSxpQkFBaUIsR0FBR0wsWUFBWSxDQUFDTSxJQUFJLENBQUNDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBR1AsWUFBWSxDQUFDTSxJQUFJLENBQUNFLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBR1IsWUFBWSxDQUFDTSxJQUFJO0lBQ3hHLE1BQU1HLHlCQUF5QixHQUFHLFlBQW9CO01BQ3JELElBQUlWLE1BQU0sQ0FBQ1csSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQzlCLE9BQU8sMkNBQTJDO01BQ25ELENBQUMsTUFBTTtRQUNOLE9BQU8sNENBQTRDO01BQ3BEO0lBQ0QsQ0FBQztJQUNELElBQUlYLE1BQU0sQ0FBQ1ksU0FBUyxFQUFFLEVBQUU7TUFDdkIsSUFBSVQsZ0JBQWdCLENBQUNVLE1BQU0sSUFBS1YsZ0JBQWdCLENBQUNXLE9BQU8sSUFBSVgsZ0JBQWdCLENBQUNXLE9BQU8sQ0FBQ0MsTUFBTyxFQUFFO1FBQzdGYixVQUFVLEdBQUdRLHlCQUF5QixFQUFFO01BQ3pDLENBQUMsTUFBTTtRQUNOUixVQUFVLEdBQUcsZ0NBQWdDO01BQzlDO0lBQ0QsQ0FBQyxNQUFNLElBQUlDLGdCQUFnQixDQUFDVSxNQUFNLElBQUtWLGdCQUFnQixDQUFDVyxPQUFPLElBQUlYLGdCQUFnQixDQUFDVyxPQUFPLENBQUNDLE1BQU8sRUFBRTtNQUNwR2IsVUFBVSxHQUFHUSx5QkFBeUIsRUFBRTtJQUN6QyxDQUFDLE1BQU07TUFDTlIsVUFBVSxHQUFHLDJDQUEyQztJQUN6RDtJQUNBRixNQUFNLENBQUNnQixhQUFhLENBQUNDLGdCQUFnQixDQUFDakIsTUFBTSxDQUFDLENBQUNrQixPQUFPLENBQUNoQixVQUFVLEVBQUVpQixTQUFTLEVBQUViLGlCQUFpQixDQUFDLENBQUM7RUFDakcsQ0FBQztFQUVEaEIsYUFBYSxDQUFDOEIsZUFBZSxHQUFHLFVBQy9CQyxRQUFpQixFQUNqQkMsU0FBZ0IsRUFDaEJDLHFCQUFtRCxFQUNuREMsdUJBQXdGLEVBQ3hGQyxpQkFBMEMsRUFDMUNDLFdBQTRCLEVBQzVCQyxZQUFvQixFQUNiO0lBQ1AsTUFBTUMsZUFBZSxHQUFHQyxZQUFZLENBQUNDLGVBQWUsQ0FBQ1IsU0FBUyxDQUFDWCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN0RixNQUFNb0Isb0JBQW9CLEdBQUdDLHVCQUF1QixDQUFDVCxxQkFBcUIsQ0FBQztJQUMzRSxNQUFNVSxTQUFTLEdBQUdaLFFBQVEsQ0FBQ2EsUUFBUSxFQUFFO0lBQ3JDLE1BQU1DLGNBQWMsR0FBR2IsU0FBUyxDQUFDWCxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQ25ELE1BQU15QixXQUFXLEdBQUdDLFdBQVcsQ0FBQ0MsZ0JBQWdCLENBQUNILGNBQWMsQ0FBQztJQUNoRSxNQUFNSSxrQkFBdUMsR0FBR0MsV0FBVyxDQUFDQywyQkFBMkIsQ0FBQ0wsV0FBVyxFQUFFSCxTQUFTLENBQUM7SUFDL0csTUFBTVMsc0JBQTBFLEdBQUcsQ0FBQyxDQUFDO0lBQ3JGQyxpQkFBaUIsQ0FDaEJELHNCQUFzQixFQUN0Qkgsa0JBQWtCLENBQUNLLHVCQUF1QixFQUMxQ3JELE1BQU0sQ0FBQ3NELElBQUksQ0FBQ04sa0JBQWtCLENBQUNPLHdCQUF3QixDQUFDLENBQ3hEO0lBQ0QsTUFBTUMsSUFBSSxHQUFHMUIsUUFBUSxDQUFDYSxRQUFRLEVBQUUsQ0FBQ2MsU0FBUyxDQUFDM0IsUUFBUSxDQUFDNEIsT0FBTyxFQUFFLENBQUM7SUFDOUQsTUFBTUMsSUFBSSxHQUFHN0IsUUFBUSxDQUFDYSxRQUFRLEVBQUUsQ0FBQ2MsU0FBUyxDQUFFLEdBQUUzQixRQUFRLENBQUM0QixPQUFPLEVBQUcsYUFBWSxDQUFXO0lBQ3hGLE1BQU1FLE1BQU0sR0FBRzdCLFNBQVMsQ0FBQzhCLFdBQVcsRUFBRTtJQUN0Q0MsOEJBQThCLENBQUMvQixTQUFTLEVBQUU2QixNQUFNLENBQUM7SUFFakQsSUFBSUosSUFBSSxJQUFJQSxJQUFJLENBQUNPLEtBQUssS0FBSyxVQUFVLEVBQUU7TUFDdEM7TUFDQTtNQUNBO01BQ0E7TUFDQSxJQUFJUCxJQUFJLENBQUNRLGFBQWEsRUFBRTtRQUN2QjtRQUNBO01BQ0Q7TUFFQSxNQUFNQyxvQkFBb0IsR0FBR3ZCLFNBQVMsQ0FBQ2UsU0FBUyxDQUFFLEdBQUUzQixRQUFRLENBQUM0QixPQUFPLEVBQUcsR0FBRSxDQUFDO01BQzFFLE1BQU1RLEtBQUssR0FBR3hCLFNBQVMsQ0FBQ2UsU0FBUyxDQUFDLGFBQWEsRUFBRWYsU0FBUyxDQUFDeUIsY0FBYyxDQUFDckMsUUFBUSxDQUFDNEIsT0FBTyxFQUFFLENBQUMsQ0FBQztNQUU5RixNQUFNVSxvQkFBb0IsR0FBRy9CLGVBQWUsSUFBSUEsZUFBZSxDQUFDZ0MsbUJBQW1CO01BQ25GLE1BQU1DLHVCQUF1QixHQUFHakMsZUFBZSxJQUFJQSxlQUFlLENBQUNrQyxzQkFBc0I7TUFDekYsSUFBSUMsVUFBVSxHQUFHSixvQkFBb0IsR0FBR0ssaUJBQWlCLENBQUNMLG9CQUFvQixFQUFFRixLQUFLLENBQUMsR0FBRyxLQUFLO01BQzlGLElBQUlRLGFBQWEsR0FBR0osdUJBQXVCLEdBQUdHLGlCQUFpQixDQUFDSCx1QkFBdUIsRUFBRUosS0FBSyxDQUFDLEdBQUcsS0FBSztNQUV2RyxJQUFJLENBQUNFLG9CQUFvQixJQUFLQSxvQkFBb0IsSUFBSSxDQUFDQSxvQkFBb0IsQ0FBQzVDLE1BQU8sRUFBRTtRQUNwRmdELFVBQVUsR0FBR1Asb0JBQW9CLENBQUMscUNBQXFDLENBQUM7TUFDekU7TUFDQSxJQUFJLENBQUNLLHVCQUF1QixJQUFLQSx1QkFBdUIsSUFBSSxDQUFDQSx1QkFBdUIsQ0FBQzlDLE1BQU8sRUFBRTtRQUM3RmtELGFBQWEsR0FBR1Qsb0JBQW9CLENBQUMsd0NBQXdDLENBQUM7TUFDL0U7O01BRUE7TUFDQSxJQUFJLENBQUNPLFVBQVUsSUFBSSxDQUFDRSxhQUFhLEVBQUU7UUFDbEM7TUFDRDtNQUNBQywyQ0FBMkMsQ0FBQ3pDLGlCQUFpQixFQUFFeUIsSUFBSSxFQUFFYSxVQUFVLEVBQUVFLGFBQWEsQ0FBQztNQUMvRixNQUFNRSxnQkFBZ0IsR0FBRzVFLE1BQU0sQ0FBQ3NELElBQUksQ0FBQ3BCLGlCQUFpQixDQUFDO01BQ3ZELElBQUl3QyxhQUFhLEVBQUU7UUFDbEIsTUFBTUcsb0JBQW9CLEdBQUc5RSxhQUFhLENBQUMrRSxtQ0FBbUMsQ0FDN0UvQyxTQUFTLEVBQ1Q0QixJQUFJLEVBQ0pNLG9CQUFvQixFQUNwQmpCLGtCQUFrQixFQUNsQlIsb0JBQW9CLEVBQ3BCUCx1QkFBdUIsRUFDdkJDLGlCQUFpQixFQUNqQnNCLElBQUksQ0FBQ3VCLEtBQUssQ0FDVjtRQUNERixvQkFBb0IsQ0FBQ0csT0FBTyxDQUFDLFVBQVVDLGtCQUFpQyxFQUFFO1VBQ3pFOUMsV0FBVyxDQUFDK0MsSUFBSSxDQUFDRCxrQkFBa0IsQ0FBQztRQUNyQyxDQUFDLENBQUM7UUFDRjtRQUNBLElBQUlyQixNQUFNLElBQUlBLE1BQU0sQ0FBQ3VCLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRTtVQUN4QyxNQUFNQyx1QkFBdUIsR0FBR3BGLE1BQU0sQ0FBQ3NELElBQUksQ0FBQ3JCLHVCQUF1QixDQUFDO1VBQ3BFLE1BQU1vRCwwQkFBMEIsR0FBR2pCLG9CQUFvQixDQUFDa0IsR0FBRyxDQUN6REMsU0FBb0MsSUFBS0EsU0FBUyxDQUFDQyxhQUFhLENBQ2pFO1VBQ0Q7VUFDQTtVQUNBLElBQUlKLHVCQUF1QixDQUFDRCxRQUFRLENBQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDMEIsMEJBQTBCLENBQUNGLFFBQVEsQ0FBQ3hCLElBQUksQ0FBQyxFQUFFO1lBQUE7WUFDekZ4QixXQUFXLEdBQUdzRCxrQkFBa0IsQ0FDL0J0RCxXQUFXLEVBQ1h3QixJQUFJLEVBQ0pNLG9CQUFvQixFQUNwQlcsZ0JBQWdCLENBQUNPLFFBQVEsQ0FBQ3hCLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFBUixzQkFBc0IsYUFBdEJBLHNCQUFzQixnREFBdEJBLHNCQUFzQixDQUFHUSxJQUFJLENBQUMsMERBQTlCLHNCQUFnQytCLFVBQVUsS0FBSSxJQUFJLEVBQzVGMUMsa0JBQWtCLEVBQ2xCLEtBQUs7WUFBRTtZQUNQakIsU0FBUyxFQUNUSyxZQUFZLEVBQ1pvQixJQUFJLEVBQ0osS0FBSyxFQUNMb0IsZ0JBQWdCLENBQUNPLFFBQVEsQ0FBQ3hCLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxJQUFJLEVBQzlDL0IsU0FBUyxFQUNULElBQUksQ0FDSjtVQUNGO1FBQ0Q7TUFDRDtNQUNBLElBQUk0QyxVQUFVLEVBQUU7UUFBQTtRQUNmLE1BQU1tQixLQUFLLEdBQUdoQyxJQUFJLElBQUksRUFBRTtVQUN2QmlDLGFBQWEsR0FBRzNCLG9CQUFvQixDQUFDLEdBQUcsd0NBQTZCLENBQUMsR0FDbkVBLG9CQUFvQixDQUFDLEdBQUcsd0NBQTZCLENBQUMsQ0FBQzRCLEtBQUssR0FDNUQsSUFBSTtRQUNSLElBQUlDLGlCQUFpQixHQUFHLEtBQUs7UUFDN0IsSUFBSUgsS0FBSyxJQUFJQSxLQUFLLENBQUNSLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtVQUNqQ1ksR0FBRyxDQUFDQyxLQUFLLENBQUUsMkNBQTBDTCxLQUFNLHFDQUFvQyxDQUFDO1VBQ2hHO1FBQ0Q7UUFDQSxJQUFJQyxhQUFhLElBQUlBLGFBQWEsQ0FBQ0ssT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1VBQ3JERixHQUFHLENBQUNDLEtBQUssQ0FBRSxnREFBK0NKLGFBQWMscUNBQW9DLENBQUM7VUFDN0dFLGlCQUFpQixHQUFHLElBQUk7UUFDekI7UUFDQTNELFdBQVcsR0FBR3NELGtCQUFrQixDQUMvQnRELFdBQVcsRUFDWHdCLElBQUksRUFDSk0sb0JBQW9CLEVBQ3BCVyxnQkFBZ0IsQ0FBQ08sUUFBUSxDQUFDeEIsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLENBQUFSLHNCQUFzQixhQUF0QkEsc0JBQXNCLGlEQUF0QkEsc0JBQXNCLENBQUdRLElBQUksQ0FBQywyREFBOUIsdUJBQWdDK0IsVUFBVSxLQUFJLElBQUksRUFDNUYxQyxrQkFBa0IsRUFDbEJqRCxhQUFhLENBQUNtRyxZQUFZLENBQUNuRSxTQUFTLEVBQUVTLG9CQUFvQixDQUFDMkQsWUFBWSxDQUFDeEMsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLEVBQ3JGNUIsU0FBUyxFQUNUSyxZQUFZLEVBQ1pvQixJQUFJLEVBQ0pvQixnQkFBZ0IsQ0FBQ08sUUFBUSxDQUFDeEIsSUFBSSxDQUFDLEdBQUcsS0FBSyxHQUFHLElBQUksRUFDOUMsS0FBSyxFQUNMbUMsaUJBQWlCLENBQ2pCO01BQ0Y7SUFDRDtFQUNELENBQUM7O0VBRUQ7RUFDQSxTQUFTTCxrQkFBa0IsQ0FDMUJ0RCxXQUE0QixFQUM1QndCLElBQVksRUFDWk0sb0JBQWtELEVBQ2xEbUMsWUFBcUIsRUFDckJDLHVCQUE0QyxFQUM1Q0MsVUFBbUIsRUFDbkJ2RSxTQUFnQixFQUNoQkssWUFBb0IsRUFDcEJvQixJQUF1QixFQUN2QitDLFlBQXFCLEVBQ3JCQyxlQUF3QixFQUN4QlYsaUJBQTJCLEVBQzNCVyxTQUFtQixFQUNEO0lBQUE7SUFDbEIsTUFBTWxCLFNBQXdCLEdBQUc7TUFDaENoRixJQUFJLEVBQUUsZ0JBQWdCLEdBQUdvRCxJQUFJO01BQzdCK0MsS0FBSyxFQUFFLDBCQUFBekMsb0JBQW9CLENBQUMsdUNBQXVDLENBQUMsMERBQTdELHNCQUErRDBDLFFBQVEsRUFBRSxLQUFJaEQsSUFBSTtNQUN4RmlELFFBQVEsRUFBRU4sVUFBVTtNQUNwQlosVUFBVSxFQUFFVSxZQUFZO01BQ3hCUyxTQUFTLEVBQUVOLFlBQVk7TUFDdkJPLFlBQVksRUFBRU4sZUFBZTtNQUM3Qk8sYUFBYSxFQUFFQyw0QkFBNEIsMEJBQUNYLHVCQUF1QixDQUFDLDBCQUEwQixDQUFDLG9GQUFuRCxzQkFBc0QxQyxJQUFJLENBQUMsMkRBQTNELHVCQUE4RCxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUM7TUFDdEgzQyxJQUFJLEVBQUUyQyxJQUFJO01BQ1ZzRCxJQUFJLEVBQUVDLGlCQUFpQixDQUFDQyxRQUFRO01BQUU7TUFDbENDLFdBQVcsRUFBRWhGLFlBQVk7TUFBRTtNQUMzQmlGLFFBQVEsRUFBRTdELElBQUksQ0FBQ3VCLEtBQUs7TUFDcEJ1QyxPQUFPLEVBQUViLFNBQVMsR0FBRyxDQUFDQSxTQUFTLEdBQUcsSUFBSTtNQUN0Q2MsWUFBWSxFQUNYLENBQUN6QixpQkFBaUIsSUFBSTdCLG9CQUFvQixDQUFDLHNDQUFzQyxDQUFDLEdBQzlFQSxvQkFBb0IsQ0FBQyxzQ0FBc0MsQ0FBQyxDQUF1QjRCLEtBQUssR0FDekYsSUFBSTtNQUFFO01BQ1YyQixhQUFhLEVBQUd2RCxvQkFBb0IsQ0FDbkMsaUZBQWlGO0lBRW5GLENBQUM7SUFDRDtJQUNBLE1BQU13RCxZQUFZLEdBQUcxSCxhQUFhLENBQUMySCxZQUFZLENBQUNsRSxJQUFJLEVBQUVTLG9CQUFvQixDQUFDO0lBQzNFLElBQUl3RCxZQUFZLEVBQUVsQyxTQUFTLENBQUNrQyxZQUFZLEdBQUdBLFlBQVk7SUFFdkQsSUFBSWpFLElBQUksQ0FBQ3VCLEtBQUssS0FBSyxvQkFBb0IsSUFBSXZCLElBQUksQ0FBQ3VCLEtBQUssS0FBSyxlQUFlLEVBQUU7TUFDMUUsUUFBUXZCLElBQUksQ0FBQ3VCLEtBQUs7UUFDakIsS0FBSyxvQkFBb0I7VUFDeEJRLFNBQVMsQ0FBQ29DLGFBQWEsR0FBRztZQUFFQyxLQUFLLEVBQUU7VUFBZSxDQUFDO1VBQ25EO1FBQ0QsS0FBSyxlQUFlO1VBQ25CckMsU0FBUyxDQUFDb0MsYUFBYSxHQUFHO1lBQUVDLEtBQUssRUFBRTtVQUFRLENBQUM7VUFDNUM7UUFDRDtVQUNDO01BQU07SUFFVDtJQUVBekYsV0FBVyxDQUFDK0MsSUFBSSxDQUFDSyxTQUFTLENBQUM7SUFDM0IsT0FBT3BELFdBQVc7RUFDbkI7RUFFQXBDLGFBQWEsQ0FBQzJILFlBQVksR0FBRyxVQUFVbEUsSUFBdUIsRUFBRVMsb0JBQTZDLEVBQTRCO0lBQ3hJLFFBQVFULElBQUksQ0FBQ3VCLEtBQUs7TUFDakIsS0FBSyxVQUFVO1FBQ2QsT0FBTzhDLFlBQVksQ0FBQ0MsSUFBSTtNQUN6QixLQUFLLFlBQVk7UUFDaEIsSUFBSTdELG9CQUFvQixDQUFDLEdBQUcsZ0RBQXFDLENBQUMsRUFBRTtVQUNuRSxPQUFPNEQsWUFBWSxDQUFDRSxVQUFVO1FBQy9CLENBQUMsTUFBTSxJQUFJOUQsb0JBQW9CLENBQUMsR0FBRyxzREFBMkMsQ0FBQyxFQUFFO1VBQ2hGLE9BQU80RCxZQUFZLENBQUNHLGdCQUFnQjtRQUNyQyxDQUFDLE1BQU0sSUFBSS9ELG9CQUFvQixDQUFDLEdBQUcsdURBQTRDLENBQUMsRUFBRTtVQUNqRixPQUFPNEQsWUFBWSxDQUFDSSxTQUFTO1FBQzlCLENBQUMsTUFBTSxJQUFJaEUsb0JBQW9CLENBQUMsR0FBRyx5REFBOEMsQ0FBQyxFQUFFO1VBQ25GLE9BQU80RCxZQUFZLENBQUNLLFdBQVc7UUFDaEMsQ0FBQyxNQUFNLElBQUlqRSxvQkFBb0IsQ0FBQyxHQUFHLHNEQUEyQyxDQUFDLEVBQUU7VUFDaEYsT0FBTzRELFlBQVksQ0FBQ00sUUFBUTtRQUM3QixDQUFDLE1BQU0sSUFBSWxFLG9CQUFvQixDQUFDLEdBQUcsa0RBQXVDLENBQUMsRUFBRTtVQUM1RSxPQUFPNEQsWUFBWSxDQUFDTyxZQUFZO1FBQ2pDO1FBQ0E7TUFDRDtRQUNDLE9BQU94RyxTQUFTO0lBQUM7RUFFcEIsQ0FBQzs7RUFFRDtFQUNBLFNBQVNrQyw4QkFBOEIsQ0FBQy9CLFNBQWdCLEVBQUU2QixNQUFzRCxFQUFRO0lBQUE7SUFDdkgsTUFBTXlFLG1CQUFtQixHQUFHdEcsU0FBUyxhQUFUQSxTQUFTLDhDQUFUQSxTQUFTLENBQ2xDWSxRQUFRLEVBQUUsaUZBRGUsb0JBRXpCMkYsWUFBWSxFQUFFLG9GQUZXLHNCQUd6QjdFLFNBQVMsQ0FBRSxHQUFFMUIsU0FBUyxDQUFDWCxJQUFJLENBQUMsc0JBQXNCLENBQUUsK0NBQThDLENBQUMsMkRBSDFFLHVCQUc0RW1ILFVBQVU7SUFDbEgsSUFBSUYsbUJBQW1CLEtBQUt6RyxTQUFTLElBQUksQ0FBQ3lHLG1CQUFtQixFQUFFO01BQzlEekUsTUFBTSxHQUFHQSxNQUFNLENBQUM0RSxNQUFNLENBQUVDLElBQVksSUFBS0EsSUFBSSxLQUFLLFFBQVEsQ0FBQztNQUMzRDFHLFNBQVMsQ0FBQzJHLFdBQVcsQ0FBQzlFLE1BQU0sQ0FBQztJQUM5QjtFQUNEOztFQUVBO0VBQ0EsU0FBU2EsaUJBQWlCLENBQ3pCdEMsV0FBMEYsRUFDMUYrQixLQUFhLEVBQ007SUFDbkIsSUFBSS9CLFdBQVcsQ0FBQ1gsTUFBTSxFQUFFO01BQ3ZCLEtBQUssTUFBTW1ILE9BQU8sSUFBSXhHLFdBQVcsRUFBRTtRQUFBO1FBQ2xDLElBQUksQ0FBQXdHLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFbkQsYUFBYSxNQUFLdEIsS0FBSyxJQUFJLENBQUF5RSxPQUFPLGFBQVBBLE9BQU8sNENBQVBBLE9BQU8sQ0FBRUMsUUFBUSxzREFBakIsa0JBQW1CcEQsYUFBYSxNQUFLdEIsS0FBSyxFQUFFO1VBQ25GLE9BQU8sSUFBSTtRQUNaO01BQ0Q7SUFDRDtFQUNEOztFQUVBO0VBQ0EsU0FBU1MsMkNBQTJDLENBQ25EekMsaUJBQTBDLEVBQzFDeUIsSUFBWSxFQUNaYSxVQUFvQixFQUNwQkUsYUFBdUIsRUFDaEI7SUFDUCxNQUFNbUUsZ0JBQWdCLEdBQUc3SSxNQUFNLENBQUNzRCxJQUFJLENBQUNwQixpQkFBaUIsQ0FBQztJQUN2RCxJQUFJc0MsVUFBVSxJQUFJRSxhQUFhLElBQUltRSxnQkFBZ0IsQ0FBQzFELFFBQVEsQ0FBQ3hCLElBQUksQ0FBQyxFQUFFO01BQ25FLE1BQU0sSUFBSW1GLEtBQUssQ0FBQyxtRUFBbUUsQ0FBQztJQUNyRjtFQUNEO0VBRUEvSSxhQUFhLENBQUNnSixVQUFVLEdBQUcsVUFBVUMsT0FBZSxFQUFFQyxPQUFlLEVBQVU7SUFBQTtJQUM5RSxNQUFNQyxNQUFNLEdBQUcseUJBQUksQ0FBQ0MsVUFBVSw4RUFBZixpQkFBaUJDLFlBQVksMERBQTdCLHNCQUErQkMsV0FBVyxDQUFDTCxPQUFPLEVBQUUsUUFBUSxDQUFDLEtBQUlBLE9BQU87SUFFdkYsSUFBSUMsT0FBTyxFQUFFO01BQ1osTUFBTUssMEJBQTBCLEdBQUcsSUFBSSxDQUFDOUIsYUFBYTtNQUVyRCxJQUNDLENBQUM4QiwwQkFBMEIsSUFDM0JBLDBCQUEwQixDQUFDQyxXQUFXLEtBQUssMERBQTBELEVBQ3BHO1FBQ0QsT0FBT0MsZUFBZSxDQUFDQyxrQkFBa0IsQ0FBQ1IsT0FBTyxFQUFFQyxNQUFNLENBQUM7TUFDM0Q7TUFFQSxJQUFJSSwwQkFBMEIsQ0FBQ0MsV0FBVyxLQUFLLHlEQUF5RCxFQUFFO1FBQ3pHLE9BQU9DLGVBQWUsQ0FBQ0Msa0JBQWtCLENBQUNQLE1BQU0sRUFBRUQsT0FBTyxDQUFDO01BQzNEO0lBQ0Q7SUFFQSxPQUFPQSxPQUFPLElBQUlDLE1BQU07RUFDekIsQ0FBQztFQUVEbkosYUFBYSxDQUFDMkosaUJBQWlCLEdBQUcsVUFBVWpKLE1BQWEsRUFBRUMsWUFBbUMsRUFBUTtJQUNyRyxNQUFNaUosc0JBQXNCLEdBQUdsSixNQUFNLENBQUNtSixpQkFBaUIsQ0FBQyxVQUFVLENBQXlCO0lBRTNGRCxzQkFBc0IsQ0FBQ0UsV0FBVyxDQUFDLG1CQUFtQixFQUFFLElBQUksQ0FBQztJQUM3RDlKLGFBQWEsQ0FBQ1MsbUJBQW1CLENBQUNDLE1BQU0sRUFBRUMsWUFBWSxDQUFDO0lBQ3ZELE1BQU1vSixPQUFPLEdBQUdDLE9BQU8sQ0FBQ0MsY0FBYyxDQUFDdkosTUFBTSxDQUFDWSxTQUFTLEVBQUUsQ0FBQztJQUMxRCxNQUFNNEksV0FBVyxHQUFHeEosTUFBTSxDQUFDeUosYUFBYSxFQUFFO0lBQzFDLElBQUksQ0FBQ3hKLFlBQVksRUFBRTtNQUNsQkEsWUFBWSxHQUFHLENBQUMsQ0FBQztJQUNsQjtJQUNBLElBQUksQ0FBQ0EsWUFBWSxDQUFDeUosVUFBVSxFQUFFO01BQzdCekosWUFBWSxDQUFDeUosVUFBVSxHQUFHLENBQUMsQ0FBQztJQUM3QjtJQUNBLElBQUlMLE9BQU8sRUFBRTtNQUNaO01BQ0EsTUFBTU0sS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQ1IsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO01BQ3BELE1BQU16SCxlQUFlLEdBQUdDLFlBQVksQ0FBQ0MsZUFBZSxDQUFDOUIsTUFBTSxDQUFDVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztNQUNuRixJQUFJaUIsZUFBZSxJQUFJQSxlQUFlLENBQUNrSSxZQUFZLElBQUlILEtBQUssQ0FBQzlJLE1BQU0sRUFBRTtRQUNwRVosWUFBWSxDQUFDeUosVUFBVSxDQUFDSyxPQUFPLEdBQUd2SCxXQUFXLENBQUN3SCxtQkFBbUIsQ0FBQ0wsS0FBSyxDQUFDOUksTUFBTSxDQUFDO01BQ2hGLENBQUMsTUFBTSxJQUFJWixZQUFZLENBQUN5SixVQUFVLENBQUNLLE9BQU8sRUFBRTtRQUMzQyxPQUFPOUosWUFBWSxDQUFDeUosVUFBVSxDQUFDSyxPQUFPO01BQ3ZDO0lBQ0Q7SUFDQSxNQUFNRSxjQUFjLEdBQUdULFdBQVcsR0FBR1UsWUFBWSxDQUFDQyxpQkFBaUIsQ0FBQ2QsT0FBTyxFQUFFRyxXQUFXLENBQUMsR0FBRyxJQUFJO0lBQ2hHLElBQUlTLGNBQWMsRUFBRTtNQUNuQmhLLFlBQVksQ0FBQ00sSUFBSSxHQUFHMEosY0FBYztJQUNuQztJQUNBLE1BQU1HLElBQUksR0FBRzVILFdBQVcsQ0FBQzZILGFBQWEsQ0FBQ3JLLE1BQU0sQ0FBQztJQUM5QyxNQUFNc0ssV0FBVyxHQUFHbEssVUFBVSxDQUFDQyxnQkFBZ0IsQ0FBQ0wsTUFBTSxDQUFDO0lBQ3ZELElBQUlzSyxXQUFXLENBQUNsSSxXQUFXLEVBQUU7TUFDNUJuQyxZQUFZLENBQUNNLElBQUksR0FBRytKLFdBQVcsQ0FBQ2xJLFdBQVc7SUFDNUM7SUFFQSxJQUFJSSxXQUFXLENBQUM2SCxhQUFhLENBQUNySyxNQUFNLENBQUMsQ0FBQ3VLLFdBQVcsRUFBRSxDQUFDQyxTQUFTLEdBQUcsQ0FBQyxJQUFJdkssWUFBWSxDQUFDTSxJQUFJLElBQUlQLE1BQU0sQ0FBQ21KLGlCQUFpQixFQUFFLEVBQUU7TUFDckhsSixZQUFZLENBQUNNLElBQUksR0FBR2tLLFdBQVcsQ0FBQ0MsaUJBQWlCLENBQUN6SyxZQUFZLENBQUNNLElBQUksQ0FBQztJQUNyRTs7SUFFQTtJQUNBLElBQUkrSixXQUFXLENBQUN4SixPQUFPLEVBQUU7TUFDeEJ3SixXQUFXLENBQUN4SixPQUFPLENBQUN5RCxPQUFPLENBQUUyRCxPQUFPLElBQUs7UUFDeEMsSUFBSUEsT0FBTyxDQUFDakYsT0FBTyxFQUFFLEVBQUU7VUFDckJpRixPQUFPLENBQWtDekUsS0FBSyxHQUFJekQsTUFBTSxDQUFDMkssU0FBUyxFQUFFLENBQWNDLGlDQUFpQyxDQUNuSDFDLE9BQU8sQ0FBQ2pGLE9BQU8sRUFBRSxDQUNqQjtRQUNGO01BQ0QsQ0FBQyxDQUFDO0lBQ0g7SUFDQWhELFlBQVksQ0FBQzRLLE1BQU0sS0FBSyxDQUFDLENBQUM7SUFDMUI1SyxZQUFZLENBQUM0SyxNQUFNLENBQUNDLGFBQWEsR0FBSTlLLE1BQU0sQ0FBQzJLLFNBQVMsRUFBRSxDQUFjSSx1QkFBdUIsQ0FBQ0MsSUFBSSxDQUFDaEwsTUFBTSxDQUFDMkssU0FBUyxFQUFFLENBQUM7SUFFckgxSyxZQUFZLENBQUNhLE9BQU8sR0FBR3dKLFdBQVcsQ0FBQ3hKLE9BQU8sQ0FBQ0MsTUFBTSxHQUFHLENBQUMsR0FBRyxJQUFJa0ssTUFBTSxDQUFDO01BQUVuSyxPQUFPLEVBQUV3SixXQUFXLENBQUN4SixPQUFPO01BQUVvSyxHQUFHLEVBQUU7SUFBSyxDQUFDLENBQUMsR0FBRy9KLFNBQVM7SUFDM0hsQixZQUFZLENBQUNrTCxNQUFNLEdBQUcsSUFBSSxDQUFDQyxVQUFVLENBQUNwTCxNQUFNLENBQUM7SUFDN0NWLGFBQWEsQ0FBQytMLHVCQUF1QixDQUFDckwsTUFBTSxFQUFFQyxZQUFZLENBQUM7RUFDNUQsQ0FBQztFQUVEWCxhQUFhLENBQUNnTSxlQUFlLEdBQUcsZ0JBQWdCaEssU0FBZ0IsRUFBMkI7SUFDMUYsTUFBTWlLLE1BQU0sR0FBRyxJQUFJLENBQUNDLFNBQVMsQ0FBQ2xLLFNBQVMsQ0FBQztJQUN4QyxJQUFJbUssb0JBQTZDO0lBRWpELElBQUksQ0FBQ0YsTUFBTSxFQUFFO01BQ1pFLG9CQUFvQixHQUFHLElBQUlDLE9BQU8sQ0FBY0MsT0FBTyxJQUFXO1FBQ2pFckssU0FBUyxDQUFDc0ssd0JBQXdCLENBQ2pDO1VBQ0NDLFFBQVEsRUFBRUY7UUFDWCxDQUFDLEVBQ0RHLG9CQUFvQixFQUNwQixJQUFJLENBQ0o7TUFDRixDQUFDLENBQUMsQ0FBQ0MsSUFBSSxDQUFFQyxlQUEyQixJQUFLO1FBQ3hDLE9BQU8sSUFBSSxDQUFDQyxvQkFBb0IsQ0FBQzNLLFNBQVMsRUFBRTBLLGVBQWUsQ0FBQztNQUM3RCxDQUFDLENBQUM7SUFDSCxDQUFDLE1BQU07TUFDTlAsb0JBQW9CLEdBQUcsSUFBSSxDQUFDUSxvQkFBb0IsQ0FBQzNLLFNBQVMsRUFBRWlLLE1BQU0sQ0FBQztJQUNwRTtJQUVBLE9BQU9FLG9CQUFvQixDQUFDTSxJQUFJLENBQUMsVUFBVXJLLFdBQTJCLEVBQUU7TUFDdkUsSUFBSUosU0FBUyxDQUFDWCxJQUFJLEVBQUU7UUFDbkJXLFNBQVMsQ0FBQ1gsSUFBSSxDQUFDLHVCQUF1QixFQUFFZSxXQUFXLENBQUM7UUFDcEQ7UUFDQXdLLGtCQUFrQixDQUFDQyxtQkFBbUIsQ0FBQzdLLFNBQVMsRUFBRUksV0FBVyxDQUFDO01BQy9EO01BQ0EsT0FBT0EsV0FBVztJQUNuQixDQUFDLENBQUM7RUFDSCxDQUFDO0VBQ0QsU0FBU29LLG9CQUFvQixDQUE2Qk0sTUFBMkIsRUFBRUMsS0FBNkIsRUFBUTtJQUMzSCxNQUFNL0ssU0FBUyxHQUFHOEssTUFBTSxDQUFDRSxTQUFTLEVBQUU7SUFDcEMsTUFBTWYsTUFBTSxHQUFHLElBQUksQ0FBQ0MsU0FBUyxDQUFDbEssU0FBUyxDQUFDO0lBRXhDLElBQUlpSyxNQUFNLEVBQUU7TUFDWGpLLFNBQVMsQ0FBQ2lMLHdCQUF3QixDQUFDVCxvQkFBb0IsQ0FBMkI7TUFDbEZPLEtBQUssQ0FBQ1IsUUFBUSxDQUFDTixNQUFNLENBQUM7SUFDdkI7RUFDRDtFQUNBak0sYUFBYSxDQUFDMk0sb0JBQW9CLEdBQUcsZ0JBQWdCM0ssU0FBZ0IsRUFBRWlLLE1BQWtCLEVBQTJCO0lBQ25ILE1BQU1pQixjQUFjLEdBQUksSUFBR2xMLFNBQVMsQ0FBQ1gsSUFBSSxDQUFDLFdBQVcsQ0FBRSxFQUFDO0lBRXhELE1BQU04TCxVQUFVLEdBQUdsQixNQUFNLENBQUMxRCxZQUFZLEVBQUU7SUFDeEMsTUFBTTZFLFFBQVEsR0FBRyxNQUFNaEIsT0FBTyxDQUFDaUIsR0FBRyxDQUFDLENBQUNGLFVBQVUsQ0FBQ0csYUFBYSxDQUFFLEdBQUVKLGNBQWUsR0FBRSxDQUFDLEVBQUVDLFVBQVUsQ0FBQ0csYUFBYSxDQUFFLEdBQUVKLGNBQWUsR0FBRSxDQUFDLENBQUMsQ0FBQztJQUNwSSxNQUFNOUssV0FBMkIsR0FBRyxFQUFFO0lBQ3RDLE1BQU1tTCxXQUFXLEdBQUdILFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDL0IsTUFBTW5MLHFCQUFxQixHQUFHbUwsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUN6QyxNQUFNakwsaUJBQWlCLEdBQUdJLFlBQVksQ0FBQ0MsZUFBZSxDQUFDUixTQUFTLENBQUNYLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUNuRm1NLGtCQUFrQixDQUFDckwsaUJBQWlCLEVBQUVILFNBQVMsQ0FBQztJQUNoRCxJQUFJeUwsS0FBSztJQUNULEtBQUssTUFBTUMsUUFBUSxJQUFJekwscUJBQXFCLEVBQUU7TUFDN0MsSUFBSXlMLFFBQVEsQ0FBQ3hNLFVBQVUsQ0FBQywyQ0FBMkMsQ0FBQyxFQUFFO1FBQ3JFdU0sS0FBSyxHQUFHQyxRQUFRLENBQUNDLE9BQU8sQ0FBQyw0Q0FBNEMsRUFBRSxFQUFFLENBQUM7UUFDMUUsTUFBTUMsS0FBSyxHQUFHSCxLQUFLLENBQUNJLEtBQUssQ0FBQyxHQUFHLENBQUM7UUFFOUIsSUFBSUQsS0FBSyxDQUFDbk0sTUFBTSxJQUFJLENBQUMsSUFBSW1NLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxzQ0FBc0MsRUFBRTtVQUM1RXpMLGlCQUFpQixDQUFDeUwsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUczTCxxQkFBcUIsQ0FBQ3lMLFFBQVEsQ0FBQztRQUM5RDtNQUNEO0lBQ0Q7SUFDQSxNQUFNSSxzQkFBc0IsR0FBR3ZMLFlBQVksQ0FBQ0MsZUFBZSxDQUFDUixTQUFTLENBQUNYLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RixNQUFNYSx1QkFBd0YsR0FBRyxDQUFDLENBQUM7SUFDbkcsS0FBSyxNQUFNNkwsYUFBYSxJQUFJRCxzQkFBc0IsRUFBRTtNQUNuRCxNQUFNRSxRQUFRLEdBQUdGLHNCQUFzQixDQUFDQyxhQUFhLENBQUMsQ0FBQ0UsWUFBWTtNQUNuRS9MLHVCQUF1QixDQUFDOEwsUUFBUSxDQUFDLEdBQUc5TCx1QkFBdUIsQ0FBQzhMLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztNQUMzRTlMLHVCQUF1QixDQUFDOEwsUUFBUSxDQUFDLENBQUNGLHNCQUFzQixDQUFDQyxhQUFhLENBQUMsQ0FBQ0csaUJBQWlCLENBQUMsR0FBRztRQUM1RjFOLElBQUksRUFBRXNOLHNCQUFzQixDQUFDQyxhQUFhLENBQUMsQ0FBQ3ZOLElBQUk7UUFDaERtRyxLQUFLLEVBQUVtSCxzQkFBc0IsQ0FBQ0MsYUFBYSxDQUFDLENBQUNwSDtNQUM5QyxDQUFDO0lBQ0Y7SUFDQSxLQUFLLE1BQU0vQyxJQUFJLElBQUkySixXQUFXLEVBQUU7TUFDL0IsSUFBSTNKLElBQUksQ0FBQ3NDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFDNUIsTUFBTW1CLFdBQVcsR0FBRzhELFdBQVcsQ0FBQ2dELGdCQUFnQixDQUFDaEIsVUFBVSxFQUFFQSxVQUFVLENBQUNpQixvQkFBb0IsQ0FBRSxHQUFFbEIsY0FBZSxJQUFHdEosSUFBSyxFQUFDLENBQUMsQ0FBRTtRQUMzSDVELGFBQWEsQ0FBQzhCLGVBQWUsQ0FDNUJxTCxVQUFVLENBQUMvSSxjQUFjLENBQUUsR0FBRThJLGNBQWUsSUFBR3RKLElBQUssRUFBQyxDQUFDLEVBQ3RENUIsU0FBUyxFQUNUQyxxQkFBcUIsRUFDckJDLHVCQUF1QixFQUN2QkMsaUJBQWlCLEVBQ2pCQyxXQUFXLEVBQ1hpRixXQUFXLENBQ1g7TUFDRjtJQUNEO0lBQ0EsT0FBT2pGLFdBQVc7RUFDbkIsQ0FBQztFQUVELFNBQVNvTCxrQkFBa0IsQ0FBQ3JMLGlCQUEwQyxFQUFFSCxTQUFnQixFQUFRO0lBQy9GLE1BQU1xTSxXQUFxQixHQUFHLEVBQUU7TUFDL0JDLFNBQW1CLEdBQUcsRUFBRTtJQUN6QixJQUFJbk0saUJBQWlCLElBQUlsQyxNQUFNLENBQUNzRCxJQUFJLENBQUNwQixpQkFBaUIsQ0FBQyxDQUFDVixNQUFNLElBQUksQ0FBQyxFQUFFO01BQ3BFLE1BQU04TSxXQUFXLEdBQUd2TSxTQUFTLENBQUN3TSxRQUFRLEVBQUU7TUFDeEMsS0FBSyxNQUFNQyxHQUFHLElBQUlGLFdBQVcsRUFBRTtRQUM5QixJQUFJQSxXQUFXLENBQUNFLEdBQUcsQ0FBQyxDQUFDQyxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7VUFDL0NMLFdBQVcsQ0FBQ2xKLElBQUksQ0FBQ25GLGFBQWEsQ0FBQzJPLDJDQUEyQyxDQUFDSixXQUFXLENBQUNFLEdBQUcsQ0FBQyxDQUFDRyxjQUFjLEVBQUUsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1SCxDQUFDLE1BQU0sSUFBSUwsV0FBVyxDQUFDRSxHQUFHLENBQUMsQ0FBQ0MsT0FBTyxFQUFFLEtBQUssY0FBYyxFQUFFO1VBQ3pESixTQUFTLENBQUNuSixJQUFJLENBQ2JuRixhQUFhLENBQUMyTywyQ0FBMkMsQ0FBQ0osV0FBVyxDQUFDRSxHQUFHLENBQUMsQ0FBQ0csY0FBYyxFQUFFLEVBQUUsY0FBYyxDQUFDLENBQzVHO1FBQ0Y7TUFDRDtNQUNBLElBQ0NOLFNBQVMsQ0FBQzdGLE1BQU0sQ0FBQyxVQUFVb0csR0FBVyxFQUFFO1FBQ3ZDLE9BQU9SLFdBQVcsQ0FBQ2pKLFFBQVEsQ0FBQ3lKLEdBQUcsQ0FBQztNQUNqQyxDQUFDLENBQUMsQ0FBQ3BOLE1BQU0sSUFBSSxDQUFDLEVBQ2I7UUFDRHVFLEdBQUcsQ0FBQ0MsS0FBSyxDQUFDLHVEQUF1RCxDQUFDO01BQ25FO0lBQ0Q7RUFDRDtFQUVBakcsYUFBYSxDQUFDK0UsbUNBQW1DLEdBQUcsVUFDbkQvQyxTQUFnQixFQUNoQjRCLElBQVksRUFDWk0sb0JBQWtELEVBQ2xEb0MsdUJBQTRDLEVBQzVDN0Qsb0JBQThDLEVBQzlDUCx1QkFBd0YsRUFDeEZDLGlCQUFzRCxFQUN0RG1GLFFBQWdCLEVBQ0w7SUFDWCxNQUFNeEMsb0JBQThCLEdBQUcsRUFBRTtJQUN6QyxJQUFJN0UsTUFBTSxDQUFDc0QsSUFBSSxDQUFDckIsdUJBQXVCLENBQUMsQ0FBQ2tELFFBQVEsQ0FBQ3hCLElBQUksQ0FBQyxFQUFFO01BQ3hELEtBQUssTUFBTW1LLGFBQWEsSUFBSTdMLHVCQUF1QixDQUFDMEIsSUFBSSxDQUFDLEVBQUU7UUFBQTtRQUMxRGtCLG9CQUFvQixDQUFDSyxJQUFJLENBQUM7VUFDekIzRSxJQUFJLEVBQUUsbUJBQW1CLEdBQUcwQix1QkFBdUIsQ0FBQzBCLElBQUksQ0FBQyxDQUFDbUssYUFBYSxDQUFDLENBQUN2TixJQUFJO1VBQzdFbUcsS0FBSyxFQUNKekUsdUJBQXVCLENBQUMwQixJQUFJLENBQUMsQ0FBQ21LLGFBQWEsQ0FBQyxDQUFDcEgsS0FBSyxJQUNqRCxHQUFFekMsb0JBQW9CLENBQUMsdUNBQXVDLENBQUUsS0FBSTZKLGFBQWMsR0FBRSxJQUNwRixHQUFFbkssSUFBSyxLQUFJbUssYUFBYyxHQUFFO1VBQzdCbEgsUUFBUSxFQUFFcEUsb0JBQW9CLENBQUMyRCxZQUFZLENBQUN4QyxJQUFJLENBQUMsR0FBR25CLG9CQUFvQixDQUFDMkQsWUFBWSxDQUFDeEMsSUFBSSxDQUFDLENBQUNpRCxRQUFRLEdBQUcsSUFBSTtVQUMzR2xCLFVBQVUsRUFBRSxLQUFLO1VBQ2pCbUIsU0FBUyxFQUFFLEtBQUs7VUFDaEJDLFlBQVksRUFBRSxJQUFJO1VBQ2xCOUYsSUFBSSxFQUFFMkMsSUFBSTtVQUNWMEQsUUFBUSxFQUFFQSxRQUFRO1VBQ2xCNEcsaUJBQWlCLEVBQUVILGFBQWE7VUFDaEMvRyxhQUFhLEVBQUVDLDRCQUE0QiwyQkFBQ1gsdUJBQXVCLENBQUMsMEJBQTBCLENBQUMscUZBQW5ELHVCQUFzRDFDLElBQUksQ0FBQywyREFBM0QsdUJBQThELENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQztVQUN0SHNELElBQUksRUFBRUMsaUJBQWlCLENBQUMySCxLQUFLO1VBQzdCQyxTQUFTLEVBQUUsSUFBSTtVQUFFO1VBQ2pCQyxRQUFRLEVBQ1AsMkJBQUM5SyxvQkFBb0IsQ0FBQyxvQ0FBb0MsQ0FBQywyREFBM0QsdUJBQW1GNEIsS0FBSyxnQ0FDdkY1QixvQkFBb0IsQ0FBQyw2QkFBNkIsQ0FBQywyREFBcEQsdUJBQTRFNEIsS0FBSztRQUNuRixDQUFDLENBQUM7TUFDSDtJQUNEO0lBQ0EsSUFBSTdGLE1BQU0sQ0FBQ3NELElBQUksQ0FBQ3BCLGlCQUFpQixDQUFDLENBQUNpRCxRQUFRLENBQUN4QixJQUFJLENBQUMsRUFBRTtNQUNsRCxLQUFLLE1BQU1xTCxPQUFPLElBQUk5TSxpQkFBaUIsRUFBRTtRQUN4QyxJQUFJOE0sT0FBTyxLQUFLckwsSUFBSSxFQUFFO1VBQUE7VUFDckIsTUFBTXNMLEtBQUssR0FBR0MsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFaE4saUJBQWlCLENBQUM4TSxPQUFPLENBQUMsRUFBWTtZQUM3RHpPLElBQUksRUFBRSxtQkFBbUIsR0FBR3lPLE9BQU87WUFDbkNuSSxTQUFTLEVBQUUsS0FBSztZQUNoQkMsWUFBWSxFQUFFLElBQUk7WUFDbEJwQixVQUFVLEVBQUUsS0FBSztZQUNqQnVCLElBQUksRUFBRUMsaUJBQWlCLENBQUMySCxLQUFLO1lBQzdCN04sSUFBSSxFQUFFZ08sT0FBTztZQUNiM0gsUUFBUSxFQUFFQSxRQUFRO1lBQ2xCeUgsU0FBUyxFQUFFLElBQUk7WUFBRTtZQUNqQkMsUUFBUSxFQUNQLDJCQUFDOUssb0JBQW9CLENBQUMsb0NBQW9DLENBQUMsMkRBQTNELHVCQUFtRjRCLEtBQUssZ0NBQ3ZGNUIsb0JBQW9CLENBQUMsNkJBQTZCLENBQUMsMkRBQXBELHVCQUE0RTRCLEtBQUs7VUFDbkYsQ0FBQyxDQUFDO1VBQ0ZoQixvQkFBb0IsQ0FBQ0ssSUFBSSxDQUFDK0osS0FBSyxDQUFDO1VBRWhDO1FBQ0Q7TUFDRDtJQUNEO0lBQ0EsT0FBT3BLLG9CQUFvQjtFQUM1QixDQUFDO0VBQ0Q5RSxhQUFhLENBQUNvUCxNQUFNLEdBQUcsVUFBVXBOLFNBQWdCLEVBQUVyQixZQUFpQyxFQUFRO0lBQzNGLE1BQU0wTyxPQUFPLEdBQUcxTyxZQUFZLENBQUN5SixVQUFVLENBQUNLLE9BQU87SUFFL0MsSUFBSTRFLE9BQU8sRUFBRTtNQUNaLE9BQU8xTyxZQUFZLENBQUN5SixVQUFVLENBQUNLLE9BQU87SUFDdkM7SUFFQXRLLGlCQUFpQixDQUFDaVAsTUFBTSxDQUFDcE4sU0FBUyxFQUFFckIsWUFBWSxDQUFDO0lBRWpELElBQUkwTyxPQUFPLEVBQUU7TUFDWixNQUFNQyxXQUFXLEdBQUl0TixTQUFTLENBQUN1TixrQkFBa0IsRUFBRSxDQUEwQkMsYUFBYSxDQUFDeE4sU0FBUyxDQUFDO1FBQ3BHeU4sYUFBYSxHQUFHSCxXQUFXLElBQUlBLFdBQVcsQ0FBQ0ksVUFBVSxDQUFDLE1BQU0sQ0FBQzs7TUFFOUQ7TUFDQTtNQUNBO01BQ0FELGFBQWEsQ0FBQ0UsT0FBTyxFQUFFO01BQ3ZCRixhQUFhLENBQUNHLGNBQWMsQ0FBQztRQUFFck8sTUFBTSxFQUFFOE47TUFBUSxDQUFDLENBQUM7TUFFakQsTUFBTVEsbUJBQW1CLEdBQUc7UUFDM0JDLGlCQUFpQixFQUFFLFlBQWtCO1VBQ3BDTCxhQUFhLENBQUNNLE1BQU0sRUFBRTtVQUN0QlQsV0FBVyxDQUFDVSxtQkFBbUIsQ0FBQ0gsbUJBQW1CLENBQUM7UUFDckQ7TUFDRCxDQUFDO01BQ0RQLFdBQVcsQ0FBQ1csZ0JBQWdCLENBQUNKLG1CQUFtQixDQUFDO0lBQ2xEO0lBRUE3TixTQUFTLENBQUNrTyxTQUFTLENBQUMsZ0JBQWdCLENBQUM7RUFDdEMsQ0FBQztFQUNEbFEsYUFBYSxDQUFDbVEsU0FBUyxHQUFHLFVBQVVuTyxTQUFnQixFQUFFc04sV0FBcUIsRUFBUTtJQUNsRixNQUFNYyxTQUFTLEdBQUdwTyxTQUFTLENBQUNxSixTQUFTLEVBQWM7SUFDbkRpRSxXQUFXLENBQUNlLGdCQUFnQixDQUFDck8sU0FBUyxDQUFDWCxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDN0RpTyxXQUFXLENBQUNnQixnQkFBZ0IsQ0FBQ0YsU0FBUyxDQUFDRyxxQkFBcUIsQ0FBQzdFLElBQUksQ0FBQzBFLFNBQVMsQ0FBQyxDQUFpRDtJQUM3SGQsV0FBVyxDQUFDa0Isa0JBQWtCLENBQUNKLFNBQVMsQ0FBQ0cscUJBQXFCLENBQUM3RSxJQUFJLENBQUMwRSxTQUFTLENBQUMsQ0FBaUQ7SUFDL0hkLFdBQVcsQ0FBQ21CLGVBQWUsQ0FBQ0wsU0FBUyxDQUFDRyxxQkFBcUIsQ0FBQzdFLElBQUksQ0FBQzBFLFNBQVMsQ0FBQyxDQUFpRDtJQUM1SGQsV0FBVyxDQUFDb0IsZ0JBQWdCLENBQUNOLFNBQVMsQ0FBQ0cscUJBQXFCLENBQUM3RSxJQUFJLENBQUMwRSxTQUFTLENBQUMsQ0FBaUQ7SUFDN0hkLFdBQVcsQ0FBQ3FCLGtCQUFrQixDQUFDUCxTQUFTLENBQUNHLHFCQUFxQixDQUFDN0UsSUFBSSxDQUFDMEUsU0FBUyxDQUFDLENBQWlEO0lBQy9IZCxXQUFXLENBQUNzQixlQUFlLENBQUNSLFNBQVMsQ0FBQ0cscUJBQXFCLENBQUM3RSxJQUFJLENBQUMwRSxTQUFTLENBQUMsQ0FBaUQ7SUFFNUhkLFdBQVcsQ0FBQ3VCLGdCQUFnQixDQUFFN08sU0FBUyxDQUFDOE8sVUFBVSxFQUFFLENBQStCQyxhQUFhLENBQUNDLFdBQVcsRUFBRSxDQUFrQjtJQUNoSTdRLGlCQUFpQixDQUFDZ1EsU0FBUyxDQUFDbk8sU0FBUyxFQUFFc04sV0FBVyxDQUFDO0VBQ3BELENBQUM7RUFDRHRQLGFBQWEsQ0FBQ2lSLGVBQWUsR0FBRyxVQUFValAsU0FBZ0IsRUFBdUI7SUFDaEYsSUFBSSxJQUFJLENBQUNrUCx3QkFBd0IsQ0FBQ2xQLFNBQVMsQ0FBQyxFQUFFO01BQzdDLE9BQU8sSUFBSSxDQUFDa1Asd0JBQXdCLENBQUNsUCxTQUFTLENBQUM7SUFDaEQ7SUFFQSxNQUFNbVAsYUFBYSxHQUFJblAsU0FBUyxDQUFDb1AsV0FBVyxFQUFFLENBQTBCQyxPQUEyRDtJQUNuSSxNQUFNQyxPQUFPLEdBQUduQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUVnQyxhQUFhLENBQUMvRyxVQUFVLEVBQUU7TUFDbkRtSCxTQUFTLEVBQUV2UCxTQUFTLENBQUNYLElBQUksQ0FBQyxXQUFXO0lBQ3RDLENBQUMsQ0FBQztJQUNGLE9BQU87TUFDTkosSUFBSSxFQUFFa1EsYUFBYSxDQUFDSyxnQkFBZ0I7TUFDcENqRyxNQUFNLEVBQUU7UUFDUEMsYUFBYSxFQUFHeEosU0FBUyxDQUFDcUosU0FBUyxFQUFFLENBQWNJLHVCQUF1QixDQUFDQyxJQUFJLENBQUMxSixTQUFTLENBQUNxSixTQUFTLEVBQUU7TUFDdEcsQ0FBQztNQUNEakIsVUFBVSxFQUFFa0g7SUFDYixDQUFDO0VBQ0YsQ0FBQztFQUNEdFIsYUFBYSxDQUFDeVIsd0JBQXdCLEdBQUcsVUFBVXpQLFNBQWdCLEVBQUUwUCxhQUF3QixFQUFRO0lBQ3BHdlIsaUJBQWlCLENBQUNzUix3QkFBd0IsQ0FBQ0UsSUFBSSxDQUFDLElBQUksRUFBRTNQLFNBQVMsRUFBRTBQLGFBQWEsQ0FBQztJQUMvRSxJQUFJQSxhQUFhLENBQUNoRCxPQUFPLEVBQUUsS0FBSyxXQUFXLEVBQUU7TUFDNUMsTUFBTVksV0FBVyxHQUFHLElBQUksQ0FBQ0UsYUFBYSxDQUFDeE4sU0FBUyxDQUFDO01BQ2pEc04sV0FBVyxDQUFDc0MsZ0JBQWdCLEVBQUU7SUFDL0I7RUFDRCxDQUFDO0VBQ0Q1UixhQUFhLENBQUNtRyxZQUFZLEdBQUcsVUFDNUJuRSxTQUFnQixFQUNoQjZQLHdCQUFzRSxFQUN0RUMsaUJBQTBCLEVBQ2hCO0lBQ1YsSUFBSUEsaUJBQWlCLEVBQUU7TUFDdEIsSUFBSTlQLFNBQVMsQ0FBQ1gsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssTUFBTSxFQUFFO1FBQ2hELE9BQU8sS0FBSztNQUNiLENBQUMsTUFBTTtRQUNOLE9BQU93USx3QkFBd0IsR0FBR0Esd0JBQXdCLENBQUNoTCxRQUFRLEdBQUcsSUFBSTtNQUMzRTtJQUNEO0lBQ0EsT0FBT2dMLHdCQUF3QixHQUFHQSx3QkFBd0IsQ0FBQ2hMLFFBQVEsR0FBRyxJQUFJO0VBQzNFLENBQUM7RUFDRDdHLGFBQWEsQ0FBQytMLHVCQUF1QixHQUFHLFVBQVVyTCxNQUFhLEVBQUVDLFlBQWlDLEVBQVE7SUFDekcsSUFBSUQsTUFBTSxDQUFDVyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxNQUFNLEVBQUU7TUFDN0MsSUFBSSxDQUFDVixZQUFZLEVBQUU7UUFDbEJBLFlBQVksR0FBRyxDQUFDLENBQUM7TUFDbEI7TUFDQSxJQUFJLENBQUNBLFlBQVksQ0FBQ2EsT0FBTyxFQUFFO1FBQzFCYixZQUFZLENBQUNhLE9BQU8sR0FBRyxFQUFFO1FBQ3pCYixZQUFZLENBQUNhLE9BQU8sQ0FBQzJELElBQUksQ0FBQyxJQUFJd0csTUFBTSxDQUFDLGdCQUFnQixFQUFFb0csY0FBYyxDQUFDQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUM7TUFDakYsQ0FBQyxNQUFNO1FBQUE7UUFDTix5QkFBQXJSLFlBQVksQ0FBQ2EsT0FBTyxvRkFBcEIsc0JBQXNCeVEsUUFBUSwyREFBOUIsdUJBQWdDOU0sSUFBSSxDQUFDLElBQUl3RyxNQUFNLENBQUMsZ0JBQWdCLEVBQUVvRyxjQUFjLENBQUNDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQztNQUM1RjtJQUNEO0VBQ0QsQ0FBQzs7RUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBaFMsYUFBYSxDQUFDMk8sMkNBQTJDLEdBQUcsVUFBVW5PLElBQVksRUFBRTBSLElBQVksRUFBVTtJQUN6RyxPQUFPMVIsSUFBSSxDQUFDbU4sT0FBTyxDQUFDLE1BQU0sR0FBR3VFLElBQUksR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDO0VBQzdDLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBbFMsYUFBYSxDQUFDbVMsMEJBQTBCLEdBQUcsVUFBVTNSLElBQVksRUFBRTBSLElBQVksRUFBRUUsUUFBZSxFQUFVO0lBQ3pHLE9BQU9BLFFBQVEsQ0FBQ0MsaUJBQWlCLEVBQUUsQ0FBQ0MsV0FBVyxDQUFDLE1BQU0sR0FBR0osSUFBSSxHQUFHLEdBQUcsR0FBRzFSLElBQUksQ0FBQztFQUM1RSxDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQVIsYUFBYSxDQUFDdVMsaUJBQWlCLEdBQUcsWUFBb0I7SUFDckQsT0FBT3RTLE1BQU0sQ0FBQ0MsTUFBTSxDQUNuQjtNQUNDRSxVQUFVLEVBQUU7SUFDYixDQUFDLEVBQ0RvUyxpQkFBaUIsRUFDakI7TUFDQ0MsT0FBTyxFQUFFLFVBQVVDLGNBQXVCLEVBQUVDLGlCQUF5QixFQUFFO1FBQ3RFLE1BQU1DLElBQUksR0FBRzVTLGFBQWEsQ0FBQzJPLDJDQUEyQyxDQUFDZ0UsaUJBQWlCLEVBQUUsV0FBVyxDQUFDO1FBQ3RHLE9BQU9ILGlCQUFpQixDQUFDQyxPQUFPLENBQUNDLGNBQWMsRUFBRUUsSUFBSSxDQUFDLENBQUNuRyxJQUFJLENBQUVvRyxXQUFnQyxJQUFLO1VBQ2pHQSxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRUMsWUFBWSxDQUFDLFlBQVksRUFBRTtZQUN2QzdSLElBQUksRUFBRSx1QkFBdUIsR0FBRzBSO1VBQ2pDLENBQUMsQ0FBQztVQUNGLE9BQU9FLFdBQVc7UUFDbkIsQ0FBQyxDQUFDO01BQ0g7SUFDRCxDQUFDLENBQ0Q7RUFDRixDQUFDO0VBQUMsT0FFYTdTLGFBQWE7QUFBQSJ9
@@ -383,6 +383,11 @@ ChartDelegate.updateBindingInfo = function (oChart: Chart, oBindingInfo: Collect
383
383
  if (oFilterInfo.bindingPath) {
384
384
  oBindingInfo.path = oFilterInfo.bindingPath;
385
385
  }
386
+
387
+ if (CommonUtils.getTargetView(oChart).getViewData().viewLevel > 0 && oBindingInfo.path && oChart.getBindingContext()) {
388
+ oBindingInfo.path = ChartHelper.getCollectionName(oBindingInfo.path);
389
+ }
390
+
386
391
  // remove prefixes so that entityset will match with the property names with these field
387
392
  if (oFilterInfo.filters) {
388
393
  oFilterInfo.filters.forEach((element) => {