@sapui5/sap.fe.macros 1.120.19 → 1.120.21

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.120.19",
3
+ "version": "1.120.21",
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.120.19</version>
9
+ <version>1.120.21</version>
10
10
 
11
11
  <documentation>UI5 library: sap.fe.macros</documentation>
12
12
 
@@ -198,4 +198,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/converter
198
198
  };
199
199
  return DelegateUtil;
200
200
  }, false);
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOU19NQUNST0RBVEEiLCJfcmV0cmlldmVNb2RlbCIsImNvbnRyb2wiLCJkZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJzTW9kZWxOYW1lIiwibW9kZWxOYW1lIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJyZXNvbHZlIiwiYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwiZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllciIsIm9Db250cm9sIiwic1Byb3BlcnR5Iiwib01vZGlmaWVyIiwiYUN1c3RvbURhdGEiLCJhUmV0cmlldmVkQ3VzdG9tRGF0YSIsIlByb21pc2UiLCJ0aGVuIiwiZ2V0QWdncmVnYXRpb24iLCJiaW5kIiwib1Byb21pc2UiLCJyZWR1Y2UiLCJvUHJldmlvdXNQcm9taXNlIiwib0N1c3RvbURhdGEiLCJnZXRQcm9wZXJ0eSIsInNLZXkiLCJwdXNoIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiRkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZIiwiRGVsZWdhdGVVdGlsIiwic2V0Q2FjaGVkUHJvcGVydGllcyIsImZldGNoZWRQcm9wZXJ0aWVzIiwid2luZG93IiwiRWxlbWVudCIsImtleSIsInNldEN1c3RvbURhdGEiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0Q3VzdG9tRGF0YSIsImdldEF0dHJpYnV0ZU5TIiwiZGF0YSIsIkZ1bmN0aW9uIiwidlZhbHVlIiwic2V0QXR0cmlidXRlTlMiLCJmZXRjaFByb3BlcnRpZXNGb3JFbnRpdHkiLCJzRW50aXR5U2V0Iiwib01ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJmZXRjaEFubm90YXRpb25zRm9yRW50aXR5IiwiZmV0Y2hNb2RlbCIsImdldERlbGVnYXRlIiwicGF5bG9hZCIsIm9Db250ZXh0IiwiY2FsbCIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50Iiwic0ZyYWdtZW50TmFtZSIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIm9PcHRpb25zIiwiQ29tbW9uVXRpbHMiLCJkb2VzVmFsdWVIZWxwRXhpc3QiLCJtUGFyYW1ldGVycyIsInNQcm9wZXJ0eU5hbWUiLCJzVmFsdWVIZWxwVHlwZSIsInNPcmlnaW5hbFByb3BlcnR5Iiwic0JpbmRpbmdQYXRoIiwicHJvcGVydHlDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJ2YWx1ZUhlbHBQcm9wZXJ0eVBhdGgiLCJGaWVsZEhlbHBlciIsInZhbHVlSGVscFByb3BlcnR5IiwiYklzQWJzb2x1dGUiLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJnZXRPYmplY3QiLCJwcm9wZXJ0eURhdGFNb2RlbCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsInVuaXRPckN1cnJlbmN5UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHlQYXRoIiwidGFyZ2V0T2JqZWN0IiwiZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eVBhdGgiLCJ1bml0T3JDdXJyZW5jeURhdGFNb2RlbCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsInNHZW5lcmF0ZWRJZCIsImdlbmVyYXRlSUQiLCJmbGV4SWQiLCJnZW5lcmF0ZSIsImdldElkIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJjb250ZXh0IiwiZ2V0UGF0aCIsImFEZXBlbmRlbnRzIiwic29tZSIsIm9EZXBlbmRlbnQiLCJpc1ZhbHVlSGVscFJlcXVpcmVkIiwiYkluRmlsdGVyRmllbGQiLCJvUHJvcGVydHlDb250ZXh0Iiwic1ZhbHVlSGVscFByb3BlcnR5IiwiYlJlYWRPbmx5IiwiYWxsIiwiYVJlc3VsdHMiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsIndhcm5pbmciLCJpc011bHRpVmFsdWUiLCJvUHJvcGVydHkiLCJiSXNNdWx0aVZhbHVlIiwiZmlsdGVyRXhwcmVzc2lvbiIsInR5cGUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlbGVnYXRlVXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sdW1uRXhwb3J0U2V0dGluZ3MsXG5cdEN1c3RvbUJhc2VkVGFibGVDb2x1bW4sXG5cdEV4dGVuc2lvbkZvckFuYWx5dGljcyxcblx0UHJvcGVydHlUeXBlQ29uZmlnLFxuXHRWaXN1YWxTZXR0aW5nc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHlQYXRoLCBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlSUQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVIZWxwVGVtcGxhdGluZ1wiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuXG5jb25zdCBOU19NQUNST0RBVEEgPSBcImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIjtcblxuZXhwb3J0IHR5cGUgdGFibGVEZWxlZ2F0ZU1vZGVsID0ge1xuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGg6IGJvb2xlYW47XG5cdGlzT3B0aW1pemVkRm9yU21hbGxEZXZpY2U6IGJvb2xlYW47XG5cdHJlYWRPbmx5OiBib29sZWFuO1xuXHRjb2x1bW5FZGl0TW9kZTogc3RyaW5nO1xuXHR0YWJsZVR5cGU6IHN0cmluZztcblx0b25DaGFuZ2U6IEZ1bmN0aW9uO1xuXHRpZDogc3RyaW5nO1xuXHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGNvbHVtbkluZm86IEN1c3RvbUVsZW1lbnQ8Q3VzdG9tQmFzZWRUYWJsZUNvbHVtbj47XG5cdGNvbGxlY3Rpb246IHtcblx0XHRzUGF0aDogc3RyaW5nO1xuXHRcdG9Nb2RlbDogc3RyaW5nO1xuXHR9O1xuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5SW5mbyA9IHtcblx0YWRkaXRpb25hbExhYmVscz86IHN0cmluZ1tdO1xuXHRjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogQ29sdW1uRXhwb3J0U2V0dGluZ3MgfCBudWxsO1xuXHRmaWx0ZXJhYmxlPzogYm9vbGVhbjtcblx0Z3JvdXA/OiBzdHJpbmc7XG5cdGdyb3VwYWJsZT86IGJvb2xlYW47XG5cdGdyb3VwTGFiZWw/OiBzdHJpbmc7XG5cdGtleT86IGJvb2xlYW47XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRtYXhDb25kaXRpb25zPzogbnVtYmVyO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdG1vZGU/OiBEaXNwbGF5TW9kZTtcblx0bmFtZTogc3RyaW5nO1xuXHRwYXRoPzogc3RyaW5nO1xuXHRwcm9wZXJ0eUluZm9zPzogc3RyaW5nW107XG5cdHJlbGF0aXZlUGF0aD86IHN0cmluZztcblx0c29ydGFibGU/OiBib29sZWFuO1xuXHRzb3J0RGlyZWN0aW9uPzogc3RyaW5nO1xuXHR0ZXh0Pzogc3RyaW5nO1xuXHR0b29sdGlwPzogc3RyaW5nO1xuXHR0eXBlQ29uZmlnPzogUHJvcGVydHlUeXBlQ29uZmlnO1xuXHR0eXBlPzogc3RyaW5nO1xuXHR1bml0Pzogc3RyaW5nO1xuXHR2YWx1ZVByb3BlcnR5Pzogc3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHR2aXN1YWxTZXR0aW5ncz86IFZpc3VhbFNldHRpbmdzO1xuXHRleHBvcnREYXRhUG9pbnRUYXJnZXRWYWx1ZT86IHN0cmluZztcblx0aXNQYXJhbWV0ZXI/OiBib29sZWFuO1xuXHRhZ2dyZWdhdGFibGU/OiBib29sZWFuO1xuXHRleHRlbnNpb24/OiBFeHRlbnNpb25Gb3JBbmFseXRpY3M7XG59O1xuXG5mdW5jdGlvbiBfcmV0cmlldmVNb2RlbCh0aGlzOiB7IG1vZGVsTmFtZTogc3RyaW5nOyBjb250cm9sOiBhbnk7IHJlc29sdmU6IEZ1bmN0aW9uIH0pIHtcblx0dGhpcy5jb250cm9sLmRldGFjaE1vZGVsQ29udGV4dENoYW5nZShfcmV0cmlldmVNb2RlbCwgdGhpcyk7XG5cdGNvbnN0IHNNb2RlbE5hbWUgPSB0aGlzLm1vZGVsTmFtZSxcblx0XHRvTW9kZWwgPSB0aGlzLmNvbnRyb2wuZ2V0TW9kZWwoc01vZGVsTmFtZSk7XG5cblx0aWYgKG9Nb2RlbCkge1xuXHRcdHRoaXMucmVzb2x2ZShvTW9kZWwpO1xuXHR9IGVsc2Uge1xuXHRcdHRoaXMuY29udHJvbC5hdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UoX3JldHJpZXZlTW9kZWwsIHRoaXMpO1xuXHR9XG59XG5hc3luYyBmdW5jdGlvbiBnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyKG9Db250cm9sOiBhbnksIHNQcm9wZXJ0eTogYW55LCBvTW9kaWZpZXI6IGFueSkge1xuXHRjb25zdCBhQ3VzdG9tRGF0YTogYW55W10gPSBbXTtcblxuXHRjb25zdCBhUmV0cmlldmVkQ3VzdG9tRGF0YSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oXG5cdFx0b01vZGlmaWVyLmdldEFnZ3JlZ2F0aW9uLmJpbmQob01vZGlmaWVyLCBvQ29udHJvbCwgXCJjdXN0b21EYXRhXCIpIGFzICgpID0+IGFueVtdXG5cdCk7XG5cblx0Y29uc3Qgb1Byb21pc2UgPSBhUmV0cmlldmVkQ3VzdG9tRGF0YS5yZWR1Y2UoKG9QcmV2aW91c1Byb21pc2U6IFByb21pc2U8dm9pZD4sIG9DdXN0b21EYXRhKSA9PiB7XG5cdFx0cmV0dXJuIG9QcmV2aW91c1Byb21pc2UudGhlbihvTW9kaWZpZXIuZ2V0UHJvcGVydHkuYmluZChvTW9kaWZpZXIsIG9DdXN0b21EYXRhLCBcImtleVwiKSkudGhlbihmdW5jdGlvbiAoc0tleTogYW55KSB7XG5cdFx0XHRpZiAoc0tleSA9PT0gc1Byb3BlcnR5KSB7XG5cdFx0XHRcdGFDdXN0b21EYXRhLnB1c2gob0N1c3RvbURhdGEpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH0pO1xuXHR9LCBQcm9taXNlLnJlc29sdmUoKSk7XG5cdGF3YWl0IG9Qcm9taXNlO1xuXG5cdGlmIChhQ3VzdG9tRGF0YS5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gb01vZGlmaWVyLmdldFByb3BlcnR5KGFDdXN0b21EYXRhWzBdLCBcInZhbHVlXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cbmNvbnN0IEZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWSA9IFwic2FwX2ZlX0NvbnRyb2xEZWxlZ2F0ZV9wcm9wZXJ0eUluZm9NYXBcIjtcblxuY29uc3QgRGVsZWdhdGVVdGlsID0ge1xuXHRzZXRDYWNoZWRQcm9wZXJ0aWVzKGNvbnRyb2w6IGFueSwgZmV0Y2hlZFByb3BlcnRpZXM6IFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0Ly8gZG8gbm90IGNhY2hlIGR1cmluZyB0ZW1wbGF0aW5nLCBlbHNlIGl0IGJlY29tZXMgcGFydCBvZiB0aGUgY2FjaGVkIHZpZXdcblx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGtleSA9IEZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWTtcblx0XHREZWxlZ2F0ZVV0aWwuc2V0Q3VzdG9tRGF0YShjb250cm9sLCBrZXksIGZldGNoZWRQcm9wZXJ0aWVzKTtcblx0fSxcblx0Z2V0Q2FjaGVkUHJvcGVydGllcyhjb250cm9sOiBhbnkpOiBQcm9wZXJ0eUluZm9bXSB8IG51bGwge1xuXHRcdC8vIHByb3BlcnRpZXMgYXJlIG5vdCBjYWNoZWQgZHVyaW5nIHRlbXBsYXRpbmdcblx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3Qga2V5ID0gRkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZO1xuXHRcdHJldHVybiBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YShjb250cm9sLCBrZXkpO1xuXHR9LFxuXG5cdGdldEN1c3RvbURhdGEob0NvbnRyb2w6IGFueSwgc1Byb3BlcnR5OiBhbnksIG9Nb2RpZmllcj86IGFueSkge1xuXHRcdC8vIElmIE1vZGlmaWVyIGlzIGdpdmVuLCB0aGUgbWV0aG9kIG11c3QgZXhlY3V0ZSBhc3luY2hyb25vdXNseSBhbmQgcmV0dXJuIGEgUHJvbWlzZVxuXHRcdGlmIChvTW9kaWZpZXIpIHtcblx0XHRcdHJldHVybiBnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyKG9Db250cm9sLCBzUHJvcGVydHksIG9Nb2RpZmllcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIERlbGVnYXRlIGludm9rZWQgZnJvbSBhIG5vbi1mbGV4IGNoYW5nZSAtIEZpbHRlckJhckRlbGVnYXRlLl9hZGRQMTNuSXRlbSBmb3IgT1AgdGFibGUgZmlsdGVyaW5nLCBGaWx0ZXJCYXJEZWxlZ2F0ZS5mZXRjaFByb3BlcnRpZXMgZXRjLlxuXHRcdFx0aWYgKG9Db250cm9sICYmIHNQcm9wZXJ0eSkge1xuXHRcdFx0XHRpZiAob0NvbnRyb2wgaW5zdGFuY2VvZiB3aW5kb3cuRWxlbWVudCkge1xuXHRcdFx0XHRcdHJldHVybiBvQ29udHJvbC5nZXRBdHRyaWJ1dGVOUyhOU19NQUNST0RBVEEsIHNQcm9wZXJ0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Db250cm9sLmRhdGEgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXHRcdFx0XHRcdHJldHVybiBvQ29udHJvbC5kYXRhKHNQcm9wZXJ0eSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9LFxuXHRzZXRDdXN0b21EYXRhKG9Db250cm9sOiBhbnksIHNQcm9wZXJ0eTogYW55LCB2VmFsdWU6IGFueSkge1xuXHRcdGlmIChvQ29udHJvbCAmJiBzUHJvcGVydHkpIHtcblx0XHRcdGlmIChvQ29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbC5zZXRBdHRyaWJ1dGVOUyhOU19NQUNST0RBVEEsIGBjdXN0b21EYXRhOiR7c1Byb3BlcnR5fWAsIHZWYWx1ZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob0NvbnRyb2wuZGF0YSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbC5kYXRhKHNQcm9wZXJ0eSwgdlZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGZldGNoUHJvcGVydGllc0ZvckVudGl0eShzRW50aXR5U2V0OiBhbnksIG9NZXRhTW9kZWw6IGFueSkge1xuXHRcdHJldHVybiBvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c0VudGl0eVNldH0vYCk7XG5cdH0sXG5cdGZldGNoQW5ub3RhdGlvbnNGb3JFbnRpdHkoc0VudGl0eVNldDogYW55LCBvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRyZXR1cm4gb01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NFbnRpdHlTZXR9QGApO1xuXHR9LFxuXHRmZXRjaE1vZGVsKG9Db250cm9sOiBhbnkpOiBQcm9taXNlPE1vZGVsPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRjb25zdCBzTW9kZWxOYW1lID0gb0NvbnRyb2wuZ2V0RGVsZWdhdGUoKS5wYXlsb2FkICYmIG9Db250cm9sLmdldERlbGVnYXRlKCkucGF5bG9hZC5tb2RlbE5hbWUsXG5cdFx0XHRcdG9Db250ZXh0ID0geyBtb2RlbE5hbWU6IHNNb2RlbE5hbWUsIGNvbnRyb2w6IG9Db250cm9sLCByZXNvbHZlOiByZXNvbHZlIH07XG5cdFx0XHRfcmV0cmlldmVNb2RlbC5jYWxsKG9Db250ZXh0KTtcblx0XHR9KTtcblx0fSxcblx0dGVtcGxhdGVDb250cm9sRnJhZ21lbnQoc0ZyYWdtZW50TmFtZTogYW55LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3M6IGFueSwgb09wdGlvbnM6IGFueSwgb01vZGlmaWVyPzogYW55KSB7XG5cdFx0cmV0dXJuIENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KHNGcmFnbWVudE5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywgb09wdGlvbnMsIG9Nb2RpZmllcik7XG5cdH0sXG5cdGRvZXNWYWx1ZUhlbHBFeGlzdChtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0Y29uc3Qgc1Byb3BlcnR5TmFtZSA9IG1QYXJhbWV0ZXJzLnNQcm9wZXJ0eU5hbWUgfHwgXCJcIjtcblx0XHRjb25zdCBzVmFsdWVIZWxwVHlwZSA9IG1QYXJhbWV0ZXJzLnNWYWx1ZUhlbHBUeXBlIHx8IFwiXCI7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWw7XG5cdFx0Y29uc3Qgb01vZGlmaWVyID0gbVBhcmFtZXRlcnMub01vZGlmaWVyO1xuXHRcdGNvbnN0IHNPcmlnaW5hbFByb3BlcnR5ID0gYCR7bVBhcmFtZXRlcnMuc0JpbmRpbmdQYXRofS8ke3NQcm9wZXJ0eU5hbWV9YDtcblx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNPcmlnaW5hbFByb3BlcnR5KTtcblx0XHRsZXQgdmFsdWVIZWxwUHJvcGVydHlQYXRoID0gRmllbGRIZWxwZXIudmFsdWVIZWxwUHJvcGVydHkocHJvcGVydHlDb250ZXh0KTtcblx0XHRjb25zdCBiSXNBYnNvbHV0ZSA9IG1QYXJhbWV0ZXJzLnNCaW5kaW5nUGF0aCAmJiBtUGFyYW1ldGVycy5zQmluZGluZ1BhdGguaW5kZXhPZihcIi9cIikgPT09IDA7XG5cblx0XHQvLyB1bml0L2N1cnJlbmN5XG5cdFx0aWYgKHZhbHVlSGVscFByb3BlcnR5UGF0aC5pbmNsdWRlcyhcIiRQYXRoXCIpKSB7XG5cdFx0XHR2YWx1ZUhlbHBQcm9wZXJ0eVBhdGggPSBvTWV0YU1vZGVsLmdldE9iamVjdCh2YWx1ZUhlbHBQcm9wZXJ0eVBhdGgpO1xuXHRcdH1cblx0XHRpZiAoYklzQWJzb2x1dGUgJiYgdmFsdWVIZWxwUHJvcGVydHlQYXRoLmluZGV4T2YoXCIvXCIpICE9PSAwKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eURhdGFNb2RlbCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhwcm9wZXJ0eUNvbnRleHQpO1xuXHRcdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lQcm9wZXJ0eVBhdGggPVxuXHRcdFx0XHRnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eVBhdGgocHJvcGVydHlEYXRhTW9kZWwudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KSB8fFxuXHRcdFx0XHRnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aChwcm9wZXJ0eURhdGFNb2RlbC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXHRcdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lEYXRhTW9kZWwgPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChwcm9wZXJ0eURhdGFNb2RlbCwgdW5pdE9yQ3VycmVuY3lQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0dmFsdWVIZWxwUHJvcGVydHlQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aCh1bml0T3JDdXJyZW5jeURhdGFNb2RlbCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc0dlbmVyYXRlZElkID0gZ2VuZXJhdGVJRChcblx0XHRcdG1QYXJhbWV0ZXJzLmZsZXhJZCxcblx0XHRcdGdlbmVyYXRlKFtvTW9kaWZpZXIgPyBvTW9kaWZpZXIuZ2V0SWQobVBhcmFtZXRlcnMub0NvbnRyb2wpIDogbVBhcmFtZXRlcnMub0NvbnRyb2wuZ2V0SWQoKSwgc1ZhbHVlSGVscFR5cGVdKSxcblx0XHRcdGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHByb3BlcnR5Q29udGV4dC5nZXRQcm9wZXJ0eShzT3JpZ2luYWxQcm9wZXJ0eSksIHtcblx0XHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHRcdGdldE1vZGVsOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbVBhcmFtZXRlcnMub01ldGFNb2RlbDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFBhdGg6ICgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBzT3JpZ2luYWxQcm9wZXJ0eTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYXMgYW55XG5cdFx0XHR9KSxcblx0XHRcdGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHByb3BlcnR5Q29udGV4dC5nZXRQcm9wZXJ0eSh2YWx1ZUhlbHBQcm9wZXJ0eVBhdGgpLCB7XG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRnZXRNb2RlbDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWw7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQYXRoOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVIZWxwUHJvcGVydHlQYXRoO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBhcyBhbnlcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRpZiAob01vZGlmaWVyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Nb2RpZmllci5nZXRBZ2dyZWdhdGlvbihtUGFyYW1ldGVycy5vQ29udHJvbCwgXCJkZXBlbmRlbnRzXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtUGFyYW1ldGVycy5vQ29udHJvbC5nZXRBZ2dyZWdhdGlvbihcImRlcGVuZGVudHNcIik7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFEZXBlbmRlbnRzOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRhRGVwZW5kZW50cyAmJlxuXHRcdFx0XHRcdGFEZXBlbmRlbnRzLnNvbWUoZnVuY3Rpb24gKG9EZXBlbmRlbnQ6IFVJNUVsZW1lbnQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvTW9kaWZpZXIgPyBvTW9kaWZpZXIuZ2V0SWQob0RlcGVuZGVudCkgPT09IHNHZW5lcmF0ZWRJZCA6IG9EZXBlbmRlbnQuZ2V0SWQoKSA9PT0gc0dlbmVyYXRlZElkO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0fSxcblx0aXNWYWx1ZUhlbHBSZXF1aXJlZChtUGFyYW1ldGVyczogYW55LCBiSW5GaWx0ZXJGaWVsZD86IGJvb2xlYW4pIHtcblx0XHRjb25zdCBzUHJvcGVydHlOYW1lID0gbVBhcmFtZXRlcnMuc1Byb3BlcnR5TmFtZSB8fCBcIlwiLFxuXHRcdFx0b01ldGFNb2RlbCA9IG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWwsXG5cdFx0XHRzUHJvcGVydHkgPSBgJHttUGFyYW1ldGVycy5zQmluZGluZ1BhdGh9LyR7c1Byb3BlcnR5TmFtZX1gLFxuXHRcdFx0b1Byb3BlcnR5Q29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc1Byb3BlcnR5KSxcblx0XHRcdHNWYWx1ZUhlbHBQcm9wZXJ0eSA9IEZpZWxkSGVscGVyLnZhbHVlSGVscFByb3BlcnR5KG9Qcm9wZXJ0eUNvbnRleHQsIGJJbkZpbHRlckZpZWxkKTtcblxuXHRcdHJldHVybiB0aGlzLmdldEN1c3RvbURhdGEobVBhcmFtZXRlcnMub0NvbnRyb2wsIFwiZGlzcGxheU1vZGVQcm9wZXJ0eUJpbmRpbmdcIiwgbVBhcmFtZXRlcnMub01vZGlmaWVyKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGJSZWFkT25seTogYW55KSB7XG5cdFx0XHRcdC8vIENoZWNrIHdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcmVhZC1vbmx5LiBJZiB5ZXMsIG5vIG5lZWQgb2YgYSB2YWx1ZSBoZWxwLlxuXHRcdFx0XHRiUmVhZE9ubHkgPSB0eXBlb2YgYlJlYWRPbmx5ID09PSBcImJvb2xlYW5cIiA/IGJSZWFkT25seSA6IGJSZWFkT25seSA9PT0gXCJ0cnVlXCI7XG5cdFx0XHRcdGlmIChiUmVhZE9ubHkpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gRWxzZSwgY2hlY2sgd2hldGhlciBWYWx1ZSBIZWxwIHJlbGV2YW50IGFubm90YXRpb24gZXhpc3RzIGZvciB0aGUgcHJvcGVydHkuXG5cdFx0XHRcdC8vIFRPRE8gdXNlIFByb3BlcnR5Rm9ybWF0dGVyLmhhc1ZhbHVlSGVscCAoKSA9PiBpZiBkb2luZyBzbywgUVVuaXQgdGVzdHMgZmFpbCBkdWUgdG8gbW9ja2VkIG1vZGVsIGltcGxlbWVudGF0aW9uXG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0XHRcdFx0b01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NWYWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc2ApLFxuXHRcdFx0XHRcdG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzVmFsdWVIZWxwUHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RSZWZlcmVuY2VzYCksXG5cdFx0XHRcdFx0b01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NWYWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdE1hcHBpbmdgKSxcblx0XHRcdFx0XHRvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c1ZhbHVlSGVscFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0YClcblx0XHRcdFx0XSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFSZXN1bHRzOiBhbnlbXSkge1xuXHRcdFx0XHRyZXR1cm4gISFhUmVzdWx0c1swXSB8fCAhIWFSZXN1bHRzWzFdIHx8ICEhYVJlc3VsdHNbMl0gfHwgISFhUmVzdWx0c1szXTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiRXJyb3Igd2hpbGUgcmV0cmlldmluZyBjdXN0b20gZGF0YSAvIHZhbHVlIGxpc3QgYW5ub3RhdGlvbiB2YWx1ZXNcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9LFxuXHRpc011bHRpVmFsdWUob1Byb3BlcnR5OiBhbnkpIHtcblx0XHRsZXQgYklzTXVsdGlWYWx1ZSA9IHRydWU7XG5cdFx0Ly9TaW5nbGVWYWx1ZSB8IE11bHRpVmFsdWUgfCBTaW5nbGVSYW5nZSB8IE11bHRpUmFuZ2UgfCBTZWFyY2hFeHByZXNzaW9uIHwgTXVsdGlSYW5nZU9yU2VhcmNoRXhwcmVzc2lvblxuXHRcdHN3aXRjaCAob1Byb3BlcnR5LmZpbHRlckV4cHJlc3Npb24pIHtcblx0XHRcdGNhc2UgXCJTZWFyY2hFeHByZXNzaW9uXCI6XG5cdFx0XHRjYXNlIFwiU2luZ2xlUmFuZ2VcIjpcblx0XHRcdGNhc2UgXCJTaW5nbGVWYWx1ZVwiOlxuXHRcdFx0XHRiSXNNdWx0aVZhbHVlID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChvUHJvcGVydHkudHlwZSAmJiBvUHJvcGVydHkudHlwZS5pbmRleE9mKFwiQm9vbGVhblwiKSA+IDApIHtcblx0XHRcdGJJc011bHRpVmFsdWUgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGJJc011bHRpVmFsdWU7XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZVV0aWw7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7OztFQXNCQSxNQUFNQSxZQUFZLEdBQUcsa0VBQWtFO0VBc0R2RixTQUFTQyxjQUFjLEdBQStEO0lBQ3JGLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyx3QkFBd0IsQ0FBQ0YsY0FBYyxFQUFFLElBQUksQ0FBQztJQUMzRCxNQUFNRyxVQUFVLEdBQUcsSUFBSSxDQUFDQyxTQUFTO01BQ2hDQyxNQUFNLEdBQUcsSUFBSSxDQUFDSixPQUFPLENBQUNL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
201
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJOU19NQUNST0RBVEEiLCJfcmV0cmlldmVNb2RlbCIsImNvbnRyb2wiLCJkZXRhY2hNb2RlbENvbnRleHRDaGFuZ2UiLCJzTW9kZWxOYW1lIiwibW9kZWxOYW1lIiwib01vZGVsIiwiZ2V0TW9kZWwiLCJyZXNvbHZlIiwiYXR0YWNoTW9kZWxDb250ZXh0Q2hhbmdlIiwiZ2V0Q3VzdG9tRGF0YVdpdGhNb2RpZmllciIsIm9Db250cm9sIiwic1Byb3BlcnR5Iiwib01vZGlmaWVyIiwiYUN1c3RvbURhdGEiLCJhUmV0cmlldmVkQ3VzdG9tRGF0YSIsIlByb21pc2UiLCJ0aGVuIiwiZ2V0QWdncmVnYXRpb24iLCJiaW5kIiwib1Byb21pc2UiLCJyZWR1Y2UiLCJvUHJldmlvdXNQcm9taXNlIiwib0N1c3RvbURhdGEiLCJnZXRQcm9wZXJ0eSIsInNLZXkiLCJwdXNoIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiRkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZIiwiRGVsZWdhdGVVdGlsIiwic2V0Q2FjaGVkUHJvcGVydGllcyIsImZldGNoZWRQcm9wZXJ0aWVzIiwid2luZG93IiwiRWxlbWVudCIsImtleSIsInNldEN1c3RvbURhdGEiLCJnZXRDYWNoZWRQcm9wZXJ0aWVzIiwiZ2V0Q3VzdG9tRGF0YSIsImdldEF0dHJpYnV0ZU5TIiwiZGF0YSIsIkZ1bmN0aW9uIiwidlZhbHVlIiwic2V0QXR0cmlidXRlTlMiLCJmZXRjaFByb3BlcnRpZXNGb3JFbnRpdHkiLCJzRW50aXR5U2V0Iiwib01ldGFNb2RlbCIsInJlcXVlc3RPYmplY3QiLCJmZXRjaEFubm90YXRpb25zRm9yRW50aXR5IiwiZmV0Y2hNb2RlbCIsImdldERlbGVnYXRlIiwicGF5bG9hZCIsIm9Db250ZXh0IiwiY2FsbCIsInRlbXBsYXRlQ29udHJvbEZyYWdtZW50Iiwic0ZyYWdtZW50TmFtZSIsIm9QcmVwcm9jZXNzb3JTZXR0aW5ncyIsIm9PcHRpb25zIiwiQ29tbW9uVXRpbHMiLCJkb2VzVmFsdWVIZWxwRXhpc3QiLCJtUGFyYW1ldGVycyIsInNQcm9wZXJ0eU5hbWUiLCJzVmFsdWVIZWxwVHlwZSIsInNPcmlnaW5hbFByb3BlcnR5Iiwic0JpbmRpbmdQYXRoIiwicHJvcGVydHlDb250ZXh0IiwiY3JlYXRlQmluZGluZ0NvbnRleHQiLCJ2YWx1ZUhlbHBQcm9wZXJ0eVBhdGgiLCJGaWVsZEhlbHBlciIsInZhbHVlSGVscFByb3BlcnR5IiwiYklzQWJzb2x1dGUiLCJpbmRleE9mIiwiaW5jbHVkZXMiLCJnZXRPYmplY3QiLCJwcm9wZXJ0eURhdGFNb2RlbCIsImdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyIsInVuaXRPckN1cnJlbmN5UHJvcGVydHlQYXRoIiwiZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHlQYXRoIiwidGFyZ2V0T2JqZWN0IiwiZ2V0QXNzb2NpYXRlZFVuaXRQcm9wZXJ0eVBhdGgiLCJ1bml0T3JDdXJyZW5jeURhdGFNb2RlbCIsImVuaGFuY2VEYXRhTW9kZWxQYXRoIiwiZ2V0VGFyZ2V0T2JqZWN0UGF0aCIsInNHZW5lcmF0ZWRJZCIsImdlbmVyYXRlSUQiLCJmbGV4SWQiLCJnZW5lcmF0ZSIsImdldElkIiwiZ2V0UmVsYXRpdmVQcm9wZXJ0eVBhdGgiLCJjb250ZXh0IiwiZ2V0UGF0aCIsImFEZXBlbmRlbnRzIiwic29tZSIsIm9EZXBlbmRlbnQiLCJpc1ZhbHVlSGVscFJlcXVpcmVkIiwiYkluRmlsdGVyRmllbGQiLCJvUHJvcGVydHlDb250ZXh0Iiwic1ZhbHVlSGVscFByb3BlcnR5IiwiYlJlYWRPbmx5IiwiYWxsIiwiYVJlc3VsdHMiLCJjYXRjaCIsIm9FcnJvciIsIkxvZyIsIndhcm5pbmciLCJpc011bHRpVmFsdWUiLCJvUHJvcGVydHkiLCJiSXNNdWx0aVZhbHVlIiwiZmlsdGVyRXhwcmVzc2lvbiIsInR5cGUiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkRlbGVnYXRlVXRpbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByb3BlcnR5IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcbmltcG9ydCB0eXBlIHtcblx0Q29sdW1uRXhwb3J0U2V0dGluZ3MsXG5cdEN1c3RvbUJhc2VkVGFibGVDb2x1bW4sXG5cdEV4dGVuc2lvbkZvckFuYWx5dGljcyxcblx0UHJvcGVydHlUeXBlQ29uZmlnLFxuXHRWaXN1YWxTZXR0aW5nc1xufSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vVGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQ3VzdG9tRWxlbWVudCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2hlbHBlcnMvQ29uZmlndXJhYmxlT2JqZWN0XCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoLCBnZXRUYXJnZXRPYmplY3RQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBEaXNwbGF5TW9kZSB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0Rpc3BsYXlNb2RlRm9ybWF0dGVyXCI7XG5pbXBvcnQgeyBnZXRSZWxhdGl2ZVByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5Rm9ybWF0dGVyc1wiO1xuaW1wb3J0IHsgZ2V0QXNzb2NpYXRlZEN1cnJlbmN5UHJvcGVydHlQYXRoLCBnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL1Byb3BlcnR5SGVscGVyXCI7XG5pbXBvcnQgRmllbGRIZWxwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlSUQgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9pbnRlcm5hbC92YWx1ZWhlbHAvVmFsdWVIZWxwVGVtcGxhdGluZ1wiO1xuaW1wb3J0IHR5cGUgVUk1RWxlbWVudCBmcm9tIFwic2FwL3VpL2NvcmUvRWxlbWVudFwiO1xuaW1wb3J0IHR5cGUgTW9kZWwgZnJvbSBcInNhcC91aS9tb2RlbC9Nb2RlbFwiO1xuXG5jb25zdCBOU19NQUNST0RBVEEgPSBcImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIjtcblxuZXhwb3J0IHR5cGUgdGFibGVEZWxlZ2F0ZU1vZGVsID0ge1xuXHRlbmFibGVBdXRvQ29sdW1uV2lkdGg6IGJvb2xlYW47XG5cdGlzT3B0aW1pemVkRm9yU21hbGxEZXZpY2U6IGJvb2xlYW47XG5cdHJlYWRPbmx5OiBib29sZWFuO1xuXHRjb2x1bW5FZGl0TW9kZTogc3RyaW5nO1xuXHR0YWJsZVR5cGU6IHN0cmluZztcblx0b25DaGFuZ2U6IEZ1bmN0aW9uO1xuXHRpZDogc3RyaW5nO1xuXHRuYXZpZ2F0aW9uUHJvcGVydHlQYXRoOiBzdHJpbmc7XG5cdGNvbHVtbkluZm86IEN1c3RvbUVsZW1lbnQ8Q3VzdG9tQmFzZWRUYWJsZUNvbHVtbj47XG5cdGNvbGxlY3Rpb246IHtcblx0XHRzUGF0aDogc3RyaW5nO1xuXHRcdG9Nb2RlbDogc3RyaW5nO1xuXHR9O1xuXHR3aWR0aEluY2x1ZGluZ0NvbHVtbkhlYWRlcjogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5SW5mbyA9IHtcblx0YWRkaXRpb25hbExhYmVscz86IHN0cmluZ1tdO1xuXHRjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcblx0ZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cdGRlc2NyaXB0aW9uUHJvcGVydHk/OiBzdHJpbmc7XG5cdGV4cG9ydFNldHRpbmdzPzogQ29sdW1uRXhwb3J0U2V0dGluZ3MgfCBudWxsO1xuXHRmaWx0ZXJhYmxlPzogYm9vbGVhbjtcblx0Z3JvdXA/OiBzdHJpbmc7XG5cdGdyb3VwYWJsZT86IGJvb2xlYW47XG5cdGdyb3VwTGFiZWw/OiBzdHJpbmc7XG5cdGtleT86IGJvb2xlYW47XG5cdGxhYmVsPzogc3RyaW5nO1xuXHRtYXhDb25kaXRpb25zPzogbnVtYmVyO1xuXHRtZXRhZGF0YVBhdGg/OiBzdHJpbmc7XG5cdG1vZGU/OiBEaXNwbGF5TW9kZTtcblx0bmFtZTogc3RyaW5nO1xuXHRwYXRoPzogc3RyaW5nO1xuXHRwcm9wZXJ0eUluZm9zPzogc3RyaW5nW107XG5cdHJlbGF0aXZlUGF0aD86IHN0cmluZztcblx0c29ydGFibGU/OiBib29sZWFuO1xuXHRzb3J0RGlyZWN0aW9uPzogc3RyaW5nO1xuXHR0ZXh0Pzogc3RyaW5nO1xuXHR0b29sdGlwPzogc3RyaW5nO1xuXHR0eXBlQ29uZmlnPzogUHJvcGVydHlUeXBlQ29uZmlnO1xuXHR0eXBlPzogc3RyaW5nO1xuXHR1bml0Pzogc3RyaW5nO1xuXHR2YWx1ZVByb3BlcnR5Pzogc3RyaW5nO1xuXHR2aXNpYmxlOiBib29sZWFuO1xuXHR2aXN1YWxTZXR0aW5ncz86IFZpc3VhbFNldHRpbmdzO1xuXHRleHBvcnREYXRhUG9pbnRUYXJnZXRWYWx1ZT86IHN0cmluZztcblx0aXNQYXJhbWV0ZXI/OiBib29sZWFuO1xuXHRhZ2dyZWdhdGFibGU/OiBib29sZWFuO1xuXHRleHRlbnNpb24/OiBFeHRlbnNpb25Gb3JBbmFseXRpY3M7XG5cdHJlcXVpcmVkPzogYm9vbGVhbjtcblx0YW5ub3RhdGlvblBhdGg/OiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBfcmV0cmlldmVNb2RlbCh0aGlzOiB7IG1vZGVsTmFtZTogc3RyaW5nOyBjb250cm9sOiBhbnk7IHJlc29sdmU6IEZ1bmN0aW9uIH0pIHtcblx0dGhpcy5jb250cm9sLmRldGFjaE1vZGVsQ29udGV4dENoYW5nZShfcmV0cmlldmVNb2RlbCwgdGhpcyk7XG5cdGNvbnN0IHNNb2RlbE5hbWUgPSB0aGlzLm1vZGVsTmFtZSxcblx0XHRvTW9kZWwgPSB0aGlzLmNvbnRyb2wuZ2V0TW9kZWwoc01vZGVsTmFtZSk7XG5cblx0aWYgKG9Nb2RlbCkge1xuXHRcdHRoaXMucmVzb2x2ZShvTW9kZWwpO1xuXHR9IGVsc2Uge1xuXHRcdHRoaXMuY29udHJvbC5hdHRhY2hNb2RlbENvbnRleHRDaGFuZ2UoX3JldHJpZXZlTW9kZWwsIHRoaXMpO1xuXHR9XG59XG5hc3luYyBmdW5jdGlvbiBnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyKG9Db250cm9sOiBhbnksIHNQcm9wZXJ0eTogYW55LCBvTW9kaWZpZXI6IGFueSkge1xuXHRjb25zdCBhQ3VzdG9tRGF0YTogYW55W10gPSBbXTtcblxuXHRjb25zdCBhUmV0cmlldmVkQ3VzdG9tRGF0YSA9IGF3YWl0IFByb21pc2UucmVzb2x2ZSgpLnRoZW4oXG5cdFx0b01vZGlmaWVyLmdldEFnZ3JlZ2F0aW9uLmJpbmQob01vZGlmaWVyLCBvQ29udHJvbCwgXCJjdXN0b21EYXRhXCIpIGFzICgpID0+IGFueVtdXG5cdCk7XG5cblx0Y29uc3Qgb1Byb21pc2UgPSBhUmV0cmlldmVkQ3VzdG9tRGF0YS5yZWR1Y2UoKG9QcmV2aW91c1Byb21pc2U6IFByb21pc2U8dm9pZD4sIG9DdXN0b21EYXRhKSA9PiB7XG5cdFx0cmV0dXJuIG9QcmV2aW91c1Byb21pc2UudGhlbihvTW9kaWZpZXIuZ2V0UHJvcGVydHkuYmluZChvTW9kaWZpZXIsIG9DdXN0b21EYXRhLCBcImtleVwiKSkudGhlbihmdW5jdGlvbiAoc0tleTogYW55KSB7XG5cdFx0XHRpZiAoc0tleSA9PT0gc1Byb3BlcnR5KSB7XG5cdFx0XHRcdGFDdXN0b21EYXRhLnB1c2gob0N1c3RvbURhdGEpO1xuXHRcdFx0fVxuXHRcdFx0cmV0dXJuO1xuXHRcdH0pO1xuXHR9LCBQcm9taXNlLnJlc29sdmUoKSk7XG5cdGF3YWl0IG9Qcm9taXNlO1xuXG5cdGlmIChhQ3VzdG9tRGF0YS5sZW5ndGggPT09IDEpIHtcblx0XHRyZXR1cm4gb01vZGlmaWVyLmdldFByb3BlcnR5KGFDdXN0b21EYXRhWzBdLCBcInZhbHVlXCIpO1xuXHR9IGVsc2Uge1xuXHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdH1cbn1cbmNvbnN0IEZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWSA9IFwic2FwX2ZlX0NvbnRyb2xEZWxlZ2F0ZV9wcm9wZXJ0eUluZm9NYXBcIjtcblxuY29uc3QgRGVsZWdhdGVVdGlsID0ge1xuXHRzZXRDYWNoZWRQcm9wZXJ0aWVzKGNvbnRyb2w6IGFueSwgZmV0Y2hlZFByb3BlcnRpZXM6IFByb3BlcnR5SW5mb1tdKSB7XG5cdFx0Ly8gZG8gbm90IGNhY2hlIGR1cmluZyB0ZW1wbGF0aW5nLCBlbHNlIGl0IGJlY29tZXMgcGFydCBvZiB0aGUgY2FjaGVkIHZpZXdcblx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IGtleSA9IEZFVENIRURfUFJPUEVSVElFU19EQVRBX0tFWTtcblx0XHREZWxlZ2F0ZVV0aWwuc2V0Q3VzdG9tRGF0YShjb250cm9sLCBrZXksIGZldGNoZWRQcm9wZXJ0aWVzKTtcblx0fSxcblx0Z2V0Q2FjaGVkUHJvcGVydGllcyhjb250cm9sOiBhbnkpOiBQcm9wZXJ0eUluZm9bXSB8IG51bGwge1xuXHRcdC8vIHByb3BlcnRpZXMgYXJlIG5vdCBjYWNoZWQgZHVyaW5nIHRlbXBsYXRpbmdcblx0XHRpZiAoY29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cdFx0Y29uc3Qga2V5ID0gRkVUQ0hFRF9QUk9QRVJUSUVTX0RBVEFfS0VZO1xuXHRcdHJldHVybiBEZWxlZ2F0ZVV0aWwuZ2V0Q3VzdG9tRGF0YShjb250cm9sLCBrZXkpO1xuXHR9LFxuXG5cdGdldEN1c3RvbURhdGEob0NvbnRyb2w6IGFueSwgc1Byb3BlcnR5OiBhbnksIG9Nb2RpZmllcj86IGFueSkge1xuXHRcdC8vIElmIE1vZGlmaWVyIGlzIGdpdmVuLCB0aGUgbWV0aG9kIG11c3QgZXhlY3V0ZSBhc3luY2hyb25vdXNseSBhbmQgcmV0dXJuIGEgUHJvbWlzZVxuXHRcdGlmIChvTW9kaWZpZXIpIHtcblx0XHRcdHJldHVybiBnZXRDdXN0b21EYXRhV2l0aE1vZGlmaWVyKG9Db250cm9sLCBzUHJvcGVydHksIG9Nb2RpZmllcik7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIERlbGVnYXRlIGludm9rZWQgZnJvbSBhIG5vbi1mbGV4IGNoYW5nZSAtIEZpbHRlckJhckRlbGVnYXRlLl9hZGRQMTNuSXRlbSBmb3IgT1AgdGFibGUgZmlsdGVyaW5nLCBGaWx0ZXJCYXJEZWxlZ2F0ZS5mZXRjaFByb3BlcnRpZXMgZXRjLlxuXHRcdFx0aWYgKG9Db250cm9sICYmIHNQcm9wZXJ0eSkge1xuXHRcdFx0XHRpZiAob0NvbnRyb2wgaW5zdGFuY2VvZiB3aW5kb3cuRWxlbWVudCkge1xuXHRcdFx0XHRcdHJldHVybiBvQ29udHJvbC5nZXRBdHRyaWJ1dGVOUyhOU19NQUNST0RBVEEsIHNQcm9wZXJ0eSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Db250cm9sLmRhdGEgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuXHRcdFx0XHRcdHJldHVybiBvQ29udHJvbC5kYXRhKHNQcm9wZXJ0eSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB1bmRlZmluZWQ7XG5cdFx0fVxuXHR9LFxuXHRzZXRDdXN0b21EYXRhKG9Db250cm9sOiBhbnksIHNQcm9wZXJ0eTogYW55LCB2VmFsdWU6IGFueSkge1xuXHRcdGlmIChvQ29udHJvbCAmJiBzUHJvcGVydHkpIHtcblx0XHRcdGlmIChvQ29udHJvbCBpbnN0YW5jZW9mIHdpbmRvdy5FbGVtZW50KSB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbC5zZXRBdHRyaWJ1dGVOUyhOU19NQUNST0RBVEEsIGBjdXN0b21EYXRhOiR7c1Byb3BlcnR5fWAsIHZWYWx1ZSk7XG5cdFx0XHR9XG5cdFx0XHRpZiAob0NvbnRyb2wuZGF0YSBpbnN0YW5jZW9mIEZ1bmN0aW9uKSB7XG5cdFx0XHRcdHJldHVybiBvQ29udHJvbC5kYXRhKHNQcm9wZXJ0eSwgdlZhbHVlKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdGZldGNoUHJvcGVydGllc0ZvckVudGl0eShzRW50aXR5U2V0OiBhbnksIG9NZXRhTW9kZWw6IGFueSkge1xuXHRcdHJldHVybiBvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c0VudGl0eVNldH0vYCk7XG5cdH0sXG5cdGZldGNoQW5ub3RhdGlvbnNGb3JFbnRpdHkoc0VudGl0eVNldDogYW55LCBvTWV0YU1vZGVsOiBhbnkpIHtcblx0XHRyZXR1cm4gb01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NFbnRpdHlTZXR9QGApO1xuXHR9LFxuXHRmZXRjaE1vZGVsKG9Db250cm9sOiBhbnkpOiBQcm9taXNlPE1vZGVsPiB7XG5cdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG5cdFx0XHRjb25zdCBzTW9kZWxOYW1lID0gb0NvbnRyb2wuZ2V0RGVsZWdhdGUoKS5wYXlsb2FkICYmIG9Db250cm9sLmdldERlbGVnYXRlKCkucGF5bG9hZC5tb2RlbE5hbWUsXG5cdFx0XHRcdG9Db250ZXh0ID0geyBtb2RlbE5hbWU6IHNNb2RlbE5hbWUsIGNvbnRyb2w6IG9Db250cm9sLCByZXNvbHZlOiByZXNvbHZlIH07XG5cdFx0XHRfcmV0cmlldmVNb2RlbC5jYWxsKG9Db250ZXh0KTtcblx0XHR9KTtcblx0fSxcblx0dGVtcGxhdGVDb250cm9sRnJhZ21lbnQoc0ZyYWdtZW50TmFtZTogYW55LCBvUHJlcHJvY2Vzc29yU2V0dGluZ3M6IGFueSwgb09wdGlvbnM6IGFueSwgb01vZGlmaWVyPzogYW55KSB7XG5cdFx0cmV0dXJuIENvbW1vblV0aWxzLnRlbXBsYXRlQ29udHJvbEZyYWdtZW50KHNGcmFnbWVudE5hbWUsIG9QcmVwcm9jZXNzb3JTZXR0aW5ncywgb09wdGlvbnMsIG9Nb2RpZmllcik7XG5cdH0sXG5cdGRvZXNWYWx1ZUhlbHBFeGlzdChtUGFyYW1ldGVyczogYW55KSB7XG5cdFx0Y29uc3Qgc1Byb3BlcnR5TmFtZSA9IG1QYXJhbWV0ZXJzLnNQcm9wZXJ0eU5hbWUgfHwgXCJcIjtcblx0XHRjb25zdCBzVmFsdWVIZWxwVHlwZSA9IG1QYXJhbWV0ZXJzLnNWYWx1ZUhlbHBUeXBlIHx8IFwiXCI7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWw7XG5cdFx0Y29uc3Qgb01vZGlmaWVyID0gbVBhcmFtZXRlcnMub01vZGlmaWVyO1xuXHRcdGNvbnN0IHNPcmlnaW5hbFByb3BlcnR5ID0gYCR7bVBhcmFtZXRlcnMuc0JpbmRpbmdQYXRofS8ke3NQcm9wZXJ0eU5hbWV9YDtcblx0XHRjb25zdCBwcm9wZXJ0eUNvbnRleHQgPSBvTWV0YU1vZGVsLmNyZWF0ZUJpbmRpbmdDb250ZXh0KHNPcmlnaW5hbFByb3BlcnR5KTtcblx0XHRsZXQgdmFsdWVIZWxwUHJvcGVydHlQYXRoID0gRmllbGRIZWxwZXIudmFsdWVIZWxwUHJvcGVydHkocHJvcGVydHlDb250ZXh0KTtcblx0XHRjb25zdCBiSXNBYnNvbHV0ZSA9IG1QYXJhbWV0ZXJzLnNCaW5kaW5nUGF0aCAmJiBtUGFyYW1ldGVycy5zQmluZGluZ1BhdGguaW5kZXhPZihcIi9cIikgPT09IDA7XG5cblx0XHQvLyB1bml0L2N1cnJlbmN5XG5cdFx0aWYgKHZhbHVlSGVscFByb3BlcnR5UGF0aC5pbmNsdWRlcyhcIiRQYXRoXCIpKSB7XG5cdFx0XHR2YWx1ZUhlbHBQcm9wZXJ0eVBhdGggPSBvTWV0YU1vZGVsLmdldE9iamVjdCh2YWx1ZUhlbHBQcm9wZXJ0eVBhdGgpO1xuXHRcdH1cblx0XHRpZiAoYklzQWJzb2x1dGUgJiYgdmFsdWVIZWxwUHJvcGVydHlQYXRoLmluZGV4T2YoXCIvXCIpICE9PSAwKSB7XG5cdFx0XHRjb25zdCBwcm9wZXJ0eURhdGFNb2RlbCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyhwcm9wZXJ0eUNvbnRleHQpO1xuXHRcdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lQcm9wZXJ0eVBhdGggPVxuXHRcdFx0XHRnZXRBc3NvY2lhdGVkQ3VycmVuY3lQcm9wZXJ0eVBhdGgocHJvcGVydHlEYXRhTW9kZWwudGFyZ2V0T2JqZWN0IGFzIFByb3BlcnR5KSB8fFxuXHRcdFx0XHRnZXRBc3NvY2lhdGVkVW5pdFByb3BlcnR5UGF0aChwcm9wZXJ0eURhdGFNb2RlbC50YXJnZXRPYmplY3QgYXMgUHJvcGVydHkpO1xuXHRcdFx0Y29uc3QgdW5pdE9yQ3VycmVuY3lEYXRhTW9kZWwgPSBlbmhhbmNlRGF0YU1vZGVsUGF0aChwcm9wZXJ0eURhdGFNb2RlbCwgdW5pdE9yQ3VycmVuY3lQcm9wZXJ0eVBhdGgpO1xuXHRcdFx0dmFsdWVIZWxwUHJvcGVydHlQYXRoID0gZ2V0VGFyZ2V0T2JqZWN0UGF0aCh1bml0T3JDdXJyZW5jeURhdGFNb2RlbCk7XG5cdFx0fVxuXG5cdFx0Y29uc3Qgc0dlbmVyYXRlZElkID0gZ2VuZXJhdGVJRChcblx0XHRcdG1QYXJhbWV0ZXJzLmZsZXhJZCxcblx0XHRcdGdlbmVyYXRlKFtvTW9kaWZpZXIgPyBvTW9kaWZpZXIuZ2V0SWQobVBhcmFtZXRlcnMub0NvbnRyb2wpIDogbVBhcmFtZXRlcnMub0NvbnRyb2wuZ2V0SWQoKSwgc1ZhbHVlSGVscFR5cGVdKSxcblx0XHRcdGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHByb3BlcnR5Q29udGV4dC5nZXRQcm9wZXJ0eShzT3JpZ2luYWxQcm9wZXJ0eSksIHtcblx0XHRcdFx0Y29udGV4dDoge1xuXHRcdFx0XHRcdGdldE1vZGVsOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbVBhcmFtZXRlcnMub01ldGFNb2RlbDtcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGdldFBhdGg6ICgpID0+IHtcblx0XHRcdFx0XHRcdHJldHVybiBzT3JpZ2luYWxQcm9wZXJ0eTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gYXMgYW55XG5cdFx0XHR9KSxcblx0XHRcdGdldFJlbGF0aXZlUHJvcGVydHlQYXRoKHByb3BlcnR5Q29udGV4dC5nZXRQcm9wZXJ0eSh2YWx1ZUhlbHBQcm9wZXJ0eVBhdGgpLCB7XG5cdFx0XHRcdGNvbnRleHQ6IHtcblx0XHRcdFx0XHRnZXRNb2RlbDogKCkgPT4ge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWw7XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRnZXRQYXRoOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdmFsdWVIZWxwUHJvcGVydHlQYXRoO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBhcyBhbnlcblx0XHRcdH0pXG5cdFx0KTtcblxuXHRcdHJldHVybiBQcm9taXNlLnJlc29sdmUoKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRpZiAob01vZGlmaWVyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG9Nb2RpZmllci5nZXRBZ2dyZWdhdGlvbihtUGFyYW1ldGVycy5vQ29udHJvbCwgXCJkZXBlbmRlbnRzXCIpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdHJldHVybiBtUGFyYW1ldGVycy5vQ29udHJvbC5nZXRBZ2dyZWdhdGlvbihcImRlcGVuZGVudHNcIik7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFEZXBlbmRlbnRzOiBhbnkpIHtcblx0XHRcdFx0cmV0dXJuIChcblx0XHRcdFx0XHRhRGVwZW5kZW50cyAmJlxuXHRcdFx0XHRcdGFEZXBlbmRlbnRzLnNvbWUoZnVuY3Rpb24gKG9EZXBlbmRlbnQ6IFVJNUVsZW1lbnQpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvTW9kaWZpZXIgPyBvTW9kaWZpZXIuZ2V0SWQob0RlcGVuZGVudCkgPT09IHNHZW5lcmF0ZWRJZCA6IG9EZXBlbmRlbnQuZ2V0SWQoKSA9PT0gc0dlbmVyYXRlZElkO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdCk7XG5cdFx0XHR9KTtcblx0fSxcblx0aXNWYWx1ZUhlbHBSZXF1aXJlZChtUGFyYW1ldGVyczogYW55LCBiSW5GaWx0ZXJGaWVsZD86IGJvb2xlYW4pIHtcblx0XHRjb25zdCBzUHJvcGVydHlOYW1lID0gbVBhcmFtZXRlcnMuc1Byb3BlcnR5TmFtZSB8fCBcIlwiLFxuXHRcdFx0b01ldGFNb2RlbCA9IG1QYXJhbWV0ZXJzLm9NZXRhTW9kZWwsXG5cdFx0XHRzUHJvcGVydHkgPSBgJHttUGFyYW1ldGVycy5zQmluZGluZ1BhdGh9LyR7c1Byb3BlcnR5TmFtZX1gLFxuXHRcdFx0b1Byb3BlcnR5Q29udGV4dCA9IG9NZXRhTW9kZWwuY3JlYXRlQmluZGluZ0NvbnRleHQoc1Byb3BlcnR5KSxcblx0XHRcdHNWYWx1ZUhlbHBQcm9wZXJ0eSA9IEZpZWxkSGVscGVyLnZhbHVlSGVscFByb3BlcnR5KG9Qcm9wZXJ0eUNvbnRleHQsIGJJbkZpbHRlckZpZWxkKTtcblxuXHRcdHJldHVybiB0aGlzLmdldEN1c3RvbURhdGEobVBhcmFtZXRlcnMub0NvbnRyb2wsIFwiZGlzcGxheU1vZGVQcm9wZXJ0eUJpbmRpbmdcIiwgbVBhcmFtZXRlcnMub01vZGlmaWVyKVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGJSZWFkT25seTogYW55KSB7XG5cdFx0XHRcdC8vIENoZWNrIHdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgcmVhZC1vbmx5LiBJZiB5ZXMsIG5vIG5lZWQgb2YgYSB2YWx1ZSBoZWxwLlxuXHRcdFx0XHRiUmVhZE9ubHkgPSB0eXBlb2YgYlJlYWRPbmx5ID09PSBcImJvb2xlYW5cIiA/IGJSZWFkT25seSA6IGJSZWFkT25seSA9PT0gXCJ0cnVlXCI7XG5cdFx0XHRcdGlmIChiUmVhZE9ubHkpIHtcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gRWxzZSwgY2hlY2sgd2hldGhlciBWYWx1ZSBIZWxwIHJlbGV2YW50IGFubm90YXRpb24gZXhpc3RzIGZvciB0aGUgcHJvcGVydHkuXG5cdFx0XHRcdC8vIFRPRE8gdXNlIFByb3BlcnR5Rm9ybWF0dGVyLmhhc1ZhbHVlSGVscCAoKSA9PiBpZiBkb2luZyBzbywgUVVuaXQgdGVzdHMgZmFpbCBkdWUgdG8gbW9ja2VkIG1vZGVsIGltcGxlbWVudGF0aW9uXG5cdFx0XHRcdHJldHVybiBQcm9taXNlLmFsbChbXG5cdFx0XHRcdFx0b01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NWYWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdFdpdGhGaXhlZFZhbHVlc2ApLFxuXHRcdFx0XHRcdG9NZXRhTW9kZWwucmVxdWVzdE9iamVjdChgJHtzVmFsdWVIZWxwUHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5WYWx1ZUxpc3RSZWZlcmVuY2VzYCksXG5cdFx0XHRcdFx0b01ldGFNb2RlbC5yZXF1ZXN0T2JqZWN0KGAke3NWYWx1ZUhlbHBQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlZhbHVlTGlzdE1hcHBpbmdgKSxcblx0XHRcdFx0XHRvTWV0YU1vZGVsLnJlcXVlc3RPYmplY3QoYCR7c1ZhbHVlSGVscFByb3BlcnR5fUBjb20uc2FwLnZvY2FidWxhcmllcy5Db21tb24udjEuVmFsdWVMaXN0YClcblx0XHRcdFx0XSk7XG5cdFx0XHR9KVxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFSZXN1bHRzOiBhbnlbXSkge1xuXHRcdFx0XHRyZXR1cm4gISFhUmVzdWx0c1swXSB8fCAhIWFSZXN1bHRzWzFdIHx8ICEhYVJlc3VsdHNbMl0gfHwgISFhUmVzdWx0c1szXTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdExvZy53YXJuaW5nKFwiRXJyb3Igd2hpbGUgcmV0cmlldmluZyBjdXN0b20gZGF0YSAvIHZhbHVlIGxpc3QgYW5ub3RhdGlvbiB2YWx1ZXNcIiwgb0Vycm9yKTtcblx0XHRcdH0pO1xuXHR9LFxuXHRpc011bHRpVmFsdWUob1Byb3BlcnR5OiBhbnkpIHtcblx0XHRsZXQgYklzTXVsdGlWYWx1ZSA9IHRydWU7XG5cdFx0Ly9TaW5nbGVWYWx1ZSB8IE11bHRpVmFsdWUgfCBTaW5nbGVSYW5nZSB8IE11bHRpUmFuZ2UgfCBTZWFyY2hFeHByZXNzaW9uIHwgTXVsdGlSYW5nZU9yU2VhcmNoRXhwcmVzc2lvblxuXHRcdHN3aXRjaCAob1Byb3BlcnR5LmZpbHRlckV4cHJlc3Npb24pIHtcblx0XHRcdGNhc2UgXCJTZWFyY2hFeHByZXNzaW9uXCI6XG5cdFx0XHRjYXNlIFwiU2luZ2xlUmFuZ2VcIjpcblx0XHRcdGNhc2UgXCJTaW5nbGVWYWx1ZVwiOlxuXHRcdFx0XHRiSXNNdWx0aVZhbHVlID0gZmFsc2U7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0YnJlYWs7XG5cdFx0fVxuXHRcdGlmIChvUHJvcGVydHkudHlwZSAmJiBvUHJvcGVydHkudHlwZS5pbmRleE9mKFwiQm9vbGVhblwiKSA+IDApIHtcblx0XHRcdGJJc011bHRpVmFsdWUgPSBmYWxzZTtcblx0XHR9XG5cdFx0cmV0dXJuIGJJc011bHRpVmFsdWU7XG5cdH1cbn07XG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZVV0aWw7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7OztFQXNCQSxNQUFNQSxZQUFZLEdBQUcsa0VBQWtFO0VBd0R2RixTQUFTQyxjQUFjLEdBQStEO0lBQ3JGLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyx3QkFBd0IsQ0FBQ0YsY0FBYyxFQUFFLElBQUksQ0FBQztJQUMzRCxNQUFNRyxVQUFVLEdBQUcsSUFB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
@@ -72,6 +72,8 @@ export type PropertyInfo = {
72
72
  isParameter?: boolean;
73
73
  aggregatable?: boolean;
74
74
  extension?: ExtensionForAnalytics;
75
+ required?: boolean;
76
+ annotationPath?: string;
75
77
  };
76
78
 
77
79
  function _retrieveModel(this: { modelName: string; control: any; resolve: Function }) {
@@ -555,6 +555,10 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
555
555
  headerParameterAccept.setName("Accept");
556
556
  headerParameterAccept.setValue("application/json");
557
557
  fileUploader.addHeaderParameter(headerParameterAccept);
558
+ const headerParameterContentType = new FileUploaderParameter();
559
+ headerParameterContentType.setName("Content-Type");
560
+ headerParameterContentType.setValue("application/octet-stream");
561
+ fileUploader.addHeaderParameter(headerParameterContentType);
558
562
 
559
563
  // synchronize upload with other requests
560
564
  const uploadPromise = new Promise((resolve, reject) => {
@@ -824,4 +828,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/CommonUtils", "sap/fe/core/controlle
824
828
  */
825
829
  return FieldRuntime;
826
830
  }, true);
827
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb2xsYWJvcmF0aW9uQmluZGluZyIsImZpZWxkIiwiYmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZyIsImlzQSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiRmllbGRSdW50aW1lIiwidXBsb2FkUHJvbWlzZXMiLCJ1bmRlZmluZWQiLCJjcmVhdGluZ0luYWN0aXZlUm93Iiwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgiLCJvU291cmNlIiwib0NvbnRyb2xsZXIiLCJzTmF2UGF0aCIsIl9yb3V0aW5nIiwib0JpbmRpbmdDb250ZXh0Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZm5OYXZpZ2F0ZSIsIm9Db250ZXh0IiwibmF2aWdhdGVUb1RhcmdldCIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZHJhZnQiLCJwcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbiIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiZ2V0Q29udHJvbGxlciIsIk5hdmlnYXRpb25UeXBlIiwiRm9yd2FyZE5hdmlnYXRpb24iLCJMb2ciLCJlcnJvciIsImlzRHJhZnRJbmRpY2F0b3JWaXNpYmxlIiwic1Byb3BlcnR5UGF0aCIsInNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yIiwiSGFzRHJhZnRFbnRpdHkiLCJJc0FjdGl2ZUVudGl0eSIsImhpZGVEcmFmdEluZm8iLCJvblZhbGlkYXRlRmllbGRHcm91cCIsIm9FdmVudCIsIm9GRUNvbnRyb2xsZXIiLCJfZ2V0RXh0ZW5zaW9uQ29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJfZmV0Y2hSZWNvbW1lbmRhdGlvbnMiLCJjb250cm9sbGVyIiwidmlldyIsImZpZWxkQmluZGluZ0NvbnRleHQiLCJyZWNvbW1lbmRhdGlvbnNDb250ZXh0IiwiZmllbGRCaW5kaW5nIiwiZmVDb250cm9sbGVyIiwidmFsdWVIZWxwSWQiLCJnZXRWYWx1ZUhlbHAiLCJpbmNsdWRlcyIsInRhYmxlSWQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwidGFibGUiLCJieUlkIiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRQYXJlbnQiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwicmVjb21tZW5kYXRpb25zIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UiLCJjb250ZXh0IiwiaGFuZGxlQ2hhbmdlIiwib1NvdXJjZUZpZWxkIiwiZ2V0U291cmNlIiwiYklzVHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJwVmFsdWVSZXNvbHZlZCIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiYlZhbGlkIiwiZmllbGRWYWxpZGl0eSIsImdldEZpZWxkU3RhdGVPbkNoYW5nZSIsInN0YXRlIiwidGhlbiIsIm1QYXJhbWV0ZXJzIiwidmFsaWQiLCJGaWVsZEFQSSIsImhhbmRsZUZpZWxkQ2hhbmdlIiwiY2F0Y2giLCJkZWJ1ZyIsInZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQiLCJzZXRUaW1lb3V0IiwiZWRpdEZsb3ciLCJzeW5jVGFzayIsInByZXBhcmVEZWZlcnJlZFNpZGVFZmZlY3RzRm9yRmllbGQiLCJiQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jIiwiaXNDb25uZWN0ZWQiLCJkYXRhIiwiZ2V0QmluZGluZ0luZm8iLCJwYXJ0cyIsImZpbHRlciIsInBhcnQiLCJwYXRoIiwibWFwIiwiZ2V0UGF0aCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVDb2xsYWJvcmF0aW9uIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJjb250ZW50IiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJoYW5kbGVMaXZlQ2hhbmdlIiwiZXZlbnQiLCJfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyIiwiZmlsZVVwbG9hZGVyIiwiYmluZGluZ1BhdGgiLCJnZXRQcm9wZXJ0eSIsImZ1bGxQYXRoIiwiaGFuZGxlT3BlblVwbG9hZGVyIiwiTG9jayIsImhhbmRsZUNsb3NlVXBsb2FkZXIiLCJVbmxvY2siLCJtRmllbGRTdGF0ZSIsIl9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzIiwib0JpbmRpbmciLCJnZXREYXRhU3RhdGUiLCJnZXRJbnZhbGlkVmFsdWUiLCJnZXRDb250ZW50IiwiRmllbGRXcmFwcGVyIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZ2V0RWRpdE1vZGUiLCJnZXRDb250ZW50RWRpdCIsImJJc1ZhbGlkIiwiZ2V0TWF4Q29uZGl0aW9ucyIsIm9WYWx1ZUJpbmRpbmdJbmZvIiwiZ2V0VmFsdWUiLCJmaWVsZFZhbHVlIiwidmFsaWRpdHkiLCJfZm5GaXhIYXNoUXVlcnlTdHJpbmciLCJzQ3VycmVudEhhc2giLCJzcGxpdCIsIl9mbkdldExpbmtJbmZvcm1hdGlvbiIsIl9vU291cmNlIiwiX29MaW5rIiwiX3NQcm9wZXJ0eVBhdGgiLCJfc1ZhbHVlIiwiZm5TZXRBY3RpdmUiLCJvTW9kZWwiLCJzU2VtYW50aWNPYmplY3ROYW1lIiwib0ludGVybmFsTW9kZWxDb250ZXh0Iiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9TaGVsbFNlcnZpY2VIZWxwZXIiLCJnZXRTaGVsbFNlcnZpY2VzIiwicEdldExpbmtzUHJvbWlzZSIsImdldExpbmtzV2l0aENhY2hlIiwic2VtYW50aWNPYmplY3QiLCJhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMiLCJnZXRPYmplY3QiLCJTZW1hbnRpY09iamVjdE5hbWUiLCJTZW1hbnRpY09iamVjdEZ1bGxQYXRoIiwiTWV0YU1vZGVsIiwiSW50ZXJuYWxNb2RlbENvbnRleHQiLCJTaGVsbFNlcnZpY2VIZWxwZXIiLCJHZXRMaW5rc1Byb21pc2UiLCJTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsIl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbiIsIm9TZW1hbnRpY09iamVjdFBheWxvYWQiLCJfb0xpbmtJbmZvIiwiYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9vRmluYWxTZW1hbnRpY09iamVjdHMiLCJzVG1wUGF0aCIsImFTZW1hbnRpY09iamVjdFBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsImlQYXRoc0NvdW50IiwiX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwiLCJzVmFsdWUiLCJvQ29udHJvbCIsImJBY3RpdmUiLCJzZXRBY3RpdmUiLCJzZXRUaXRsZUFjdGl2ZSIsIm9Db25kaXRpb25hbFdyYXBwZXIiLCJzZXRDb25kaXRpb24iLCJvTGlua0luZm8iLCJnZXRIYXNoIiwidXBkYXRlU2VtYW50aWNUYXJnZXRzIiwib0ZpbmFsU2VtYW50aWNPYmplY3RzIiwib0Vycm9yIiwiX2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQiLCJfY29udHJvbCIsIl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbCIsInByb3BlcnR5UGF0aCIsImFDdXN0b21EYXRhIiwic1NlbWFudGljT2JqZWN0UGF0aFZhbHVlIiwib1ZhbHVlQmluZGluZyIsIl9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nIiwic2VtYW50aWNPYmplY3RQYXRoVmFsdWUiLCJjdXN0b21EYXRhIiwiZ2V0S2V5IiwiaW5kZXgiLCJfb0NoYW5nZUV2ZW50IiwiTGlua01vZGVsQ29udGV4dENoYW5nZSIsInNQcm9wZXJ0eSIsInNQYXRoVG9Qcm9wZXJ0eSIsImNvbnRyb2wiLCJtZGNMaW5rIiwiZ2V0RGVwZW5kZW50cyIsImxlbmd0aCIsImdldEN1c3RvbURhdGEiLCJvcGVuRXh0ZXJuYWxMaW5rIiwic291cmNlIiwib3BlbldpbmRvdyIsImNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzIiwibWRjTGlua0lkIiwiZ2V0SWQiLCJpbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyIsInRpdGxlIiwiZ2V0UmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJkZXNjcmlwdGlvbiIsImVuYWJsZUZvcm1hdHRlZFRleHQiLCJpbGx1c3RyYXRpb25TaXplIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJUZW50IiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwicG9wb3ZlclNldHRpbmdzIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInNob3dIZWFkZXIiLCJEZXZpY2UiLCJzeXN0ZW0iLCJwaG9uZSIsInBsYWNlbWVudCIsIm1vYmlsZWxpYnJhcnkiLCJQbGFjZW1lbnRUeXBlIiwiQXV0byIsImFmdGVyQ2xvc2UiLCJkZXN0cm95IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJvcGVuTGluayIsInNhcG1MaW5rIiwiaFJlZiIsImdldFRyaWdnZXJIcmVmIiwibGlua0l0ZW1zIiwicmV0cmlldmVMaW5rSXRlbXMiLCJnZXRQYXlsb2FkIiwiaGFzUXVpY2tWaWV3RmFjZXRzIiwicG9wb3ZlciIsImFkZERlcGVuZGVudCIsIm9wZW5CeSIsIm9wZW4iLCJhcHBDb21wb25lbnQiLCJzaGVsbFNlcnZpY2UiLCJzaGVsbEhhc2giLCJwYXJzZVNoZWxsSGFzaCIsIm5hdkFyZ3MiLCJ0YXJnZXQiLCJwYXJhbXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwiaXNTdGlja3lFZGl0TW9kZSIsInRvRXh0ZXJuYWwiLCJuZXdIcmVmIiwiaHJlZkZvckV4dGVybmFsQXN5bmMiLCJwcmVzc0xpbmsiLCJmaW5kRWxlbWVudHMiLCJlbGVtIiwib0ZpZWxkSW5mbyIsInVwbG9hZFN0cmVhbSIsIkZFQ29udHJvbGxlciIsImZpbGVXcmFwcGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VUlCdXN5Iiwic2V0VXBsb2FkVXJsIiwicmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycyIsInRva2VuIiwiZ2V0SHR0cEhlYWRlcnMiLCJoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4iLCJGaWxlVXBsb2FkZXJQYXJhbWV0ZXIiLCJzZXROYW1lIiwic2V0VmFsdWUiLCJhZGRIZWFkZXJQYXJhbWV0ZXIiLCJlVGFnIiwiaGVhZGVyUGFyYW1ldGVyRVRhZyIsImhlYWRlclBhcmFtZXRlckFjY2VwdCIsInVwbG9hZFByb21pc2UiLCJyZWplY3QiLCJ1cGxvYWQiLCJNZXNzYWdlQm94IiwiaGFuZGxlVXBsb2FkQ29tcGxldGUiLCJwcm9wZXJ0eUZpbGVOYW1lIiwic3RhdHVzIiwiTnVtYmVyIiwiX2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkIiwibmV3RVRhZyIsImV0YWciLCJzZXRQcm9wZXJ0eSIsImF2YXRhciIsInJlZnJlc2hBdmF0YXJDYWNoZUJ1c3RpbmciLCJfY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtIiwiaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCIsIm5vdGlmaWNhdGlvbkRhdGEiLCJwdXNoIiwic0Vycm9yIiwic01lc3NhZ2VUZXh0IiwiSlNPTiIsInBhcnNlIiwibWVzc2FnZSIsImUiLCJyZW1vdmVTdHJlYW0iLCJkZWxldGVCdXR0b24iLCJnZXRJY29uRm9yTWltZVR5cGUiLCJzTWltZVR5cGUiLCJJY29uUG9vbCIsInJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3QiLCJzUHJvcGVydHlWYWx1ZSIsInNQcm9wZXJ0eUZ1bGxQYXRoIiwic0Rpc3BsYXlGb3JtYXQiLCJzVGV4dFByb3BlcnR5Iiwic1Byb3BlcnR5TmFtZSIsIkNvbW1vbkhlbHBlciIsInJlcXVlc3RWYWx1ZUxpc3RJbmZvIiwibVZhbHVlTGlzdEluZm8iLCJvVmFsdWVMaXN0SW5mbyIsIm9WYWx1ZUxpc3RNb2RlbCIsIiRtb2RlbCIsIm9NZXRhTW9kZWxWYWx1ZUxpc3QiLCJvUGFyYW1XaXRoS2V5IiwiUGFyYW1ldGVycyIsImZpbmQiLCJvUGFyYW1ldGVyIiwiTG9jYWxEYXRhUHJvcGVydHkiLCIkUHJvcGVydHlQYXRoIiwiVmFsdWVMaXN0UHJvcGVydHkiLCJFcnJvciIsIm9UZXh0QW5ub3RhdGlvbiIsIkNvbGxlY3Rpb25QYXRoIiwiJFBhdGgiLCJvRmlsdGVyIiwiRmlsdGVyIiwib3BlcmF0b3IiLCJ2YWx1ZTEiLCJvTGlzdEJpbmRpbmciLCJiaW5kTGlzdCIsIiRzZWxlY3QiLCJyZXF1ZXN0Q29udGV4dHMiLCJhQ29udGV4dHMiLCJzRGVzY3JpcHRpb24iLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwic01zZyIsImhhbmRsZVR5cGVNaXNzbWF0Y2giLCJyZXNvdXJjZU1vZGVsIiwiZGV0YWlscyIsImdldFBhcmFtZXRlcnMiLCJtaW1lVHlwZSIsImdldE1pbWVUeXBlIiwidG9TdHJpbmciLCJyZXBsYWNlQWxsIiwiY29udGVudFdpZHRoIiwiaGFuZGxlRmlsZVNpemVFeGNlZWQiLCJnZXRNYXhpbXVtRmlsZVNpemUiLCJ0b0ZpeGVkIiwiX2NvbnRyb2xsZXIiLCJzaG93Q29sbGFib3JhdGlvbkVkaXRVc2VyIiwiUmVzb3VyY2VNb2RlbEhlbHBlciIsImFkZFN0eWxlQ2xhc3MiLCJnZXRCaW5kaW5ncyIsInN0YXJ0c1dpdGgiLCJhY3Rpdml0aWVzIiwiZWRpdGluZ0FjdGl2aXR5IiwiYWN0aXZpdHkiLCJrZXkiLCJnZXRBY3Rpdml0eUtleUZyb21QYXRoIiwiZGVzdHJveUNvbnRlbnQiLCJhZGRDb250ZW50IiwiTGFiZWwiLCJ0ZXh0IiwibmFtZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmllbGRSdW50aW1lLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IENvbW1vblV0aWxzIGZyb20gXCJzYXAvZmUvY29yZS9Db21tb25VdGlsc1wiO1xuaW1wb3J0IHR5cGUgUGFnZUNvbnRyb2xsZXIgZnJvbSBcInNhcC9mZS9jb3JlL1BhZ2VDb250cm9sbGVyXCI7XG5pbXBvcnQgQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYyBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9BY3Rpdml0eVN5bmNcIjtcbmltcG9ydCB0eXBlIHsgVXNlckFjdGl2aXR5IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2NvbGxhYm9yYXRpb24vQ29sbGFib3JhdGlvbkNvbW1vblwiO1xuaW1wb3J0IHsgQWN0aXZpdHksIGdldEFjdGl2aXR5S2V5RnJvbVBhdGggfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgZHJhZnQgZnJvbSBcInNhcC9mZS9jb3JlL2NvbnRyb2xsZXJleHRlbnNpb25zL2VkaXRGbG93L2RyYWZ0XCI7XG5pbXBvcnQgdHlwZSB7IEVuaGFuY2VXaXRoVUk1IH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvQ2xhc3NTdXBwb3J0XCI7XG5pbXBvcnQgS2VlcEFsaXZlSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0tlZXBBbGl2ZUhlbHBlclwiO1xuaW1wb3J0IE1vZGVsSGVscGVyIGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01vZGVsSGVscGVyXCI7XG5pbXBvcnQgUmVzb3VyY2VNb2RlbEhlbHBlciwgeyBnZXRSZXNvdXJjZU1vZGVsIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvUmVzb3VyY2VNb2RlbEhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCBGaWVsZFdyYXBwZXIgZnJvbSBcInNhcC9mZS9tYWNyb3MvY29udHJvbHMvRmllbGRXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSBGaWxlV3JhcHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWxlV3JhcHBlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWVsZEFQSVR5cGUgfSBmcm9tIFwic2FwL2ZlL21hY3Jvcy9maWVsZC9GaWVsZEFQSVwiO1xuaW1wb3J0IEZpZWxkQVBJIGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQVBJXCI7XG5pbXBvcnQgdHlwZSBBdmF0YXIgZnJvbSBcInNhcC9tL0F2YXRhclwiO1xuaW1wb3J0IHR5cGUgQnV0dG9uIGZyb20gXCJzYXAvbS9CdXR0b25cIjtcbmltcG9ydCB0eXBlIHsgJElsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzIH0gZnJvbSBcInNhcC9tL0lsbHVzdHJhdGVkTWVzc2FnZVwiO1xuaW1wb3J0IElsbHVzdHJhdGVkTWVzc2FnZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZVwiO1xuaW1wb3J0IExhYmVsIGZyb20gXCJzYXAvbS9MYWJlbFwiO1xuaW1wb3J0IHR5cGUgTGluayBmcm9tIFwic2FwL20vTGlua1wiO1xuaW1wb3J0IE1lc3NhZ2VCb3ggZnJvbSBcInNhcC9tL01lc3NhZ2VCb3hcIjtcbmltcG9ydCB0eXBlIHsgJFJlc3BvbnNpdmVQb3BvdmVyU2V0dGluZ3MgfSBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCBSZXNwb25zaXZlUG9wb3ZlciBmcm9tIFwic2FwL20vUmVzcG9uc2l2ZVBvcG92ZXJcIjtcbmltcG9ydCBtb2JpbGVsaWJyYXJ5IGZyb20gXCJzYXAvbS9saWJyYXJ5XCI7XG5pbXBvcnQgRGV2aWNlIGZyb20gXCJzYXAvdWkvRGV2aWNlXCI7XG5pbXBvcnQgdHlwZSBFdmVudCBmcm9tIFwic2FwL3VpL2Jhc2UvRXZlbnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBDb3JlIGZyb20gXCJzYXAvdWkvY29yZS9Db3JlXCI7XG5pbXBvcnQgdHlwZSBDdXN0b21EYXRhIGZyb20gXCJzYXAvdWkvY29yZS9DdXN0b21EYXRhXCI7XG5pbXBvcnQgdHlwZSBFbGVtZW50IGZyb20gXCJzYXAvdWkvY29yZS9FbGVtZW50XCI7XG5pbXBvcnQgSWNvblBvb2wgZnJvbSBcInNhcC91aS9jb3JlL0ljb25Qb29sXCI7XG5pbXBvcnQgdHlwZSBDb250cm9sbGVyIGZyb20gXCJzYXAvdWkvY29yZS9tdmMvQ29udHJvbGxlclwiO1xuaW1wb3J0IHR5cGUgVmlldyBmcm9tIFwic2FwL3VpL2NvcmUvbXZjL1ZpZXdcIjtcbmltcG9ydCB0eXBlIEZpZWxkIGZyb20gXCJzYXAvdWkvbWRjL0ZpZWxkXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkJENoYW5nZUV2ZW50IH0gZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgZGVmYXVsdCBhcyBNZGNMaW5rIH0gZnJvbSBcInNhcC91aS9tZGMvTGlua1wiO1xuaW1wb3J0IHR5cGUgQ29tcG9zaXRlQmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL0NvbXBvc2l0ZUJpbmRpbmdcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcInNhcC91aS9tb2RlbC9GaWx0ZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YUNvbnRleHRCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFDb250ZXh0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgT0RhdGFMaXN0QmluZGluZyBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTGlzdEJpbmRpbmdcIjtcbmltcG9ydCB0eXBlIEZpbGVVcGxvYWRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgdHlwZSB7IEZpbGVVcGxvYWRlciRVcGxvYWRDb21wbGV0ZUV2ZW50IH0gZnJvbSBcInNhcC91aS91bmlmaWVkL0ZpbGVVcGxvYWRlclwiO1xuaW1wb3J0IEZpbGVVcGxvYWRlclBhcmFtZXRlciBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyUGFyYW1ldGVyXCI7XG5pbXBvcnQgb3BlbldpbmRvdyBmcm9tIFwic2FwL3VpL3V0aWwvb3BlbldpbmRvd1wiO1xuaW1wb3J0IHR5cGUgVGFibGVBUEkgZnJvbSBcIi4uL3RhYmxlL1RhYmxlQVBJXCI7XG5cbi8qKlxuICogR2V0cyB0aGUgYmluZGluZyB1c2VkIGZvciBjb2xsYWJvcmF0aW9uIG5vdGlmaWNhdGlvbnMuXG4gKlxuICogQHBhcmFtIGZpZWxkXG4gKiBAcmV0dXJucyBUaGUgYmluZGluZ1xuICovXG5mdW5jdGlvbiBnZXRDb2xsYWJvcmF0aW9uQmluZGluZyhmaWVsZDogQ29udHJvbCk6IE9EYXRhTGlzdEJpbmRpbmcgfCBPRGF0YUNvbnRleHRCaW5kaW5nIHtcblx0bGV0IGJpbmRpbmcgPSAoZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KS5nZXRCaW5kaW5nKCk7XG5cblx0aWYgKCFiaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGZpZWxkKTtcblx0XHRiaW5kaW5nID0gKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCkuZ2V0QmluZGluZygpO1xuXHR9XG5cblx0cmV0dXJuIGJpbmRpbmc7XG59XG4vKipcbiAqIFN0YXRpYyBjbGFzcyB1c2VkIGJ5IFwic2FwLnVpLm1kYy5GaWVsZFwiIGR1cmluZyBydW50aW1lXG4gKlxuICogQHByaXZhdGVcbiAqIEBleHBlcmltZW50YWwgVGhpcyBtb2R1bGUgaXMgb25seSBmb3IgaW50ZXJuYWwvZXhwZXJpbWVudGFsIHVzZSFcbiAqL1xuY29uc3QgRmllbGRSdW50aW1lID0ge1xuXHR1cGxvYWRQcm9taXNlczogdW5kZWZpbmVkIGFzIGFueSxcblx0Y3JlYXRpbmdJbmFjdGl2ZVJvdzogZmFsc2UsXG5cblx0LyoqXG5cdCAqIFRyaWdnZXJzIGFuIGludGVybmFsIG5hdmlnYXRpb24gb24gdGhlIGxpbmsgcGVydGFpbmluZyB0byBEYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGguXG5cdCAqXG5cdCAqIEBwYXJhbSBvU291cmNlIFNvdXJjZSBvZiB0aGUgcHJlc3MgZXZlbnRcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIEluc3RhbmNlIG9mIHRoZSBjb250cm9sbGVyXG5cdCAqIEBwYXJhbSBzTmF2UGF0aCBUaGUgbmF2aWdhdGlvbiBwYXRoXG5cdCAqL1xuXHRvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aDogZnVuY3Rpb24gKG9Tb3VyY2U6IENvbnRyb2wsIG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgc05hdlBhdGg6IHN0cmluZykge1xuXHRcdGlmIChvQ29udHJvbGxlci5fcm91dGluZykge1xuXHRcdFx0bGV0IG9CaW5kaW5nQ29udGV4dCA9IG9Tb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KG9Tb3VyY2UpLFxuXHRcdFx0XHRvTWV0YU1vZGVsID0gb0JpbmRpbmdDb250ZXh0LmdldE1vZGVsKCkuZ2V0TWV0YU1vZGVsKCksXG5cdFx0XHRcdGZuTmF2aWdhdGUgPSBmdW5jdGlvbiAob0NvbnRleHQ/OiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0NvbnRleHQpIHtcblx0XHRcdFx0XHRcdG9CaW5kaW5nQ29udGV4dCA9IG9Db250ZXh0O1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRvQ29udHJvbGxlci5fcm91dGluZy5uYXZpZ2F0ZVRvVGFyZ2V0KG9CaW5kaW5nQ29udGV4dCwgc05hdlBhdGgsIHRydWUpO1xuXHRcdFx0XHR9O1xuXHRcdFx0Ly8gU2hvdyBkcmFmdCBsb3NzIGNvbmZpcm1hdGlvbiBkaWFsb2cgaW4gY2FzZSBvZiBPYmplY3QgcGFnZVxuXHRcdFx0aWYgKChvVmlldy5nZXRWaWV3RGF0YSgpIGFzIGFueSkuY29udmVydGVyVHlwZSA9PT0gXCJPYmplY3RQYWdlXCIgJiYgIU1vZGVsSGVscGVyLmlzU3RpY2t5U2Vzc2lvblN1cHBvcnRlZChvTWV0YU1vZGVsKSkge1xuXHRcdFx0XHRkcmFmdC5wcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbihcblx0XHRcdFx0XHRmbk5hdmlnYXRlLFxuXHRcdFx0XHRcdEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0XHRcdFx0XHRvQmluZGluZ0NvbnRleHQsXG5cdFx0XHRcdFx0b1ZpZXcuZ2V0Q29udHJvbGxlcigpLFxuXHRcdFx0XHRcdHRydWUsXG5cdFx0XHRcdFx0ZHJhZnQuTmF2aWdhdGlvblR5cGUuRm9yd2FyZE5hdmlnYXRpb25cblx0XHRcdFx0KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGZuTmF2aWdhdGUoKTtcblx0XHRcdH1cblx0XHR9IGVsc2Uge1xuXHRcdFx0TG9nLmVycm9yKFxuXHRcdFx0XHRcIkZpZWxkUnVudGltZTogTm8gcm91dGluZyBsaXN0ZW5lciBjb250cm9sbGVyIGV4dGVuc2lvbiBmb3VuZC4gSW50ZXJuYWwgbmF2aWdhdGlvbiBhYm9ydGVkLlwiLFxuXHRcdFx0XHRcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRSdW50aW1lXCIsXG5cdFx0XHRcdFwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGhcIlxuXHRcdFx0KTtcblx0XHR9XG5cdH0sXG5cblx0aXNEcmFmdEluZGljYXRvclZpc2libGU6IGZ1bmN0aW9uIChcblx0XHRzUHJvcGVydHlQYXRoOiBhbnksXG5cdFx0c1NlbWFudGljS2V5SGFzRHJhZnRJbmRpY2F0b3I6IGFueSxcblx0XHRIYXNEcmFmdEVudGl0eTogYW55LFxuXHRcdElzQWN0aXZlRW50aXR5OiBhbnksXG5cdFx0aGlkZURyYWZ0SW5mbzogYW55XG5cdCkge1xuXHRcdGlmIChJc0FjdGl2ZUVudGl0eSAhPT0gdW5kZWZpbmVkICYmIEhhc0RyYWZ0RW50aXR5ICE9PSB1bmRlZmluZWQgJiYgKCFJc0FjdGl2ZUVudGl0eSB8fCBIYXNEcmFmdEVudGl0eSkgJiYgIWhpZGVEcmFmdEluZm8pIHtcblx0XHRcdHJldHVybiBzUHJvcGVydHlQYXRoID09PSBzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIG9uVmFsaWRhdGVGaWVsZEdyb3VwXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBUaGUgY29udHJvbGxlciBvZiB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBmaWVsZFxuXHQgKiBAcGFyYW0gb0V2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSB2YWxpZGF0ZUZpZWxkR3JvdXAgZXZlbnRcblx0ICovXG5cdG9uVmFsaWRhdGVGaWVsZEdyb3VwOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IG9iamVjdCwgb0V2ZW50OiBvYmplY3QpIHtcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKG9Db250cm9sbGVyKTtcblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZEdyb3VwQ2hhbmdlKG9FdmVudCk7XG5cdH0sXG5cblx0X2ZldGNoUmVjb21tZW5kYXRpb25zOiBmdW5jdGlvbiAoZmllbGQ6IEZpZWxkLCBjb250cm9sbGVyOiBDb250cm9sbGVyKTogdm9pZCB7XG5cdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZmllbGQpO1xuXHRcdGNvbnN0IGZpZWxkQmluZGluZ0NvbnRleHQgPSBmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdGxldCByZWNvbW1lbmRhdGlvbnNDb250ZXh0O1xuXG5cdFx0Ly8gZGV0ZXJtaW5lIHJlY29tbWVuZGF0aW9uIGNvbnRleHQgdG8gdXNlXG5cdFx0Y29uc3QgZmllbGRCaW5kaW5nID0gKGZpZWxkQmluZGluZ0NvbnRleHQgYXMgQ29udGV4dCk/LmdldEJpbmRpbmcoKTtcblxuXHRcdGlmIChmaWVsZEJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdC8vIGluc2lkZSBhIHRhYmxlLCB1c2UgdGhlIHJvd1xuXHRcdFx0cmVjb21tZW5kYXRpb25zQ29udGV4dCA9IGZpZWxkQmluZGluZ0NvbnRleHQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIGluc2lkZSBhIGZvcm0gbm93XG5cdFx0XHQvLyBjYW4gaGF2ZSAxLTEgbmF2aWdhdGlvbiBwcm9wZXJ0eS9kaXJlY3QgcHJvcGVydHkgLSB1c2UgdmlldyBjb250ZXh0XG5cdFx0XHRyZWNvbW1lbmRhdGlvbnNDb250ZXh0ID0gdmlldy5nZXRCaW5kaW5nQ29udGV4dCgpO1xuXHRcdH1cblx0XHRjb25zdCBmZUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlcik7XG5cdFx0Y29uc3QgdmFsdWVIZWxwSWQgPSBmaWVsZC5nZXRWYWx1ZUhlbHAoKTtcblx0XHRpZiAodmFsdWVIZWxwSWQgJiYgdmFsdWVIZWxwSWQuaW5jbHVkZXMoXCI6OlRhYmxlVmFsdWVIZWxwOjpcIikpIHtcblx0XHRcdGNvbnN0IHRhYmxlSWQgPSB2YWx1ZUhlbHBJZC5zdWJzdHJpbmcoMCwgdmFsdWVIZWxwSWQuaW5kZXhPZihcIjo6VGFibGVWYWx1ZUhlbHA6OlwiKSk7XG5cdFx0XHRjb25zdCB0YWJsZSA9IHZpZXcuYnlJZCh0YWJsZUlkKTtcblx0XHRcdGNvbnN0IGNvbnRleHRJZGVudGlmaWVyID0gKHRhYmxlPy5nZXRQYXJlbnQoKSBhcyBUYWJsZUFQSSk/LmdldElkZW50aWZpZXJDb2x1bW4oKTtcblx0XHRcdGZlQ29udHJvbGxlci5yZWNvbW1lbmRhdGlvbnMuZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UoZmllbGQsIFtcblx0XHRcdFx0eyBjb250ZXh0OiByZWNvbW1lbmRhdGlvbnNDb250ZXh0LCBjb250ZXh0SWRlbnRpZmllciB9XG5cdFx0XHRdKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZmVDb250cm9sbGVyLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZCwgW3sgY29udGV4dDogcmVjb21tZW5kYXRpb25zQ29udGV4dCB9XSk7XG5cdFx0fVxuXHR9LFxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIGNoYW5nZSBldmVudC5cblx0ICogU3RvcmUgZmllbGQgZ3JvdXAgSURzIG9mIHRoaXMgZmllbGQgZm9yIHJlcXVlc3Rpbmcgc2lkZSBlZmZlY3RzIHdoZW4gcmVxdWlyZWQuXG5cdCAqIFdlIHN0b3JlIHRoZW0gaGVyZSB0byBlbnN1cmUgdGhlcmUgaXMgYSBjaGFuZ2UgaW4gdGhlIHZhbHVlIG9mIHRoZSBmaWVsZC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUNoYW5nZVxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgVGhlIGNvbnRyb2xsZXIgb2YgdGhlIHBhZ2UgY29udGFpbmluZyB0aGUgZmllbGRcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDaGFuZ2U6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogUGFnZUNvbnRyb2xsZXIsIG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB2b2lkIHtcblx0XHRjb25zdCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbCxcblx0XHRcdGJJc1RyYW5zaWVudCA9IG9Tb3VyY2VGaWVsZCAmJiAob1NvdXJjZUZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgYW55KS5pc1RyYW5zaWVudCgpLFxuXHRcdFx0cFZhbHVlUmVzb2x2ZWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwicHJvbWlzZVwiKSB8fCBQcm9taXNlLnJlc29sdmUoKSxcblx0XHRcdG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCksXG5cdFx0XHRiVmFsaWQgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwidmFsaWRcIiksXG5cdFx0XHRmaWVsZFZhbGlkaXR5ID0gdGhpcy5nZXRGaWVsZFN0YXRlT25DaGFuZ2Uob0V2ZW50KS5zdGF0ZVtcInZhbGlkaXR5XCJdLFxuXHRcdFx0ZmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbDtcblxuXHRcdC8vIFVzZSB0aGUgRkUgQ29udHJvbGxlciBpbnN0ZWFkIG9mIHRoZSBleHRlbnNpb25BUEkgdG8gYWNjZXNzIGludGVybmFsIEZFIGNvbnRyb2xsZXJzXG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cblx0XHQvLyBUT0RPOiBjdXJyZW50bHkgd2UgaGF2ZSB1bmRlZmluZWQgYW5kIHRydWUuLi4gYW5kIG91ciBjcmVhdGlvbiByb3cgaW1wbGVtZW50YXRpb24gcmVsaWVzIG9uIHRoaXMuXG5cdFx0Ly8gSSB3b3VsZCBtb3ZlIHRoaXMgbG9naWMgdG8gdGhpcyBwbGFjZSBhcyBpdCdzIGhhcmQgdG8gdW5kZXJzdGFuZCBmb3IgZmllbGQgY29uc3VtZXJcblx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oZnVuY3Rpb24gKCkge1xuXHRcdFx0XHQvLyBUaGUgZXZlbnQgaXMgZ29uZS4gRm9yIG5vdyB3ZSdsbCBqdXN0IHJlY3JlYXRlIGl0IGFnYWluXG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5vU291cmNlID0gb1NvdXJjZTtcblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm1QYXJhbWV0ZXJzID0ge1xuXHRcdFx0XHRcdHZhbGlkOiBiVmFsaWRcblx0XHRcdFx0fTtcblx0XHRcdFx0KEZpZWxkQVBJIGFzIGFueSkuaGFuZGxlQ2hhbmdlKG9FdmVudCwgb0NvbnRyb2xsZXIpO1xuXHRcdFx0XHRpZiAoIWJJc1RyYW5zaWVudCkge1xuXHRcdFx0XHRcdC8vIHRyaWdnZXIgc2lkZSBlZmZlY3RzIHdpdGhvdXQgcmVnaXN0ZXJpbmcgZGVmZXJyZWQgc2lkZSBlZmZlY3RzXG5cdFx0XHRcdFx0Ly8gZGVmZXJyZWQgc2lkZSBlZmZlY3RzIGFyZSBhbHJlYWR5IHJlZ2lzdGVyZWQgYnkgcHJlcGFyZURlZmVycmVkU2lkZUVmZmVjdHNGb3JGaWVsZCBiZWZvcmUgcFZhbHVlUmVzb2x2ZWQgaXMgcmVzb2x2ZWQuXG5cdFx0XHRcdFx0b0ZFQ29udHJvbGxlci5fc2lkZUVmZmVjdHMuaGFuZGxlRmllbGRDaGFuZ2Uob0V2ZW50LCBmaWVsZFZhbGlkaXR5LCBwVmFsdWVSZXNvbHZlZCwgdHJ1ZSk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gUmVjb21tZW5kYXRpb25zXG5cdFx0XHRcdEZpZWxkUnVudGltZS5fZmV0Y2hSZWNvbW1lbmRhdGlvbnMoZmllbGQgYXMgRmllbGQsIG9Db250cm9sbGVyKTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaChmdW5jdGlvbiAoLypvRXJyb3I6IGFueSovKSB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm9Tb3VyY2UgPSBvU291cmNlO1xuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkubVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0dmFsaWQ6IGZhbHNlXG5cdFx0XHRcdH07XG5cdFx0XHRcdExvZy5kZWJ1ZyhcIlByZXJlcXVpc2l0ZXMgb24gRmllbGQgZm9yIHRoZSBTaWRlRWZmZWN0cyBhbmQgUmVjb21tZW5kYXRpb25zIGhhdmUgYmVlbiByZWplY3RlZFwiKTtcblx0XHRcdFx0Ly8gYXMgdGhlIFVJIG1pZ2h0IG5lZWQgdG8gcmVhY3Qgb24uIFdlIGNvdWxkIHByb3ZpZGUgYSBwYXJhbWV0ZXIgdG8gaW5mb3JtIGlmIHZhbGlkYXRpb25cblx0XHRcdFx0Ly8gd2FzIHN1Y2Nlc3NmdWw/XG5cdFx0XHRcdChGaWVsZEFQSSBhcyBhbnkpLmhhbmRsZUNoYW5nZShvRXZlbnQsIG9Db250cm9sbGVyKTtcblx0XHRcdH0pO1xuXG5cdFx0Ly8gRm9yIHRoZSBFZGl0RmxvdyBzeW5jaHJvbml6YXRpb24sIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgUEFUQ0ggcmVxdWVzdCB0byBiZSBzZW50LCBvdGhlcndpc2UgdGhlcmUgY291bGQgYmUgZS5nLiBhY3Rpb24gaW52b2tlZCBpbiBwYXJhbGxlbCB3aXRoIHRoZSBQQVRDSCByZXF1ZXN0LlxuXHRcdC8vIFRoaXMgaXMgZG9uZSB3aXRoIGEgMC10aW1lb3V0LCB0byBhbGxvdyBmb3IgdGhlICdwYXRjaFNlbnQnIGV2ZW50IHRvIGJlIHNlbnQgYnkgdGhlIGJpbmRpbmcgKHRoZW4gdGhlIGludGVybmFsIGVkaXQgZmxvdyBzeW5jaHJvbml6YXRpb24ga2lja3MgaW4gd2l0aCBFZGl0Rmxvdy5oYW5kbGVQYXRjaFNlbnQpLlxuXHRcdGNvbnN0IHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQgPSBwVmFsdWVSZXNvbHZlZFxuXHRcdFx0LnRoZW4oYXN5bmMgKCkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUpID0+IHtcblx0XHRcdFx0XHRzZXRUaW1lb3V0KHJlc29sdmUsIDApO1xuXHRcdFx0XHR9KTtcblx0XHRcdH0pXG5cdFx0XHQuY2F0Y2goKCkgPT4ge30pO1xuXHRcdG9GRUNvbnRyb2xsZXI/LmVkaXRGbG93LnN5bmNUYXNrKHZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQpO1xuXG5cdFx0Ly8gaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNpZW50LCBpdCBtZWFucyB0aGUgcmVxdWVzdCB3b3VsZCBmYWlsIGFueXdheSBhcyB0aGUgcmVjb3JkIGRvZXMgbm90IGV4aXN0IGluIHJlYWxpdHlcblx0XHQvLyBUT0RPOiBzaG91bGQgdGhlIHJlcXVlc3QgYmUgbWFkZSBpbiBmdXR1cmUgaWYgdGhlIGNvbnRleHQgaXMgdHJhbnNpZW50P1xuXHRcdGlmIChiSXNUcmFuc2llbnQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5wcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkKG9FdmVudCwgZmllbGRWYWxpZGl0eSwgcFZhbHVlUmVzb2x2ZWQpO1xuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmllbGQpO1xuXG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCAmJiBmaWVsZFZhbGlkaXR5KSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nID0gZ2V0Q29sbGFib3JhdGlvbkJpbmRpbmcoZmllbGQpO1xuXG5cdFx0XHRjb25zdCBkYXRhID0gW1xuXHRcdFx0XHQuLi4oKGZpZWxkLmdldEJpbmRpbmdJbmZvKFwidmFsdWVcIikgfHwgZmllbGQuZ2V0QmluZGluZ0luZm8oXCJzZWxlY3RlZFwiKSk/LnBhcnRzIHx8IFtdKSxcblx0XHRcdFx0Li4uKGZpZWxkLmdldEJpbmRpbmdJbmZvKFwiYWRkaXRpb25hbFZhbHVlXCIpPy5wYXJ0cyB8fCBbXSlcblx0XHRcdF1cblx0XHRcdFx0LmZpbHRlcigocGFydCkgPT4ge1xuXHRcdFx0XHRcdHJldHVybiBwYXJ0Py5wYXRoICE9PSB1bmRlZmluZWQgJiYgcGFydC5wYXRoLmluZGV4T2YoXCJAQFwiKSA8IDA7IC8vIFJlbW92ZSBiaW5kaW5nIHBhcnRzIHdpdGggQEAgdGhhdCBtYWtlIG5vIHNlbnNlIGZvciBjb2xsYWJvcmF0aW9uIG1lc3NhZ2VzXG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5tYXAoZnVuY3Rpb24gKHBhcnQ6IHsgcGF0aDogc3RyaW5nIH0pIHtcblx0XHRcdFx0XHRyZXR1cm4gYCR7ZmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke3BhcnQucGF0aH1gO1xuXHRcdFx0XHR9KTtcblxuXHRcdFx0Ly8gRnJvbSB0aGlzIHBvaW50LCB3ZSB3aWxsIGFsd2F5cyBzZW5kIGEgY29sbGFib3JhdGlvbiBtZXNzYWdlIChVTkxPQ0sgb3IgQ0hBTkdFKSwgc28gd2UgcmV0YWluXG5cdFx0XHQvLyBhIHBvdGVudGlhbCBVTkxPQ0sgdGhhdCB3b3VsZCBiZSBzZW50IGluIGhhbmRsZUZvY3VzT3V0LCB0byBtYWtlIHN1cmUgaXQncyBzZW50IGFmdGVyIHRoZSBDSEFOR0UgbWVzc2FnZVxuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5yZXRhaW5Bc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblxuXHRcdFx0Y29uc3QgdXBkYXRlQ29sbGFib3JhdGlvbiA9ICgpID0+IHtcblx0XHRcdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0XHRcdC8vIFRoZSB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGJ5IHRoZSB1c2VyIC0tPiB3YWl0IHVudGlsIGl0J3Mgc2VudCB0byB0aGUgc2VydmVyIGJlZm9yZSBzZW5kaW5nIGEgbm90aWZpY2F0aW9uIHRvIG90aGVyIHVzZXJzXG5cdFx0XHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmllbGQsIHsgYWN0aW9uOiBBY3Rpdml0eS5DaGFuZ2UsIGNvbnRlbnQ6IGRhdGEgfSk7XG5cdFx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJlbGVhc2VBc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJlbGVhc2VBc3luY01lc3NhZ2VzKGZpZWxkLCBkYXRhKTtcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0XHRwVmFsdWVSZXNvbHZlZFxuXHRcdFx0XHRcdC50aGVuKCgpID0+IHtcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbGxhYm9yYXRpb24oKTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdC5jYXRjaCgoKSA9PiB7XG5cdFx0XHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1cGRhdGVDb2xsYWJvcmF0aW9uKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgbGl2ZSBjaGFuZ2UgZXZlbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBoYW5kbGVMaXZlQ2hhbmdlXG5cdCAqIEBwYXJhbSBldmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVMaXZlQ2hhbmdlOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0KEZpZWxkQVBJIGFzIEZpZWxkQVBJVHlwZSkuaGFuZGxlTGl2ZUNoYW5nZShldmVudCk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byBzZW5kIGNvbGxhYm9yYXRpb24gbWVzc2FnZXMgZnJvbSBhIEZpbGVVcGxvYWRlci5cblx0ICpcblx0ICogQHBhcmFtIGZpbGVVcGxvYWRlclxuXHQgKiBAcGFyYW0gYWN0aW9uXG5cdCAqL1xuXHRfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlcjogRmlsZVVwbG9hZGVyLCBhY3Rpb246IEFjdGl2aXR5KTogdm9pZCB7XG5cdFx0aWYgKENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmlsZVVwbG9hZGVyKSkge1xuXHRcdFx0Y29uc3QgYmluZGluZ1BhdGggPSBmaWxlVXBsb2FkZXIuZ2V0UGFyZW50KCk/LmdldFByb3BlcnR5KFwicHJvcGVydHlQYXRoXCIpO1xuXHRcdFx0Y29uc3QgZnVsbFBhdGggPSBgJHtmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKT8uZ2V0UGF0aCgpfS8ke2JpbmRpbmdQYXRofWA7XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmlsZVVwbG9hZGVyLCB7IGFjdGlvbiwgY29udGVudDogZnVsbFBhdGggfSk7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIHdoZW4gYSBGaWxlVXBsb2FkIGRpYWxvZyBpcyBvcGVuZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSBldmVudFxuXHQgKi9cblx0aGFuZGxlT3BlblVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyO1xuXHRcdEZpZWxkUnVudGltZS5fc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlciwgQWN0aXZpdHkuTG9jayk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgd2hlbiBhIEZpbGVVcGxvYWQgZGlhbG9nIGlzIGNsb3NlZC5cblx0ICpcblx0ICogQHBhcmFtIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVDbG9zZVVwbG9hZGVyOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG5cdFx0Y29uc3QgZmlsZVVwbG9hZGVyID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgRmlsZVVwbG9hZGVyO1xuXHRcdEZpZWxkUnVudGltZS5fc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyKGZpbGVVcGxvYWRlciwgQWN0aXZpdHkuVW5sb2NrKTtcblx0fSxcblxuXHQvKipcblx0ICogR2V0cyB0aGUgZmllbGQgdmFsdWUgYW5kIHZhbGlkaXR5IG9uIGEgY2hhbmdlIGV2ZW50LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgZmllbGRWYWxpZGl0eU9uQ2hhbmdlXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIGNoYW5nZSBldmVudFxuXHQgKiBAcmV0dXJucyBGaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHlcblx0ICovXG5cdGdldEZpZWxkU3RhdGVPbkNoYW5nZTogZnVuY3Rpb24gKG9FdmVudDogRmllbGQkQ2hhbmdlRXZlbnQgJiBFdmVudDx7IGlzVmFsaWQ6IGJvb2xlYW4gfT4pOiB7XG5cdFx0ZmllbGQ6IEZpZWxkO1xuXHRcdHN0YXRlOiB7XG5cdFx0XHRmaWVsZFZhbHVlPzogdW5rbm93bjtcblx0XHRcdHZhbGlkaXR5PzogYm9vbGVhbjtcblx0XHR9O1xuXHR9IHtcblx0XHRsZXQgb1NvdXJjZUZpZWxkID0gb0V2ZW50LmdldFNvdXJjZSgpIGFzIGFueSxcblx0XHRcdG1GaWVsZFN0YXRlOiB7XG5cdFx0XHRcdGZpZWxkVmFsdWU/OiB1bmtub3duO1xuXHRcdFx0XHR2YWxpZGl0eT86IGJvb2xlYW47XG5cdFx0XHR9ID0ge307XG5cdFx0Y29uc3QgX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMgPSBmdW5jdGlvbiAob0JpbmRpbmc6IGFueSkge1xuXHRcdFx0cmV0dXJuIG9CaW5kaW5nICYmIG9CaW5kaW5nLmdldERhdGFTdGF0ZSgpID8gb0JpbmRpbmcuZ2V0RGF0YVN0YXRlKCkuZ2V0SW52YWxpZFZhbHVlKCkgPT09IHVuZGVmaW5lZCA6IHRydWU7XG5cdFx0fTtcblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShcInNhcC5mZS5tYWNyb3MuZmllbGQuRmllbGRBUElcIikpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IChvU291cmNlRmllbGQgYXMgRW5oYW5jZVdpdGhVSTU8RmllbGRBUEk+KS5nZXRDb250ZW50KCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0EoRmllbGRXcmFwcGVyLmdldE1ldGFkYXRhKCkuZ2V0TmFtZSgpKSAmJiBvU291cmNlRmllbGQuZ2V0RWRpdE1vZGUoKSA9PT0gXCJFZGl0YWJsZVwiKSB7XG5cdFx0XHRvU291cmNlRmllbGQgPSBvU291cmNlRmllbGQuZ2V0Q29udGVudEVkaXQoKVswXTtcblx0XHR9XG5cblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShcInNhcC51aS5tZGMuRmllbGRcIikpIHtcblx0XHRcdGxldCBiSXNWYWxpZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKSB8fCBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwiaXNWYWxpZFwiKTtcblx0XHRcdGlmIChiSXNWYWxpZCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdGlmIChvU291cmNlRmllbGQuZ2V0TWF4Q29uZGl0aW9ucygpID09PSAxKSB7XG5cdFx0XHRcdFx0Y29uc3Qgb1ZhbHVlQmluZGluZ0luZm8gPSBvU291cmNlRmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKTtcblx0XHRcdFx0XHRiSXNWYWxpZCA9IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzKG9WYWx1ZUJpbmRpbmdJbmZvICYmIG9WYWx1ZUJpbmRpbmdJbmZvLmJpbmRpbmcpO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChvU291cmNlRmllbGQuZ2V0VmFsdWUoKSA9PT0gXCJcIiAmJiAhb1NvdXJjZUZpZWxkLmdldFByb3BlcnR5KFwicmVxdWlyZWRcIikpIHtcblx0XHRcdFx0XHRiSXNWYWxpZCA9IHRydWU7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvU291cmNlRmllbGQuZ2V0VmFsdWUoKSxcblx0XHRcdFx0dmFsaWRpdHk6ICEhYklzVmFsaWRcblx0XHRcdH07XG5cdFx0fSBlbHNlIHtcblx0XHRcdC8vIG9Tb3VyY2VGaWVsZCBleHRlbmRzIGZyb20gYSBGaWxlVXBsb2FkZXIgfHwgSW5wdXQgfHwgaXMgYSBDaGVja0JveFxuXHRcdFx0Y29uc3Qgb0JpbmRpbmcgPVxuXHRcdFx0XHRvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInVwbG9hZFVybFwiKSB8fCBvU291cmNlRmllbGQuZ2V0QmluZGluZyhcInZhbHVlXCIpIHx8IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwic2VsZWN0ZWRcIik7XG5cdFx0XHRtRmllbGRTdGF0ZSA9IHtcblx0XHRcdFx0ZmllbGRWYWx1ZTogb0JpbmRpbmcgJiYgb0JpbmRpbmcuZ2V0VmFsdWUoKSxcblx0XHRcdFx0dmFsaWRpdHk6IF9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzKG9CaW5kaW5nKVxuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdGZpZWxkOiBvU291cmNlRmllbGQsXG5cdFx0XHRzdGF0ZTogbUZpZWxkU3RhdGVcblx0XHR9O1xuXHR9LFxuXHRfZm5GaXhIYXNoUXVlcnlTdHJpbmc6IGZ1bmN0aW9uIChzQ3VycmVudEhhc2g6IGFueSkge1xuXHRcdGlmIChzQ3VycmVudEhhc2ggJiYgc0N1cnJlbnRIYXNoLmluZGV4T2YoXCI/XCIpICE9PSAtMSkge1xuXHRcdFx0Ly8gc0N1cnJlbnRIYXNoIGNhbiBjb250YWluIHF1ZXJ5IHN0cmluZywgY3V0IGl0IG9mZiFcblx0XHRcdHNDdXJyZW50SGFzaCA9IHNDdXJyZW50SGFzaC5zcGxpdChcIj9cIilbMF07XG5cdFx0fVxuXHRcdHJldHVybiBzQ3VycmVudEhhc2g7XG5cdH0sXG5cdF9mbkdldExpbmtJbmZvcm1hdGlvbjogZnVuY3Rpb24gKF9vU291cmNlOiBhbnksIF9vTGluazogYW55LCBfc1Byb3BlcnR5UGF0aDogYW55LCBfc1ZhbHVlOiBhbnksIGZuU2V0QWN0aXZlOiBhbnkpIHtcblx0XHRjb25zdCBvTW9kZWwgPSBfb0xpbmsgJiYgX29MaW5rLmdldE1vZGVsKCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IG9Nb2RlbCAmJiBvTW9kZWwuZ2V0TWV0YU1vZGVsKCk7XG5cdFx0Y29uc3Qgc1NlbWFudGljT2JqZWN0TmFtZSA9IF9zVmFsdWUgfHwgKF9vU291cmNlICYmIF9vU291cmNlLmdldFZhbHVlKCkpO1xuXHRcdGNvbnN0IG9WaWV3ID0gX29MaW5rICYmIENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoX29MaW5rKTtcblx0XHRjb25zdCBvSW50ZXJuYWxNb2RlbENvbnRleHQgPSBvVmlldyAmJiBvVmlldy5nZXRCaW5kaW5nQ29udGV4dChcImludGVybmFsXCIpO1xuXHRcdGNvbnN0IG9BcHBDb21wb25lbnQgPSBvVmlldyAmJiBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQob1ZpZXcpO1xuXHRcdGNvbnN0IG9TaGVsbFNlcnZpY2VIZWxwZXIgPSBvQXBwQ29tcG9uZW50ICYmIG9BcHBDb21wb25lbnQuZ2V0U2hlbGxTZXJ2aWNlcygpO1xuXHRcdGNvbnN0IHBHZXRMaW5rc1Byb21pc2UgPSBvU2hlbGxTZXJ2aWNlSGVscGVyICYmIG9TaGVsbFNlcnZpY2VIZWxwZXIuZ2V0TGlua3NXaXRoQ2FjaGUoW1t7IHNlbWFudGljT2JqZWN0OiBzU2VtYW50aWNPYmplY3ROYW1lIH1dXSk7XG5cdFx0Y29uc3QgYVNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zID1cblx0XHRcdG9NZXRhTW9kZWwgJiYgb01ldGFNb2RlbC5nZXRPYmplY3QoYCR7X3NQcm9wZXJ0eVBhdGh9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uc2ApO1xuXHRcdHJldHVybiB7XG5cdFx0XHRTZW1hbnRpY09iamVjdE5hbWU6IHNTZW1hbnRpY09iamVjdE5hbWUsXG5cdFx0XHRTZW1hbnRpY09iamVjdEZ1bGxQYXRoOiBfc1Byb3BlcnR5UGF0aCwgLy9zU2VtYW50aWNPYmplY3RGdWxsUGF0aCxcblx0XHRcdE1ldGFNb2RlbDogb01ldGFNb2RlbCxcblx0XHRcdEludGVybmFsTW9kZWxDb250ZXh0OiBvSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRTaGVsbFNlcnZpY2VIZWxwZXI6IG9TaGVsbFNlcnZpY2VIZWxwZXIsXG5cdFx0XHRHZXRMaW5rc1Byb21pc2U6IHBHZXRMaW5rc1Byb21pc2UsXG5cdFx0XHRTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9uczogYVNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zLFxuXHRcdFx0Zm5TZXRBY3RpdmU6IGZuU2V0QWN0aXZlXG5cdFx0fTtcblx0fSxcblx0X2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uOiBmdW5jdGlvbiAob1NlbWFudGljT2JqZWN0UGF5bG9hZDogYW55LCBfb0xpbmtJbmZvOiBhbnkpIHtcblx0XHRpZiAob1NlbWFudGljT2JqZWN0UGF5bG9hZCAmJiBvU2VtYW50aWNPYmplY3RQYXlsb2FkLnBhdGggJiYgb1NlbWFudGljT2JqZWN0UGF5bG9hZC5wYXRoID09PSBfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0RnVsbFBhdGgpIHtcblx0XHRcdC8vIEdvdCB0aGUgcmVzb2x2ZWQgU2VtYW50aWMgT2JqZWN0IVxuXHRcdFx0Y29uc3QgYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciA9XG5cdFx0XHRcdG9TZW1hbnRpY09iamVjdFBheWxvYWRbIV9vTGlua0luZm8uU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgPyBcIkhhc1RhcmdldHNOb3RGaWx0ZXJlZFwiIDogXCJIYXNUYXJnZXRzXCJdO1xuXHRcdFx0X29MaW5rSW5mby5mblNldEFjdGl2ZSghIWJSZXN1bHRpbmdOZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXIpO1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH0sXG5cdF9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlcjogZnVuY3Rpb24gKF9vTGlua0luZm86IGFueSwgX29GaW5hbFNlbWFudGljT2JqZWN0czogYW55KSB7XG5cdFx0aWYgKF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdKSB7XG5cdFx0XHRsZXQgc1RtcFBhdGgsIG9TZW1hbnRpY09iamVjdFBheWxvYWQ7XG5cdFx0XHRjb25zdCBhU2VtYW50aWNPYmplY3RQYXRocyA9IE9iamVjdC5rZXlzKF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdKTtcblx0XHRcdGZvciAoY29uc3QgaVBhdGhzQ291bnQgaW4gYVNlbWFudGljT2JqZWN0UGF0aHMpIHtcblx0XHRcdFx0c1RtcFBhdGggPSBhU2VtYW50aWNPYmplY3RQYXRoc1tpUGF0aHNDb3VudF07XG5cdFx0XHRcdG9TZW1hbnRpY09iamVjdFBheWxvYWQgPVxuXHRcdFx0XHRcdF9vRmluYWxTZW1hbnRpY09iamVjdHNbX29MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWVdICYmXG5cdFx0XHRcdFx0X29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV1bc1RtcFBhdGhdO1xuXHRcdFx0XHRpZiAoRmllbGRSdW50aW1lLl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbihvU2VtYW50aWNPYmplY3RQYXlsb2FkLCBfb0xpbmtJbmZvKSkge1xuXHRcdFx0XHRcdGJyZWFrO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRfZm5VcGRhdGVTZW1hbnRpY09iamVjdHNUYXJnZXRNb2RlbDogZnVuY3Rpb24gKG9FdmVudDogYW55LCBzVmFsdWU6IGFueSwgb0NvbnRyb2w6IGFueSwgX3NQcm9wZXJ0eVBhdGg6IGFueSkge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQgJiYgb0V2ZW50LmdldFNvdXJjZSgpO1xuXHRcdGxldCBmblNldEFjdGl2ZTtcblx0XHRpZiAob0NvbnRyb2wuaXNBKFwic2FwLm0uT2JqZWN0U3RhdHVzXCIpKSB7XG5cdFx0XHRmblNldEFjdGl2ZSA9IChiQWN0aXZlOiBib29sZWFuKSA9PiBvQ29udHJvbC5zZXRBY3RpdmUoYkFjdGl2ZSk7XG5cdFx0fVxuXHRcdGlmIChvQ29udHJvbC5pc0EoXCJzYXAubS5PYmplY3RJZGVudGlmaWVyXCIpKSB7XG5cdFx0XHRmblNldEFjdGl2ZSA9IChiQWN0aXZlOiBib29sZWFuKSA9PiBvQ29udHJvbC5zZXRUaXRsZUFjdGl2ZShiQWN0aXZlKTtcblx0XHR9XG5cdFx0Y29uc3Qgb0NvbmRpdGlvbmFsV3JhcHBlciA9IG9Db250cm9sICYmIG9Db250cm9sLmdldFBhcmVudCgpO1xuXHRcdGlmIChvQ29uZGl0aW9uYWxXcmFwcGVyICYmIG9Db25kaXRpb25hbFdyYXBwZXIuaXNBKFwic2FwLmZlLm1hY3Jvcy5jb250cm9scy5Db25kaXRpb25hbFdyYXBwZXJcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db25kaXRpb25hbFdyYXBwZXIuc2V0Q29uZGl0aW9uKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRpZiAoZm5TZXRBY3RpdmUgIT09IHVuZGVmaW5lZCkge1xuXHRcdFx0Y29uc3Qgb0xpbmtJbmZvID0gRmllbGRSdW50aW1lLl9mbkdldExpbmtJbmZvcm1hdGlvbihvU291cmNlLCBvQ29udHJvbCwgX3NQcm9wZXJ0eVBhdGgsIHNWYWx1ZSwgZm5TZXRBY3RpdmUpO1xuXHRcdFx0b0xpbmtJbmZvLmZuU2V0QWN0aXZlID0gZm5TZXRBY3RpdmU7XG5cdFx0XHRjb25zdCBzQ3VycmVudEhhc2ggPSBGaWVsZFJ1bnRpbWUuX2ZuRml4SGFzaFF1ZXJ5U3RyaW5nKENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvQ29udHJvbCkuZ2V0U2hlbGxTZXJ2aWNlcygpLmdldEhhc2goKSk7XG5cdFx0XHRDb21tb25VdGlscy51cGRhdGVTZW1hbnRpY1RhcmdldHMoXG5cdFx0XHRcdFtvTGlua0luZm8uR2V0TGlua3NQcm9taXNlXSxcblx0XHRcdFx0W3sgc2VtYW50aWNPYmplY3Q6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdE5hbWUsIHBhdGg6IG9MaW5rSW5mby5TZW1hbnRpY09iamVjdEZ1bGxQYXRoIH1dLFxuXHRcdFx0XHRvTGlua0luZm8uSW50ZXJuYWxNb2RlbENvbnRleHQsXG5cdFx0XHRcdHNDdXJyZW50SGFzaFxuXHRcdFx0KVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAob0ZpbmFsU2VtYW50aWNPYmplY3RzOiBhbnkpIHtcblx0XHRcdFx0XHRpZiAob0ZpbmFsU2VtYW50aWNPYmplY3RzKSB7XG5cdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyKG9MaW5rSW5mbywgb0ZpbmFsU2VtYW50aWNPYmplY3RzKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9KVxuXHRcdFx0XHQuY2F0Y2goZnVuY3Rpb24gKG9FcnJvcjogYW55KSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKFwiQ2Fubm90IHVwZGF0ZSBTZW1hbnRpYyBUYXJnZXRzIG1vZGVsXCIsIG9FcnJvcik7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0fSxcblx0X2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQoX2NvbnRyb2w6IENvbnRyb2wpIHtcblx0XHRpZiAoIV9jb250cm9sLmdldE1vZGVsKCkgfHwgIV9jb250cm9sLmdldEJpbmRpbmdDb250ZXh0KCkpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fVxuXHR9LFxuXHRfY2hlY2tDdXN0b21EYXRhVmFsdWVCZWZvcmVVcGRhdGluZ1NlbWFudGljT2JqZWN0TW9kZWwoX2NvbnRyb2w6IENvbnRyb2wsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBhQ3VzdG9tRGF0YTogQ3VzdG9tRGF0YVtdKTogdm9pZCB7XG5cdFx0bGV0IHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZTogYW55O1xuXHRcdGxldCBvVmFsdWVCaW5kaW5nO1xuXHRcdGNvbnN0IF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nID0gZnVuY3Rpb24gKHNlbWFudGljT2JqZWN0UGF0aFZhbHVlOiBhbnkpIHtcblx0XHRcdHJldHVybiAhKHNlbWFudGljT2JqZWN0UGF0aFZhbHVlICE9PSBudWxsICYmIHR5cGVvZiBzZW1hbnRpY09iamVjdFBhdGhWYWx1ZSA9PT0gXCJvYmplY3RcIik7XG5cdFx0fTtcblx0XHQvLyByZW1vdmUgdGVjaG5pY2FsIGN1c3RvbSBkYXRhcyBzZXQgYnkgVUk1XG5cdFx0YUN1c3RvbURhdGEgPSBhQ3VzdG9tRGF0YS5maWx0ZXIoKGN1c3RvbURhdGEpID0+IGN1c3RvbURhdGEuZ2V0S2V5KCkgIT09IFwic2FwLXVpLWN1c3RvbS1zZXR0aW5nc1wiKTtcblx0XHRmb3IgKGNvbnN0IGluZGV4IGluIGFDdXN0b21EYXRhKSB7XG5cdFx0XHRzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUgPSBhQ3VzdG9tRGF0YVtpbmRleF0uZ2V0VmFsdWUoKTtcblx0XHRcdGlmICghc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlICYmIF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nKHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSkpIHtcblx0XHRcdFx0b1ZhbHVlQmluZGluZyA9IGFDdXN0b21EYXRhW2luZGV4XS5nZXRCaW5kaW5nKFwidmFsdWVcIik7XG5cdFx0XHRcdGlmIChvVmFsdWVCaW5kaW5nKSB7XG5cdFx0XHRcdFx0b1ZhbHVlQmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJjaGFuZ2VcIiwgZnVuY3Rpb24gKF9vQ2hhbmdlRXZlbnQ6IGFueSkge1xuXHRcdFx0XHRcdFx0RmllbGRSdW50aW1lLl9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsKF9vQ2hhbmdlRXZlbnQsIG51bGwsIF9jb250cm9sLCBwcm9wZXJ0eVBhdGgpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKF9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nKHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSkpIHtcblx0XHRcdFx0RmllbGRSdW50aW1lLl9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsKG51bGwsIHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSwgX2NvbnRyb2wsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRMaW5rTW9kZWxDb250ZXh0Q2hhbmdlOiBmdW5jdGlvbiAob0V2ZW50OiBhbnksIHNQcm9wZXJ0eTogYW55LCBzUGF0aFRvUHJvcGVydHk6IGFueSk6IHZvaWQge1xuXHRcdGNvbnN0IGNvbnRyb2wgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0aWYgKEZpZWxkUnVudGltZS5fY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dChjb250cm9sKSkge1xuXHRcdFx0Y29uc3Qgc1Byb3BlcnR5UGF0aCA9IGAke3NQYXRoVG9Qcm9wZXJ0eX0vJHtzUHJvcGVydHl9YDtcblx0XHRcdGNvbnN0IG1kY0xpbmsgPSBjb250cm9sLmdldERlcGVuZGVudHMoKS5sZW5ndGggPyBjb250cm9sLmdldERlcGVuZGVudHMoKVswXSA6IHVuZGVmaW5lZDtcblx0XHRcdGNvbnN0IGFDdXN0b21EYXRhID0gbWRjTGluaz8uZ2V0Q3VzdG9tRGF0YSgpO1xuXHRcdFx0aWYgKGFDdXN0b21EYXRhICYmIGFDdXN0b21EYXRhLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0RmllbGRSdW50aW1lLl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbChjb250cm9sLCBzUHJvcGVydHlQYXRoLCBhQ3VzdG9tRGF0YSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9LFxuXHRvcGVuRXh0ZXJuYWxMaW5rOiBmdW5jdGlvbiAoZXZlbnQ6IEV2ZW50KSB7XG5cdFx0Y29uc3Qgc291cmNlID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgYW55O1xuXHRcdGlmIChzb3VyY2UuZGF0YShcInVybFwiKSAmJiBzb3VyY2UuZ2V0UHJvcGVydHkoXCJ0ZXh0XCIpICE9PSBcIlwiKSB7XG5cdFx0XHQvLyBUaGlzIG9wZW5zIHRoZSBsaW5rIGluIHRoZSBzYW1lIHRhYiBhcyB0aGUgbGluay4gSXQgd2FzIGRvbmUgdG8gYmUgbW9yZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgdHlwZSBvZiBsaW5rcy5cblx0XHRcdG9wZW5XaW5kb3coc291cmNlLmRhdGEoXCJ1cmxcIiksIFwiX3NlbGZcIik7XG5cdFx0fVxuXHR9LFxuXHRjcmVhdGVQb3BvdmVyV2l0aE5vVGFyZ2V0czogZnVuY3Rpb24gKG1kY0xpbms6IE1kY0xpbmspIHtcblx0XHRjb25zdCBtZGNMaW5rSWQgPSBtZGNMaW5rLmdldElkKCk7XG5cdFx0Y29uc3QgaWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3M6ICRJbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyA9IHtcblx0XHRcdHRpdGxlOiBnZXRSZXNvdXJjZU1vZGVsKG1kY0xpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKS5nZXRUZXh0KFwiTV9JTExVU1RSQVRFRE1FU1NBR0VfVElUTEVcIiksXG5cdFx0XHRkZXNjcmlwdGlvbjogZ2V0UmVzb3VyY2VNb2RlbChtZGNMaW5rIGFzIHVua25vd24gYXMgQ29udHJvbCkuZ2V0VGV4dChcIk1fSUxMVVNUUkFURURNRVNTQUdFX0RFU0NSSVBUSU9OXCIpLFxuXHRcdFx0ZW5hYmxlRm9ybWF0dGVkVGV4dDogdHJ1ZSxcblx0XHRcdGlsbHVzdHJhdGlvblNpemU6IFwiRG90XCIsIC8vIElsbHVzdHJhdGVkTWVzc2FnZVNpemUuRG90IG5vdCBhdmFpbGFibGUgaW4gXCJAdHlwZXMvb3BlbnVpNVwiOiBcIjEuMTA3LjBcIlxuXHRcdFx0aWxsdXN0cmF0aW9uVHlwZTogSWxsdXN0cmF0ZWRNZXNzYWdlVHlwZS5UZW50XG5cdFx0fTtcblx0XHRjb25zdCBpbGx1c3RyYXRlZE1lc3NhZ2UgPSBuZXcgSWxsdXN0cmF0ZWRNZXNzYWdlKGAke21kY0xpbmtJZH0taWxsdXN0cmF0ZWRtZXNzYWdlYCwgaWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3MpO1xuXHRcdGNvbnN0IHBvcG92ZXJTZXR0aW5nczogJFJlc3BvbnNpdmVQb3BvdmVyU2V0dGluZ3MgPSB7XG5cdFx0XHRob3Jpem9udGFsU2Nyb2xsaW5nOiBmYWxzZSxcblx0XHRcdHNob3dIZWFkZXI6IERldmljZS5zeXN0ZW0ucGhvbmUsXG5cdFx0XHRwbGFjZW1lbnQ6IG1vYmlsZWxpYnJhcnkuUGxhY2VtZW50VHlwZS5BdXRvLFxuXHRcdFx0Y29udGVudDogW2lsbHVzdHJhdGVkTWVzc2FnZV0sXG5cdFx0XHRhZnRlckNsb3NlOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0XHRcdFx0aWYgKGV2ZW50LmdldFNvdXJjZSgpKSB7XG5cdFx0XHRcdFx0ZXZlbnQuZ2V0U291cmNlKCkuZGVzdHJveSgpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fTtcblx0XHRyZXR1cm4gbmV3IFJlc3BvbnNpdmVQb3BvdmVyKGAke21kY0xpbmtJZH0tcG9wb3ZlcmAsIHBvcG92ZXJTZXR0aW5ncyk7XG5cdH0sXG5cdG9wZW5MaW5rOiBhc3luYyBmdW5jdGlvbiAobWRjTGluazogTWRjTGluaywgc2FwbUxpbms6IExpbmspIHtcblx0XHR0cnkge1xuXHRcdFx0Y29uc3QgaFJlZiA9IGF3YWl0IG1kY0xpbmsuZ2V0VHJpZ2dlckhyZWYoKTtcblx0XHRcdGlmICghaFJlZikge1xuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGNvbnN0IGxpbmtJdGVtcyA9IGF3YWl0IG1kY0xpbmsucmV0cmlldmVMaW5rSXRlbXMoKTtcblx0XHRcdFx0XHRpZiAobGlua0l0ZW1zPy5sZW5ndGggPT09IDAgJiYgKG1kY0xpbmsgYXMgYW55KS5nZXRQYXlsb2FkKCkuaGFzUXVpY2tWaWV3RmFjZXRzID09PSBcImZhbHNlXCIpIHtcblx0XHRcdFx0XHRcdGNvbnN0IHBvcG92ZXI6IFJlc3BvbnNpdmVQb3BvdmVyID0gRmllbGRSdW50aW1lLmNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzKG1kY0xpbmspO1xuXHRcdFx0XHRcdFx0bWRjTGluay5hZGREZXBlbmRlbnQocG9wb3Zlcik7XG5cdFx0XHRcdFx0XHRwb3BvdmVyLm9wZW5CeShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRhd2FpdCBtZGNMaW5rLm9wZW4oc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0TG9nLmVycm9yKGBDYW5ub3QgcmV0cmlldmUgdGhlIFF1aWNrVmlldyBQb3BvdmVyIGRpYWxvZzogJHtlcnJvcn1gKTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Y29uc3QgdmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoc2FwbUxpbmspO1xuXHRcdFx0XHRjb25zdCBhcHBDb21wb25lbnQgPSBDb21tb25VdGlscy5nZXRBcHBDb21wb25lbnQodmlldyk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsU2VydmljZSA9IGFwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0XHRcdGNvbnN0IHNoZWxsSGFzaCA9IHNoZWxsU2VydmljZS5wYXJzZVNoZWxsSGFzaChoUmVmKTtcblx0XHRcdFx0Y29uc3QgbmF2QXJncyA9IHtcblx0XHRcdFx0XHR0YXJnZXQ6IHtcblx0XHRcdFx0XHRcdHNlbWFudGljT2JqZWN0OiBzaGVsbEhhc2guc2VtYW50aWNPYmplY3QsXG5cdFx0XHRcdFx0XHRhY3Rpb246IHNoZWxsSGFzaC5hY3Rpb25cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHBhcmFtczogc2hlbGxIYXNoLnBhcmFtc1xuXHRcdFx0XHR9O1xuXG5cdFx0XHRcdEtlZXBBbGl2ZUhlbHBlci5zdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoKHZpZXcsIHNoZWxsSGFzaCk7XG5cblx0XHRcdFx0aWYgKENvbW1vblV0aWxzLmlzU3RpY2t5RWRpdE1vZGUoc2FwbUxpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKSAhPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdC8vVVJMIHBhcmFtcyBhbmQgeGFwcFN0YXRlIGhhcyBiZWVuIGdlbmVyYXRlZCBlYXJsaWVyIGhlbmNlIHVzaW5nIHRvRXh0ZXJuYWxcblx0XHRcdFx0XHRzaGVsbFNlcnZpY2UudG9FeHRlcm5hbChuYXZBcmdzIGFzIGFueSwgYXBwQ29tcG9uZW50KTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdFx0Y29uc3QgbmV3SHJlZiA9IGF3YWl0IHNoZWxsU2VydmljZS5ocmVmRm9yRXh0ZXJuYWxBc3luYyhuYXZBcmdzLCBhcHBDb21wb25lbnQpO1xuXHRcdFx0XHRcdFx0b3BlbldpbmRvdyhuZXdIcmVmKTtcblx0XHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0XHRcdFx0TG9nLmVycm9yKGBFcnJvciB3aGlsZSByZXRpcmV2aW5nIGhyZWZGb3JFeHRlcm5hbCA6ICR7ZXJyb3J9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdExvZy5lcnJvcihgRXJyb3IgdHJpZ2dlcmluZyBsaW5rIEhyZWY6ICR7ZXJyb3J9YCk7XG5cdFx0fVxuXHR9LFxuXHRwcmVzc0xpbms6IGFzeW5jIGZ1bmN0aW9uIChvRXZlbnQ6IGFueSk6IFByb21pc2U8dm9pZD4ge1xuXHRcdGNvbnN0IG9Tb3VyY2UgPSBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0Y29uc3Qgc2FwbUxpbmsgPSBvU291cmNlLmlzQShcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIilcblx0XHRcdD8gb1NvdXJjZS5maW5kRWxlbWVudHMoZmFsc2UsIChlbGVtOiBFbGVtZW50KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW0uaXNBKFwic2FwLm0uTGlua1wiKTtcblx0XHRcdCAgfSlbMF1cblx0XHRcdDogb1NvdXJjZTtcblxuXHRcdGlmIChvU291cmNlLmdldERlcGVuZGVudHMoKSAmJiBvU291cmNlLmdldERlcGVuZGVudHMoKS5sZW5ndGggPiAwICYmIHNhcG1MaW5rLmdldFByb3BlcnR5KFwidGV4dFwiKSAhPT0gXCJcIikge1xuXHRcdFx0Y29uc3Qgb0ZpZWxkSW5mbyA9IG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpWzBdO1xuXHRcdFx0aWYgKG9GaWVsZEluZm8gJiYgb0ZpZWxkSW5mby5pc0EoXCJzYXAudWkubWRjLkxpbmtcIikpIHtcblx0XHRcdFx0YXdhaXQgRmllbGRSdW50aW1lLm9wZW5MaW5rKG9GaWVsZEluZm8sIHNhcG1MaW5rKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHNhcG1MaW5rO1xuXHR9LFxuXHR1cGxvYWRTdHJlYW06IGZ1bmN0aW9uIChjb250cm9sbGVyOiBDb250cm9sbGVyLCBldmVudDogRXZlbnQpIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXIsXG5cdFx0XHRGRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIoY29udHJvbGxlciksXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyLFxuXHRcdFx0dXBsb2FkVXJsID0gZmlsZVdyYXBwZXIuZ2V0VXBsb2FkVXJsKCk7XG5cblx0XHRpZiAodXBsb2FkVXJsICE9PSBcIlwiKSB7XG5cdFx0XHRmaWxlV3JhcHBlci5zZXRVSUJ1c3kodHJ1ZSk7XG5cblx0XHRcdC8vIHVzZSB1cGxvYWRVcmwgZnJvbSBGaWxlV3JhcHBlciB3aGljaCByZXR1cm5zIGEgY2Fub25pY2FsIFVSTFxuXHRcdFx0ZmlsZVVwbG9hZGVyLnNldFVwbG9hZFVybCh1cGxvYWRVcmwpO1xuXG5cdFx0XHRmaWxlVXBsb2FkZXIucmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycygpO1xuXHRcdFx0Y29uc3QgdG9rZW4gPSAoZmlsZVVwbG9hZGVyLmdldE1vZGVsKCkgYXMgYW55KT8uZ2V0SHR0cEhlYWRlcnMoKVtcIlgtQ1NSRi1Ub2tlblwiXTtcblx0XHRcdGlmICh0b2tlbikge1xuXHRcdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4gPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbi5zZXROYW1lKFwieC1jc3JmLXRva2VuXCIpO1xuXHRcdFx0XHRoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4uc2V0VmFsdWUodG9rZW4pO1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbik7XG5cdFx0XHR9XG5cdFx0XHRjb25zdCBlVGFnID0gKGZpbGVVcGxvYWRlci5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQgfCBudWxsKT8uZ2V0UHJvcGVydHkoXCJAb2RhdGEuZXRhZ1wiKTtcblx0XHRcdGlmIChlVGFnKSB7XG5cdFx0XHRcdGNvbnN0IGhlYWRlclBhcmFtZXRlckVUYWcgPSBuZXcgRmlsZVVwbG9hZGVyUGFyYW1ldGVyKCk7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckVUYWcuc2V0TmFtZShcIklmLU1hdGNoXCIpO1xuXHRcdFx0XHQvLyBJZ25vcmUgRVRhZyBpbiBjb2xsYWJvcmF0aW9uIGRyYWZ0XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckVUYWcuc2V0VmFsdWUoQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChmaWxlVXBsb2FkZXIpID8gXCIqXCIgOiBlVGFnKTtcblx0XHRcdFx0ZmlsZVVwbG9hZGVyLmFkZEhlYWRlclBhcmFtZXRlcihoZWFkZXJQYXJhbWV0ZXJFVGFnKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGhlYWRlclBhcmFtZXRlckFjY2VwdCA9IG5ldyBGaWxlVXBsb2FkZXJQYXJhbWV0ZXIoKTtcblx0XHRcdGhlYWRlclBhcmFtZXRlckFjY2VwdC5zZXROYW1lKFwiQWNjZXB0XCIpO1xuXHRcdFx0aGVhZGVyUGFyYW1ldGVyQWNjZXB0LnNldFZhbHVlKFwiYXBwbGljYXRpb24vanNvblwiKTtcblx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyQWNjZXB0KTtcblxuXHRcdFx0Ly8gc3luY2hyb25pemUgdXBsb2FkIHdpdGggb3RoZXIgcmVxdWVzdHNcblx0XHRcdGNvbnN0IHVwbG9hZFByb21pc2UgPSBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55LCByZWplY3Q6IGFueSkgPT4ge1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzID0gdGhpcy51cGxvYWRQcm9taXNlcyB8fCB7fTtcblx0XHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0gPSB7XG5cdFx0XHRcdFx0cmVzb2x2ZTogcmVzb2x2ZSxcblx0XHRcdFx0XHRyZWplY3Q6IHJlamVjdFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIudXBsb2FkKCk7XG5cdFx0XHR9KTtcblx0XHRcdEZFQ29udHJvbGxlci5lZGl0Rmxvdy5zeW5jVGFzayh1cGxvYWRQcm9taXNlKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0TWVzc2FnZUJveC5lcnJvcihnZXRSZXNvdXJjZU1vZGVsKGNvbnRyb2xsZXIpLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIikpO1xuXHRcdH1cblx0fSxcblxuXHRoYW5kbGVVcGxvYWRDb21wbGV0ZTogZnVuY3Rpb24gKFxuXHRcdGV2ZW50OiBGaWxlVXBsb2FkZXIkVXBsb2FkQ29tcGxldGVFdmVudCxcblx0XHRwcm9wZXJ0eUZpbGVOYW1lOiB7IHBhdGg6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuXHRcdHByb3BlcnR5UGF0aDogc3RyaW5nLFxuXHRcdGNvbnRyb2xsZXI6IENvbnRyb2xsZXJcblx0KSB7XG5cdFx0Y29uc3Qgc3RhdHVzID0gTnVtYmVyKGV2ZW50LmdldFBhcmFtZXRlcihcInN0YXR1c1wiKSksXG5cdFx0XHRmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXIsXG5cdFx0XHRmaWxlV3JhcHBlciA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKSBhcyB1bmtub3duIGFzIEZpbGVXcmFwcGVyO1xuXG5cdFx0ZmlsZVdyYXBwZXIuc2V0VUlCdXN5KGZhbHNlKTtcblxuXHRcdGNvbnN0IGNvbnRleHQgPSBmaWxlVXBsb2FkZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0IHwgdW5kZWZpbmVkIHwgbnVsbDtcblx0XHRpZiAoc3RhdHVzID09PSAwIHx8IHN0YXR1cyA+PSA0MDApIHtcblx0XHRcdHRoaXMuX2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkKGV2ZW50KTtcblx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXNbZmlsZVVwbG9hZGVyLmdldElkKCldLnJlamVjdCgpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRjb25zdCBuZXdFVGFnID0gKGV2ZW50LmdldFBhcmFtZXRlcihcImhlYWRlcnNcIikgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pPy5ldGFnO1xuXG5cdFx0XHRpZiAobmV3RVRhZykge1xuXHRcdFx0XHQvLyBzZXQgbmV3IGV0YWcgZm9yIGZpbGVuYW1lIHVwZGF0ZSwgYnV0IHdpdGhvdXQgc2VuZGluZyBwYXRjaCByZXF1ZXN0XG5cdFx0XHRcdGNvbnRleHQ/LnNldFByb3BlcnR5KFwiQG9kYXRhLmV0YWdcIiwgbmV3RVRhZywgbnVsbCBhcyBhbnkpO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBzZXQgZmlsZW5hbWUgZm9yIGxpbmsgdGV4dFxuXHRcdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkocHJvcGVydHlGaWxlTmFtZS5wYXRoLCBmaWxlVXBsb2FkZXIuZ2V0VmFsdWUoKSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIGRlbGV0ZSB0aGUgYXZhdGFyIGNhY2hlIHRoYXQgbm90IGdldHMgdXBkYXRlZCBvdGhlcndpc2Vcblx0XHRcdGZpbGVXcmFwcGVyLmF2YXRhcj8ucmVmcmVzaEF2YXRhckNhY2hlQnVzdGluZygpO1xuXG5cdFx0XHR0aGlzLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVzb2x2ZSgpO1xuXHRcdH1cblxuXHRcdGRlbGV0ZSB0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGlzQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGZpbGVVcGxvYWRlcik7XG5cdFx0aWYgKCFpc0NvbGxhYm9yYXRpb25FbmFibGVkIHx8ICFjb250ZXh0KSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y29uc3Qgbm90aWZpY2F0aW9uRGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0aWYgKHByb3BlcnR5RmlsZU5hbWU/LnBhdGgpIHtcblx0XHRcdG5vdGlmaWNhdGlvbkRhdGEucHVzaChgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eUZpbGVOYW1lLnBhdGh9YCk7XG5cdFx0fVxuXG5cdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWxlVXBsb2FkZXIpO1xuXHRcdFx0YmluZGluZyA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblx0XHR9XG5cdFx0aWYgKGJpbmRpbmcuaGFzUGVuZGluZ0NoYW5nZXMoKSkge1xuXHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCAoKSA9PiB7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGZpbGVXcmFwcGVyLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlV3JhcHBlciwgeyBhY3Rpb246IEFjdGl2aXR5LlVubG9jaywgY29udGVudDogbm90aWZpY2F0aW9uRGF0YSB9KTtcblx0XHR9XG5cdH0sXG5cblx0X2Rpc3BsYXlNZXNzYWdlRm9yRmFpbGVkVXBsb2FkOiBmdW5jdGlvbiAob0V2ZW50OiBGaWxlVXBsb2FkZXIkVXBsb2FkQ29tcGxldGVFdmVudCk6IHZvaWQge1xuXHRcdC8vIGhhbmRsaW5nIG9mIGJhY2tlbmQgZXJyb3JzXG5cdFx0Y29uc3Qgc0Vycm9yID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlUmF3XCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJyZXNwb25zZVwiKTtcblx0XHRsZXQgc01lc3NhZ2VUZXh0LCBvRXJyb3I7XG5cdFx0dHJ5IHtcblx0XHRcdG9FcnJvciA9IHNFcnJvciAmJiBKU09OLnBhcnNlKHNFcnJvcik7XG5cdFx0XHRzTWVzc2FnZVRleHQgPSBvRXJyb3IuZXJyb3IgJiYgb0Vycm9yLmVycm9yLm1lc3NhZ2U7XG5cdFx0fSBjYXRjaCAoZSkge1xuXHRcdFx0c01lc3NhZ2VUZXh0ID0gc0Vycm9yIHx8IGdldFJlc291cmNlTW9kZWwob0V2ZW50LmdldFNvdXJjZSgpIGFzIENvbnRyb2wpLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9BQk9SVEVEX1RFWFRcIik7XG5cdFx0fVxuXHRcdE1lc3NhZ2VCb3guZXJyb3Ioc01lc3NhZ2VUZXh0KTtcblx0fSxcblxuXHRyZW1vdmVTdHJlYW06IGZ1bmN0aW9uIChldmVudDogRXZlbnQsIHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsIHByb3BlcnR5UGF0aDogc3RyaW5nLCBjb250cm9sbGVyOiBDb250cm9sbGVyKSB7XG5cdFx0Y29uc3QgZGVsZXRlQnV0dG9uID0gZXZlbnQuZ2V0U291cmNlKCkgYXMgQnV0dG9uO1xuXHRcdGNvbnN0IGZpbGVXcmFwcGVyID0gZGVsZXRlQnV0dG9uLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgRmlsZVdyYXBwZXI7XG5cdFx0Y29uc3QgY29udGV4dCA9IGZpbGVXcmFwcGVyLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dDtcblxuXHRcdC8vIHN0cmVhbXMgYXJlIHJlbW92ZWQgYnkgYXNzaWduaW5nIHRoZSBudWxsIHZhbHVlXG5cdFx0Y29udGV4dC5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIG51bGwpO1xuXHRcdC8vIFdoZW4gc2V0dGluZyB0aGUgcHJvcGVydHkgdG8gbnVsbCwgdGhlIHVwbG9hZFVybCAoQEBNT0RFTC5mb3JtYXQpIGlzIHNldCB0byBcIlwiIGJ5IHRoZSBtb2RlbFxuXHRcdC8vXHR3aXRoIHRoYXQgYW5vdGhlciB1cGxvYWQgaXMgbm90IHBvc3NpYmxlIGJlZm9yZSByZWZyZXNoaW5nIHRoZSBwYWdlXG5cdFx0Ly8gKHJlZnJlc2hpbmcgdGhlIHBhZ2Ugd291bGQgcmVjcmVhdGUgdGhlIFVSTClcblx0XHQvL1x0VGhpcyBpcyB0aGUgd29ya2Fyb3VuZDpcblx0XHQvL1x0V2Ugc2V0IHRoZSBwcm9wZXJ0eSB0byB1bmRlZmluZWQgb25seSBvbiB0aGUgZnJvbnRlbmQgd2hpY2ggd2lsbCByZWNyZWF0ZSB0aGUgdXBsb2FkVXJsXG5cdFx0Y29udGV4dC5zZXRQcm9wZXJ0eShwcm9wZXJ0eVBhdGgsIHVuZGVmaW5lZCwgbnVsbCBhcyBhbnkpO1xuXG5cdFx0dGhpcy5fY2FsbFNpZGVFZmZlY3RzRm9yU3RyZWFtKGV2ZW50LCBmaWxlV3JhcHBlciwgY29udHJvbGxlcik7XG5cblx0XHQvLyBDb2xsYWJvcmF0aW9uIERyYWZ0IEFjdGl2aXR5IFN5bmNcblx0XHRjb25zdCBiQ29sbGFib3JhdGlvbkVuYWJsZWQgPSBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGRlbGV0ZUJ1dHRvbik7XG5cdFx0aWYgKGJDb2xsYWJvcmF0aW9uRW5hYmxlZCkge1xuXHRcdFx0bGV0IGJpbmRpbmcgPSBjb250ZXh0LmdldEJpbmRpbmcoKTtcblx0XHRcdGlmICghYmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZGVsZXRlQnV0dG9uKTtcblx0XHRcdFx0YmluZGluZyA9IChvVmlldy5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblx0XHRcdH1cblxuXHRcdFx0Y29uc3QgZGF0YSA9IFtgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eVBhdGh9YF07XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRkYXRhLnB1c2goYCR7Y29udGV4dC5nZXRQYXRoKCl9LyR7cHJvcGVydHlGaWxlTmFtZS5wYXRofWApO1xuXHRcdFx0fVxuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGRlbGV0ZUJ1dHRvbiwgeyBhY3Rpb246IEFjdGl2aXR5LkxvY2ssIGNvbnRlbnQ6IGRhdGEgfSk7XG5cblx0XHRcdGJpbmRpbmcuYXR0YWNoRXZlbnRPbmNlKFwicGF0Y2hDb21wbGV0ZWRcIiwgZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBkYXRhIH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXG5cdF9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW06IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgb0NvbnRyb2w6IGFueSwgb0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdGNvbnN0IG9GRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdGlmIChvQ29udHJvbCAmJiBvQ29udHJvbC5nZXRCaW5kaW5nQ29udGV4dCgpLmlzVHJhbnNpZW50KCkpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sKSB7XG5cdFx0XHRvRXZlbnQub1NvdXJjZSA9IG9Db250cm9sO1xuXHRcdH1cblx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZENoYW5nZShvRXZlbnQsIHRoaXMuZ2V0RmllbGRTdGF0ZU9uQ2hhbmdlKG9FdmVudCkuc3RhdGVbXCJ2YWxpZGl0eVwiXSk7XG5cdH0sXG5cblx0Z2V0SWNvbkZvck1pbWVUeXBlOiBmdW5jdGlvbiAoc01pbWVUeXBlOiBhbnkpIHtcblx0XHRyZXR1cm4gSWNvblBvb2wuZ2V0SWNvbkZvck1pbWVUeXBlKHNNaW1lVHlwZSk7XG5cdH0sXG5cblx0LyoqXG5cdCAqIE1ldGhvZCB0byByZXRyaWV2ZSB0ZXh0IGZyb20gdmFsdWUgbGlzdCBmb3IgRGF0YUZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgcmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdFxuXHQgKiBAcGFyYW0gc1Byb3BlcnR5VmFsdWUgVGhlIHByb3BlcnR5IHZhbHVlIG9mIHRoZSBkYXRhZmllbGRcblx0ICogQHBhcmFtIHNQcm9wZXJ0eUZ1bGxQYXRoIFRoZSBwcm9wZXJ0eSBmdWxsIHBhdGgnc1xuXHQgKiBAcGFyYW0gc0Rpc3BsYXlGb3JtYXQgVGhlIGRpc3BsYXkgZm9ybWF0IGZvciB0aGUgZGF0YWZpZWxkXG5cdCAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgdmFsdWUgaW4gY29ycmVzcG9uZGluZyBkaXNwbGF5IGZvcm1hdC5cblx0ICovXG5cdHJldHJpZXZlVGV4dEZyb21WYWx1ZUxpc3Q6IGZ1bmN0aW9uIChzUHJvcGVydHlWYWx1ZTogc3RyaW5nLCBzUHJvcGVydHlGdWxsUGF0aDogc3RyaW5nLCBzRGlzcGxheUZvcm1hdDogc3RyaW5nKSB7XG5cdFx0bGV0IHNUZXh0UHJvcGVydHk6IHN0cmluZztcblx0XHRsZXQgb01ldGFNb2RlbDtcblx0XHRsZXQgc1Byb3BlcnR5TmFtZTogc3RyaW5nO1xuXHRcdGlmIChzUHJvcGVydHlWYWx1ZSkge1xuXHRcdFx0b01ldGFNb2RlbCA9IENvbW1vbkhlbHBlci5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdHNQcm9wZXJ0eU5hbWUgPSBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtzUHJvcGVydHlGdWxsUGF0aH1Ac2FwdWkubmFtZWApO1xuXHRcdFx0cmV0dXJuIG9NZXRhTW9kZWxcblx0XHRcdFx0LnJlcXVlc3RWYWx1ZUxpc3RJbmZvKHNQcm9wZXJ0eUZ1bGxQYXRoLCB0cnVlKVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAobVZhbHVlTGlzdEluZm86IGFueSkge1xuXHRcdFx0XHRcdC8vIHRha2UgdGhlIFwiXCIgb25lIGlmIGV4aXN0cywgb3RoZXJ3aXNlIHRha2UgdGhlIGZpcnN0IG9uZSBpbiB0aGUgb2JqZWN0IFRPRE86IHRvIGJlIGRpc2N1c3NlZFxuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RJbmZvID0gbVZhbHVlTGlzdEluZm9bbVZhbHVlTGlzdEluZm9bXCJcIl0gPyBcIlwiIDogT2JqZWN0LmtleXMobVZhbHVlTGlzdEluZm8pWzBdXTtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVMaXN0TW9kZWwgPSBvVmFsdWVMaXN0SW5mby4kbW9kZWw7XG5cdFx0XHRcdFx0Y29uc3Qgb01ldGFNb2RlbFZhbHVlTGlzdCA9IG9WYWx1ZUxpc3RNb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRcdFx0XHRjb25zdCBvUGFyYW1XaXRoS2V5ID0gb1ZhbHVlTGlzdEluZm8uUGFyYW1ldGVycy5maW5kKGZ1bmN0aW9uIChvUGFyYW1ldGVyOiBhbnkpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvUGFyYW1ldGVyLkxvY2FsRGF0YVByb3BlcnR5ICYmIG9QYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkuJFByb3BlcnR5UGF0aCA9PT0gc1Byb3BlcnR5TmFtZTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRpZiAob1BhcmFtV2l0aEtleSAmJiAhb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKGBJbmNvbnNpc3RlbnQgdmFsdWUgaGVscCBhbm5vdGF0aW9uIGZvciAke3NQcm9wZXJ0eU5hbWV9YCk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGNvbnN0IG9UZXh0QW5ub3RhdGlvbiA9IG9NZXRhTW9kZWxWYWx1ZUxpc3QuZ2V0T2JqZWN0KFxuXHRcdFx0XHRcdFx0YC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofS8ke29QYXJhbVdpdGhLZXkuVmFsdWVMaXN0UHJvcGVydHl9QGNvbS5zYXAudm9jYWJ1bGFyaWVzLkNvbW1vbi52MS5UZXh0YFxuXHRcdFx0XHRcdCk7XG5cblx0XHRcdFx0XHRpZiAob1RleHRBbm5vdGF0aW9uICYmIG9UZXh0QW5ub3RhdGlvbi4kUGF0aCkge1xuXHRcdFx0XHRcdFx0c1RleHRQcm9wZXJ0eSA9IG9UZXh0QW5ub3RhdGlvbi4kUGF0aDtcblx0XHRcdFx0XHRcdGNvbnN0IG9GaWx0ZXIgPSBuZXcgRmlsdGVyKHtcblx0XHRcdFx0XHRcdFx0cGF0aDogb1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eSxcblx0XHRcdFx0XHRcdFx0b3BlcmF0b3I6IFwiRVFcIixcblx0XHRcdFx0XHRcdFx0dmFsdWUxOiBzUHJvcGVydHlWYWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRjb25zdCBvTGlzdEJpbmRpbmcgPSBvVmFsdWVMaXN0TW9kZWwuYmluZExpc3QoYC8ke29WYWx1ZUxpc3RJbmZvLkNvbGxlY3Rpb25QYXRofWAsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBvRmlsdGVyLCB7XG5cdFx0XHRcdFx0XHRcdCRzZWxlY3Q6IHNUZXh0UHJvcGVydHlcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9MaXN0QmluZGluZy5yZXF1ZXN0Q29udGV4dHMoMCwgMik7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHNEaXNwbGF5Rm9ybWF0ID0gXCJWYWx1ZVwiO1xuXHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LnRoZW4oZnVuY3Rpb24gKGFDb250ZXh0czogYW55KSB7XG5cdFx0XHRcdFx0Y29uc3Qgc0Rlc2NyaXB0aW9uID0gc1RleHRQcm9wZXJ0eSA/IGFDb250ZXh0c1swXT8uZ2V0T2JqZWN0KClbc1RleHRQcm9wZXJ0eV0gOiBcIlwiO1xuXHRcdFx0XHRcdHN3aXRjaCAoc0Rpc3BsYXlGb3JtYXQpIHtcblx0XHRcdFx0XHRcdGNhc2UgXCJEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gc0Rlc2NyaXB0aW9uO1xuXHRcdFx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uVmFsdWVcIjpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIENvcmUuZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlKFwic2FwLmZlLmNvcmVcIikuZ2V0VGV4dChcIkNfRk9STUFUX0ZPUl9URVhUX0FSUkFOR0VNRU5UXCIsIFtcblx0XHRcdFx0XHRcdFx0XHRzRGVzY3JpcHRpb24sXG5cdFx0XHRcdFx0XHRcdFx0c1Byb3BlcnR5VmFsdWVcblx0XHRcdFx0XHRcdFx0XSk7XG5cdFx0XHRcdFx0XHRjYXNlIFwiVmFsdWVEZXNjcmlwdGlvblwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiQ19GT1JNQVRfRk9SX1RFWFRfQVJSQU5HRU1FTlRcIiwgW1xuXHRcdFx0XHRcdFx0XHRcdHNQcm9wZXJ0eVZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdHNEZXNjcmlwdGlvblxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGRlZmF1bHQ6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzUHJvcGVydHlWYWx1ZTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBzTXNnID1cblx0XHRcdFx0XHRcdG9FcnJvci5zdGF0dXMgJiYgb0Vycm9yLnN0YXR1cyA9PT0gNDA0XG5cdFx0XHRcdFx0XHRcdD8gYE1ldGFkYXRhIG5vdCBmb3VuZCAoJHtvRXJyb3Iuc3RhdHVzfSkgZm9yIHZhbHVlIGhlbHAgb2YgcHJvcGVydHkgJHtzUHJvcGVydHlGdWxsUGF0aH1gXG5cdFx0XHRcdFx0XHRcdDogb0Vycm9yLm1lc3NhZ2U7XG5cdFx0XHRcdFx0TG9nLmVycm9yKHNNc2cpO1xuXHRcdFx0XHR9KTtcblx0XHR9XG5cdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHR9LFxuXG5cdGhhbmRsZVR5cGVNaXNzbWF0Y2g6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSkge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBnZXRSZXNvdXJjZU1vZGVsKG9FdmVudC5nZXRTb3VyY2UoKSk7XG5cdFx0TWVzc2FnZUJveC5lcnJvcihyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRVwiKSwge1xuXHRcdFx0ZGV0YWlsczpcblx0XHRcdFx0YDxwPjxzdHJvbmc+JHtyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRV9ERVRBSUxTX1NFTEVDVEVEXCIpfTwvc3Ryb25nPjwvcD4ke1xuXHRcdFx0XHRcdG9FdmVudC5nZXRQYXJhbWV0ZXJzKCkubWltZVR5cGVcblx0XHRcdFx0fTxicj48YnI+YCArXG5cdFx0XHRcdGA8cD48c3Ryb25nPiR7cmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfV1JPTkdfTUlNRVRZUEVfREVUQUlMU19BTExPV0VEXCIpfTwvc3Ryb25nPjwvcD4ke29FdmVudFxuXHRcdFx0XHRcdC5nZXRTb3VyY2UoKVxuXHRcdFx0XHRcdC5nZXRNaW1lVHlwZSgpXG5cdFx0XHRcdFx0LnRvU3RyaW5nKClcblx0XHRcdFx0XHQucmVwbGFjZUFsbChcIixcIiwgXCIsIFwiKX1gLFxuXHRcdFx0Y29udGVudFdpZHRoOiBcIjE1MHB4XCJcblx0XHR9IGFzIGFueSk7XG5cdH0sXG5cblx0aGFuZGxlRmlsZVNpemVFeGNlZWQ6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSAvKmlGaWxlU2l6ZTogYW55Ki8pIHtcblx0XHRNZXNzYWdlQm94LmVycm9yKFxuXHRcdFx0Z2V0UmVzb3VyY2VNb2RlbChvRXZlbnQuZ2V0U291cmNlKCkpLmdldFRleHQoXG5cdFx0XHRcdFwiTV9GSUVMRF9GSUxFVVBMT0FERVJfRklMRV9UT09fQklHXCIsXG5cdFx0XHRcdG9FdmVudC5nZXRTb3VyY2UoKS5nZXRNYXhpbXVtRmlsZVNpemUoKS50b0ZpeGVkKDMpXG5cdFx0XHQpLFxuXHRcdFx0e1xuXHRcdFx0XHRjb250ZW50V2lkdGg6IFwiMTUwcHhcIlxuXHRcdFx0fSBhcyBhbnlcblx0XHQpO1xuXHR9LFxuXG5cdF9nZXRFeHRlbnNpb25Db250cm9sbGVyOiBmdW5jdGlvbiAob0NvbnRyb2xsZXI6IGFueSkge1xuXHRcdHJldHVybiBvQ29udHJvbGxlci5pc0EoXCJzYXAuZmUuY29yZS5FeHRlbnNpb25BUElcIikgPyBvQ29udHJvbGxlci5fY29udHJvbGxlciA6IG9Db250cm9sbGVyO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIGNyZWF0ZSBhbmQgc2hvdyB3aG8gaXMgZWRpdGluZyB0aGUgZmllbGQgcG9wb3Zlci5cblx0ICpcblx0ICogQHBhcmFtIHNvdXJjZSBUaGUgYXZhdGFyIHdoaWNoIGlzIG5leHQgdG8gdGhlIGZpZWxkIGxvY2tlZFxuXHQgKiBAcGFyYW0gdmlldyBDdXJyZW50IHZpZXdcblx0ICovXG5cdHNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXI6IGZ1bmN0aW9uIChzb3VyY2U6IEF2YXRhciwgdmlldzogVmlldykge1xuXHRcdGNvbnN0IHJlc291cmNlTW9kZWwgPSBSZXNvdXJjZU1vZGVsSGVscGVyLmdldFJlc291cmNlTW9kZWwodmlldyk7XG5cdFx0bGV0IHBvcG92ZXIgPSBDb3JlLmJ5SWQoYG1hbmFnZUNvbGxhYm9yYXRpb25EcmFmdC0tZWRpdFVzZXJgKSBhcyBSZXNwb25zaXZlUG9wb3ZlcjtcblxuXHRcdGlmICghcG9wb3Zlcikge1xuXHRcdFx0cG9wb3ZlciA9IG5ldyBSZXNwb25zaXZlUG9wb3ZlcihcIm1hbmFnZUNvbGxhYm9yYXRpb25EcmFmdC0tZWRpdFVzZXJcIiwge1xuXHRcdFx0XHRzaG93SGVhZGVyOiBmYWxzZSxcblx0XHRcdFx0cGxhY2VtZW50OiBcIkJvdHRvbVwiXG5cdFx0XHR9KTtcblx0XHRcdHBvcG92ZXIuYWRkU3R5bGVDbGFzcyhcInNhcFVpQ29udGVudFBhZGRpbmdcIik7XG5cdFx0XHR2aWV3LmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHR9XG5cblx0XHRjb25zdCBiaW5kaW5nUGF0aCA9IChzb3VyY2UuZ2V0QmluZGluZyhcImluaXRpYWxzXCIpIGFzIENvbXBvc2l0ZUJpbmRpbmcpXG5cdFx0XHQ/LmdldEJpbmRpbmdzKClcblx0XHRcdC5maW5kKChiaW5kaW5nKSA9PiBiaW5kaW5nPy5nZXRQYXRoKCk/LnN0YXJ0c1dpdGgoXCIvY29sbGFib3JhdGlvbi9hY3Rpdml0aWVzXCIpKVxuXHRcdFx0LmdldFBhdGgoKTtcblx0XHRjb25zdCBhY3Rpdml0aWVzID0gc291cmNlLmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik/LmdldE9iamVjdChiaW5kaW5nUGF0aCk7XG5cblx0XHRsZXQgZWRpdGluZ0FjdGl2aXR5OiBVc2VyQWN0aXZpdHkgfCB1bmRlZmluZWQ7XG5cdFx0aWYgKGFjdGl2aXRpZXMgJiYgYWN0aXZpdGllcy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlZGl0aW5nQWN0aXZpdHkgPSBhY3Rpdml0aWVzLmZpbmQoKGFjdGl2aXR5OiBVc2VyQWN0aXZpdHkpID0+IHtcblx0XHRcdFx0cmV0dXJuIGFjdGl2aXR5LmtleSA9PT0gZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aChzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoKSEuZ2V0UGF0aCgpKTtcblx0XHRcdH0pO1xuXHRcdH1cblx0XHRwb3BvdmVyLmRlc3Ryb3lDb250ZW50KCk7XG5cdFx0cG9wb3Zlci5hZGRDb250ZW50KFxuXHRcdFx0bmV3IExhYmVsKHtcblx0XHRcdFx0dGV4dDogcmVzb3VyY2VNb2RlbC5nZXRUZXh0KFwiQ19DT0xMQUJPUkFUSU9OQVZBVEFSX1VTRVJfRURJVF9GSUVMRFwiLCBbYCR7ZWRpdGluZ0FjdGl2aXR5Py5uYW1lfWBdKVxuXHRcdFx0fSlcblx0XHQpO1xuXHRcdHBvcG92ZXIub3BlbkJ5KHNvdXJjZSk7XG5cdH1cbn07XG5cbi8qKlxuICogQGdsb2JhbFxuICovXG5leHBvcnQgZGVmYXVsdCBGaWVsZFJ1bnRpbWU7XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7RUFrREE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0EsU0FBU0EsdUJBQXVCLENBQUNDLEtBQWMsRUFBMEM7SUFDeEYsSUFBSUMsT0FBTyxHQUFJRCxLQUFLLENBQUNFLGlCQUFpQixFQUFF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
831
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJnZXRDb2xsYWJvcmF0aW9uQmluZGluZyIsImZpZWxkIiwiYmluZGluZyIsImdldEJpbmRpbmdDb250ZXh0IiwiZ2V0QmluZGluZyIsImlzQSIsIm9WaWV3IiwiQ29tbW9uVXRpbHMiLCJnZXRUYXJnZXRWaWV3IiwiRmllbGRSdW50aW1lIiwidXBsb2FkUHJvbWlzZXMiLCJ1bmRlZmluZWQiLCJjcmVhdGluZ0luYWN0aXZlUm93Iiwib25EYXRhRmllbGRXaXRoTmF2aWdhdGlvblBhdGgiLCJvU291cmNlIiwib0NvbnRyb2xsZXIiLCJzTmF2UGF0aCIsIl9yb3V0aW5nIiwib0JpbmRpbmdDb250ZXh0Iiwib01ldGFNb2RlbCIsImdldE1vZGVsIiwiZ2V0TWV0YU1vZGVsIiwiZm5OYXZpZ2F0ZSIsIm9Db250ZXh0IiwibmF2aWdhdGVUb1RhcmdldCIsImdldFZpZXdEYXRhIiwiY29udmVydGVyVHlwZSIsIk1vZGVsSGVscGVyIiwiaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkIiwiZHJhZnQiLCJwcm9jZXNzRGF0YUxvc3NPckRyYWZ0RGlzY2FyZENvbmZpcm1hdGlvbiIsIkZ1bmN0aW9uIiwicHJvdG90eXBlIiwiZ2V0Q29udHJvbGxlciIsIk5hdmlnYXRpb25UeXBlIiwiRm9yd2FyZE5hdmlnYXRpb24iLCJMb2ciLCJlcnJvciIsImlzRHJhZnRJbmRpY2F0b3JWaXNpYmxlIiwic1Byb3BlcnR5UGF0aCIsInNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yIiwiSGFzRHJhZnRFbnRpdHkiLCJJc0FjdGl2ZUVudGl0eSIsImhpZGVEcmFmdEluZm8iLCJvblZhbGlkYXRlRmllbGRHcm91cCIsIm9FdmVudCIsIm9GRUNvbnRyb2xsZXIiLCJfZ2V0RXh0ZW5zaW9uQ29udHJvbGxlciIsIl9zaWRlRWZmZWN0cyIsImhhbmRsZUZpZWxkR3JvdXBDaGFuZ2UiLCJfZmV0Y2hSZWNvbW1lbmRhdGlvbnMiLCJjb250cm9sbGVyIiwidmlldyIsImZpZWxkQmluZGluZ0NvbnRleHQiLCJyZWNvbW1lbmRhdGlvbnNDb250ZXh0IiwiZmllbGRCaW5kaW5nIiwiZmVDb250cm9sbGVyIiwidmFsdWVIZWxwSWQiLCJnZXRWYWx1ZUhlbHAiLCJpbmNsdWRlcyIsInRhYmxlSWQiLCJzdWJzdHJpbmciLCJpbmRleE9mIiwidGFibGUiLCJieUlkIiwiY29udGV4dElkZW50aWZpZXIiLCJnZXRQYXJlbnQiLCJnZXRJZGVudGlmaWVyQ29sdW1uIiwicmVjb21tZW5kYXRpb25zIiwiZmV0Y2hBbmRBcHBseVJlY29tbWVuZGF0aW9uc09uRmllbGRDaGFuZ2UiLCJjb250ZXh0IiwiaGFuZGxlQ2hhbmdlIiwib1NvdXJjZUZpZWxkIiwiZ2V0U291cmNlIiwiYklzVHJhbnNpZW50IiwiaXNUcmFuc2llbnQiLCJwVmFsdWVSZXNvbHZlZCIsImdldFBhcmFtZXRlciIsIlByb21pc2UiLCJyZXNvbHZlIiwiYlZhbGlkIiwiZmllbGRWYWxpZGl0eSIsImdldEZpZWxkU3RhdGVPbkNoYW5nZSIsInN0YXRlIiwidGhlbiIsIm1QYXJhbWV0ZXJzIiwidmFsaWQiLCJGaWVsZEFQSSIsImhhbmRsZUZpZWxkQ2hhbmdlIiwiY2F0Y2giLCJkZWJ1ZyIsInZhbHVlUmVzb2x2ZWRBbmRQYXRjaFNlbnQiLCJzZXRUaW1lb3V0IiwiZWRpdEZsb3ciLCJzeW5jVGFzayIsInByZXBhcmVEZWZlcnJlZFNpZGVFZmZlY3RzRm9yRmllbGQiLCJiQ29sbGFib3JhdGlvbkVuYWJsZWQiLCJDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jIiwiaXNDb25uZWN0ZWQiLCJkYXRhIiwiZ2V0QmluZGluZ0luZm8iLCJwYXJ0cyIsImZpbHRlciIsInBhcnQiLCJwYXRoIiwibWFwIiwiZ2V0UGF0aCIsInJldGFpbkFzeW5jTWVzc2FnZXMiLCJ1cGRhdGVDb2xsYWJvcmF0aW9uIiwiaGFzUGVuZGluZ0NoYW5nZXMiLCJhdHRhY2hFdmVudE9uY2UiLCJzZW5kIiwiYWN0aW9uIiwiQWN0aXZpdHkiLCJDaGFuZ2UiLCJjb250ZW50IiwicmVsZWFzZUFzeW5jTWVzc2FnZXMiLCJoYW5kbGVMaXZlQ2hhbmdlIiwiZXZlbnQiLCJfc2VuZENvbGxhYm9yYXRpb25NZXNzYWdlRm9yRmlsZVVwbG9hZGVyIiwiZmlsZVVwbG9hZGVyIiwiYmluZGluZ1BhdGgiLCJnZXRQcm9wZXJ0eSIsImZ1bGxQYXRoIiwiaGFuZGxlT3BlblVwbG9hZGVyIiwiTG9jayIsImhhbmRsZUNsb3NlVXBsb2FkZXIiLCJVbmxvY2siLCJtRmllbGRTdGF0ZSIsIl9pc0JpbmRpbmdTdGF0ZU1lc3NhZ2VzIiwib0JpbmRpbmciLCJnZXREYXRhU3RhdGUiLCJnZXRJbnZhbGlkVmFsdWUiLCJnZXRDb250ZW50IiwiRmllbGRXcmFwcGVyIiwiZ2V0TWV0YWRhdGEiLCJnZXROYW1lIiwiZ2V0RWRpdE1vZGUiLCJnZXRDb250ZW50RWRpdCIsImJJc1ZhbGlkIiwiZ2V0TWF4Q29uZGl0aW9ucyIsIm9WYWx1ZUJpbmRpbmdJbmZvIiwiZ2V0VmFsdWUiLCJmaWVsZFZhbHVlIiwidmFsaWRpdHkiLCJfZm5GaXhIYXNoUXVlcnlTdHJpbmciLCJzQ3VycmVudEhhc2giLCJzcGxpdCIsIl9mbkdldExpbmtJbmZvcm1hdGlvbiIsIl9vU291cmNlIiwiX29MaW5rIiwiX3NQcm9wZXJ0eVBhdGgiLCJfc1ZhbHVlIiwiZm5TZXRBY3RpdmUiLCJvTW9kZWwiLCJzU2VtYW50aWNPYmplY3ROYW1lIiwib0ludGVybmFsTW9kZWxDb250ZXh0Iiwib0FwcENvbXBvbmVudCIsImdldEFwcENvbXBvbmVudCIsIm9TaGVsbFNlcnZpY2VIZWxwZXIiLCJnZXRTaGVsbFNlcnZpY2VzIiwicEdldExpbmtzUHJvbWlzZSIsImdldExpbmtzV2l0aENhY2hlIiwic2VtYW50aWNPYmplY3QiLCJhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMiLCJnZXRPYmplY3QiLCJTZW1hbnRpY09iamVjdE5hbWUiLCJTZW1hbnRpY09iamVjdEZ1bGxQYXRoIiwiTWV0YU1vZGVsIiwiSW50ZXJuYWxNb2RlbENvbnRleHQiLCJTaGVsbFNlcnZpY2VIZWxwZXIiLCJHZXRMaW5rc1Byb21pc2UiLCJTZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyIsIl9mblF1aWNrVmlld0hhc05ld0NvbmRpdGlvbiIsIm9TZW1hbnRpY09iamVjdFBheWxvYWQiLCJfb0xpbmtJbmZvIiwiYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9mblF1aWNrVmlld1NldE5ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlciIsIl9vRmluYWxTZW1hbnRpY09iamVjdHMiLCJzVG1wUGF0aCIsImFTZW1hbnRpY09iamVjdFBhdGhzIiwiT2JqZWN0Iiwia2V5cyIsImlQYXRoc0NvdW50IiwiX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwiLCJzVmFsdWUiLCJvQ29udHJvbCIsImJBY3RpdmUiLCJzZXRBY3RpdmUiLCJzZXRUaXRsZUFjdGl2ZSIsIm9Db25kaXRpb25hbFdyYXBwZXIiLCJzZXRDb25kaXRpb24iLCJvTGlua0luZm8iLCJnZXRIYXNoIiwidXBkYXRlU2VtYW50aWNUYXJnZXRzIiwib0ZpbmFsU2VtYW50aWNPYmplY3RzIiwib0Vycm9yIiwiX2NoZWNrQ29udHJvbEhhc01vZGVsQW5kQmluZGluZ0NvbnRleHQiLCJfY29udHJvbCIsIl9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbCIsInByb3BlcnR5UGF0aCIsImFDdXN0b21EYXRhIiwic1NlbWFudGljT2JqZWN0UGF0aFZhbHVlIiwib1ZhbHVlQmluZGluZyIsIl9mbkN1c3RvbURhdGFWYWx1ZUlzU3RyaW5nIiwic2VtYW50aWNPYmplY3RQYXRoVmFsdWUiLCJjdXN0b21EYXRhIiwiZ2V0S2V5IiwiaW5kZXgiLCJfb0NoYW5nZUV2ZW50IiwiTGlua01vZGVsQ29udGV4dENoYW5nZSIsInNQcm9wZXJ0eSIsInNQYXRoVG9Qcm9wZXJ0eSIsImNvbnRyb2wiLCJtZGNMaW5rIiwiZ2V0RGVwZW5kZW50cyIsImxlbmd0aCIsImdldEN1c3RvbURhdGEiLCJvcGVuRXh0ZXJuYWxMaW5rIiwic291cmNlIiwib3BlbldpbmRvdyIsImNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzIiwibWRjTGlua0lkIiwiZ2V0SWQiLCJpbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyIsInRpdGxlIiwiZ2V0UmVzb3VyY2VNb2RlbCIsImdldFRleHQiLCJkZXNjcmlwdGlvbiIsImVuYWJsZUZvcm1hdHRlZFRleHQiLCJpbGx1c3RyYXRpb25TaXplIiwiaWxsdXN0cmF0aW9uVHlwZSIsIklsbHVzdHJhdGVkTWVzc2FnZVR5cGUiLCJUZW50IiwiaWxsdXN0cmF0ZWRNZXNzYWdlIiwiSWxsdXN0cmF0ZWRNZXNzYWdlIiwicG9wb3ZlclNldHRpbmdzIiwiaG9yaXpvbnRhbFNjcm9sbGluZyIsInNob3dIZWFkZXIiLCJEZXZpY2UiLCJzeXN0ZW0iLCJwaG9uZSIsInBsYWNlbWVudCIsIm1vYmlsZWxpYnJhcnkiLCJQbGFjZW1lbnRUeXBlIiwiQXV0byIsImFmdGVyQ2xvc2UiLCJkZXN0cm95IiwiUmVzcG9uc2l2ZVBvcG92ZXIiLCJvcGVuTGluayIsInNhcG1MaW5rIiwiaFJlZiIsImdldFRyaWdnZXJIcmVmIiwibGlua0l0ZW1zIiwicmV0cmlldmVMaW5rSXRlbXMiLCJnZXRQYXlsb2FkIiwiaGFzUXVpY2tWaWV3RmFjZXRzIiwicG9wb3ZlciIsImFkZERlcGVuZGVudCIsIm9wZW5CeSIsIm9wZW4iLCJhcHBDb21wb25lbnQiLCJzaGVsbFNlcnZpY2UiLCJzaGVsbEhhc2giLCJwYXJzZVNoZWxsSGFzaCIsIm5hdkFyZ3MiLCJ0YXJnZXQiLCJwYXJhbXMiLCJLZWVwQWxpdmVIZWxwZXIiLCJzdG9yZUNvbnRyb2xSZWZyZXNoU3RyYXRlZ3lGb3JIYXNoIiwiaXNTdGlja3lFZGl0TW9kZSIsInRvRXh0ZXJuYWwiLCJuZXdIcmVmIiwiaHJlZkZvckV4dGVybmFsQXN5bmMiLCJwcmVzc0xpbmsiLCJmaW5kRWxlbWVudHMiLCJlbGVtIiwib0ZpZWxkSW5mbyIsInVwbG9hZFN0cmVhbSIsIkZFQ29udHJvbGxlciIsImZpbGVXcmFwcGVyIiwidXBsb2FkVXJsIiwiZ2V0VXBsb2FkVXJsIiwic2V0VUlCdXN5Iiwic2V0VXBsb2FkVXJsIiwicmVtb3ZlQWxsSGVhZGVyUGFyYW1ldGVycyIsInRva2VuIiwiZ2V0SHR0cEhlYWRlcnMiLCJoZWFkZXJQYXJhbWV0ZXJDU1JGVG9rZW4iLCJGaWxlVXBsb2FkZXJQYXJhbWV0ZXIiLCJzZXROYW1lIiwic2V0VmFsdWUiLCJhZGRIZWFkZXJQYXJhbWV0ZXIiLCJlVGFnIiwiaGVhZGVyUGFyYW1ldGVyRVRhZyIsImhlYWRlclBhcmFtZXRlckFjY2VwdCIsImhlYWRlclBhcmFtZXRlckNvbnRlbnRUeXBlIiwidXBsb2FkUHJvbWlzZSIsInJlamVjdCIsInVwbG9hZCIsIk1lc3NhZ2VCb3giLCJoYW5kbGVVcGxvYWRDb21wbGV0ZSIsInByb3BlcnR5RmlsZU5hbWUiLCJzdGF0dXMiLCJOdW1iZXIiLCJfZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQiLCJuZXdFVGFnIiwiZXRhZyIsInNldFByb3BlcnR5IiwiYXZhdGFyIiwicmVmcmVzaEF2YXRhckNhY2hlQnVzdGluZyIsIl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0iLCJpc0NvbGxhYm9yYXRpb25FbmFibGVkIiwibm90aWZpY2F0aW9uRGF0YSIsInB1c2giLCJzRXJyb3IiLCJzTWVzc2FnZVRleHQiLCJKU09OIiwicGFyc2UiLCJtZXNzYWdlIiwiZSIsInJlbW92ZVN0cmVhbSIsImRlbGV0ZUJ1dHRvbiIsImdldEljb25Gb3JNaW1lVHlwZSIsInNNaW1lVHlwZSIsIkljb25Qb29sIiwicmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdCIsInNQcm9wZXJ0eVZhbHVlIiwic1Byb3BlcnR5RnVsbFBhdGgiLCJzRGlzcGxheUZvcm1hdCIsInNUZXh0UHJvcGVydHkiLCJzUHJvcGVydHlOYW1lIiwiQ29tbW9uSGVscGVyIiwicmVxdWVzdFZhbHVlTGlzdEluZm8iLCJtVmFsdWVMaXN0SW5mbyIsIm9WYWx1ZUxpc3RJbmZvIiwib1ZhbHVlTGlzdE1vZGVsIiwiJG1vZGVsIiwib01ldGFNb2RlbFZhbHVlTGlzdCIsIm9QYXJhbVdpdGhLZXkiLCJQYXJhbWV0ZXJzIiwiZmluZCIsIm9QYXJhbWV0ZXIiLCJMb2NhbERhdGFQcm9wZXJ0eSIsIiRQcm9wZXJ0eVBhdGgiLCJWYWx1ZUxpc3RQcm9wZXJ0eSIsIkVycm9yIiwib1RleHRBbm5vdGF0aW9uIiwiQ29sbGVjdGlvblBhdGgiLCIkUGF0aCIsIm9GaWx0ZXIiLCJGaWx0ZXIiLCJvcGVyYXRvciIsInZhbHVlMSIsIm9MaXN0QmluZGluZyIsImJpbmRMaXN0IiwiJHNlbGVjdCIsInJlcXVlc3RDb250ZXh0cyIsImFDb250ZXh0cyIsInNEZXNjcmlwdGlvbiIsIkNvcmUiLCJnZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUiLCJzTXNnIiwiaGFuZGxlVHlwZU1pc3NtYXRjaCIsInJlc291cmNlTW9kZWwiLCJkZXRhaWxzIiwiZ2V0UGFyYW1ldGVycyIsIm1pbWVUeXBlIiwiZ2V0TWltZVR5cGUiLCJ0b1N0cmluZyIsInJlcGxhY2VBbGwiLCJjb250ZW50V2lkdGgiLCJoYW5kbGVGaWxlU2l6ZUV4Y2VlZCIsImdldE1heGltdW1GaWxlU2l6ZSIsInRvRml4ZWQiLCJfY29udHJvbGxlciIsInNob3dDb2xsYWJvcmF0aW9uRWRpdFVzZXIiLCJSZXNvdXJjZU1vZGVsSGVscGVyIiwiYWRkU3R5bGVDbGFzcyIsImdldEJpbmRpbmdzIiwic3RhcnRzV2l0aCIsImFjdGl2aXRpZXMiLCJlZGl0aW5nQWN0aXZpdHkiLCJhY3Rpdml0eSIsImtleSIsImdldEFjdGl2aXR5S2V5RnJvbVBhdGgiLCJkZXN0cm95Q29udGVudCIsImFkZENvbnRlbnQiLCJMYWJlbCIsInRleHQiLCJuYW1lIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJGaWVsZFJ1bnRpbWUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgQ29tbW9uVXRpbHMgZnJvbSBcInNhcC9mZS9jb3JlL0NvbW1vblV0aWxzXCI7XG5pbXBvcnQgdHlwZSBQYWdlQ29udHJvbGxlciBmcm9tIFwic2FwL2ZlL2NvcmUvUGFnZUNvbnRyb2xsZXJcIjtcbmltcG9ydCBDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jIGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0FjdGl2aXR5U3luY1wiO1xuaW1wb3J0IHR5cGUgeyBVc2VyQWN0aXZpdHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvY29sbGFib3JhdGlvbi9Db2xsYWJvcmF0aW9uQ29tbW9uXCI7XG5pbXBvcnQgeyBBY3Rpdml0eSwgZ2V0QWN0aXZpdHlLZXlGcm9tUGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS9jb250cm9sbGVyZXh0ZW5zaW9ucy9jb2xsYWJvcmF0aW9uL0NvbGxhYm9yYXRpb25Db21tb25cIjtcbmltcG9ydCBkcmFmdCBmcm9tIFwic2FwL2ZlL2NvcmUvY29udHJvbGxlcmV4dGVuc2lvbnMvZWRpdEZsb3cvZHJhZnRcIjtcbmltcG9ydCB0eXBlIHsgRW5oYW5jZVdpdGhVSTUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCBLZWVwQWxpdmVIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvS2VlcEFsaXZlSGVscGVyXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCBSZXNvdXJjZU1vZGVsSGVscGVyLCB7IGdldFJlc291cmNlTW9kZWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9SZXNvdXJjZU1vZGVsSGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IEZpZWxkV3JhcHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9jb250cm9scy9GaWVsZFdyYXBwZXJcIjtcbmltcG9ydCB0eXBlIEZpbGVXcmFwcGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL2NvbnRyb2xzL0ZpbGVXcmFwcGVyXCI7XG5pbXBvcnQgdHlwZSB7IEZpZWxkQVBJVHlwZSB9IGZyb20gXCJzYXAvZmUvbWFjcm9zL2ZpZWxkL0ZpZWxkQVBJXCI7XG5pbXBvcnQgRmllbGRBUEkgZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRBUElcIjtcbmltcG9ydCB0eXBlIEF2YXRhciBmcm9tIFwic2FwL20vQXZhdGFyXCI7XG5pbXBvcnQgdHlwZSBCdXR0b24gZnJvbSBcInNhcC9tL0J1dHRvblwiO1xuaW1wb3J0IHR5cGUgeyAkSWxsdXN0cmF0ZWRNZXNzYWdlU2V0dGluZ3MgfSBmcm9tIFwic2FwL20vSWxsdXN0cmF0ZWRNZXNzYWdlXCI7XG5pbXBvcnQgSWxsdXN0cmF0ZWRNZXNzYWdlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VcIjtcbmltcG9ydCBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlIGZyb20gXCJzYXAvbS9JbGx1c3RyYXRlZE1lc3NhZ2VUeXBlXCI7XG5pbXBvcnQgTGFiZWwgZnJvbSBcInNhcC9tL0xhYmVsXCI7XG5pbXBvcnQgdHlwZSBMaW5rIGZyb20gXCJzYXAvbS9MaW5rXCI7XG5pbXBvcnQgTWVzc2FnZUJveCBmcm9tIFwic2FwL20vTWVzc2FnZUJveFwiO1xuaW1wb3J0IHR5cGUgeyAkUmVzcG9uc2l2ZVBvcG92ZXJTZXR0aW5ncyB9IGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IFJlc3BvbnNpdmVQb3BvdmVyIGZyb20gXCJzYXAvbS9SZXNwb25zaXZlUG9wb3ZlclwiO1xuaW1wb3J0IG1vYmlsZWxpYnJhcnkgZnJvbSBcInNhcC9tL2xpYnJhcnlcIjtcbmltcG9ydCBEZXZpY2UgZnJvbSBcInNhcC91aS9EZXZpY2VcIjtcbmltcG9ydCB0eXBlIEV2ZW50IGZyb20gXCJzYXAvdWkvYmFzZS9FdmVudFwiO1xuaW1wb3J0IHR5cGUgQ29udHJvbCBmcm9tIFwic2FwL3VpL2NvcmUvQ29udHJvbFwiO1xuaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCB0eXBlIEN1c3RvbURhdGEgZnJvbSBcInNhcC91aS9jb3JlL0N1c3RvbURhdGFcIjtcbmltcG9ydCB0eXBlIEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBJY29uUG9vbCBmcm9tIFwic2FwL3VpL2NvcmUvSWNvblBvb2xcIjtcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSBcInNhcC91aS9jb3JlL212Yy9Db250cm9sbGVyXCI7XG5pbXBvcnQgdHlwZSBWaWV3IGZyb20gXCJzYXAvdWkvY29yZS9tdmMvVmlld1wiO1xuaW1wb3J0IHR5cGUgRmllbGQgZnJvbSBcInNhcC91aS9tZGMvRmllbGRcIjtcbmltcG9ydCB0eXBlIHsgRmllbGQkQ2hhbmdlRXZlbnQgfSBmcm9tIFwic2FwL3VpL21kYy9GaWVsZFwiO1xuaW1wb3J0IHR5cGUgeyBkZWZhdWx0IGFzIE1kY0xpbmsgfSBmcm9tIFwic2FwL3VpL21kYy9MaW5rXCI7XG5pbXBvcnQgdHlwZSBDb21wb3NpdGVCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvQ29tcG9zaXRlQmluZGluZ1wiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhQ29udGV4dEJpbmRpbmcgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS92NC9PRGF0YUNvbnRleHRCaW5kaW5nXCI7XG5pbXBvcnQgdHlwZSBPRGF0YUxpc3RCaW5kaW5nIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFMaXN0QmluZGluZ1wiO1xuaW1wb3J0IHR5cGUgRmlsZVVwbG9hZGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsZVVwbG9hZGVyJFVwbG9hZENvbXBsZXRlRXZlbnQgfSBmcm9tIFwic2FwL3VpL3VuaWZpZWQvRmlsZVVwbG9hZGVyXCI7XG5pbXBvcnQgRmlsZVVwbG9hZGVyUGFyYW1ldGVyIGZyb20gXCJzYXAvdWkvdW5pZmllZC9GaWxlVXBsb2FkZXJQYXJhbWV0ZXJcIjtcbmltcG9ydCBvcGVuV2luZG93IGZyb20gXCJzYXAvdWkvdXRpbC9vcGVuV2luZG93XCI7XG5pbXBvcnQgdHlwZSBUYWJsZUFQSSBmcm9tIFwiLi4vdGFibGUvVGFibGVBUElcIjtcblxuLyoqXG4gKiBHZXRzIHRoZSBiaW5kaW5nIHVzZWQgZm9yIGNvbGxhYm9yYXRpb24gbm90aWZpY2F0aW9ucy5cbiAqXG4gKiBAcGFyYW0gZmllbGRcbiAqIEByZXR1cm5zIFRoZSBiaW5kaW5nXG4gKi9cbmZ1bmN0aW9uIGdldENvbGxhYm9yYXRpb25CaW5kaW5nKGZpZWxkOiBDb250cm9sKTogT0RhdGFMaXN0QmluZGluZyB8IE9EYXRhQ29udGV4dEJpbmRpbmcge1xuXHRsZXQgYmluZGluZyA9IChmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQpLmdldEJpbmRpbmcoKTtcblxuXHRpZiAoIWJpbmRpbmcuaXNBKFwic2FwLnVpLm1vZGVsLm9kYXRhLnY0Lk9EYXRhTGlzdEJpbmRpbmdcIikpIHtcblx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcoZmllbGQpO1xuXHRcdGJpbmRpbmcgPSAob1ZpZXcuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0KS5nZXRCaW5kaW5nKCk7XG5cdH1cblxuXHRyZXR1cm4gYmluZGluZztcbn1cbi8qKlxuICogU3RhdGljIGNsYXNzIHVzZWQgYnkgXCJzYXAudWkubWRjLkZpZWxkXCIgZHVyaW5nIHJ1bnRpbWVcbiAqXG4gKiBAcHJpdmF0ZVxuICogQGV4cGVyaW1lbnRhbCBUaGlzIG1vZHVsZSBpcyBvbmx5IGZvciBpbnRlcm5hbC9leHBlcmltZW50YWwgdXNlIVxuICovXG5jb25zdCBGaWVsZFJ1bnRpbWUgPSB7XG5cdHVwbG9hZFByb21pc2VzOiB1bmRlZmluZWQgYXMgYW55LFxuXHRjcmVhdGluZ0luYWN0aXZlUm93OiBmYWxzZSxcblxuXHQvKipcblx0ICogVHJpZ2dlcnMgYW4gaW50ZXJuYWwgbmF2aWdhdGlvbiBvbiB0aGUgbGluayBwZXJ0YWluaW5nIHRvIERhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aC5cblx0ICpcblx0ICogQHBhcmFtIG9Tb3VyY2UgU291cmNlIG9mIHRoZSBwcmVzcyBldmVudFxuXHQgKiBAcGFyYW0gb0NvbnRyb2xsZXIgSW5zdGFuY2Ugb2YgdGhlIGNvbnRyb2xsZXJcblx0ICogQHBhcmFtIHNOYXZQYXRoIFRoZSBuYXZpZ2F0aW9uIHBhdGhcblx0ICovXG5cdG9uRGF0YUZpZWxkV2l0aE5hdmlnYXRpb25QYXRoOiBmdW5jdGlvbiAob1NvdXJjZTogQ29udHJvbCwgb0NvbnRyb2xsZXI6IFBhZ2VDb250cm9sbGVyLCBzTmF2UGF0aDogc3RyaW5nKSB7XG5cdFx0aWYgKG9Db250cm9sbGVyLl9yb3V0aW5nKSB7XG5cdFx0XHRsZXQgb0JpbmRpbmdDb250ZXh0ID0gb1NvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQ7XG5cdFx0XHRjb25zdCBvVmlldyA9IENvbW1vblV0aWxzLmdldFRhcmdldFZpZXcob1NvdXJjZSksXG5cdFx0XHRcdG9NZXRhTW9kZWwgPSBvQmluZGluZ0NvbnRleHQuZ2V0TW9kZWwoKS5nZXRNZXRhTW9kZWwoKSxcblx0XHRcdFx0Zm5OYXZpZ2F0ZSA9IGZ1bmN0aW9uIChvQ29udGV4dD86IGFueSkge1xuXHRcdFx0XHRcdGlmIChvQ29udGV4dCkge1xuXHRcdFx0XHRcdFx0b0JpbmRpbmdDb250ZXh0ID0gb0NvbnRleHQ7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdG9Db250cm9sbGVyLl9yb3V0aW5nLm5hdmlnYXRlVG9UYXJnZXQob0JpbmRpbmdDb250ZXh0LCBzTmF2UGF0aCwgdHJ1ZSk7XG5cdFx0XHRcdH07XG5cdFx0XHQvLyBTaG93IGRyYWZ0IGxvc3MgY29uZmlybWF0aW9uIGRpYWxvZyBpbiBjYXNlIG9mIE9iamVjdCBwYWdlXG5cdFx0XHRpZiAoKG9WaWV3LmdldFZpZXdEYXRhKCkgYXMgYW55KS5jb252ZXJ0ZXJUeXBlID09PSBcIk9iamVjdFBhZ2VcIiAmJiAhTW9kZWxIZWxwZXIuaXNTdGlja3lTZXNzaW9uU3VwcG9ydGVkKG9NZXRhTW9kZWwpKSB7XG5cdFx0XHRcdGRyYWZ0LnByb2Nlc3NEYXRhTG9zc09yRHJhZnREaXNjYXJkQ29uZmlybWF0aW9uKFxuXHRcdFx0XHRcdGZuTmF2aWdhdGUsXG5cdFx0XHRcdFx0RnVuY3Rpb24ucHJvdG90eXBlLFxuXHRcdFx0XHRcdG9CaW5kaW5nQ29udGV4dCxcblx0XHRcdFx0XHRvVmlldy5nZXRDb250cm9sbGVyKCksXG5cdFx0XHRcdFx0dHJ1ZSxcblx0XHRcdFx0XHRkcmFmdC5OYXZpZ2F0aW9uVHlwZS5Gb3J3YXJkTmF2aWdhdGlvblxuXHRcdFx0XHQpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0Zm5OYXZpZ2F0ZSgpO1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRMb2cuZXJyb3IoXG5cdFx0XHRcdFwiRmllbGRSdW50aW1lOiBObyByb3V0aW5nIGxpc3RlbmVyIGNvbnRyb2xsZXIgZXh0ZW5zaW9uIGZvdW5kLiBJbnRlcm5hbCBuYXZpZ2F0aW9uIGFib3J0ZWQuXCIsXG5cdFx0XHRcdFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZFJ1bnRpbWVcIixcblx0XHRcdFx0XCJvbkRhdGFGaWVsZFdpdGhOYXZpZ2F0aW9uUGF0aFwiXG5cdFx0XHQpO1xuXHRcdH1cblx0fSxcblxuXHRpc0RyYWZ0SW5kaWNhdG9yVmlzaWJsZTogZnVuY3Rpb24gKFxuXHRcdHNQcm9wZXJ0eVBhdGg6IGFueSxcblx0XHRzU2VtYW50aWNLZXlIYXNEcmFmdEluZGljYXRvcjogYW55LFxuXHRcdEhhc0RyYWZ0RW50aXR5OiBhbnksXG5cdFx0SXNBY3RpdmVFbnRpdHk6IGFueSxcblx0XHRoaWRlRHJhZnRJbmZvOiBhbnlcblx0KSB7XG5cdFx0aWYgKElzQWN0aXZlRW50aXR5ICE9PSB1bmRlZmluZWQgJiYgSGFzRHJhZnRFbnRpdHkgIT09IHVuZGVmaW5lZCAmJiAoIUlzQWN0aXZlRW50aXR5IHx8IEhhc0RyYWZ0RW50aXR5KSAmJiAhaGlkZURyYWZ0SW5mbykge1xuXHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVBhdGggPT09IHNTZW1hbnRpY0tleUhhc0RyYWZ0SW5kaWNhdG9yO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9LFxuXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgdmFsaWRhdGVGaWVsZEdyb3VwIGV2ZW50LlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgb25WYWxpZGF0ZUZpZWxkR3JvdXBcblx0ICogQHBhcmFtIG9Db250cm9sbGVyIFRoZSBjb250cm9sbGVyIG9mIHRoZSBwYWdlIGNvbnRhaW5pbmcgdGhlIGZpZWxkXG5cdCAqIEBwYXJhbSBvRXZlbnQgVGhlIGV2ZW50IG9iamVjdCBwYXNzZWQgYnkgdGhlIHZhbGlkYXRlRmllbGRHcm91cCBldmVudFxuXHQgKi9cblx0b25WYWxpZGF0ZUZpZWxkR3JvdXA6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogb2JqZWN0LCBvRXZlbnQ6IG9iamVjdCkge1xuXHRcdGNvbnN0IG9GRUNvbnRyb2xsZXIgPSBGaWVsZFJ1bnRpbWUuX2dldEV4dGVuc2lvbkNvbnRyb2xsZXIob0NvbnRyb2xsZXIpO1xuXHRcdG9GRUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkR3JvdXBDaGFuZ2Uob0V2ZW50KTtcblx0fSxcblxuXHRfZmV0Y2hSZWNvbW1lbmRhdGlvbnM6IGZ1bmN0aW9uIChmaWVsZDogRmllbGQsIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIpOiB2b2lkIHtcblx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhmaWVsZCk7XG5cdFx0Y29uc3QgZmllbGRCaW5kaW5nQ29udGV4dCA9IGZpZWxkLmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0bGV0IHJlY29tbWVuZGF0aW9uc0NvbnRleHQ7XG5cblx0XHQvLyBkZXRlcm1pbmUgcmVjb21tZW5kYXRpb24gY29udGV4dCB0byB1c2Vcblx0XHRjb25zdCBmaWVsZEJpbmRpbmcgPSAoZmllbGRCaW5kaW5nQ29udGV4dCBhcyBDb250ZXh0KT8uZ2V0QmluZGluZygpO1xuXG5cdFx0aWYgKGZpZWxkQmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0Ly8gaW5zaWRlIGEgdGFibGUsIHVzZSB0aGUgcm93XG5cdFx0XHRyZWNvbW1lbmRhdGlvbnNDb250ZXh0ID0gZmllbGRCaW5kaW5nQ29udGV4dDtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gaW5zaWRlIGEgZm9ybSBub3dcblx0XHRcdC8vIGNhbiBoYXZlIDEtMSBuYXZpZ2F0aW9uIHByb3BlcnR5L2RpcmVjdCBwcm9wZXJ0eSAtIHVzZSB2aWV3IGNvbnRleHRcblx0XHRcdHJlY29tbWVuZGF0aW9uc0NvbnRleHQgPSB2aWV3LmdldEJpbmRpbmdDb250ZXh0KCk7XG5cdFx0fVxuXHRcdGNvbnN0IGZlQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihjb250cm9sbGVyKTtcblx0XHRjb25zdCB2YWx1ZUhlbHBJZCA9IGZpZWxkLmdldFZhbHVlSGVscCgpO1xuXHRcdGlmICh2YWx1ZUhlbHBJZCAmJiB2YWx1ZUhlbHBJZC5pbmNsdWRlcyhcIjo6VGFibGVWYWx1ZUhlbHA6OlwiKSkge1xuXHRcdFx0Y29uc3QgdGFibGVJZCA9IHZhbHVlSGVscElkLnN1YnN0cmluZygwLCB2YWx1ZUhlbHBJZC5pbmRleE9mKFwiOjpUYWJsZVZhbHVlSGVscDo6XCIpKTtcblx0XHRcdGNvbnN0IHRhYmxlID0gdmlldy5ieUlkKHRhYmxlSWQpO1xuXHRcdFx0Y29uc3QgY29udGV4dElkZW50aWZpZXIgPSAodGFibGU/LmdldFBhcmVudCgpIGFzIFRhYmxlQVBJKT8uZ2V0SWRlbnRpZmllckNvbHVtbigpO1xuXHRcdFx0ZmVDb250cm9sbGVyLnJlY29tbWVuZGF0aW9ucy5mZXRjaEFuZEFwcGx5UmVjb21tZW5kYXRpb25zT25GaWVsZENoYW5nZShmaWVsZCwgW1xuXHRcdFx0XHR7IGNvbnRleHQ6IHJlY29tbWVuZGF0aW9uc0NvbnRleHQsIGNvbnRleHRJZGVudGlmaWVyIH1cblx0XHRcdF0pO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmZUNvbnRyb2xsZXIucmVjb21tZW5kYXRpb25zLmZldGNoQW5kQXBwbHlSZWNvbW1lbmRhdGlvbnNPbkZpZWxkQ2hhbmdlKGZpZWxkLCBbeyBjb250ZXh0OiByZWNvbW1lbmRhdGlvbnNDb250ZXh0IH1dKTtcblx0XHR9XG5cdH0sXG5cdC8qKlxuXHQgKiBIYW5kbGVyIGZvciB0aGUgY2hhbmdlIGV2ZW50LlxuXHQgKiBTdG9yZSBmaWVsZCBncm91cCBJRHMgb2YgdGhpcyBmaWVsZCBmb3IgcmVxdWVzdGluZyBzaWRlIGVmZmVjdHMgd2hlbiByZXF1aXJlZC5cblx0ICogV2Ugc3RvcmUgdGhlbSBoZXJlIHRvIGVuc3VyZSB0aGVyZSBpcyBhIGNoYW5nZSBpbiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkLlxuXHQgKlxuXHQgKiBAZnVuY3Rpb25cblx0ICogQG5hbWUgaGFuZGxlQ2hhbmdlXG5cdCAqIEBwYXJhbSBvQ29udHJvbGxlciBUaGUgY29udHJvbGxlciBvZiB0aGUgcGFnZSBjb250YWluaW5nIHRoZSBmaWVsZFxuXHQgKiBAcGFyYW0gb0V2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSBjaGFuZ2UgZXZlbnRcblx0ICovXG5cdGhhbmRsZUNoYW5nZTogZnVuY3Rpb24gKG9Db250cm9sbGVyOiBQYWdlQ29udHJvbGxlciwgb0V2ZW50OiBGaWVsZCRDaGFuZ2VFdmVudCAmIEV2ZW50PHsgaXNWYWxpZDogYm9vbGVhbiB9Pik6IHZvaWQge1xuXHRcdGNvbnN0IG9Tb3VyY2VGaWVsZCA9IG9FdmVudC5nZXRTb3VyY2UoKSBhcyBDb250cm9sLFxuXHRcdFx0YklzVHJhbnNpZW50ID0gb1NvdXJjZUZpZWxkICYmIChvU291cmNlRmllbGQuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBhbnkpLmlzVHJhbnNpZW50KCksXG5cdFx0XHRwVmFsdWVSZXNvbHZlZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJwcm9taXNlXCIpIHx8IFByb21pc2UucmVzb2x2ZSgpLFxuXHRcdFx0b1NvdXJjZSA9IG9FdmVudC5nZXRTb3VyY2UoKSxcblx0XHRcdGJWYWxpZCA9IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJ2YWxpZFwiKSxcblx0XHRcdGZpZWxkVmFsaWRpdHkgPSB0aGlzLmdldEZpZWxkU3RhdGVPbkNoYW5nZShvRXZlbnQpLnN0YXRlW1widmFsaWRpdHlcIl0sXG5cdFx0XHRmaWVsZCA9IG9FdmVudC5nZXRTb3VyY2UoKSBhcyBDb250cm9sO1xuXG5cdFx0Ly8gVXNlIHRoZSBGRSBDb250cm9sbGVyIGluc3RlYWQgb2YgdGhlIGV4dGVuc2lvbkFQSSB0byBhY2Nlc3MgaW50ZXJuYWwgRkUgY29udHJvbGxlcnNcblx0XHRjb25zdCBvRkVDb250cm9sbGVyID0gRmllbGRSdW50aW1lLl9nZXRFeHRlbnNpb25Db250cm9sbGVyKG9Db250cm9sbGVyKTtcblxuXHRcdC8vIFRPRE86IGN1cnJlbnRseSB3ZSBoYXZlIHVuZGVmaW5lZCBhbmQgdHJ1ZS4uLiBhbmQgb3VyIGNyZWF0aW9uIHJvdyBpbXBsZW1lbnRhdGlvbiByZWxpZXMgb24gdGhpcy5cblx0XHQvLyBJIHdvdWxkIG1vdmUgdGhpcyBsb2dpYyB0byB0aGlzIHBsYWNlIGFzIGl0J3MgaGFyZCB0byB1bmRlcnN0YW5kIGZvciBmaWVsZCBjb25zdW1lclxuXHRcdHBWYWx1ZVJlc29sdmVkXG5cdFx0XHQudGhlbihmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdC8vIFRoZSBldmVudCBpcyBnb25lLiBGb3Igbm93IHdlJ2xsIGp1c3QgcmVjcmVhdGUgaXQgYWdhaW5cblx0XHRcdFx0KG9FdmVudCBhcyBhbnkpLm9Tb3VyY2UgPSBvU291cmNlO1xuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkubVBhcmFtZXRlcnMgPSB7XG5cdFx0XHRcdFx0dmFsaWQ6IGJWYWxpZFxuXHRcdFx0XHR9O1xuXHRcdFx0XHQoRmllbGRBUEkgYXMgYW55KS5oYW5kbGVDaGFuZ2Uob0V2ZW50LCBvQ29udHJvbGxlcik7XG5cdFx0XHRcdGlmICghYklzVHJhbnNpZW50KSB7XG5cdFx0XHRcdFx0Ly8gdHJpZ2dlciBzaWRlIGVmZmVjdHMgd2l0aG91dCByZWdpc3RlcmluZyBkZWZlcnJlZCBzaWRlIGVmZmVjdHNcblx0XHRcdFx0XHQvLyBkZWZlcnJlZCBzaWRlIGVmZmVjdHMgYXJlIGFscmVhZHkgcmVnaXN0ZXJlZCBieSBwcmVwYXJlRGVmZXJyZWRTaWRlRWZmZWN0c0ZvckZpZWxkIGJlZm9yZSBwVmFsdWVSZXNvbHZlZCBpcyByZXNvbHZlZC5cblx0XHRcdFx0XHRvRkVDb250cm9sbGVyLl9zaWRlRWZmZWN0cy5oYW5kbGVGaWVsZENoYW5nZShvRXZlbnQsIGZpZWxkVmFsaWRpdHksIHBWYWx1ZVJlc29sdmVkLCB0cnVlKTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBSZWNvbW1lbmRhdGlvbnNcblx0XHRcdFx0RmllbGRSdW50aW1lLl9mZXRjaFJlY29tbWVuZGF0aW9ucyhmaWVsZCBhcyBGaWVsZCwgb0NvbnRyb2xsZXIpO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9KVxuXHRcdFx0LmNhdGNoKGZ1bmN0aW9uICgvKm9FcnJvcjogYW55Ki8pIHtcblx0XHRcdFx0Ly8gVGhlIGV2ZW50IGlzIGdvbmUuIEZvciBub3cgd2UnbGwganVzdCByZWNyZWF0ZSBpdCBhZ2FpblxuXHRcdFx0XHQob0V2ZW50IGFzIGFueSkub1NvdXJjZSA9IG9Tb3VyY2U7XG5cdFx0XHRcdChvRXZlbnQgYXMgYW55KS5tUGFyYW1ldGVycyA9IHtcblx0XHRcdFx0XHR2YWxpZDogZmFsc2Vcblx0XHRcdFx0fTtcblx0XHRcdFx0TG9nLmRlYnVnKFwiUHJlcmVxdWlzaXRlcyBvbiBGaWVsZCBmb3IgdGhlIFNpZGVFZmZlY3RzIGFuZCBSZWNvbW1lbmRhdGlvbnMgaGF2ZSBiZWVuIHJlamVjdGVkXCIpO1xuXHRcdFx0XHQvLyBhcyB0aGUgVUkgbWlnaHQgbmVlZCB0byByZWFjdCBvbi4gV2UgY291bGQgcHJvdmlkZSBhIHBhcmFtZXRlciB0byBpbmZvcm0gaWYgdmFsaWRhdGlvblxuXHRcdFx0XHQvLyB3YXMgc3VjY2Vzc2Z1bD9cblx0XHRcdFx0KEZpZWxkQVBJIGFzIGFueSkuaGFuZGxlQ2hhbmdlKG9FdmVudCwgb0NvbnRyb2xsZXIpO1xuXHRcdFx0fSk7XG5cblx0XHQvLyBGb3IgdGhlIEVkaXRGbG93IHN5bmNocm9uaXphdGlvbiwgd2UgbmVlZCB0byB3YWl0IGZvciB0aGUgY29ycmVzcG9uZGluZyBQQVRDSCByZXF1ZXN0IHRvIGJlIHNlbnQsIG90aGVyd2lzZSB0aGVyZSBjb3VsZCBiZSBlLmcuIGFjdGlvbiBpbnZva2VkIGluIHBhcmFsbGVsIHdpdGggdGhlIFBBVENIIHJlcXVlc3QuXG5cdFx0Ly8gVGhpcyBpcyBkb25lIHdpdGggYSAwLXRpbWVvdXQsIHRvIGFsbG93IGZvciB0aGUgJ3BhdGNoU2VudCcgZXZlbnQgdG8gYmUgc2VudCBieSB0aGUgYmluZGluZyAodGhlbiB0aGUgaW50ZXJuYWwgZWRpdCBmbG93IHN5bmNocm9uaXphdGlvbiBraWNrcyBpbiB3aXRoIEVkaXRGbG93LmhhbmRsZVBhdGNoU2VudCkuXG5cdFx0Y29uc3QgdmFsdWVSZXNvbHZlZEFuZFBhdGNoU2VudCA9IHBWYWx1ZVJlc29sdmVkXG5cdFx0XHQudGhlbihhc3luYyAoKSA9PiB7XG5cdFx0XHRcdHJldHVybiBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xuXHRcdFx0XHRcdHNldFRpbWVvdXQocmVzb2x2ZSwgMCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSlcblx0XHRcdC5jYXRjaCgoKSA9PiB7fSk7XG5cdFx0b0ZFQ29udHJvbGxlcj8uZWRpdEZsb3cuc3luY1Rhc2sodmFsdWVSZXNvbHZlZEFuZFBhdGNoU2VudCk7XG5cblx0XHQvLyBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2llbnQsIGl0IG1lYW5zIHRoZSByZXF1ZXN0IHdvdWxkIGZhaWwgYW55d2F5IGFzIHRoZSByZWNvcmQgZG9lcyBub3QgZXhpc3QgaW4gcmVhbGl0eVxuXHRcdC8vIFRPRE86IHNob3VsZCB0aGUgcmVxdWVzdCBiZSBtYWRlIGluIGZ1dHVyZSBpZiB0aGUgY29udGV4dCBpcyB0cmFuc2llbnQ/XG5cdFx0aWYgKGJJc1RyYW5zaWVudCkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdG9GRUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLnByZXBhcmVEZWZlcnJlZFNpZGVFZmZlY3RzRm9yRmllbGQob0V2ZW50LCBmaWVsZFZhbGlkaXR5LCBwVmFsdWVSZXNvbHZlZCk7XG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3QgYkNvbGxhYm9yYXRpb25FbmFibGVkID0gQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChmaWVsZCk7XG5cblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkICYmIGZpZWxkVmFsaWRpdHkpIHtcblx0XHRcdGNvbnN0IGJpbmRpbmcgPSBnZXRDb2xsYWJvcmF0aW9uQmluZGluZyhmaWVsZCk7XG5cblx0XHRcdGNvbnN0IGRhdGEgPSBbXG5cdFx0XHRcdC4uLigoZmllbGQuZ2V0QmluZGluZ0luZm8oXCJ2YWx1ZVwiKSB8fCBmaWVsZC5nZXRCaW5kaW5nSW5mbyhcInNlbGVjdGVkXCIpKT8ucGFydHMgfHwgW10pLFxuXHRcdFx0XHQuLi4oZmllbGQuZ2V0QmluZGluZ0luZm8oXCJhZGRpdGlvbmFsVmFsdWVcIik/LnBhcnRzIHx8IFtdKVxuXHRcdFx0XVxuXHRcdFx0XHQuZmlsdGVyKChwYXJ0KSA9PiB7XG5cdFx0XHRcdFx0cmV0dXJuIHBhcnQ/LnBhdGggIT09IHVuZGVmaW5lZCAmJiBwYXJ0LnBhdGguaW5kZXhPZihcIkBAXCIpIDwgMDsgLy8gUmVtb3ZlIGJpbmRpbmcgcGFydHMgd2l0aCBAQCB0aGF0IG1ha2Ugbm8gc2Vuc2UgZm9yIGNvbGxhYm9yYXRpb24gbWVzc2FnZXNcblx0XHRcdFx0fSlcblx0XHRcdFx0Lm1hcChmdW5jdGlvbiAocGFydDogeyBwYXRoOiBzdHJpbmcgfSkge1xuXHRcdFx0XHRcdHJldHVybiBgJHtmaWVsZC5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9LyR7cGFydC5wYXRofWA7XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHQvLyBGcm9tIHRoaXMgcG9pbnQsIHdlIHdpbGwgYWx3YXlzIHNlbmQgYSBjb2xsYWJvcmF0aW9uIG1lc3NhZ2UgKFVOTE9DSyBvciBDSEFOR0UpLCBzbyB3ZSByZXRhaW5cblx0XHRcdC8vIGEgcG90ZW50aWFsIFVOTE9DSyB0aGF0IHdvdWxkIGJlIHNlbnQgaW4gaGFuZGxlRm9jdXNPdXQsIHRvIG1ha2Ugc3VyZSBpdCdzIHNlbnQgYWZ0ZXIgdGhlIENIQU5HRSBtZXNzYWdlXG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnJldGFpbkFzeW5jTWVzc2FnZXMoZmllbGQsIGRhdGEpO1xuXG5cdFx0XHRjb25zdCB1cGRhdGVDb2xsYWJvcmF0aW9uID0gKCkgPT4ge1xuXHRcdFx0XHRpZiAoYmluZGluZy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG5cdFx0XHRcdFx0Ly8gVGhlIHZhbHVlIGhhcyBiZWVuIGNoYW5nZWQgYnkgdGhlIHVzZXIgLS0+IHdhaXQgdW50aWwgaXQncyBzZW50IHRvIHRoZSBzZXJ2ZXIgYmVmb3JlIHNlbmRpbmcgYSBub3RpZmljYXRpb24gdG8gb3RoZXIgdXNlcnNcblx0XHRcdFx0XHRiaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWVsZCwgeyBhY3Rpb246IEFjdGl2aXR5LkNoYW5nZSwgY29udGVudDogZGF0YSB9KTtcblx0XHRcdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMucmVsZWFzZUFzeW5jTWVzc2FnZXMoZmllbGQsIGRhdGEpO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMucmVsZWFzZUFzeW5jTWVzc2FnZXMoZmllbGQsIGRhdGEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5pc0EoXCJzYXAudWkubWRjLkZpZWxkXCIpKSB7XG5cdFx0XHRcdHBWYWx1ZVJlc29sdmVkXG5cdFx0XHRcdFx0LnRoZW4oKCkgPT4ge1xuXHRcdFx0XHRcdFx0dXBkYXRlQ29sbGFib3JhdGlvbigpO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0LmNhdGNoKCgpID0+IHtcblx0XHRcdFx0XHRcdHVwZGF0ZUNvbGxhYm9yYXRpb24oKTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVwZGF0ZUNvbGxhYm9yYXRpb24oKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgZm9yIHRoZSBsaXZlIGNoYW5nZSBldmVudC5cblx0ICpcblx0ICogQGZ1bmN0aW9uXG5cdCAqIEBuYW1lIGhhbmRsZUxpdmVDaGFuZ2Vcblx0ICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCBvYmplY3QgcGFzc2VkIGJ5IHRoZSBjaGFuZ2UgZXZlbnRcblx0ICovXG5cdGhhbmRsZUxpdmVDaGFuZ2U6IGZ1bmN0aW9uIChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHQoRmllbGRBUEkgYXMgRmllbGRBUElUeXBlKS5oYW5kbGVMaXZlQ2hhbmdlKGV2ZW50KTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHNlbmQgY29sbGFib3JhdGlvbiBtZXNzYWdlcyBmcm9tIGEgRmlsZVVwbG9hZGVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gZmlsZVVwbG9hZGVyXG5cdCAqIEBwYXJhbSBhY3Rpb25cblx0ICovXG5cdF9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyOiBGaWxlVXBsb2FkZXIsIGFjdGlvbjogQWN0aXZpdHkpOiB2b2lkIHtcblx0XHRpZiAoQ29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5pc0Nvbm5lY3RlZChmaWxlVXBsb2FkZXIpKSB7XG5cdFx0XHRjb25zdCBiaW5kaW5nUGF0aCA9IGZpbGVVcGxvYWRlci5nZXRQYXJlbnQoKT8uZ2V0UHJvcGVydHkoXCJwcm9wZXJ0eVBhdGhcIik7XG5cdFx0XHRjb25zdCBmdWxsUGF0aCA9IGAke2ZpbGVVcGxvYWRlci5nZXRCaW5kaW5nQ29udGV4dCgpPy5nZXRQYXRoKCl9LyR7YmluZGluZ1BhdGh9YDtcblx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChmaWxlVXBsb2FkZXIsIHsgYWN0aW9uLCBjb250ZW50OiBmdWxsUGF0aCB9KTtcblx0XHR9XG5cdH0sXG5cblx0LyoqXG5cdCAqIEhhbmRsZXIgd2hlbiBhIEZpbGVVcGxvYWQgZGlhbG9nIGlzIG9wZW5lZC5cblx0ICpcblx0ICogQHBhcmFtIGV2ZW50XG5cdCAqL1xuXHRoYW5kbGVPcGVuVXBsb2FkZXI6IGZ1bmN0aW9uIChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXI7XG5cdFx0RmllbGRSdW50aW1lLl9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyLCBBY3Rpdml0eS5Mb2NrKTtcblx0fSxcblxuXHQvKipcblx0ICogSGFuZGxlciB3aGVuIGEgRmlsZVVwbG9hZCBkaWFsb2cgaXMgY2xvc2VkLlxuXHQgKlxuXHQgKiBAcGFyYW0gZXZlbnRcblx0ICovXG5cdGhhbmRsZUNsb3NlVXBsb2FkZXI6IGZ1bmN0aW9uIChldmVudDogRXZlbnQpOiB2b2lkIHtcblx0XHRjb25zdCBmaWxlVXBsb2FkZXIgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBGaWxlVXBsb2FkZXI7XG5cdFx0RmllbGRSdW50aW1lLl9zZW5kQ29sbGFib3JhdGlvbk1lc3NhZ2VGb3JGaWxlVXBsb2FkZXIoZmlsZVVwbG9hZGVyLCBBY3Rpdml0eS5VbmxvY2spO1xuXHR9LFxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBmaWVsZCB2YWx1ZSBhbmQgdmFsaWRpdHkgb24gYSBjaGFuZ2UgZXZlbnQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSBmaWVsZFZhbGlkaXR5T25DaGFuZ2Vcblx0ICogQHBhcmFtIG9FdmVudCBUaGUgZXZlbnQgb2JqZWN0IHBhc3NlZCBieSB0aGUgY2hhbmdlIGV2ZW50XG5cdCAqIEByZXR1cm5zIEZpZWxkIHZhbHVlIGFuZCB2YWxpZGl0eVxuXHQgKi9cblx0Z2V0RmllbGRTdGF0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAob0V2ZW50OiBGaWVsZCRDaGFuZ2VFdmVudCAmIEV2ZW50PHsgaXNWYWxpZDogYm9vbGVhbiB9Pik6IHtcblx0XHRmaWVsZDogRmllbGQ7XG5cdFx0c3RhdGU6IHtcblx0XHRcdGZpZWxkVmFsdWU/OiB1bmtub3duO1xuXHRcdFx0dmFsaWRpdHk/OiBib29sZWFuO1xuXHRcdH07XG5cdH0ge1xuXHRcdGxldCBvU291cmNlRmllbGQgPSBvRXZlbnQuZ2V0U291cmNlKCkgYXMgYW55LFxuXHRcdFx0bUZpZWxkU3RhdGU6IHtcblx0XHRcdFx0ZmllbGRWYWx1ZT86IHVua25vd247XG5cdFx0XHRcdHZhbGlkaXR5PzogYm9vbGVhbjtcblx0XHRcdH0gPSB7fTtcblx0XHRjb25zdCBfaXNCaW5kaW5nU3RhdGVNZXNzYWdlcyA9IGZ1bmN0aW9uIChvQmluZGluZzogYW55KSB7XG5cdFx0XHRyZXR1cm4gb0JpbmRpbmcgJiYgb0JpbmRpbmcuZ2V0RGF0YVN0YXRlKCkgPyBvQmluZGluZy5nZXREYXRhU3RhdGUoKS5nZXRJbnZhbGlkVmFsdWUoKSA9PT0gdW5kZWZpbmVkIDogdHJ1ZTtcblx0XHR9O1xuXHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLmZlLm1hY3Jvcy5maWVsZC5GaWVsZEFQSVwiKSkge1xuXHRcdFx0b1NvdXJjZUZpZWxkID0gKG9Tb3VyY2VGaWVsZCBhcyBFbmhhbmNlV2l0aFVJNTxGaWVsZEFQST4pLmdldENvbnRlbnQoKTtcblx0XHR9XG5cblx0XHRpZiAob1NvdXJjZUZpZWxkLmlzQShGaWVsZFdyYXBwZXIuZ2V0TWV0YWRhdGEoKS5nZXROYW1lKCkpICYmIG9Tb3VyY2VGaWVsZC5nZXRFZGl0TW9kZSgpID09PSBcIkVkaXRhYmxlXCIpIHtcblx0XHRcdG9Tb3VyY2VGaWVsZCA9IG9Tb3VyY2VGaWVsZC5nZXRDb250ZW50RWRpdCgpWzBdO1xuXHRcdH1cblxuXHRcdGlmIChvU291cmNlRmllbGQuaXNBKFwic2FwLnVpLm1kYy5GaWVsZFwiKSkge1xuXHRcdFx0bGV0IGJJc1ZhbGlkID0gb0V2ZW50LmdldFBhcmFtZXRlcihcInZhbGlkXCIpIHx8IG9FdmVudC5nZXRQYXJhbWV0ZXIoXCJpc1ZhbGlkXCIpO1xuXHRcdFx0aWYgKGJJc1ZhbGlkID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRNYXhDb25kaXRpb25zKCkgPT09IDEpIHtcblx0XHRcdFx0XHRjb25zdCBvVmFsdWVCaW5kaW5nSW5mbyA9IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nSW5mbyhcInZhbHVlXCIpO1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob1ZhbHVlQmluZGluZ0luZm8gJiYgb1ZhbHVlQmluZGluZ0luZm8uYmluZGluZyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpID09PSBcIlwiICYmICFvU291cmNlRmllbGQuZ2V0UHJvcGVydHkoXCJyZXF1aXJlZFwiKSkge1xuXHRcdFx0XHRcdGJJc1ZhbGlkID0gdHJ1ZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0bUZpZWxkU3RhdGUgPSB7XG5cdFx0XHRcdGZpZWxkVmFsdWU6IG9Tb3VyY2VGaWVsZC5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogISFiSXNWYWxpZFxuXHRcdFx0fTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8gb1NvdXJjZUZpZWxkIGV4dGVuZHMgZnJvbSBhIEZpbGVVcGxvYWRlciB8fCBJbnB1dCB8fCBpcyBhIENoZWNrQm94XG5cdFx0XHRjb25zdCBvQmluZGluZyA9XG5cdFx0XHRcdG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwidXBsb2FkVXJsXCIpIHx8IG9Tb3VyY2VGaWVsZC5nZXRCaW5kaW5nKFwidmFsdWVcIikgfHwgb1NvdXJjZUZpZWxkLmdldEJpbmRpbmcoXCJzZWxlY3RlZFwiKTtcblx0XHRcdG1GaWVsZFN0YXRlID0ge1xuXHRcdFx0XHRmaWVsZFZhbHVlOiBvQmluZGluZyAmJiBvQmluZGluZy5nZXRWYWx1ZSgpLFxuXHRcdFx0XHR2YWxpZGl0eTogX2lzQmluZGluZ1N0YXRlTWVzc2FnZXMob0JpbmRpbmcpXG5cdFx0XHR9O1xuXHRcdH1cblx0XHRyZXR1cm4ge1xuXHRcdFx0ZmllbGQ6IG9Tb3VyY2VGaWVsZCxcblx0XHRcdHN0YXRlOiBtRmllbGRTdGF0ZVxuXHRcdH07XG5cdH0sXG5cdF9mbkZpeEhhc2hRdWVyeVN0cmluZzogZnVuY3Rpb24gKHNDdXJyZW50SGFzaDogYW55KSB7XG5cdFx0aWYgKHNDdXJyZW50SGFzaCAmJiBzQ3VycmVudEhhc2guaW5kZXhPZihcIj9cIikgIT09IC0xKSB7XG5cdFx0XHQvLyBzQ3VycmVudEhhc2ggY2FuIGNvbnRhaW4gcXVlcnkgc3RyaW5nLCBjdXQgaXQgb2ZmIVxuXHRcdFx0c0N1cnJlbnRIYXNoID0gc0N1cnJlbnRIYXNoLnNwbGl0KFwiP1wiKVswXTtcblx0XHR9XG5cdFx0cmV0dXJuIHNDdXJyZW50SGFzaDtcblx0fSxcblx0X2ZuR2V0TGlua0luZm9ybWF0aW9uOiBmdW5jdGlvbiAoX29Tb3VyY2U6IGFueSwgX29MaW5rOiBhbnksIF9zUHJvcGVydHlQYXRoOiBhbnksIF9zVmFsdWU6IGFueSwgZm5TZXRBY3RpdmU6IGFueSkge1xuXHRcdGNvbnN0IG9Nb2RlbCA9IF9vTGluayAmJiBfb0xpbmsuZ2V0TW9kZWwoKTtcblx0XHRjb25zdCBvTWV0YU1vZGVsID0gb01vZGVsICYmIG9Nb2RlbC5nZXRNZXRhTW9kZWwoKTtcblx0XHRjb25zdCBzU2VtYW50aWNPYmplY3ROYW1lID0gX3NWYWx1ZSB8fCAoX29Tb3VyY2UgJiYgX29Tb3VyY2UuZ2V0VmFsdWUoKSk7XG5cdFx0Y29uc3Qgb1ZpZXcgPSBfb0xpbmsgJiYgQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0Vmlldyhfb0xpbmspO1xuXHRcdGNvbnN0IG9JbnRlcm5hbE1vZGVsQ29udGV4dCA9IG9WaWV3ICYmIG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KFwiaW50ZXJuYWxcIik7XG5cdFx0Y29uc3Qgb0FwcENvbXBvbmVudCA9IG9WaWV3ICYmIENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudChvVmlldyk7XG5cdFx0Y29uc3Qgb1NoZWxsU2VydmljZUhlbHBlciA9IG9BcHBDb21wb25lbnQgJiYgb0FwcENvbXBvbmVudC5nZXRTaGVsbFNlcnZpY2VzKCk7XG5cdFx0Y29uc3QgcEdldExpbmtzUHJvbWlzZSA9IG9TaGVsbFNlcnZpY2VIZWxwZXIgJiYgb1NoZWxsU2VydmljZUhlbHBlci5nZXRMaW5rc1dpdGhDYWNoZShbW3sgc2VtYW50aWNPYmplY3Q6IHNTZW1hbnRpY09iamVjdE5hbWUgfV1dKTtcblx0XHRjb25zdCBhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMgPVxuXHRcdFx0b01ldGFNb2RlbCAmJiBvTWV0YU1vZGVsLmdldE9iamVjdChgJHtfc1Byb3BlcnR5UGF0aH1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zYCk7XG5cdFx0cmV0dXJuIHtcblx0XHRcdFNlbWFudGljT2JqZWN0TmFtZTogc1NlbWFudGljT2JqZWN0TmFtZSxcblx0XHRcdFNlbWFudGljT2JqZWN0RnVsbFBhdGg6IF9zUHJvcGVydHlQYXRoLCAvL3NTZW1hbnRpY09iamVjdEZ1bGxQYXRoLFxuXHRcdFx0TWV0YU1vZGVsOiBvTWV0YU1vZGVsLFxuXHRcdFx0SW50ZXJuYWxNb2RlbENvbnRleHQ6IG9JbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFNoZWxsU2VydmljZUhlbHBlcjogb1NoZWxsU2VydmljZUhlbHBlcixcblx0XHRcdEdldExpbmtzUHJvbWlzZTogcEdldExpbmtzUHJvbWlzZSxcblx0XHRcdFNlbWFudGljT2JqZWN0VW5hdmFpbGFibGVBY3Rpb25zOiBhU2VtYW50aWNPYmplY3RVbmF2YWlsYWJsZUFjdGlvbnMsXG5cdFx0XHRmblNldEFjdGl2ZTogZm5TZXRBY3RpdmVcblx0XHR9O1xuXHR9LFxuXHRfZm5RdWlja1ZpZXdIYXNOZXdDb25kaXRpb246IGZ1bmN0aW9uIChvU2VtYW50aWNPYmplY3RQYXlsb2FkOiBhbnksIF9vTGlua0luZm86IGFueSkge1xuXHRcdGlmIChvU2VtYW50aWNPYmplY3RQYXlsb2FkICYmIG9TZW1hbnRpY09iamVjdFBheWxvYWQucGF0aCAmJiBvU2VtYW50aWNPYmplY3RQYXlsb2FkLnBhdGggPT09IF9vTGlua0luZm8uU2VtYW50aWNPYmplY3RGdWxsUGF0aCkge1xuXHRcdFx0Ly8gR290IHRoZSByZXNvbHZlZCBTZW1hbnRpYyBPYmplY3QhXG5cdFx0XHRjb25zdCBiUmVzdWx0aW5nTmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyID1cblx0XHRcdFx0b1NlbWFudGljT2JqZWN0UGF5bG9hZFshX29MaW5rSW5mby5TZW1hbnRpY09iamVjdFVuYXZhaWxhYmxlQWN0aW9ucyA/IFwiSGFzVGFyZ2V0c05vdEZpbHRlcmVkXCIgOiBcIkhhc1RhcmdldHNcIl07XG5cdFx0XHRfb0xpbmtJbmZvLmZuU2V0QWN0aXZlKCEhYlJlc3VsdGluZ05ld0NvbmRpdGlvbkZvckNvbmRpdGlvbmFsV3JhcHBlcik7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fSxcblx0X2ZuUXVpY2tWaWV3U2V0TmV3Q29uZGl0aW9uRm9yQ29uZGl0aW9uYWxXcmFwcGVyOiBmdW5jdGlvbiAoX29MaW5rSW5mbzogYW55LCBfb0ZpbmFsU2VtYW50aWNPYmplY3RzOiBhbnkpIHtcblx0XHRpZiAoX29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV0pIHtcblx0XHRcdGxldCBzVG1wUGF0aCwgb1NlbWFudGljT2JqZWN0UGF5bG9hZDtcblx0XHRcdGNvbnN0IGFTZW1hbnRpY09iamVjdFBhdGhzID0gT2JqZWN0LmtleXMoX29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV0pO1xuXHRcdFx0Zm9yIChjb25zdCBpUGF0aHNDb3VudCBpbiBhU2VtYW50aWNPYmplY3RQYXRocykge1xuXHRcdFx0XHRzVG1wUGF0aCA9IGFTZW1hbnRpY09iamVjdFBhdGhzW2lQYXRoc0NvdW50XTtcblx0XHRcdFx0b1NlbWFudGljT2JqZWN0UGF5bG9hZCA9XG5cdFx0XHRcdFx0X29GaW5hbFNlbWFudGljT2JqZWN0c1tfb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZV0gJiZcblx0XHRcdFx0XHRfb0ZpbmFsU2VtYW50aWNPYmplY3RzW19vTGlua0luZm8uU2VtYW50aWNPYmplY3ROYW1lXVtzVG1wUGF0aF07XG5cdFx0XHRcdGlmIChGaWVsZFJ1bnRpbWUuX2ZuUXVpY2tWaWV3SGFzTmV3Q29uZGl0aW9uKG9TZW1hbnRpY09iamVjdFBheWxvYWQsIF9vTGlua0luZm8pKSB7XG5cdFx0XHRcdFx0YnJlYWs7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdF9mblVwZGF0ZVNlbWFudGljT2JqZWN0c1RhcmdldE1vZGVsOiBmdW5jdGlvbiAob0V2ZW50OiBhbnksIHNWYWx1ZTogYW55LCBvQ29udHJvbDogYW55LCBfc1Byb3BlcnR5UGF0aDogYW55KSB7XG5cdFx0Y29uc3Qgb1NvdXJjZSA9IG9FdmVudCAmJiBvRXZlbnQuZ2V0U291cmNlKCk7XG5cdFx0bGV0IGZuU2V0QWN0aXZlO1xuXHRcdGlmIChvQ29udHJvbC5pc0EoXCJzYXAubS5PYmplY3RTdGF0dXNcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db250cm9sLnNldEFjdGl2ZShiQWN0aXZlKTtcblx0XHR9XG5cdFx0aWYgKG9Db250cm9sLmlzQShcInNhcC5tLk9iamVjdElkZW50aWZpZXJcIikpIHtcblx0XHRcdGZuU2V0QWN0aXZlID0gKGJBY3RpdmU6IGJvb2xlYW4pID0+IG9Db250cm9sLnNldFRpdGxlQWN0aXZlKGJBY3RpdmUpO1xuXHRcdH1cblx0XHRjb25zdCBvQ29uZGl0aW9uYWxXcmFwcGVyID0gb0NvbnRyb2wgJiYgb0NvbnRyb2wuZ2V0UGFyZW50KCk7XG5cdFx0aWYgKG9Db25kaXRpb25hbFdyYXBwZXIgJiYgb0NvbmRpdGlvbmFsV3JhcHBlci5pc0EoXCJzYXAuZmUubWFjcm9zLmNvbnRyb2xzLkNvbmRpdGlvbmFsV3JhcHBlclwiKSkge1xuXHRcdFx0Zm5TZXRBY3RpdmUgPSAoYkFjdGl2ZTogYm9vbGVhbikgPT4gb0NvbmRpdGlvbmFsV3JhcHBlci5zZXRDb25kaXRpb24oYkFjdGl2ZSk7XG5cdFx0fVxuXHRcdGlmIChmblNldEFjdGl2ZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRjb25zdCBvTGlua0luZm8gPSBGaWVsZFJ1bnRpbWUuX2ZuR2V0TGlua0luZm9ybWF0aW9uKG9Tb3VyY2UsIG9Db250cm9sLCBfc1Byb3BlcnR5UGF0aCwgc1ZhbHVlLCBmblNldEFjdGl2ZSk7XG5cdFx0XHRvTGlua0luZm8uZm5TZXRBY3RpdmUgPSBmblNldEFjdGl2ZTtcblx0XHRcdGNvbnN0IHNDdXJyZW50SGFzaCA9IEZpZWxkUnVudGltZS5fZm5GaXhIYXNoUXVlcnlTdHJpbmcoQ29tbW9uVXRpbHMuZ2V0QXBwQ29tcG9uZW50KG9Db250cm9sKS5nZXRTaGVsbFNlcnZpY2VzKCkuZ2V0SGFzaCgpKTtcblx0XHRcdENvbW1vblV0aWxzLnVwZGF0ZVNlbWFudGljVGFyZ2V0cyhcblx0XHRcdFx0W29MaW5rSW5mby5HZXRMaW5rc1Byb21pc2VdLFxuXHRcdFx0XHRbeyBzZW1hbnRpY09iamVjdDogb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0TmFtZSwgcGF0aDogb0xpbmtJbmZvLlNlbWFudGljT2JqZWN0RnVsbFBhdGggfV0sXG5cdFx0XHRcdG9MaW5rSW5mby5JbnRlcm5hbE1vZGVsQ29udGV4dCxcblx0XHRcdFx0c0N1cnJlbnRIYXNoXG5cdFx0XHQpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChvRmluYWxTZW1hbnRpY09iamVjdHM6IGFueSkge1xuXHRcdFx0XHRcdGlmIChvRmluYWxTZW1hbnRpY09iamVjdHMpIHtcblx0XHRcdFx0XHRcdEZpZWxkUnVudGltZS5fZm5RdWlja1ZpZXdTZXROZXdDb25kaXRpb25Gb3JDb25kaXRpb25hbFdyYXBwZXIob0xpbmtJbmZvLCBvRmluYWxTZW1hbnRpY09iamVjdHMpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH0pXG5cdFx0XHRcdC5jYXRjaChmdW5jdGlvbiAob0Vycm9yOiBhbnkpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoXCJDYW5ub3QgdXBkYXRlIFNlbWFudGljIFRhcmdldHMgbW9kZWxcIiwgb0Vycm9yKTtcblx0XHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXHRfY2hlY2tDb250cm9sSGFzTW9kZWxBbmRCaW5kaW5nQ29udGV4dChfY29udHJvbDogQ29udHJvbCkge1xuXHRcdGlmICghX2NvbnRyb2wuZ2V0TW9kZWwoKSB8fCAhX2NvbnRyb2wuZ2V0QmluZGluZ0NvbnRleHQoKSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9XG5cdH0sXG5cdF9jaGVja0N1c3RvbURhdGFWYWx1ZUJlZm9yZVVwZGF0aW5nU2VtYW50aWNPYmplY3RNb2RlbChfY29udHJvbDogQ29udHJvbCwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGFDdXN0b21EYXRhOiBDdXN0b21EYXRhW10pOiB2b2lkIHtcblx0XHRsZXQgc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlOiBhbnk7XG5cdFx0bGV0IG9WYWx1ZUJpbmRpbmc7XG5cdFx0Y29uc3QgX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmcgPSBmdW5jdGlvbiAoc2VtYW50aWNPYmplY3RQYXRoVmFsdWU6IGFueSkge1xuXHRcdFx0cmV0dXJuICEoc2VtYW50aWNPYmplY3RQYXRoVmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHNlbWFudGljT2JqZWN0UGF0aFZhbHVlID09PSBcIm9iamVjdFwiKTtcblx0XHR9O1xuXHRcdC8vIHJlbW92ZSB0ZWNobmljYWwgY3VzdG9tIGRhdGFzIHNldCBieSBVSTVcblx0XHRhQ3VzdG9tRGF0YSA9IGFDdXN0b21EYXRhLmZpbHRlcigoY3VzdG9tRGF0YSkgPT4gY3VzdG9tRGF0YS5nZXRLZXkoKSAhPT0gXCJzYXAtdWktY3VzdG9tLXNldHRpbmdzXCIpO1xuXHRcdGZvciAoY29uc3QgaW5kZXggaW4gYUN1c3RvbURhdGEpIHtcblx0XHRcdHNTZW1hbnRpY09iamVjdFBhdGhWYWx1ZSA9IGFDdXN0b21EYXRhW2luZGV4XS5nZXRWYWx1ZSgpO1xuXHRcdFx0aWYgKCFzU2VtYW50aWNPYmplY3RQYXRoVmFsdWUgJiYgX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmcoc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlKSkge1xuXHRcdFx0XHRvVmFsdWVCaW5kaW5nID0gYUN1c3RvbURhdGFbaW5kZXhdLmdldEJpbmRpbmcoXCJ2YWx1ZVwiKTtcblx0XHRcdFx0aWYgKG9WYWx1ZUJpbmRpbmcpIHtcblx0XHRcdFx0XHRvVmFsdWVCaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcImNoYW5nZVwiLCBmdW5jdGlvbiAoX29DaGFuZ2VFdmVudDogYW55KSB7XG5cdFx0XHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwoX29DaGFuZ2VFdmVudCwgbnVsbCwgX2NvbnRyb2wsIHByb3BlcnR5UGF0aCk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoX2ZuQ3VzdG9tRGF0YVZhbHVlSXNTdHJpbmcoc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlKSkge1xuXHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2ZuVXBkYXRlU2VtYW50aWNPYmplY3RzVGFyZ2V0TW9kZWwobnVsbCwgc1NlbWFudGljT2JqZWN0UGF0aFZhbHVlLCBfY29udHJvbCwgcHJvcGVydHlQYXRoKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdExpbmtNb2RlbENvbnRleHRDaGFuZ2U6IGZ1bmN0aW9uIChvRXZlbnQ6IGFueSwgc1Byb3BlcnR5OiBhbnksIHNQYXRoVG9Qcm9wZXJ0eTogYW55KTogdm9pZCB7XG5cdFx0Y29uc3QgY29udHJvbCA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRpZiAoRmllbGRSdW50aW1lLl9jaGVja0NvbnRyb2xIYXNNb2RlbEFuZEJpbmRpbmdDb250ZXh0KGNvbnRyb2wpKSB7XG5cdFx0XHRjb25zdCBzUHJvcGVydHlQYXRoID0gYCR7c1BhdGhUb1Byb3BlcnR5fS8ke3NQcm9wZXJ0eX1gO1xuXHRcdFx0Y29uc3QgbWRjTGluayA9IGNvbnRyb2wuZ2V0RGVwZW5kZW50cygpLmxlbmd0aCA/IGNvbnRyb2wuZ2V0RGVwZW5kZW50cygpWzBdIDogdW5kZWZpbmVkO1xuXHRcdFx0Y29uc3QgYUN1c3RvbURhdGEgPSBtZGNMaW5rPy5nZXRDdXN0b21EYXRhKCk7XG5cdFx0XHRpZiAoYUN1c3RvbURhdGEgJiYgYUN1c3RvbURhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRGaWVsZFJ1bnRpbWUuX2NoZWNrQ3VzdG9tRGF0YVZhbHVlQmVmb3JlVXBkYXRpbmdTZW1hbnRpY09iamVjdE1vZGVsKGNvbnRyb2wsIHNQcm9wZXJ0eVBhdGgsIGFDdXN0b21EYXRhKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdG9wZW5FeHRlcm5hbExpbms6IGZ1bmN0aW9uIChldmVudDogRXZlbnQpIHtcblx0XHRjb25zdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKSBhcyBhbnk7XG5cdFx0aWYgKHNvdXJjZS5kYXRhKFwidXJsXCIpICYmIHNvdXJjZS5nZXRQcm9wZXJ0eShcInRleHRcIikgIT09IFwiXCIpIHtcblx0XHRcdC8vIFRoaXMgb3BlbnMgdGhlIGxpbmsgaW4gdGhlIHNhbWUgdGFiIGFzIHRoZSBsaW5rLiBJdCB3YXMgZG9uZSB0byBiZSBtb3JlIGNvbnNpc3RlbnQgd2l0aCBvdGhlciB0eXBlIG9mIGxpbmtzLlxuXHRcdFx0b3BlbldpbmRvdyhzb3VyY2UuZGF0YShcInVybFwiKSwgXCJfc2VsZlwiKTtcblx0XHR9XG5cdH0sXG5cdGNyZWF0ZVBvcG92ZXJXaXRoTm9UYXJnZXRzOiBmdW5jdGlvbiAobWRjTGluazogTWRjTGluaykge1xuXHRcdGNvbnN0IG1kY0xpbmtJZCA9IG1kY0xpbmsuZ2V0SWQoKTtcblx0XHRjb25zdCBpbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5nczogJElsbHVzdHJhdGVkTWVzc2FnZVNldHRpbmdzID0ge1xuXHRcdFx0dGl0bGU6IGdldFJlc291cmNlTW9kZWwobWRjTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpLmdldFRleHQoXCJNX0lMTFVTVFJBVEVETUVTU0FHRV9USVRMRVwiKSxcblx0XHRcdGRlc2NyaXB0aW9uOiBnZXRSZXNvdXJjZU1vZGVsKG1kY0xpbmsgYXMgdW5rbm93biBhcyBDb250cm9sKS5nZXRUZXh0KFwiTV9JTExVU1RSQVRFRE1FU1NBR0VfREVTQ1JJUFRJT05cIiksXG5cdFx0XHRlbmFibGVGb3JtYXR0ZWRUZXh0OiB0cnVlLFxuXHRcdFx0aWxsdXN0cmF0aW9uU2l6ZTogXCJEb3RcIiwgLy8gSWxsdXN0cmF0ZWRNZXNzYWdlU2l6ZS5Eb3Qgbm90IGF2YWlsYWJsZSBpbiBcIkB0eXBlcy9vcGVudWk1XCI6IFwiMS4xMDcuMFwiXG5cdFx0XHRpbGx1c3RyYXRpb25UeXBlOiBJbGx1c3RyYXRlZE1lc3NhZ2VUeXBlLlRlbnRcblx0XHR9O1xuXHRcdGNvbnN0IGlsbHVzdHJhdGVkTWVzc2FnZSA9IG5ldyBJbGx1c3RyYXRlZE1lc3NhZ2UoYCR7bWRjTGlua0lkfS1pbGx1c3RyYXRlZG1lc3NhZ2VgLCBpbGx1c3RyYXRlZE1lc3NhZ2VTZXR0aW5ncyk7XG5cdFx0Y29uc3QgcG9wb3ZlclNldHRpbmdzOiAkUmVzcG9uc2l2ZVBvcG92ZXJTZXR0aW5ncyA9IHtcblx0XHRcdGhvcml6b250YWxTY3JvbGxpbmc6IGZhbHNlLFxuXHRcdFx0c2hvd0hlYWRlcjogRGV2aWNlLnN5c3RlbS5waG9uZSxcblx0XHRcdHBsYWNlbWVudDogbW9iaWxlbGlicmFyeS5QbGFjZW1lbnRUeXBlLkF1dG8sXG5cdFx0XHRjb250ZW50OiBbaWxsdXN0cmF0ZWRNZXNzYWdlXSxcblx0XHRcdGFmdGVyQ2xvc2U6IGZ1bmN0aW9uIChldmVudCkge1xuXHRcdFx0XHRpZiAoZXZlbnQuZ2V0U291cmNlKCkpIHtcblx0XHRcdFx0XHRldmVudC5nZXRTb3VyY2UoKS5kZXN0cm95KCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9O1xuXHRcdHJldHVybiBuZXcgUmVzcG9uc2l2ZVBvcG92ZXIoYCR7bWRjTGlua0lkfS1wb3BvdmVyYCwgcG9wb3ZlclNldHRpbmdzKTtcblx0fSxcblx0b3Blbkxpbms6IGFzeW5jIGZ1bmN0aW9uIChtZGNMaW5rOiBNZGNMaW5rLCBzYXBtTGluazogTGluaykge1xuXHRcdHRyeSB7XG5cdFx0XHRjb25zdCBoUmVmID0gYXdhaXQgbWRjTGluay5nZXRUcmlnZ2VySHJlZigpO1xuXHRcdFx0aWYgKCFoUmVmKSB7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Y29uc3QgbGlua0l0ZW1zID0gYXdhaXQgbWRjTGluay5yZXRyaWV2ZUxpbmtJdGVtcygpO1xuXHRcdFx0XHRcdGlmIChsaW5rSXRlbXM/Lmxlbmd0aCA9PT0gMCAmJiAobWRjTGluayBhcyBhbnkpLmdldFBheWxvYWQoKS5oYXNRdWlja1ZpZXdGYWNldHMgPT09IFwiZmFsc2VcIikge1xuXHRcdFx0XHRcdFx0Y29uc3QgcG9wb3ZlcjogUmVzcG9uc2l2ZVBvcG92ZXIgPSBGaWVsZFJ1bnRpbWUuY3JlYXRlUG9wb3ZlcldpdGhOb1RhcmdldHMobWRjTGluayk7XG5cdFx0XHRcdFx0XHRtZGNMaW5rLmFkZERlcGVuZGVudChwb3BvdmVyKTtcblx0XHRcdFx0XHRcdHBvcG92ZXIub3BlbkJ5KHNhcG1MaW5rIGFzIHVua25vd24gYXMgQ29udHJvbCk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGF3YWl0IG1kY0xpbmsub3BlbihzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBjYXRjaCAoZXJyb3IpIHtcblx0XHRcdFx0XHRMb2cuZXJyb3IoYENhbm5vdCByZXRyaWV2ZSB0aGUgUXVpY2tWaWV3IFBvcG92ZXIgZGlhbG9nOiAke2Vycm9yfWApO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRjb25zdCB2aWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhzYXBtTGluayk7XG5cdFx0XHRcdGNvbnN0IGFwcENvbXBvbmVudCA9IENvbW1vblV0aWxzLmdldEFwcENvbXBvbmVudCh2aWV3KTtcblx0XHRcdFx0Y29uc3Qgc2hlbGxTZXJ2aWNlID0gYXBwQ29tcG9uZW50LmdldFNoZWxsU2VydmljZXMoKTtcblx0XHRcdFx0Y29uc3Qgc2hlbGxIYXNoID0gc2hlbGxTZXJ2aWNlLnBhcnNlU2hlbGxIYXNoKGhSZWYpO1xuXHRcdFx0XHRjb25zdCBuYXZBcmdzID0ge1xuXHRcdFx0XHRcdHRhcmdldDoge1xuXHRcdFx0XHRcdFx0c2VtYW50aWNPYmplY3Q6IHNoZWxsSGFzaC5zZW1hbnRpY09iamVjdCxcblx0XHRcdFx0XHRcdGFjdGlvbjogc2hlbGxIYXNoLmFjdGlvblxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0cGFyYW1zOiBzaGVsbEhhc2gucGFyYW1zXG5cdFx0XHRcdH07XG5cblx0XHRcdFx0S2VlcEFsaXZlSGVscGVyLnN0b3JlQ29udHJvbFJlZnJlc2hTdHJhdGVneUZvckhhc2godmlldywgc2hlbGxIYXNoKTtcblxuXHRcdFx0XHRpZiAoQ29tbW9uVXRpbHMuaXNTdGlja3lFZGl0TW9kZShzYXBtTGluayBhcyB1bmtub3duIGFzIENvbnRyb2wpICE9PSB0cnVlKSB7XG5cdFx0XHRcdFx0Ly9VUkwgcGFyYW1zIGFuZCB4YXBwU3RhdGUgaGFzIGJlZW4gZ2VuZXJhdGVkIGVhcmxpZXIgaGVuY2UgdXNpbmcgdG9FeHRlcm5hbFxuXHRcdFx0XHRcdHNoZWxsU2VydmljZS50b0V4dGVybmFsKG5hdkFyZ3MgYXMgYW55LCBhcHBDb21wb25lbnQpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0XHRjb25zdCBuZXdIcmVmID0gYXdhaXQgc2hlbGxTZXJ2aWNlLmhyZWZGb3JFeHRlcm5hbEFzeW5jKG5hdkFyZ3MsIGFwcENvbXBvbmVudCk7XG5cdFx0XHRcdFx0XHRvcGVuV2luZG93KG5ld0hyZWYpO1xuXHRcdFx0XHRcdH0gY2F0Y2ggKGVycm9yKSB7XG5cdFx0XHRcdFx0XHRMb2cuZXJyb3IoYEVycm9yIHdoaWxlIHJldGlyZXZpbmcgaHJlZkZvckV4dGVybmFsIDogJHtlcnJvcn1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9IGNhdGNoIChlcnJvcikge1xuXHRcdFx0TG9nLmVycm9yKGBFcnJvciB0cmlnZ2VyaW5nIGxpbmsgSHJlZjogJHtlcnJvcn1gKTtcblx0XHR9XG5cdH0sXG5cdHByZXNzTGluazogYXN5bmMgZnVuY3Rpb24gKG9FdmVudDogYW55KTogUHJvbWlzZTx2b2lkPiB7XG5cdFx0Y29uc3Qgb1NvdXJjZSA9IG9FdmVudC5nZXRTb3VyY2UoKTtcblx0XHRjb25zdCBzYXBtTGluayA9IG9Tb3VyY2UuaXNBKFwic2FwLm0uT2JqZWN0SWRlbnRpZmllclwiKVxuXHRcdFx0PyBvU291cmNlLmZpbmRFbGVtZW50cyhmYWxzZSwgKGVsZW06IEVsZW1lbnQpID0+IHtcblx0XHRcdFx0XHRyZXR1cm4gZWxlbS5pc0EoXCJzYXAubS5MaW5rXCIpO1xuXHRcdFx0ICB9KVswXVxuXHRcdFx0OiBvU291cmNlO1xuXG5cdFx0aWYgKG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpICYmIG9Tb3VyY2UuZ2V0RGVwZW5kZW50cygpLmxlbmd0aCA+IDAgJiYgc2FwbUxpbmsuZ2V0UHJvcGVydHkoXCJ0ZXh0XCIpICE9PSBcIlwiKSB7XG5cdFx0XHRjb25zdCBvRmllbGRJbmZvID0gb1NvdXJjZS5nZXREZXBlbmRlbnRzKClbMF07XG5cdFx0XHRpZiAob0ZpZWxkSW5mbyAmJiBvRmllbGRJbmZvLmlzQShcInNhcC51aS5tZGMuTGlua1wiKSkge1xuXHRcdFx0XHRhd2FpdCBGaWVsZFJ1bnRpbWUub3Blbkxpbmsob0ZpZWxkSW5mbywgc2FwbUxpbmspO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gc2FwbUxpbms7XG5cdH0sXG5cdHVwbG9hZFN0cmVhbTogZnVuY3Rpb24gKGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsIGV2ZW50OiBFdmVudCkge1xuXHRcdGNvbnN0IGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIEZpbGVVcGxvYWRlcixcblx0XHRcdEZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihjb250cm9sbGVyKSxcblx0XHRcdGZpbGVXcmFwcGVyID0gZmlsZVVwbG9hZGVyLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgRmlsZVdyYXBwZXIsXG5cdFx0XHR1cGxvYWRVcmwgPSBmaWxlV3JhcHBlci5nZXRVcGxvYWRVcmwoKTtcblxuXHRcdGlmICh1cGxvYWRVcmwgIT09IFwiXCIpIHtcblx0XHRcdGZpbGVXcmFwcGVyLnNldFVJQnVzeSh0cnVlKTtcblxuXHRcdFx0Ly8gdXNlIHVwbG9hZFVybCBmcm9tIEZpbGVXcmFwcGVyIHdoaWNoIHJldHVybnMgYSBjYW5vbmljYWwgVVJMXG5cdFx0XHRmaWxlVXBsb2FkZXIuc2V0VXBsb2FkVXJsKHVwbG9hZFVybCk7XG5cblx0XHRcdGZpbGVVcGxvYWRlci5yZW1vdmVBbGxIZWFkZXJQYXJhbWV0ZXJzKCk7XG5cdFx0XHRjb25zdCB0b2tlbiA9IChmaWxlVXBsb2FkZXIuZ2V0TW9kZWwoKSBhcyBhbnkpPy5nZXRIdHRwSGVhZGVycygpW1wiWC1DU1JGLVRva2VuXCJdO1xuXHRcdFx0aWYgKHRva2VuKSB7XG5cdFx0XHRcdGNvbnN0IGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbiA9IG5ldyBGaWxlVXBsb2FkZXJQYXJhbWV0ZXIoKTtcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuLnNldE5hbWUoXCJ4LWNzcmYtdG9rZW5cIik7XG5cdFx0XHRcdGhlYWRlclBhcmFtZXRlckNTUkZUb2tlbi5zZXRWYWx1ZSh0b2tlbik7XG5cdFx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyQ1NSRlRva2VuKTtcblx0XHRcdH1cblx0XHRcdGNvbnN0IGVUYWcgPSAoZmlsZVVwbG9hZGVyLmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCB8IHVuZGVmaW5lZCB8IG51bGwpPy5nZXRQcm9wZXJ0eShcIkBvZGF0YS5ldGFnXCIpO1xuXHRcdFx0aWYgKGVUYWcpIHtcblx0XHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyRVRhZyA9IG5ldyBGaWxlVXBsb2FkZXJQYXJhbWV0ZXIoKTtcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyRVRhZy5zZXROYW1lKFwiSWYtTWF0Y2hcIik7XG5cdFx0XHRcdC8vIElnbm9yZSBFVGFnIGluIGNvbGxhYm9yYXRpb24gZHJhZnRcblx0XHRcdFx0aGVhZGVyUGFyYW1ldGVyRVRhZy5zZXRWYWx1ZShDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLmlzQ29ubmVjdGVkKGZpbGVVcGxvYWRlcikgPyBcIipcIiA6IGVUYWcpO1xuXHRcdFx0XHRmaWxlVXBsb2FkZXIuYWRkSGVhZGVyUGFyYW1ldGVyKGhlYWRlclBhcmFtZXRlckVUYWcpO1xuXHRcdFx0fVxuXHRcdFx0Y29uc3QgaGVhZGVyUGFyYW1ldGVyQWNjZXB0ID0gbmV3IEZpbGVVcGxvYWRlclBhcmFtZXRlcigpO1xuXHRcdFx0aGVhZGVyUGFyYW1ldGVyQWNjZXB0LnNldE5hbWUoXCJBY2NlcHRcIik7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJBY2NlcHQuc2V0VmFsdWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpO1xuXHRcdFx0ZmlsZVVwbG9hZGVyLmFkZEhlYWRlclBhcmFtZXRlcihoZWFkZXJQYXJhbWV0ZXJBY2NlcHQpO1xuXG5cdFx0XHRjb25zdCBoZWFkZXJQYXJhbWV0ZXJDb250ZW50VHlwZSA9IG5ldyBGaWxlVXBsb2FkZXJQYXJhbWV0ZXIoKTtcblx0XHRcdGhlYWRlclBhcmFtZXRlckNvbnRlbnRUeXBlLnNldE5hbWUoXCJDb250ZW50LVR5cGVcIik7XG5cdFx0XHRoZWFkZXJQYXJhbWV0ZXJDb250ZW50VHlwZS5zZXRWYWx1ZShcImFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbVwiKTtcblx0XHRcdGZpbGVVcGxvYWRlci5hZGRIZWFkZXJQYXJhbWV0ZXIoaGVhZGVyUGFyYW1ldGVyQ29udGVudFR5cGUpO1xuXG5cdFx0XHQvLyBzeW5jaHJvbml6ZSB1cGxvYWQgd2l0aCBvdGhlciByZXF1ZXN0c1xuXHRcdFx0Y29uc3QgdXBsb2FkUHJvbWlzZSA9IG5ldyBQcm9taXNlKChyZXNvbHZlOiBhbnksIHJlamVjdDogYW55KSA9PiB7XG5cdFx0XHRcdHRoaXMudXBsb2FkUHJvbWlzZXMgPSB0aGlzLnVwbG9hZFByb21pc2VzIHx8IHt9O1xuXHRcdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXSA9IHtcblx0XHRcdFx0XHRyZXNvbHZlOiByZXNvbHZlLFxuXHRcdFx0XHRcdHJlamVjdDogcmVqZWN0XG5cdFx0XHRcdH07XG5cdFx0XHRcdGZpbGVVcGxvYWRlci51cGxvYWQoKTtcblx0XHRcdH0pO1xuXHRcdFx0RkVDb250cm9sbGVyLmVkaXRGbG93LnN5bmNUYXNrKHVwbG9hZFByb21pc2UpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRNZXNzYWdlQm94LmVycm9yKGdldFJlc291cmNlTW9kZWwoY29udHJvbGxlcikuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0FCT1JURURfVEVYVFwiKSk7XG5cdFx0fVxuXHR9LFxuXG5cdGhhbmRsZVVwbG9hZENvbXBsZXRlOiBmdW5jdGlvbiAoXG5cdFx0ZXZlbnQ6IEZpbGVVcGxvYWRlciRVcGxvYWRDb21wbGV0ZUV2ZW50LFxuXHRcdHByb3BlcnR5RmlsZU5hbWU6IHsgcGF0aDogc3RyaW5nIH0gfCB1bmRlZmluZWQsXG5cdFx0cHJvcGVydHlQYXRoOiBzdHJpbmcsXG5cdFx0Y29udHJvbGxlcjogQ29udHJvbGxlclxuXHQpIHtcblx0XHRjb25zdCBzdGF0dXMgPSBOdW1iZXIoZXZlbnQuZ2V0UGFyYW1ldGVyKFwic3RhdHVzXCIpKSxcblx0XHRcdGZpbGVVcGxvYWRlciA9IGV2ZW50LmdldFNvdXJjZSgpIGFzIEZpbGVVcGxvYWRlcixcblx0XHRcdGZpbGVXcmFwcGVyID0gZmlsZVVwbG9hZGVyLmdldFBhcmVudCgpIGFzIHVua25vd24gYXMgRmlsZVdyYXBwZXI7XG5cblx0XHRmaWxlV3JhcHBlci5zZXRVSUJ1c3koZmFsc2UpO1xuXG5cdFx0Y29uc3QgY29udGV4dCA9IGZpbGVVcGxvYWRlci5nZXRCaW5kaW5nQ29udGV4dCgpIGFzIENvbnRleHQgfCB1bmRlZmluZWQgfCBudWxsO1xuXHRcdGlmIChzdGF0dXMgPT09IDAgfHwgc3RhdHVzID49IDQwMCkge1xuXHRcdFx0dGhpcy5fZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQoZXZlbnQpO1xuXHRcdFx0dGhpcy51cGxvYWRQcm9taXNlc1tmaWxlVXBsb2FkZXIuZ2V0SWQoKV0ucmVqZWN0KCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGNvbnN0IG5ld0VUYWcgPSAoZXZlbnQuZ2V0UGFyYW1ldGVyKFwiaGVhZGVyc1wiKSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPik/LmV0YWc7XG5cblx0XHRcdGlmIChuZXdFVGFnKSB7XG5cdFx0XHRcdC8vIHNldCBuZXcgZXRhZyBmb3IgZmlsZW5hbWUgdXBkYXRlLCBidXQgd2l0aG91dCBzZW5kaW5nIHBhdGNoIHJlcXVlc3Rcblx0XHRcdFx0Y29udGV4dD8uc2V0UHJvcGVydHkoXCJAb2RhdGEuZXRhZ1wiLCBuZXdFVGFnLCBudWxsIGFzIGFueSk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIHNldCBmaWxlbmFtZSBmb3IgbGluayB0ZXh0XG5cdFx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0XHRjb250ZXh0Py5zZXRQcm9wZXJ0eShwcm9wZXJ0eUZpbGVOYW1lLnBhdGgsIGZpbGVVcGxvYWRlci5nZXRWYWx1ZSgpKTtcblx0XHRcdH1cblxuXHRcdFx0Ly8gZGVsZXRlIHRoZSBhdmF0YXIgY2FjaGUgdGhhdCBub3QgZ2V0cyB1cGRhdGVkIG90aGVyd2lzZVxuXHRcdFx0ZmlsZVdyYXBwZXIuYXZhdGFyPy5yZWZyZXNoQXZhdGFyQ2FjaGVCdXN0aW5nKCk7XG5cblx0XHRcdHRoaXMuX2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbShldmVudCwgZmlsZVdyYXBwZXIsIGNvbnRyb2xsZXIpO1xuXG5cdFx0XHR0aGlzLnVwbG9hZFByb21pc2VzW2ZpbGVVcGxvYWRlci5nZXRJZCgpXS5yZXNvbHZlKCk7XG5cdFx0fVxuXG5cdFx0ZGVsZXRlIHRoaXMudXBsb2FkUHJvbWlzZXNbZmlsZVVwbG9hZGVyLmdldElkKCldO1xuXG5cdFx0Ly8gQ29sbGFib3JhdGlvbiBEcmFmdCBBY3Rpdml0eSBTeW5jXG5cdFx0Y29uc3QgaXNDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZmlsZVVwbG9hZGVyKTtcblx0XHRpZiAoIWlzQ29sbGFib3JhdGlvbkVuYWJsZWQgfHwgIWNvbnRleHQpIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRjb25zdCBub3RpZmljYXRpb25EYXRhID0gW2Ake2NvbnRleHQuZ2V0UGF0aCgpfS8ke3Byb3BlcnR5UGF0aH1gXTtcblx0XHRpZiAocHJvcGVydHlGaWxlTmFtZT8ucGF0aCkge1xuXHRcdFx0bm90aWZpY2F0aW9uRGF0YS5wdXNoKGAke2NvbnRleHQuZ2V0UGF0aCgpfS8ke3Byb3BlcnR5RmlsZU5hbWUucGF0aH1gKTtcblx0XHR9XG5cblx0XHRsZXQgYmluZGluZyA9IGNvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdGlmICghYmluZGluZy5pc0EoXCJzYXAudWkubW9kZWwub2RhdGEudjQuT0RhdGFMaXN0QmluZGluZ1wiKSkge1xuXHRcdFx0Y29uc3Qgb1ZpZXcgPSBDb21tb25VdGlscy5nZXRUYXJnZXRWaWV3KGZpbGVVcGxvYWRlcik7XG5cdFx0XHRiaW5kaW5nID0gKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCkuZ2V0QmluZGluZygpO1xuXHRcdH1cblx0XHRpZiAoYmluZGluZy5oYXNQZW5kaW5nQ2hhbmdlcygpKSB7XG5cdFx0XHRiaW5kaW5nLmF0dGFjaEV2ZW50T25jZShcInBhdGNoQ29tcGxldGVkXCIsICgpID0+IHtcblx0XHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGZpbGVXcmFwcGVyLCB7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZmlsZVdyYXBwZXIsIHsgYWN0aW9uOiBBY3Rpdml0eS5VbmxvY2ssIGNvbnRlbnQ6IG5vdGlmaWNhdGlvbkRhdGEgfSk7XG5cdFx0XHR9KTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGZpbGVXcmFwcGVyLCB7IGFjdGlvbjogQWN0aXZpdHkuQ2hhbmdlLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdFx0Q29sbGFib3JhdGlvbkFjdGl2aXR5U3luYy5zZW5kKGZpbGVXcmFwcGVyLCB7IGFjdGlvbjogQWN0aXZpdHkuVW5sb2NrLCBjb250ZW50OiBub3RpZmljYXRpb25EYXRhIH0pO1xuXHRcdH1cblx0fSxcblxuXHRfZGlzcGxheU1lc3NhZ2VGb3JGYWlsZWRVcGxvYWQ6IGZ1bmN0aW9uIChvRXZlbnQ6IEZpbGVVcGxvYWRlciRVcGxvYWRDb21wbGV0ZUV2ZW50KTogdm9pZCB7XG5cdFx0Ly8gaGFuZGxpbmcgb2YgYmFja2VuZCBlcnJvcnNcblx0XHRjb25zdCBzRXJyb3IgPSBvRXZlbnQuZ2V0UGFyYW1ldGVyKFwicmVzcG9uc2VSYXdcIikgfHwgb0V2ZW50LmdldFBhcmFtZXRlcihcInJlc3BvbnNlXCIpO1xuXHRcdGxldCBzTWVzc2FnZVRleHQsIG9FcnJvcjtcblx0XHR0cnkge1xuXHRcdFx0b0Vycm9yID0gc0Vycm9yICYmIEpTT04ucGFyc2Uoc0Vycm9yKTtcblx0XHRcdHNNZXNzYWdlVGV4dCA9IG9FcnJvci5lcnJvciAmJiBvRXJyb3IuZXJyb3IubWVzc2FnZTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHRzTWVzc2FnZVRleHQgPSBzRXJyb3IgfHwgZ2V0UmVzb3VyY2VNb2RlbChvRXZlbnQuZ2V0U291cmNlKCkgYXMgQ29udHJvbCkuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX0FCT1JURURfVEVYVFwiKTtcblx0XHR9XG5cdFx0TWVzc2FnZUJveC5lcnJvcihzTWVzc2FnZVRleHQpO1xuXHR9LFxuXG5cdHJlbW92ZVN0cmVhbTogZnVuY3Rpb24gKGV2ZW50OiBFdmVudCwgcHJvcGVydHlGaWxlTmFtZTogeyBwYXRoOiBzdHJpbmcgfSB8IHVuZGVmaW5lZCwgcHJvcGVydHlQYXRoOiBzdHJpbmcsIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIpIHtcblx0XHRjb25zdCBkZWxldGVCdXR0b24gPSBldmVudC5nZXRTb3VyY2UoKSBhcyBCdXR0b247XG5cdFx0Y29uc3QgZmlsZVdyYXBwZXIgPSBkZWxldGVCdXR0b24uZ2V0UGFyZW50KCkgYXMgdW5rbm93biBhcyBGaWxlV3JhcHBlcjtcblx0XHRjb25zdCBjb250ZXh0ID0gZmlsZVdyYXBwZXIuZ2V0QmluZGluZ0NvbnRleHQoKSBhcyBDb250ZXh0O1xuXG5cdFx0Ly8gc3RyZWFtcyBhcmUgcmVtb3ZlZCBieSBhc3NpZ25pbmcgdGhlIG51bGwgdmFsdWVcblx0XHRjb250ZXh0LnNldFByb3BlcnR5KHByb3BlcnR5UGF0aCwgbnVsbCk7XG5cdFx0Ly8gV2hlbiBzZXR0aW5nIHRoZSBwcm9wZXJ0eSB0byBudWxsLCB0aGUgdXBsb2FkVXJsIChAQE1PREVMLmZvcm1hdCkgaXMgc2V0IHRvIFwiXCIgYnkgdGhlIG1vZGVsXG5cdFx0Ly9cdHdpdGggdGhhdCBhbm90aGVyIHVwbG9hZCBpcyBub3QgcG9zc2libGUgYmVmb3JlIHJlZnJlc2hpbmcgdGhlIHBhZ2Vcblx0XHQvLyAocmVmcmVzaGluZyB0aGUgcGFnZSB3b3VsZCByZWNyZWF0ZSB0aGUgVVJMKVxuXHRcdC8vXHRUaGlzIGlzIHRoZSB3b3JrYXJvdW5kOlxuXHRcdC8vXHRXZSBzZXQgdGhlIHByb3BlcnR5IHRvIHVuZGVmaW5lZCBvbmx5IG9uIHRoZSBmcm9udGVuZCB3aGljaCB3aWxsIHJlY3JlYXRlIHRoZSB1cGxvYWRVcmxcblx0XHRjb250ZXh0LnNldFByb3BlcnR5KHByb3BlcnR5UGF0aCwgdW5kZWZpbmVkLCBudWxsIGFzIGFueSk7XG5cblx0XHR0aGlzLl9jYWxsU2lkZUVmZmVjdHNGb3JTdHJlYW0oZXZlbnQsIGZpbGVXcmFwcGVyLCBjb250cm9sbGVyKTtcblxuXHRcdC8vIENvbGxhYm9yYXRpb24gRHJhZnQgQWN0aXZpdHkgU3luY1xuXHRcdGNvbnN0IGJDb2xsYWJvcmF0aW9uRW5hYmxlZCA9IENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuaXNDb25uZWN0ZWQoZGVsZXRlQnV0dG9uKTtcblx0XHRpZiAoYkNvbGxhYm9yYXRpb25FbmFibGVkKSB7XG5cdFx0XHRsZXQgYmluZGluZyA9IGNvbnRleHQuZ2V0QmluZGluZygpO1xuXHRcdFx0aWYgKCFiaW5kaW5nLmlzQShcInNhcC51aS5tb2RlbC5vZGF0YS52NC5PRGF0YUxpc3RCaW5kaW5nXCIpKSB7XG5cdFx0XHRcdGNvbnN0IG9WaWV3ID0gQ29tbW9uVXRpbHMuZ2V0VGFyZ2V0VmlldyhkZWxldGVCdXR0b24pO1xuXHRcdFx0XHRiaW5kaW5nID0gKG9WaWV3LmdldEJpbmRpbmdDb250ZXh0KCkgYXMgQ29udGV4dCkuZ2V0QmluZGluZygpO1xuXHRcdFx0fVxuXG5cdFx0XHRjb25zdCBkYXRhID0gW2Ake2NvbnRleHQuZ2V0UGF0aCgpfS8ke3Byb3BlcnR5UGF0aH1gXTtcblx0XHRcdGlmIChwcm9wZXJ0eUZpbGVOYW1lPy5wYXRoKSB7XG5cdFx0XHRcdGRhdGEucHVzaChgJHtjb250ZXh0LmdldFBhdGgoKX0vJHtwcm9wZXJ0eUZpbGVOYW1lLnBhdGh9YCk7XG5cdFx0XHR9XG5cdFx0XHRDb2xsYWJvcmF0aW9uQWN0aXZpdHlTeW5jLnNlbmQoZGVsZXRlQnV0dG9uLCB7IGFjdGlvbjogQWN0aXZpdHkuTG9jaywgY29udGVudDogZGF0YSB9KTtcblxuXHRcdFx0YmluZGluZy5hdHRhY2hFdmVudE9uY2UoXCJwYXRjaENvbXBsZXRlZFwiLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChkZWxldGVCdXR0b24sIHsgYWN0aW9uOiBBY3Rpdml0eS5DaGFuZ2UsIGNvbnRlbnQ6IGRhdGEgfSk7XG5cdFx0XHRcdENvbGxhYm9yYXRpb25BY3Rpdml0eVN5bmMuc2VuZChkZWxldGVCdXR0b24sIHsgYWN0aW9uOiBBY3Rpdml0eS5VbmxvY2ssIGNvbnRlbnQ6IGRhdGEgfSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cblx0X2NhbGxTaWRlRWZmZWN0c0ZvclN0cmVhbTogZnVuY3Rpb24gKG9FdmVudDogYW55LCBvQ29udHJvbDogYW55LCBvQ29udHJvbGxlcjogYW55KSB7XG5cdFx0Y29uc3Qgb0ZFQ29udHJvbGxlciA9IEZpZWxkUnVudGltZS5fZ2V0RXh0ZW5zaW9uQ29udHJvbGxlcihvQ29udHJvbGxlcik7XG5cdFx0aWYgKG9Db250cm9sICYmIG9Db250cm9sLmdldEJpbmRpbmdDb250ZXh0KCkuaXNUcmFuc2llbnQoKSkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAob0NvbnRyb2wpIHtcblx0XHRcdG9FdmVudC5vU291cmNlID0gb0NvbnRyb2w7XG5cdFx0fVxuXHRcdG9GRUNvbnRyb2xsZXIuX3NpZGVFZmZlY3RzLmhhbmRsZUZpZWxkQ2hhbmdlKG9FdmVudCwgdGhpcy5nZXRGaWVsZFN0YXRlT25DaGFuZ2Uob0V2ZW50KS5zdGF0ZVtcInZhbGlkaXR5XCJdKTtcblx0fSxcblxuXHRnZXRJY29uRm9yTWltZVR5cGU6IGZ1bmN0aW9uIChzTWltZVR5cGU6IGFueSkge1xuXHRcdHJldHVybiBJY29uUG9vbC5nZXRJY29uRm9yTWltZVR5cGUoc01pbWVUeXBlKTtcblx0fSxcblxuXHQvKipcblx0ICogTWV0aG9kIHRvIHJldHJpZXZlIHRleHQgZnJvbSB2YWx1ZSBsaXN0IGZvciBEYXRhRmllbGQuXG5cdCAqXG5cdCAqIEBmdW5jdGlvblxuXHQgKiBAbmFtZSByZXRyaWV2ZVRleHRGcm9tVmFsdWVMaXN0XG5cdCAqIEBwYXJhbSBzUHJvcGVydHlWYWx1ZSBUaGUgcHJvcGVydHkgdmFsdWUgb2YgdGhlIGRhdGFmaWVsZFxuXHQgKiBAcGFyYW0gc1Byb3BlcnR5RnVsbFBhdGggVGhlIHByb3BlcnR5IGZ1bGwgcGF0aCdzXG5cdCAqIEBwYXJhbSBzRGlzcGxheUZvcm1hdCBUaGUgZGlzcGxheSBmb3JtYXQgZm9yIHRoZSBkYXRhZmllbGRcblx0ICogQHJldHVybnMgVGhlIGZvcm1hdHRlZCB2YWx1ZSBpbiBjb3JyZXNwb25kaW5nIGRpc3BsYXkgZm9ybWF0LlxuXHQgKi9cblx0cmV0cmlldmVUZXh0RnJvbVZhbHVlTGlzdDogZnVuY3Rpb24gKHNQcm9wZXJ0eVZhbHVlOiBzdHJpbmcsIHNQcm9wZXJ0eUZ1bGxQYXRoOiBzdHJpbmcsIHNEaXNwbGF5Rm9ybWF0OiBzdHJpbmcpIHtcblx0XHRsZXQgc1RleHRQcm9wZXJ0eTogc3RyaW5nO1xuXHRcdGxldCBvTWV0YU1vZGVsO1xuXHRcdGxldCBzUHJvcGVydHlOYW1lOiBzdHJpbmc7XG5cdFx0aWYgKHNQcm9wZXJ0eVZhbHVlKSB7XG5cdFx0XHRvTWV0YU1vZGVsID0gQ29tbW9uSGVscGVyLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0c1Byb3BlcnR5TmFtZSA9IG9NZXRhTW9kZWwuZ2V0T2JqZWN0KGAke3NQcm9wZXJ0eUZ1bGxQYXRofUBzYXB1aS5uYW1lYCk7XG5cdFx0XHRyZXR1cm4gb01ldGFNb2RlbFxuXHRcdFx0XHQucmVxdWVzdFZhbHVlTGlzdEluZm8oc1Byb3BlcnR5RnVsbFBhdGgsIHRydWUpXG5cdFx0XHRcdC50aGVuKGZ1bmN0aW9uIChtVmFsdWVMaXN0SW5mbzogYW55KSB7XG5cdFx0XHRcdFx0Ly8gdGFrZSB0aGUgXCJcIiBvbmUgaWYgZXhpc3RzLCBvdGhlcndpc2UgdGFrZSB0aGUgZmlyc3Qgb25lIGluIHRoZSBvYmplY3QgVE9ETzogdG8gYmUgZGlzY3Vzc2VkXG5cdFx0XHRcdFx0Y29uc3Qgb1ZhbHVlTGlzdEluZm8gPSBtVmFsdWVMaXN0SW5mb1ttVmFsdWVMaXN0SW5mb1tcIlwiXSA/IFwiXCIgOiBPYmplY3Qua2V5cyhtVmFsdWVMaXN0SW5mbylbMF1dO1xuXHRcdFx0XHRcdGNvbnN0IG9WYWx1ZUxpc3RNb2RlbCA9IG9WYWx1ZUxpc3RJbmZvLiRtb2RlbDtcblx0XHRcdFx0XHRjb25zdCBvTWV0YU1vZGVsVmFsdWVMaXN0ID0gb1ZhbHVlTGlzdE1vZGVsLmdldE1ldGFNb2RlbCgpO1xuXHRcdFx0XHRcdGNvbnN0IG9QYXJhbVdpdGhLZXkgPSBvVmFsdWVMaXN0SW5mby5QYXJhbWV0ZXJzLmZpbmQoZnVuY3Rpb24gKG9QYXJhbWV0ZXI6IGFueSkge1xuXHRcdFx0XHRcdFx0cmV0dXJuIG9QYXJhbWV0ZXIuTG9jYWxEYXRhUHJvcGVydHkgJiYgb1BhcmFtZXRlci5Mb2NhbERhdGFQcm9wZXJ0eS4kUHJvcGVydHlQYXRoID09PSBzUHJvcGVydHlOYW1lO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGlmIChvUGFyYW1XaXRoS2V5ICYmICFvUGFyYW1XaXRoS2V5LlZhbHVlTGlzdFByb3BlcnR5KSB7XG5cdFx0XHRcdFx0XHR0aHJvdyBuZXcgRXJyb3IoYEluY29uc2lzdGVudCB2YWx1ZSBoZWxwIGFubm90YXRpb24gZm9yICR7c1Byb3BlcnR5TmFtZX1gKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Y29uc3Qgb1RleHRBbm5vdGF0aW9uID0gb01ldGFNb2RlbFZhbHVlTGlzdC5nZXRPYmplY3QoXG5cdFx0XHRcdFx0XHRgLyR7b1ZhbHVlTGlzdEluZm8uQ29sbGVjdGlvblBhdGh9LyR7b1BhcmFtV2l0aEtleS5WYWx1ZUxpc3RQcm9wZXJ0eX1AY29tLnNhcC52b2NhYnVsYXJpZXMuQ29tbW9uLnYxLlRleHRgXG5cdFx0XHRcdFx0KTtcblxuXHRcdFx0XHRcdGlmIChvVGV4dEFubm90YXRpb24gJiYgb1RleHRBbm5vdGF0aW9uLiRQYXRoKSB7XG5cdFx0XHRcdFx0XHRzVGV4dFByb3BlcnR5ID0gb1RleHRBbm5vdGF0aW9uLiRQYXRoO1xuXHRcdFx0XHRcdFx0Y29uc3Qgb0ZpbHRlciA9IG5ldyBGaWx0ZXIoe1xuXHRcdFx0XHRcdFx0XHRwYXRoOiBvUGFyYW1XaXRoS2V5LlZhbHVlTGlzdFByb3BlcnR5LFxuXHRcdFx0XHRcdFx0XHRvcGVyYXRvcjogXCJFUVwiLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTE6IHNQcm9wZXJ0eVZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGNvbnN0IG9MaXN0QmluZGluZyA9IG9WYWx1ZUxpc3RNb2RlbC5iaW5kTGlzdChgLyR7b1ZhbHVlTGlzdEluZm8uQ29sbGVjdGlvblBhdGh9YCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIG9GaWx0ZXIsIHtcblx0XHRcdFx0XHRcdFx0JHNlbGVjdDogc1RleHRQcm9wZXJ0eVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm4gb0xpc3RCaW5kaW5nLnJlcXVlc3RDb250ZXh0cygwLCAyKTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0c0Rpc3BsYXlGb3JtYXQgPSBcIlZhbHVlXCI7XG5cdFx0XHRcdFx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KVxuXHRcdFx0XHQudGhlbihmdW5jdGlvbiAoYUNvbnRleHRzOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBzRGVzY3JpcHRpb24gPSBzVGV4dFByb3BlcnR5ID8gYUNvbnRleHRzWzBdPy5nZXRPYmplY3QoKVtzVGV4dFByb3BlcnR5XSA6IFwiXCI7XG5cdFx0XHRcdFx0c3dpdGNoIChzRGlzcGxheUZvcm1hdCkge1xuXHRcdFx0XHRcdFx0Y2FzZSBcIkRlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBzRGVzY3JpcHRpb247XG5cdFx0XHRcdFx0XHRjYXNlIFwiRGVzY3JpcHRpb25WYWx1ZVwiOlxuXHRcdFx0XHRcdFx0XHRyZXR1cm4gQ29yZS5nZXRMaWJyYXJ5UmVzb3VyY2VCdW5kbGUoXCJzYXAuZmUuY29yZVwiKS5nZXRUZXh0KFwiQ19GT1JNQVRfRk9SX1RFWFRfQVJSQU5HRU1FTlRcIiwgW1xuXHRcdFx0XHRcdFx0XHRcdHNEZXNjcmlwdGlvbixcblx0XHRcdFx0XHRcdFx0XHRzUHJvcGVydHlWYWx1ZVxuXHRcdFx0XHRcdFx0XHRdKTtcblx0XHRcdFx0XHRcdGNhc2UgXCJWYWx1ZURlc2NyaXB0aW9uXCI6XG5cdFx0XHRcdFx0XHRcdHJldHVybiBDb3JlLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS5jb3JlXCIpLmdldFRleHQoXCJDX0ZPUk1BVF9GT1JfVEVYVF9BUlJBTkdFTUVOVFwiLCBbXG5cdFx0XHRcdFx0XHRcdFx0c1Byb3BlcnR5VmFsdWUsXG5cdFx0XHRcdFx0XHRcdFx0c0Rlc2NyaXB0aW9uXG5cdFx0XHRcdFx0XHRcdF0pO1xuXHRcdFx0XHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHNQcm9wZXJ0eVZhbHVlO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0LmNhdGNoKGZ1bmN0aW9uIChvRXJyb3I6IGFueSkge1xuXHRcdFx0XHRcdGNvbnN0IHNNc2cgPVxuXHRcdFx0XHRcdFx0b0Vycm9yLnN0YXR1cyAmJiBvRXJyb3Iuc3RhdHVzID09PSA0MDRcblx0XHRcdFx0XHRcdFx0PyBgTWV0YWRhdGEgbm90IGZvdW5kICgke29FcnJvci5zdGF0dXN9KSBmb3IgdmFsdWUgaGVscCBvZiBwcm9wZXJ0eSAke3NQcm9wZXJ0eUZ1bGxQYXRofWBcblx0XHRcdFx0XHRcdFx0OiBvRXJyb3IubWVzc2FnZTtcblx0XHRcdFx0XHRMb2cuZXJyb3Ioc01zZyk7XG5cdFx0XHRcdH0pO1xuXHRcdH1cblx0XHRyZXR1cm4gc1Byb3BlcnR5VmFsdWU7XG5cdH0sXG5cblx0aGFuZGxlVHlwZU1pc3NtYXRjaDogZnVuY3Rpb24gKG9FdmVudDogYW55KSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IGdldFJlc291cmNlTW9kZWwob0V2ZW50LmdldFNvdXJjZSgpKTtcblx0XHRNZXNzYWdlQm94LmVycm9yKHJlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX1dST05HX01JTUVUWVBFXCIpLCB7XG5cdFx0XHRkZXRhaWxzOlxuXHRcdFx0XHRgPHA+PHN0cm9uZz4ke3Jlc291cmNlTW9kZWwuZ2V0VGV4dChcIk1fRklFTERfRklMRVVQTE9BREVSX1dST05HX01JTUVUWVBFX0RFVEFJTFNfU0VMRUNURURcIil9PC9zdHJvbmc+PC9wPiR7XG5cdFx0XHRcdFx0b0V2ZW50LmdldFBhcmFtZXRlcnMoKS5taW1lVHlwZVxuXHRcdFx0XHR9PGJyPjxicj5gICtcblx0XHRcdFx0YDxwPjxzdHJvbmc+JHtyZXNvdXJjZU1vZGVsLmdldFRleHQoXCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9XUk9OR19NSU1FVFlQRV9ERVRBSUxTX0FMTE9XRURcIil9PC9zdHJvbmc+PC9wPiR7b0V2ZW50XG5cdFx0XHRcdFx0LmdldFNvdXJjZSgpXG5cdFx0XHRcdFx0LmdldE1pbWVUeXBlKClcblx0XHRcdFx0XHQudG9TdHJpbmcoKVxuXHRcdFx0XHRcdC5yZXBsYWNlQWxsKFwiLFwiLCBcIiwgXCIpfWAsXG5cdFx0XHRjb250ZW50V2lkdGg6IFwiMTUwcHhcIlxuXHRcdH0gYXMgYW55KTtcblx0fSxcblxuXHRoYW5kbGVGaWxlU2l6ZUV4Y2VlZDogZnVuY3Rpb24gKG9FdmVudDogYW55IC8qaUZpbGVTaXplOiBhbnkqLykge1xuXHRcdE1lc3NhZ2VCb3guZXJyb3IoXG5cdFx0XHRnZXRSZXNvdXJjZU1vZGVsKG9FdmVudC5nZXRTb3VyY2UoKSkuZ2V0VGV4dChcblx0XHRcdFx0XCJNX0ZJRUxEX0ZJTEVVUExPQURFUl9GSUxFX1RPT19CSUdcIixcblx0XHRcdFx0b0V2ZW50LmdldFNvdXJjZSgpLmdldE1heGltdW1GaWxlU2l6ZSgpLnRvRml4ZWQoMylcblx0XHRcdCksXG5cdFx0XHR7XG5cdFx0XHRcdGNvbnRlbnRXaWR0aDogXCIxNTBweFwiXG5cdFx0XHR9IGFzIGFueVxuXHRcdCk7XG5cdH0sXG5cblx0X2dldEV4dGVuc2lvbkNvbnRyb2xsZXI6IGZ1bmN0aW9uIChvQ29udHJvbGxlcjogYW55KSB7XG5cdFx0cmV0dXJuIG9Db250cm9sbGVyLmlzQShcInNhcC5mZS5jb3JlLkV4dGVuc2lvbkFQSVwiKSA/IG9Db250cm9sbGVyLl9jb250cm9sbGVyIDogb0NvbnRyb2xsZXI7XG5cdH0sXG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gY3JlYXRlIGFuZCBzaG93IHdobyBpcyBlZGl0aW5nIHRoZSBmaWVsZCBwb3BvdmVyLlxuXHQgKlxuXHQgKiBAcGFyYW0gc291cmNlIFRoZSBhdmF0YXIgd2hpY2ggaXMgbmV4dCB0byB0aGUgZmllbGQgbG9ja2VkXG5cdCAqIEBwYXJhbSB2aWV3IEN1cnJlbnQgdmlld1xuXHQgKi9cblx0c2hvd0NvbGxhYm9yYXRpb25FZGl0VXNlcjogZnVuY3Rpb24gKHNvdXJjZTogQXZhdGFyLCB2aWV3OiBWaWV3KSB7XG5cdFx0Y29uc3QgcmVzb3VyY2VNb2RlbCA9IFJlc291cmNlTW9kZWxIZWxwZXIuZ2V0UmVzb3VyY2VNb2RlbCh2aWV3KTtcblx0XHRsZXQgcG9wb3ZlciA9IENvcmUuYnlJZChgbWFuYWdlQ29sbGFib3JhdGlvbkRyYWZ0LS1lZGl0VXNlcmApIGFzIFJlc3BvbnNpdmVQb3BvdmVyO1xuXG5cdFx0aWYgKCFwb3BvdmVyKSB7XG5cdFx0XHRwb3BvdmVyID0gbmV3IFJlc3BvbnNpdmVQb3BvdmVyKFwibWFuYWdlQ29sbGFib3JhdGlvbkRyYWZ0LS1lZGl0VXNlclwiLCB7XG5cdFx0XHRcdHNob3dIZWFkZXI6IGZhbHNlLFxuXHRcdFx0XHRwbGFjZW1lbnQ6IFwiQm90dG9tXCJcblx0XHRcdH0pO1xuXHRcdFx0cG9wb3Zlci5hZGRTdHlsZUNsYXNzKFwic2FwVWlDb250ZW50UGFkZGluZ1wiKTtcblx0XHRcdHZpZXcuYWRkRGVwZW5kZW50KHBvcG92ZXIpO1xuXHRcdH1cblxuXHRcdGNvbnN0IGJpbmRpbmdQYXRoID0gKHNvdXJjZS5nZXRCaW5kaW5nKFwiaW5pdGlhbHNcIikgYXMgQ29tcG9zaXRlQmluZGluZylcblx0XHRcdD8uZ2V0QmluZGluZ3MoKVxuXHRcdFx0LmZpbmQoKGJpbmRpbmcpID0+IGJpbmRpbmc/LmdldFBhdGgoKT8uc3RhcnRzV2l0aChcIi9jb2xsYWJvcmF0aW9uL2FjdGl2aXRpZXNcIikpXG5cdFx0XHQuZ2V0UGF0aCgpO1xuXHRcdGNvbnN0IGFjdGl2aXRpZXMgPSBzb3VyY2UuZ2V0QmluZGluZ0NvbnRleHQoXCJpbnRlcm5hbFwiKT8uZ2V0T2JqZWN0KGJpbmRpbmdQYXRoKTtcblxuXHRcdGxldCBlZGl0aW5nQWN0aXZpdHk6IFVzZXJBY3Rpdml0eSB8IHVuZGVmaW5lZDtcblx0XHRpZiAoYWN0aXZpdGllcyAmJiBhY3Rpdml0aWVzLmxlbmd0aCA+IDApIHtcblx0XHRcdGVkaXRpbmdBY3Rpdml0eSA9IGFjdGl2aXRpZXMuZmluZCgoYWN0aXZpdHk6IFVzZXJBY3Rpdml0eSkgPT4ge1xuXHRcdFx0XHRyZXR1cm4gYWN0aXZpdHkua2V5ID09PSBnZXRBY3Rpdml0eUtleUZyb21QYXRoKHNvdXJjZS5nZXRCaW5kaW5nQ29udGV4dCgpIS5nZXRQYXRoKCkpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdHBvcG92ZXIuZGVzdHJveUNvbnRlbnQoKTtcblx0XHRwb3BvdmVyLmFkZENvbnRlbnQoXG5cdFx0XHRuZXcgTGFiZWwoe1xuXHRcdFx0XHR0ZXh0OiByZXNvdXJjZU1vZGVsLmdldFRleHQoXCJDX0NPTExBQk9SQVRJT05BVkFUQVJfVVNFUl9FRElUX0ZJRUxEXCIsIFtgJHtlZGl0aW5nQWN0aXZpdHk/Lm5hbWV9YF0pXG5cdFx0XHR9KVxuXHRcdCk7XG5cdFx0cG9wb3Zlci5vcGVuQnkoc291cmNlKTtcblx0fVxufTtcblxuLyoqXG4gKiBAZ2xvYmFsXG4gKi9cbmV4cG9ydCBkZWZhdWx0IEZpZWxkUnVudGltZTtcbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7OztFQWtEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxTQUFTQSx1QkFBdUIsQ0FBQ0MsS0FBYyxFQUEwQztJQUN4RixJQUFJQyxPQUFPLEdBQUlELEtBQUssQ0FBQ0UsaUJBQWlCLEVBQUUsQ0FBYUMsVUFBVSxFQUFFO0lBRWpFLElBQUksQ0FBQ0YsT0FBTyxDQUFDRyxHQUFHLENBQUMsd0NBQXdDLENBQUMsRUFBRTtNQUMzRCxNQUFNQyxLQUFLLEdBQUdDLFdBQVcsQ0FBQ0MsYUFBYSxDQUFDUCxLQUFLLENBQUM7TUFDOUNDLE9BQU8sR0FBSUksS0FBSyxDQUFDSCxpQkFBaUIsRUFBRSxDQUFhQyxVQUFVLEVBQUU7SUFDOUQ7SUFFQSxPQUFPRixPQUFPO0VBQ2Y7RUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQSxNQUFNTyxZQUFZLEdBQUc7SUFDcEJDLGNBQWMsRUFBRUMsU0FBZ0I7SUFDaENDLG1CQUFtQixFQUFFLEtBQUs7SUFFMUI7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDQ0MsNkJBQTZCLEVBQUUsVUFBVUMsT0FBZ0IsRUFBRUMsV0FBMkIsRUFBRUMsUUFBZ0IsRUFBRTtNQUN6RyxJQUFJRCxXQUFXLENBQUNFLFFBQVEsRUFBRTtRQUN6QixJQUFJQyxlQUFlLEdBQUdKLE9BQU8sQ0FBQ1gsaUJBQWlCLEVBQWE7UUFDNUQsTUFBTUcsS0FBSyxHQUFHQyxXQUFXLENBQUNDLGFBQWEsQ0FBQ00sT0FBTyxDQUFDO1VBQy9DSyxVQUFVLEdBQUdELGVBQWUsQ0FBQ0UsUUFBUSxFQUFFLENBQUNDLFlBQVksRUFBRTtV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
@@ -648,6 +648,11 @@ const FieldRuntime = {
648
648
  headerParameterAccept.setValue("application/json");
649
649
  fileUploader.addHeaderParameter(headerParameterAccept);
650
650
 
651
+ const headerParameterContentType = new FileUploaderParameter();
652
+ headerParameterContentType.setName("Content-Type");
653
+ headerParameterContentType.setValue("application/octet-stream");
654
+ fileUploader.addHeaderParameter(headerParameterContentType);
655
+
651
656
  // synchronize upload with other requests
652
657
  const uploadPromise = new Promise((resolve: any, reject: any) => {
653
658
  this.uploadPromises = this.uploadPromises || {};
@@ -2,7 +2,7 @@
2
2
  * SAP UI development toolkit for HTML5 (SAPUI5)
3
3
  * (c) Copyright 2009-2023 SAP SE. All rights reserved
4
4
  */
5
- sap.ui.define(["sap/base/Log", "sap/fe/core/TemplateModel", "sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/buildingBlocks/BuildingBlockSupport", "sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/ListReport/FilterBar", "sap/fe/core/helpers/MetaModelFunction", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/FilterHelper", "sap/fe/macros/CommonHelper"], function (Log, TemplateModel, BuildingBlockBase, BuildingBlockSupport, BuildingBlockTemplateProcessor, MetaModelConverter, DataVisualization, FilterBar, MetaModelFunction, ModelHelper, StableIdHelper, FilterHelper, CommonHelper) {
5
+ sap.ui.define(["sap/base/Log", "sap/fe/core/TemplateModel", "sap/fe/core/buildingBlocks/BuildingBlockBase", "sap/fe/core/buildingBlocks/BuildingBlockSupport", "sap/fe/core/buildingBlocks/BuildingBlockTemplateProcessor", "sap/fe/core/converters/MetaModelConverter", "sap/fe/core/converters/controls/Common/DataVisualization", "sap/fe/core/converters/controls/ListReport/FilterBar", "sap/fe/core/helpers/MetaModelFunction", "sap/fe/core/helpers/ModelHelper", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/templating/FilterHelper", "sap/fe/macros/CommonHelper", "sap/fe/core/CommonUtils"], function (Log, TemplateModel, BuildingBlockBase, BuildingBlockSupport, BuildingBlockTemplateProcessor, MetaModelConverter, DataVisualization, FilterBar, MetaModelFunction, ModelHelper, StableIdHelper, FilterHelper, CommonHelper, CommonUtils) {
6
6
  "use strict";
7
7
 
8
8
  var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _dec21, _dec22, _dec23, _dec24, _dec25, _dec26, _dec27, _dec28, _dec29, _dec30, _dec31, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7, _descriptor8, _descriptor9, _descriptor10, _descriptor11, _descriptor12, _descriptor13, _descriptor14, _descriptor15, _descriptor16, _descriptor17, _descriptor18, _descriptor19, _descriptor20, _descriptor21, _descriptor22, _descriptor23, _descriptor24, _descriptor25, _descriptor26, _descriptor27, _descriptor28, _descriptor29, _descriptor30;
@@ -349,7 +349,7 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/TemplateModel", "sap/fe/core/buildin
349
349
  });
350
350
  _this.filterConditions = oFilterConditions;
351
351
  }
352
- _this._processPropertyInfos(_this.propertyInfo);
352
+ _this._processPropertyInfos(_this.propertyInfo, _oMetaModel);
353
353
  const targetEntitySet = getInvolvedDataModelObjects(_this.metaPath, _this.contextPath).targetEntitySet;
354
354
  if (targetEntitySet !== null && targetEntitySet !== void 0 && (_targetEntitySet$anno = targetEntitySet.annotations) !== null && _targetEntitySet$anno !== void 0 && (_targetEntitySet$anno2 = _targetEntitySet$anno.Common) !== null && _targetEntitySet$anno2 !== void 0 && _targetEntitySet$anno2.DraftRoot || targetEntitySet !== null && targetEntitySet !== void 0 && (_targetEntitySet$anno3 = targetEntitySet.annotations) !== null && _targetEntitySet$anno3 !== void 0 && (_targetEntitySet$anno4 = _targetEntitySet$anno3.Common) !== null && _targetEntitySet$anno4 !== void 0 && _targetEntitySet$anno4.DraftNode) {
355
355
  _this.showDraftEditState = true;
@@ -371,19 +371,27 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/TemplateModel", "sap/fe/core/buildin
371
371
  }
372
372
  _exports = FilterBarBlock;
373
373
  var _proto = FilterBarBlock.prototype;
374
- _proto._processPropertyInfos = function _processPropertyInfos(propertyInfo) {
374
+ _proto._processPropertyInfos = function _processPropertyInfos(propertyInfo, model) {
375
375
  const aParameterFields = [];
376
376
  if (propertyInfo) {
377
377
  const sFetchedProperties = propertyInfo.replace(/\\{/g, "{").replace(/\\}/g, "}");
378
378
  const aFetchedProperties = JSON.parse(sFetchedProperties);
379
379
  const editStateLabel = this.getTranslatedText("FILTERBAR_EDITING_STATUS");
380
380
  aFetchedProperties.forEach(function (propInfo) {
381
+ var _propInfo$name;
381
382
  if (propInfo.isParameter) {
382
383
  aParameterFields.push(propInfo.name);
383
384
  }
384
385
  if (propInfo.path === "$editState") {
385
386
  propInfo.label = editStateLabel;
386
387
  }
388
+ if ((_propInfo$name = propInfo.name) !== null && _propInfo$name !== void 0 && _propInfo$name.includes('/')) {
389
+ var _CommonUtils$getFilte, _CommonUtils$getFilte2;
390
+ const annotationPath = propInfo.annotationPath;
391
+ const propertyLocationPath = CommonHelper.getLocationForPropertyPath(model, annotationPath);
392
+ const propertyPath = annotationPath === null || annotationPath === void 0 ? void 0 : annotationPath.replace(`${propertyLocationPath}/`, "");
393
+ propInfo.required = propertyPath ? (_CommonUtils$getFilte = CommonUtils.getFilterRestrictionsByPath(propertyLocationPath, model)) === null || _CommonUtils$getFilte === void 0 ? void 0 : (_CommonUtils$getFilte2 = _CommonUtils$getFilte.RequiredProperties) === null || _CommonUtils$getFilte2 === void 0 ? void 0 : _CommonUtils$getFilte2.includes(propertyPath) : propInfo.required;
394
+ }
387
395
  });
388
396
  this.propertyInfo = JSON.stringify(aFetchedProperties).replace(/\{/g, "\\{").replace(/\}/g, "\\}");
389
397
  }
@@ -641,4 +649,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/TemplateModel", "sap/fe/core/buildin
641
649
  _exports = FilterBarBlock;
642
650
  return _exports;
643
651
  }, false);
644
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJsYWJlbCIsImdldEF0dHJpYnV0ZSIsInJlcXVpcmVkIiwiRmlsdGVyQmFyQmxvY2siLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiYmxvY2tBdHRyaWJ1dGUiLCJ0eXBlIiwiaXNQdWJsaWMiLCJibG9ja0V2ZW50IiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsInByb3BzIiwiY29uZmlndXJhdGlvbiIsIm1TZXR0aW5ncyIsImNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJvTWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsImlzRHJhZnRDb2xsYWJvcmF0aXZlIiwiZ2V0RW50aXR5VHlwZVBhdGgiLCJtZXRhUGF0aFBhcnRzIiwiZW5kc1dpdGgiLCJnZXRTZWFyY2giLCJoaWRlQmFzaWNTZWFyY2giLCJ4bWwiLCJnZW5lcmF0ZSIsImlkIiwicHJvY2Vzc1NlbGVjdGlvbkZpZWxkcyIsImRyYWZ0RWRpdFN0YXRlIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX3ZhbHVlSGVscHMiLCJfZmlsdGVyRmllbGRzIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsInNlbGVjdGlvbkZpZWxkcyIsImdldE9iamVjdCIsImZvckVhY2giLCJzZWxlY3Rpb25GaWVsZCIsInNlbGVjdGlvbkZpZWxkSWR4IiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInRlbXBsYXRlIiwidW5kZWZpbmVkIiwicHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMiLCJDb21tb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsImFubm90YXRpb25QYXRoIiwiX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQiLCJfaW50ZXJuYWxDb250ZXh0UGF0aCIsInVzZVNlbWFudGljRGF0ZVJhbmdlIiwic3RyaW5naWZ5Q3VzdG9tRGF0YSIsInNldHRpbmdzIiwidmlzdWFsRmlsdGVyIiwibWV0YVBhdGgiLCJMb2ciLCJlcnJvciIsInNNZXRhUGF0aCIsImdldFBhdGgiLCJlbnRpdHlUeXBlUGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwiY29udGV4dFBhdGgiLCJnZXRNb2RlbCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic09iamVjdFBhdGgiLCJvRXh0cmFQYXJhbXMiLCJmaWx0ZXJGaWVsZHMiLCJvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJwcm9wZXJ0eUluZm8iLCJnZXRTZWxlY3Rpb25GaWVsZHMiLCJzUHJvcGVydHlJbmZvIiwib1NlbGVjdGlvbkZpZWxkcyIsIlRlbXBsYXRlTW9kZWwiLCJvRW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJvRW50aXR5U2V0Q29udGV4dCIsImdldENvbnRleHQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsIl9wcm9jZXNzUHJvcGVydHlJbmZvcyIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiX2FwcGx5SWRUb0NvbnRlbnQiLCJfYXBpSWQiLCJfY29udGVudElkIiwiZ2V0Q29udGVudElkIiwib1NlYXJjaFJlc3RyaWN0aW9uQW5ub3RhdGlvbiIsImdldFNlYXJjaFJlc3RyaWN0aW9ucyIsIkJvb2xlYW4iLCJTZWFyY2hhYmxlIiwiYVBhcmFtZXRlckZpZWxkcyIsInNGZXRjaGVkUHJvcGVydGllcyIsImFGZXRjaGVkUHJvcGVydGllcyIsIkpTT04iLCJwYXJzZSIsImVkaXRTdGF0ZUxhYmVsIiwiZ2V0VHJhbnNsYXRlZFRleHQiLCJwcm9wSW5mbyIsImlzUGFyYW1ldGVyIiwicGF0aCIsInN0cmluZ2lmeSIsIl9wYXJhbWV0ZXJzIiwiZmlsdGVyQmFyQ29udGV4dFBhdGgiLCJhbm5vUGF0aCIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0VGVtcGxhdGUiLCJpbnRlcm5hbENvbnRleHRQYXRoIiwiZmlsdGVyRGVsZWdhdGUiLCJmaWx0ZXJCYXJEZWxlZ2F0ZSIsInNlYXJjaCIsImZpbHRlckNoYW5nZWQiLCJhZnRlckNsZWFyIiwiaW50ZXJuYWxTZWFyY2giLCJpbnRlcm5hbEZpbHRlckNoYW5nZWQiLCJzdGF0ZUNoYW5nZSIsImxpdmVNb2RlIiwidmFyaWFudEJhY2tyZWZlcmVuY2UiLCJzaG93QWRhcHRGaWx0ZXJzQnV0dG9uIiwic2hvd0NsZWFyQnV0dG9uIiwicDEzbk1vZGUiLCJzdXNwZW5kU2VsZWN0aW9uIiwic2hvd01lc3NhZ2VzIiwidG9nZ2xlQ29udHJvbElkIiwiaW5pdGlhbExheW91dCIsInZpc2libGUiLCJCdWlsZGluZ0Jsb2NrQmFzZSJdLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXMiOlsiRmlsdGVyQmFyLmJsb2NrLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5U2V0IH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdGlvbkZpZWxkcyB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlcy92b2NhYnVsYXJpZXMvVUlcIjtcbmltcG9ydCBMb2cgZnJvbSBcInNhcC9iYXNlL0xvZ1wiO1xuaW1wb3J0IFRlbXBsYXRlTW9kZWwgZnJvbSBcInNhcC9mZS9jb3JlL1RlbXBsYXRlTW9kZWxcIjtcbmltcG9ydCBCdWlsZGluZ0Jsb2NrQmFzZSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja0Jhc2VcIjtcbmltcG9ydCB7IGJsb2NrQWdncmVnYXRpb24sIGJsb2NrQXR0cmlidXRlLCBibG9ja0V2ZW50LCBkZWZpbmVCdWlsZGluZ0Jsb2NrIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tTdXBwb3J0XCI7XG5pbXBvcnQgeyB4bWwgfSBmcm9tIFwic2FwL2ZlL2NvcmUvYnVpbGRpbmdCbG9ja3MvQnVpbGRpbmdCbG9ja1RlbXBsYXRlUHJvY2Vzc29yXCI7XG5pbXBvcnQgeyBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9NZXRhTW9kZWxDb252ZXJ0ZXJcIjtcbmltcG9ydCB7IGdldFNlbGVjdGlvblZhcmlhbnQgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9Db21tb24vRGF0YVZpc3VhbGl6YXRpb25cIjtcbmltcG9ydCB7IGdldFNlbGVjdGlvbkZpZWxkcyB9IGZyb20gXCJzYXAvZmUvY29yZS9jb252ZXJ0ZXJzL2NvbnRyb2xzL0xpc3RSZXBvcnQvRmlsdGVyQmFyXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnRpZXNPZiB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IHsgZ2V0U2VhcmNoUmVzdHJpY3Rpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTWV0YU1vZGVsRnVuY3Rpb25cIjtcbmltcG9ydCBNb2RlbEhlbHBlciBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9Nb2RlbEhlbHBlclwiO1xuaW1wb3J0IHsgZ2VuZXJhdGUgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9TdGFibGVJZEhlbHBlclwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgeyBnZXRGaWx0ZXJDb25kaXRpb25zIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRmlsdGVySGVscGVyXCI7XG5pbXBvcnQgQ29tbW9uSGVscGVyIGZyb20gXCJzYXAvZmUvbWFjcm9zL0NvbW1vbkhlbHBlclwiO1xuaW1wb3J0IHR5cGUgQ29udGV4dCBmcm9tIFwic2FwL3VpL21vZGVsL0NvbnRleHRcIjtcbmltcG9ydCB0eXBlIE9EYXRhTWV0YU1vZGVsIGZyb20gXCJzYXAvdWkvbW9kZWwvb2RhdGEvdjQvT0RhdGFNZXRhTW9kZWxcIjtcbmltcG9ydCB0eXBlIHsgUHJvcGVydHlJbmZvIH0gZnJvbSBcIi4uL0RlbGVnYXRlVXRpbFwiO1xuaW1wb3J0IHR5cGUgeyBGaWx0ZXJGaWVsZCB9IGZyb20gXCIuL0ZpbHRlckJhckFQSVwiO1xuXG5jb25zdCBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMgPSBmdW5jdGlvbiAoY2hpbGRGaWx0ZXJGaWVsZDogRWxlbWVudCwgYWdncmVnYXRpb25PYmplY3Q6IGFueSk6IEZpbHRlckZpZWxkIHtcblx0YWdncmVnYXRpb25PYmplY3Quc2xvdE5hbWUgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXk7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmtleSA9IGFnZ3JlZ2F0aW9uT2JqZWN0LmtleS5yZXBsYWNlKFwiSW5saW5lWE1MX1wiLCBcIlwiKTtcblx0YWdncmVnYXRpb25PYmplY3QubGFiZWwgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcImxhYmVsXCIpO1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5yZXF1aXJlZCA9IGNoaWxkRmlsdGVyRmllbGQuZ2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIikgPT09IFwidHJ1ZVwiO1xuXHRyZXR1cm4gYWdncmVnYXRpb25PYmplY3Q7XG59O1xuXG4vKipcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIEZpbHRlckJhciBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKlxuICpcbiAqIFVzYWdlIGV4YW1wbGU6XG4gKiA8cHJlPlxuICogJmx0O21hY3JvOkZpbHRlckJhclxuICogICBpZD1cIlNvbWVJRFwiXG4gKiAgIHNob3dBZGFwdEZpbHRlcnNCdXR0b249XCJ0cnVlXCJcbiAqICAgcDEzbk1vZGU9W1wiSXRlbVwiLFwiVmFsdWVcIl1cbiAqICAgbGlzdEJpbmRpbmdOYW1lcyA9IFwic2FwLmZlLnRhYmxlQmluZGluZ1wiXG4gKiAgIGxpdmVNb2RlPVwidHJ1ZVwiXG4gKiAgIHNlYXJjaD1cIi5oYW5kbGVycy5vblNlYXJjaFwiXG4gKiAgIGZpbHRlckNoYW5nZWQ9XCIuaGFuZGxlcnMub25GaWx0ZXJzQ2hhbmdlZFwiXG4gKiAvJmd0O1xuICogPC9wcmU+XG4gKlxuICogQnVpbGRpbmcgYmxvY2sgZm9yIGNyZWF0aW5nIGEgRmlsdGVyQmFyIGJhc2VkIG9uIHRoZSBtZXRhZGF0YSBwcm92aWRlZCBieSBPRGF0YSBWNC5cbiAqXG4gKiBAc2luY2UgMS45NC4wXG4gKi9cbkBkZWZpbmVCdWlsZGluZ0Jsb2NrKHtcblx0bmFtZTogXCJGaWx0ZXJCYXJcIixcblx0bmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIixcblx0cHVibGljTmFtZXNwYWNlOiBcInNhcC5mZS5tYWNyb3NcIixcblx0cmV0dXJuVHlwZXM6IFtcInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyLkZpbHRlckJhckFQSVwiXVxufSlcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZpbHRlckJhckJsb2NrIGV4dGVuZHMgQnVpbGRpbmdCbG9ja0Jhc2Uge1xuXHQvKipcblx0ICogSUQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGlkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0dmlzaWJsZT86IHN0cmluZztcblxuXHQvKipcblx0ICogc2VsZWN0aW9uRmllbGRzIHRvIGJlIGRpc3BsYXllZFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCJcblx0fSlcblx0c2VsZWN0aW9uRmllbGRzPzogU2VsZWN0aW9uRmllbGRzIHwgQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoeyB0eXBlOiBcInN0cmluZ1wiIH0pXG5cdGZpbHRlckJhckRlbGVnYXRlPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdG1ldGFQYXRoPzogQ29udGV4dDtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRjb250ZXh0UGF0aD86IENvbnRleHQ7XG5cblx0LyoqXG5cdCAqIERpc3BsYXlzIHBvc3NpYmxlIGVycm9ycyBkdXJpbmcgdGhlIHNlYXJjaCBpbiBhIG1lc3NhZ2UgYm94XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHNob3dNZXNzYWdlcyA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBJRCBvZiB0aGUgYXNzaWduZWQgdmFyaWFudCBtYW5hZ2VtZW50XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dmFyaWFudEJhY2tyZWZlcmVuY2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIERvbid0IHNob3cgdGhlIGJhc2ljIHNlYXJjaCBmaWVsZFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRoaWRlQmFzaWNTZWFyY2g/OiBib29sZWFuO1xuXG5cdC8qKlxuXHQgKiBFbmFibGVzIHRoZSBmYWxsYmFjayB0byBzaG93IGFsbCBmaWVsZHMgb2YgdGhlIEVudGl0eVR5cGUgYXMgZmlsdGVyIGZpZWxkcyBpZiBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHMgYXJlIG5vdCBwcmVzZW50XG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdGVuYWJsZUZhbGxiYWNrID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdmlzaWJpbGl0eSBvZiB0aGUgJ0FkYXB0IEZpbHRlcnMnIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dBZGFwdEZpbHRlcnNCdXR0b24gPSB0cnVlO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIHBlcnNvbmFsaXphdGlvbiBvcHRpb25zIGZvciB0aGUgZmlsdGVyIGJhci5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubWRjLkZpbHRlckJhclAxM25Nb2RlW11cIlxuXHR9KVxuXHRwMTNuTW9kZSA9IFwiSXRlbSxWYWx1ZVwiO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRwcm9wZXJ0eUluZm8/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIFNwZWNpZmllcyB0aGUgU2VtYXRpYyBEYXRlIFJhbmdlIG9wdGlvbiBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHVzZVNlbWFudGljRGF0ZVJhbmdlID0gdHJ1ZTtcblxuXHQvKipcblx0ICogSWYgc2V0IHRoZSBzZWFyY2ggd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHRyaWdnZXJlZCwgd2hlbiBhIGZpbHRlciB2YWx1ZSB3YXMgY2hhbmdlZC5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0bGl2ZU1vZGUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogRmlsdGVyIGNvbmRpdGlvbnMgdG8gYmUgYXBwbGllZCB0byB0aGUgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiLFxuXHRcdHJlcXVpcmVkOiBmYWxzZVxuXHR9KVxuXHRmaWx0ZXJDb25kaXRpb25zPzogUmVjb3JkPHN0cmluZywgRmlsdGVyQ29uZGl0aW9uc1tdPjtcblxuXHQvKipcblx0ICogSWYgc2V0IHRvIDxjb2RlPnRydWU8L2NvZGU+LCBhbGwgc2VhcmNoIHJlcXVlc3RzIGFyZSBpZ25vcmVkLiBPbmNlIGl0IGhhcyBiZWVuIHNldCB0byA8Y29kZT5mYWxzZTwvY29kZT4sXG5cdCAqIGEgc2VhcmNoIGlzIHRyaWdnZXJlZCBpbW1lZGlhdGVseSBpZiBvbmUgb3IgbW9yZSBzZWFyY2ggcmVxdWVzdHMgaGF2ZSBiZWVuIHRyaWdnZXJlZCBpbiB0aGUgbWVhbnRpbWVcblx0ICogYnV0IHdlcmUgaWdub3JlZCBiYXNlZCBvbiB0aGUgc2V0dGluZy5cblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c3VzcGVuZFNlbGVjdGlvbiA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0c2hvd0RyYWZ0RWRpdFN0YXRlID0gZmFsc2U7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRpc0RyYWZ0Q29sbGFib3JhdGl2ZSA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBJZCBvZiBjb250cm9sIHRoYXQgd2lsbCBhbGxvdyBmb3Igc3dpdGNoaW5nIGJldHdlZW4gbm9ybWFsIGFuZCB2aXN1YWwgZmlsdGVyXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0dG9nZ2xlQ29udHJvbElkPzogc3RyaW5nO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIlxuXHR9KVxuXHRpbml0aWFsTGF5b3V0ID0gXCJjb21wYWN0XCI7XG5cblx0LyoqXG5cdCAqIEhhbmRsZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlICdDbGVhcicgYnV0dG9uIG9uIHRoZSBGaWx0ZXJCYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHNob3dDbGVhckJ1dHRvbiA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0X2FwcGx5SWRUb0NvbnRlbnQgPSBmYWxzZTtcblxuXHQvKipcblx0ICogVGVtcG9yYXJ5IHdvcmthcm91bmQgb25seVxuXHQgKiBwYXRoIHRvIGNvbnRleHRQYXRoIHRvIGJlIHVzZWQgYnkgY2hpbGQgZmlsdGVyZmllbGRzXG5cdCAqL1xuXHRfaW50ZXJuYWxDb250ZXh0UGF0aCE6IENvbnRleHQ7XG5cblx0X3BhcmFtZXRlcnM6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgc2VhcmNoIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0c2VhcmNoPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBmaWx0ZXJDaGFuZ2UgZXZlbnQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRmaWx0ZXJDaGFuZ2VkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBzdGF0ZUNoYW5nZSBldmVudCBvZiB0aGUgRmlsdGVyQmFyLlxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRzdGF0ZUNoYW5nZT86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlZCBldmVudCBvZiB0aGUgRmlsdGVyQmFyLiBFeHBvc2VzIHBhcmFtZXRlcnMgZnJvbSB0aGUgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBFdmVudCBoYW5kbGVyIHRvIHJlYWN0IHRvIHRoZSBzZWFyY2ggZXZlbnQgb2YgdGhlIEZpbHRlckJhci4gRXhwb3NlcyBwYXJhbWV0ZXJlcyBmcm9tIHRoZSBNREMgZmlsdGVyIGJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRpbnRlcm5hbFNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgYWZ0ZXJDbGVhciBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGFmdGVyQ2xlYXI/OiBzdHJpbmc7XG5cblx0QGJsb2NrQWdncmVnYXRpb24oe1xuXHRcdHR5cGU6IFwic2FwLmZlLm1hY3Jvcy5GaWx0ZXJGaWVsZFwiLFxuXHRcdGlzUHVibGljOiB0cnVlLFxuXHRcdGhhc1ZpcnR1YWxOb2RlOiB0cnVlLFxuXHRcdHByb2Nlc3NBZ2dyZWdhdGlvbnM6IHNldEN1c3RvbUZpbHRlckZpZWxkUHJvcGVydGllc1xuXHR9KVxuXHRmaWx0ZXJGaWVsZHM/OiBGaWx0ZXJGaWVsZDtcblxuXHRfYXBpSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuXHRfY29udGVudElkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X3ZhbHVlSGVscHM6IEFycmF5PHN0cmluZz4gfCBcIlwiIHwgdW5kZWZpbmVkO1xuXG5cdF9maWx0ZXJGaWVsZHM6IEFycmF5PHN0cmluZz4gfCBcIlwiIHwgdW5kZWZpbmVkO1xuXG5cdGNvbnN0cnVjdG9yKHByb3BzOiBQcm9wZXJ0aWVzT2Y8RmlsdGVyQmFyQmxvY2s+LCBjb25maWd1cmF0aW9uOiBhbnksIG1TZXR0aW5nczogYW55KSB7XG5cdFx0c3VwZXIocHJvcHMsIGNvbmZpZ3VyYXRpb24sIG1TZXR0aW5ncyk7XG5cdFx0aWYgKCF0aGlzLm1ldGFQYXRoKSB7XG5cdFx0XHRMb2cuZXJyb3IoXCJDb250ZXh0IFBhdGggbm90IGF2YWlsYWJsZSBmb3IgRmlsdGVyQmFyIE1hY3JvLlwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0Y29uc3Qgc01ldGFQYXRoID0gdGhpcy5tZXRhUGF0aC5nZXRQYXRoKCk7XG5cdFx0bGV0IGVudGl0eVR5cGVQYXRoID0gXCJcIjtcblx0XHRjb25zdCBtZXRhUGF0aFBhcnRzID0gc01ldGFQYXRoPy5zcGxpdChcIi9AY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCIpIHx8IFtdOyAvLyBbMF06IGVudGl0eVR5cGVQYXRoLCBbMV06IFNGIFF1YWxpZmllci5cblx0XHRpZiAobWV0YVBhdGhQYXJ0cy5sZW5ndGggPiAwKSB7XG5cdFx0XHRlbnRpdHlUeXBlUGF0aCA9IHRoaXMuZ2V0RW50aXR5VHlwZVBhdGgobWV0YVBhdGhQYXJ0cyk7XG5cdFx0fVxuXHRcdGNvbnN0IHNFbnRpdHlTZXRQYXRoID0gTW9kZWxIZWxwZXIuZ2V0RW50aXR5U2V0UGF0aChlbnRpdHlUeXBlUGF0aCk7XG5cdFx0Y29uc3Qgb01ldGFNb2RlbCA9IHRoaXMuY29udGV4dFBhdGg/LmdldE1vZGVsKCk7XG5cdFx0dGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCA9IG9NZXRhTW9kZWw/LmNyZWF0ZUJpbmRpbmdDb250ZXh0KGVudGl0eVR5cGVQYXRoKSBhcyBDb250ZXh0O1xuXHRcdGNvbnN0IHNPYmplY3RQYXRoID0gXCJAY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzXCI7XG5cdFx0Y29uc3QgYW5ub3RhdGlvblBhdGg6IHN0cmluZyA9IFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiICsgKChtZXRhUGF0aFBhcnRzLmxlbmd0aCAmJiBtZXRhUGF0aFBhcnRzWzFdKSB8fCBcIlwiKTtcblx0XHRjb25zdCBvRXh0cmFQYXJhbXM6IGFueSA9IHt9O1xuXHRcdG9FeHRyYVBhcmFtc1tzT2JqZWN0UGF0aF0gPSB7XG5cdFx0XHRmaWx0ZXJGaWVsZHM6IHRoaXMuZmlsdGVyRmllbGRzXG5cdFx0fTtcblx0XHRjb25zdCBvVmlzdWFsaXphdGlvbk9iamVjdFBhdGggPSBnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHModGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCk7XG5cdFx0Y29uc3Qgb0NvbnZlcnRlckNvbnRleHQgPSB0aGlzLmdldENvbnZlcnRlckNvbnRleHQob1Zpc3VhbGl6YXRpb25PYmplY3RQYXRoLCB1bmRlZmluZWQsIG1TZXR0aW5ncywgb0V4dHJhUGFyYW1zKTtcblx0XHRpZiAoIXRoaXMucHJvcGVydHlJbmZvKSB7XG5cdFx0XHR0aGlzLnByb3BlcnR5SW5mbyA9IGdldFNlbGVjdGlvbkZpZWxkcyhvQ29udmVydGVyQ29udGV4dCwgW10sIGFubm90YXRpb25QYXRoKS5zUHJvcGVydHlJbmZvO1xuXHRcdH1cblxuXHRcdC8vRmlsdGVyIEZpZWxkcyBhbmQgdmFsdWVzIHRvIHRoZSBmaWVsZCBhcmUgZmlsbGVkIGJhc2VkIG9uIHRoZSBzZWxlY3Rpb25GaWVsZHMgYW5kIHRoaXMgd291bGQgYmUgZW1wdHkgaW4gY2FzZSBvZiBtYWNybyBvdXRzaWRlIHRoZSBGRSB0ZW1wbGF0ZVxuXHRcdGlmICghdGhpcy5zZWxlY3Rpb25GaWVsZHMpIHtcblx0XHRcdGNvbnN0IG9TZWxlY3Rpb25GaWVsZHMgPSBnZXRTZWxlY3Rpb25GaWVsZHMob0NvbnZlcnRlckNvbnRleHQsIFtdLCBhbm5vdGF0aW9uUGF0aCkuc2VsZWN0aW9uRmllbGRzO1xuXHRcdFx0dGhpcy5zZWxlY3Rpb25GaWVsZHMgPSBuZXcgVGVtcGxhdGVNb2RlbChvU2VsZWN0aW9uRmllbGRzLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKS5jcmVhdGVCaW5kaW5nQ29udGV4dChcIi9cIik7XG5cdFx0XHRjb25zdCBvRW50aXR5VHlwZSA9IG9Db252ZXJ0ZXJDb250ZXh0LmdldEVudGl0eVR5cGUoKSxcblx0XHRcdFx0b1NlbGVjdGlvblZhcmlhbnQgPSBnZXRTZWxlY3Rpb25WYXJpYW50KG9FbnRpdHlUeXBlLCBvQ29udmVydGVyQ29udGV4dCksXG5cdFx0XHRcdG9FbnRpdHlTZXRDb250ZXh0ID0gKG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpLmdldENvbnRleHQoc0VudGl0eVNldFBhdGgpLFxuXHRcdFx0XHRvRmlsdGVyQ29uZGl0aW9ucyA9IGdldEZpbHRlckNvbmRpdGlvbnMob0VudGl0eVNldENvbnRleHQsIHsgc2VsZWN0aW9uVmFyaWFudDogb1NlbGVjdGlvblZhcmlhbnQgfSk7XG5cdFx0XHR0aGlzLmZpbHRlckNvbmRpdGlvbnMgPSBvRmlsdGVyQ29uZGl0aW9ucztcblx0XHR9XG5cdFx0dGhpcy5fcHJvY2Vzc1Byb3BlcnR5SW5mb3ModGhpcy5wcm9wZXJ0eUluZm8pO1xuXG5cdFx0Y29uc3QgdGFyZ2V0RW50aXR5U2V0ID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMubWV0YVBhdGgsIHRoaXMuY29udGV4dFBhdGgpLnRhcmdldEVudGl0eVNldCBhcyBFbnRpdHlTZXQ7XG5cdFx0aWYgKHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnRSb290IHx8IHRhcmdldEVudGl0eVNldD8uYW5ub3RhdGlvbnM/LkNvbW1vbj8uRHJhZnROb2RlKSB7XG5cdFx0XHR0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSA9IHRydWU7XG5cdFx0XHR0aGlzLmNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQob01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCk7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuX2FwcGx5SWRUb0NvbnRlbnQpIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZCArIFwiOjpGaWx0ZXJCYXJcIjtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IHRoaXMuaWQ7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuX2FwaUlkID0gdGhpcy5pZDtcblx0XHRcdHRoaXMuX2NvbnRlbnRJZCA9IHRoaXMuZ2V0Q29udGVudElkKHRoaXMuaWQgKyBcIlwiKTtcblx0XHR9XG5cblx0XHRpZiAodGhpcy5oaWRlQmFzaWNTZWFyY2ggIT09IHRydWUpIHtcblx0XHRcdGNvbnN0IG9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24gPSBnZXRTZWFyY2hSZXN0cmljdGlvbnMoc0VudGl0eVNldFBhdGgsIG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdFx0dGhpcy5oaWRlQmFzaWNTZWFyY2ggPSBCb29sZWFuKG9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24gJiYgIW9TZWFyY2hSZXN0cmljdGlvbkFubm90YXRpb24uU2VhcmNoYWJsZSk7XG5cdFx0fVxuXHRcdHRoaXMucHJvY2Vzc1NlbGVjdGlvbkZpZWxkcygpO1xuXHR9XG5cblx0X3Byb2Nlc3NQcm9wZXJ0eUluZm9zKHByb3BlcnR5SW5mbzogc3RyaW5nKSB7XG5cdFx0Y29uc3QgYVBhcmFtZXRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblx0XHRpZiAocHJvcGVydHlJbmZvKSB7XG5cdFx0XHRjb25zdCBzRmV0Y2hlZFByb3BlcnRpZXMgPSBwcm9wZXJ0eUluZm8ucmVwbGFjZSgvXFxcXHsvZywgXCJ7XCIpLnJlcGxhY2UoL1xcXFx9L2csIFwifVwiKTtcblx0XHRcdGNvbnN0IGFGZXRjaGVkUHJvcGVydGllcyA9IEpTT04ucGFyc2Uoc0ZldGNoZWRQcm9wZXJ0aWVzKTtcblx0XHRcdGNvbnN0IGVkaXRTdGF0ZUxhYmVsID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkZJTFRFUkJBUl9FRElUSU5HX1NUQVRVU1wiKTtcblx0XHRcdGFGZXRjaGVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wSW5mbzogUHJvcGVydHlJbmZvKSB7XG5cdFx0XHRcdGlmIChwcm9wSW5mby5pc1BhcmFtZXRlcikge1xuXHRcdFx0XHRcdGFQYXJhbWV0ZXJGaWVsZHMucHVzaChwcm9wSW5mby5uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvcEluZm8ucGF0aCA9PT0gXCIkZWRpdFN0YXRlXCIpIHtcblx0XHRcdFx0XHRwcm9wSW5mby5sYWJlbCA9IGVkaXRTdGF0ZUxhYmVsO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm8gPSBKU09OLnN0cmluZ2lmeShhRmV0Y2hlZFByb3BlcnRpZXMpLnJlcGxhY2UoL1xcey9nLCBcIlxcXFx7XCIpLnJlcGxhY2UoL1xcfS9nLCBcIlxcXFx9XCIpO1xuXHRcdH1cblx0XHR0aGlzLl9wYXJhbWV0ZXJzID0gSlNPTi5zdHJpbmdpZnkoYVBhcmFtZXRlckZpZWxkcyk7XG5cdH1cblxuXHRjaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkID0gKG9NZXRhTW9kZWw6IE9EYXRhTWV0YU1vZGVsIHwgdW5kZWZpbmVkKSA9PiB7XG5cdFx0aWYgKE1vZGVsSGVscGVyLmlzQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwpKSB7XG5cdFx0XHR0aGlzLmlzRHJhZnRDb2xsYWJvcmF0aXZlID0gdHJ1ZTtcblx0XHR9XG5cdH07XG5cblx0Z2V0RW50aXR5VHlwZVBhdGggPSAobWV0YVBhdGhQYXJ0czogc3RyaW5nW10pID0+IHtcblx0XHRyZXR1cm4gbWV0YVBhdGhQYXJ0c1swXS5lbmRzV2l0aChcIi9cIikgPyBtZXRhUGF0aFBhcnRzWzBdIDogbWV0YVBhdGhQYXJ0c1swXSArIFwiL1wiO1xuXHR9O1xuXG5cdGdldFNlYXJjaCA9ICgpID0+IHtcblx0XHRpZiAoIXRoaXMuaGlkZUJhc2ljU2VhcmNoKSB7XG5cdFx0XHRyZXR1cm4geG1sYDxjb250cm9sOmJhc2ljU2VhcmNoRmllbGQ+XG5cdFx0XHQ8bWRjOkZpbHRlckZpZWxkXG5cdFx0XHRcdGlkPVwiJHtnZW5lcmF0ZShbdGhpcy5pZCwgXCJCYXNpY1NlYXJjaEZpZWxkXCJdKX1cIlxuXHRcdFx0XHRwbGFjZWhvbGRlcj1cIntzYXAuZmUuaTE4bj5NX0ZJTFRFUkJBUl9TRUFSQ0h9XCJcblx0XHRcdFx0Y29uZGl0aW9ucz1cInskZmlsdGVycz4vY29uZGl0aW9ucy8kc2VhcmNofVwiXG5cdFx0XHRcdGRhdGFUeXBlPVwic2FwLnVpLm1vZGVsLm9kYXRhLnR5cGUuU3RyaW5nXCJcblx0XHRcdFx0bWF4Q29uZGl0aW9ucz1cIjFcIlxuXHRcdFx0Lz5cblx0XHQ8L2NvbnRyb2w6YmFzaWNTZWFyY2hGaWVsZD5gO1xuXHRcdH1cblx0XHRyZXR1cm4gXCJcIjtcblx0fTtcblxuXHRwcm9jZXNzU2VsZWN0aW9uRmllbGRzID0gKCkgPT4ge1xuXHRcdGxldCBkcmFmdEVkaXRTdGF0ZSA9IFwiXCI7XG5cdFx0aWYgKHRoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlKSB7XG5cdFx0XHRkcmFmdEVkaXRTdGF0ZSA9IGA8Y29yZTpGcmFnbWVudCBmcmFnbWVudE5hbWU9XCJzYXAuZmUuY29yZS5maWx0ZXIuRHJhZnRFZGl0U3RhdGVcIiB0eXBlPVwiWE1MXCIgLz5gO1xuXHRcdH1cblx0XHR0aGlzLl92YWx1ZUhlbHBzID0gW107XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzID0gW107XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKGRyYWZ0RWRpdFN0YXRlKTtcblx0XHRpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zZWxlY3Rpb25GaWVsZHMpKSB7XG5cdFx0XHR0aGlzLnNlbGVjdGlvbkZpZWxkcyA9IHRoaXMuc2VsZWN0aW9uRmllbGRzIS5nZXRPYmplY3QoKSBhcyBTZWxlY3Rpb25GaWVsZHM7XG5cdFx0fVxuXHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzPy5mb3JFYWNoKChzZWxlY3Rpb25GaWVsZDogYW55LCBzZWxlY3Rpb25GaWVsZElkeCkgPT4ge1xuXHRcdFx0aWYgKHNlbGVjdGlvbkZpZWxkLmF2YWlsYWJpbGl0eSA9PT0gXCJEZWZhdWx0XCIpIHtcblx0XHRcdFx0dGhpcy5zZXRGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzKHNlbGVjdGlvbkZpZWxkLCBzZWxlY3Rpb25GaWVsZElkeCk7XG5cdFx0XHR9XG5cdFx0fSk7XG5cdFx0dGhpcy5fZmlsdGVyRmllbGRzID0gdGhpcy5fZmlsdGVyRmllbGRzPy5sZW5ndGggPiAwID8gdGhpcy5fZmlsdGVyRmllbGRzIDogXCJcIjtcblx0XHR0aGlzLl92YWx1ZUhlbHBzID0gdGhpcy5fdmFsdWVIZWxwcz8ubGVuZ3RoID4gMCA/IHRoaXMuX3ZhbHVlSGVscHMgOiBcIlwiO1xuXHR9O1xuXG5cdHNldEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMgPSAoc2VsZWN0aW9uRmllbGQ6IGFueSwgc2VsZWN0aW9uRmllbGRJZHg6IG51bWJlcikgPT4ge1xuXHRcdGlmIChzZWxlY3Rpb25GaWVsZC50ZW1wbGF0ZSA9PT0gdW5kZWZpbmVkICYmIHNlbGVjdGlvbkZpZWxkLnR5cGUgIT09IFwiU2xvdFwiKSB7XG5cdFx0XHR0aGlzLnB1c2hGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzKHNlbGVjdGlvbkZpZWxkKTtcblx0XHR9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5fZmlsdGVyRmllbGRzKSkge1xuXHRcdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKFxuXHRcdFx0XHR4bWxgPHRlbXBsYXRlOndpdGggcGF0aD1cInNlbGVjdGlvbkZpZWxkcz4ke3NlbGVjdGlvbkZpZWxkSWR4fVwiIHZhcj1cIml0ZW1cIj5cblx0XHRcdFx0XHQ8Y29yZTpGcmFnbWVudCBmcmFnbWVudE5hbWU9XCJzYXAuZmUubWFjcm9zLmZpbHRlci5DdXN0b21GaWx0ZXJcIiB0eXBlPVwiWE1MXCIgLz5cblx0XHRcdFx0PC90ZW1wbGF0ZTp3aXRoPmBcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdF9nZXRDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkKHNlbGVjdGlvbkZpZWxkOiBhbnksIGZpbHRlckJhckNvbnRleHRQYXRoOiBDb250ZXh0KTogc3RyaW5nIHwgQ29udGV4dCB7XG5cdFx0bGV0IGNvbnRleHRQYXRoOiBzdHJpbmcgfCBDb250ZXh0ID0gZmlsdGVyQmFyQ29udGV4dFBhdGg7XG5cdFx0aWYgKHNlbGVjdGlvbkZpZWxkLmlzUGFyYW1ldGVyKSB7XG5cdFx0XHQvLyBFeGFtcGxlOlxuXHRcdFx0Ly8gRmlsdGVyQmFyQ29udGV4dFBhdGg6IC9DdXN0b21lci9TZXRcblx0XHRcdC8vIFBhcmFtZXRlclByb3BlcnR5UGF0aDogL0N1c3RvbWVyL1BfQ0Ncblx0XHRcdC8vIENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQ6IC9DdXN0b21lclxuXHRcdFx0Y29uc3QgYW5ub1BhdGggPSBzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aDtcblx0XHRcdGNvbnRleHRQYXRoID0gYW5ub1BhdGguc3Vic3RyaW5nKDAsIGFubm9QYXRoLmxhc3RJbmRleE9mKFwiL1wiKSArIDEpO1xuXHRcdH1cblx0XHRyZXR1cm4gY29udGV4dFBhdGg7XG5cdH1cblxuXHRwdXNoRmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyA9IChzZWxlY3Rpb25GaWVsZDogYW55KSA9PiB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fZmlsdGVyRmllbGRzKSkge1xuXHRcdFx0dGhpcy5fZmlsdGVyRmllbGRzPy5wdXNoKFxuXHRcdFx0XHR4bWxgPGludGVybmFsTWFjcm86RmlsdGVyRmllbGRcblx0XHRcdGlkUHJlZml4PVwiJHtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFwiLCBDb21tb25IZWxwZXIuZ2V0TmF2aWdhdGlvblBhdGgoc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGgpXSl9XCJcblx0XHRcdHZoSWRQcmVmaXg9XCIke2dlbmVyYXRlKFt0aGlzLmlkLCBcIkZpbHRlckZpZWxkVmFsdWVIZWxwXCJdKX1cIlxuXHRcdFx0cHJvcGVydHk9XCIke3NlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRofVwiXG5cdFx0XHRjb250ZXh0UGF0aD1cIiR7dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCl9XCJcblx0XHRcdHVzZVNlbWFudGljRGF0ZVJhbmdlPVwiJHt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfVwiXG5cdFx0XHRzZXR0aW5ncz1cIiR7Q29tbW9uSGVscGVyLnN0cmluZ2lmeUN1c3RvbURhdGEoc2VsZWN0aW9uRmllbGQuc2V0dGluZ3MpfVwiXG5cdFx0XHR2aXN1YWxGaWx0ZXI9XCIke3NlbGVjdGlvbkZpZWxkLnZpc3VhbEZpbHRlcn1cIlxuXHRcdFx0Lz5gXG5cdFx0XHQpO1xuXHRcdH1cblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0aGlzLl92YWx1ZUhlbHBzKSkge1xuXHRcdFx0dGhpcy5fdmFsdWVIZWxwcz8ucHVzaChcblx0XHRcdFx0eG1sYDxtYWNybzpWYWx1ZUhlbHBcblx0XHRcdGlkUHJlZml4PVwiJHtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiXSl9XCJcblx0XHRcdGNvbmRpdGlvbk1vZGVsPVwiJGZpbHRlcnNcIlxuXHRcdFx0cHJvcGVydHk9XCIke3NlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRofVwiXG5cdFx0XHRjb250ZXh0UGF0aD1cIiR7dGhpcy5fZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZCwgdGhpcy5faW50ZXJuYWxDb250ZXh0UGF0aCl9XCJcblx0XHRcdGZpbHRlckZpZWxkVmFsdWVIZWxwPVwidHJ1ZVwiXG5cdFx0XHR1c2VTZW1hbnRpY0RhdGVSYW5nZT1cIiR7dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX1cIlxuXHRcdC8+YFxuXHRcdFx0KTtcblx0XHR9XG5cdH07XG5cblx0Z2V0VGVtcGxhdGUoKSB7XG5cdFx0Y29uc3QgaW50ZXJuYWxDb250ZXh0UGF0aCA9IHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGg/LmdldFBhdGgoKTtcblx0XHRsZXQgZmlsdGVyRGVsZWdhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLmZpbHRlckJhckRlbGVnYXRlKSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IHRoaXMuZmlsdGVyQmFyRGVsZWdhdGU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGZpbHRlckRlbGVnYXRlID0gXCJ7bmFtZTonc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyRGVsZWdhdGUnLCBwYXlsb2FkOiB7ZW50aXR5VHlwZVBhdGg6ICdcIiArIGludGVybmFsQ29udGV4dFBhdGggKyBcIid9fVwiO1xuXHRcdH1cblx0XHRyZXR1cm4geG1sYDxtYWNyb0ZpbHRlckJhcjpGaWx0ZXJCYXJBUElcbiAgICAgICAgeG1sbnM6dGVtcGxhdGU9XCJodHRwOi8vc2NoZW1hcy5zYXAuY29tL3NhcHVpNS9leHRlbnNpb24vc2FwLnVpLmNvcmUudGVtcGxhdGUvMVwiXG4gICAgICAgIHhtbG5zOmNvcmU9XCJzYXAudWkuY29yZVwiXG4gICAgICAgIHhtbG5zOm1kYz1cInNhcC51aS5tZGNcIlxuICAgICAgICB4bWxuczpjb250cm9sPVwic2FwLmZlLmNvcmUuY29udHJvbHNcIlxuICAgICAgICB4bWxuczptYWNyb0ZpbHRlckJhcj1cInNhcC5mZS5tYWNyb3MuZmlsdGVyQmFyXCJcbiAgICAgICAgeG1sbnM6bWFjcm89XCJzYXAuZmUubWFjcm9zXCJcbiAgICAgICAgeG1sbnM6aW50ZXJuYWxNYWNybz1cInNhcC5mZS5tYWNyb3MuaW50ZXJuYWxcIlxuICAgICAgICB4bWxuczpjdXN0b21EYXRhPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLkN1c3RvbURhdGEvMVwiXG5cdFx0aWQ9XCIke3RoaXMuX2FwaUlkfVwiXG5cdFx0c2VhcmNoPVwiJHt0aGlzLnNlYXJjaH1cIlxuXHRcdGZpbHRlckNoYW5nZWQ9XCIke3RoaXMuZmlsdGVyQ2hhbmdlZH1cIlxuXHRcdGFmdGVyQ2xlYXI9XCIke3RoaXMuYWZ0ZXJDbGVhcn1cIlxuXHRcdGludGVybmFsU2VhcmNoPVwiJHt0aGlzLmludGVybmFsU2VhcmNofVwiXG5cdFx0aW50ZXJuYWxGaWx0ZXJDaGFuZ2VkPVwiJHt0aGlzLmludGVybmFsRmlsdGVyQ2hhbmdlZH1cIlxuXHRcdHN0YXRlQ2hhbmdlPVwiJHt0aGlzLnN0YXRlQ2hhbmdlfVwiXG5cdD5cblx0XHQ8Y29udHJvbDpGaWx0ZXJCYXJcblx0XHRcdGNvcmU6cmVxdWlyZT1cIntBUEk6ICdzYXAvZmUvbWFjcm9zL2ZpbHRlckJhci9GaWx0ZXJCYXJBUEknfVwiXG5cdFx0XHRpZD1cIiR7dGhpcy5fY29udGVudElkfVwiXG5cdFx0XHRsaXZlTW9kZT1cIiR7dGhpcy5saXZlTW9kZX1cIlxuXHRcdFx0ZGVsZWdhdGU9XCIke2ZpbHRlckRlbGVnYXRlfVwiXG5cdFx0XHR2YXJpYW50QmFja3JlZmVyZW5jZT1cIiR7dGhpcy52YXJpYW50QmFja3JlZmVyZW5jZX1cIlxuXHRcdFx0c2hvd0FkYXB0RmlsdGVyc0J1dHRvbj1cIiR7dGhpcy5zaG93QWRhcHRGaWx0ZXJzQnV0dG9ufVwiXG5cdFx0XHRzaG93Q2xlYXJCdXR0b249XCIke3RoaXMuc2hvd0NsZWFyQnV0dG9ufVwiXG5cdFx0XHRwMTNuTW9kZT1cIiR7dGhpcy5wMTNuTW9kZX1cIlxuXHRcdFx0c2VhcmNoPVwiQVBJLmhhbmRsZVNlYXJjaCgkZXZlbnQpXCJcblx0XHRcdGZpbHRlcnNDaGFuZ2VkPVwiQVBJLmhhbmRsZUZpbHRlckNoYW5nZWQoJGV2ZW50KVwiXG5cdFx0XHRmaWx0ZXJDb25kaXRpb25zPVwiJHt0aGlzLmZpbHRlckNvbmRpdGlvbnN9XCJcblx0XHRcdHN1c3BlbmRTZWxlY3Rpb249XCIke3RoaXMuc3VzcGVuZFNlbGVjdGlvbn1cIlxuXHRcdFx0c2hvd01lc3NhZ2VzPVwiJHt0aGlzLnNob3dNZXNzYWdlc31cIlxuXHRcdFx0dG9nZ2xlQ29udHJvbD1cIiR7dGhpcy50b2dnbGVDb250cm9sSWR9XCJcblx0XHRcdGluaXRpYWxMYXlvdXQ9XCIke3RoaXMuaW5pdGlhbExheW91dH1cIlxuXHRcdFx0cHJvcGVydHlJbmZvPVwiJHt0aGlzLnByb3BlcnR5SW5mb31cIlxuXHRcdFx0Y3VzdG9tRGF0YTpsb2NhbElkPVwiJHt0aGlzLmlkfVwiXG5cdFx0XHR2aXNpYmxlPVwiJHt0aGlzLnZpc2libGV9XCJcblx0XHRcdGN1c3RvbURhdGE6aGlkZUJhc2ljU2VhcmNoPVwiJHt0aGlzLmhpZGVCYXNpY1NlYXJjaH1cIlxuXHRcdFx0Y3VzdG9tRGF0YTpzaG93RHJhZnRFZGl0U3RhdGU9XCIke3RoaXMuc2hvd0RyYWZ0RWRpdFN0YXRlfVwiXG5cdFx0XHRjdXN0b21EYXRhOnVzZVNlbWFudGljRGF0ZVJhbmdlPVwiJHt0aGlzLnVzZVNlbWFudGljRGF0ZVJhbmdlfVwiXG5cdFx0XHRjdXN0b21EYXRhOmVudGl0eVR5cGU9XCIke2ludGVybmFsQ29udGV4dFBhdGh9XCJcblx0XHRcdGN1c3RvbURhdGE6cGFyYW1ldGVycz1cIiR7dGhpcy5fcGFyYW1ldGVyc31cIlxuXHRcdD5cblx0XHRcdDxjb250cm9sOmRlcGVuZGVudHM+XG5cdFx0XHRcdCR7dGhpcy5fdmFsdWVIZWxwc31cblx0XHRcdDwvY29udHJvbDpkZXBlbmRlbnRzPlxuXHRcdFx0JHt0aGlzLmdldFNlYXJjaCgpfVxuXHRcdFx0PGNvbnRyb2w6ZmlsdGVySXRlbXM+XG5cdFx0XHRcdCR7dGhpcy5fZmlsdGVyRmllbGRzfVxuXHRcdFx0PC9jb250cm9sOmZpbHRlckl0ZW1zPlxuXHRcdDwvY29udHJvbDpGaWx0ZXJCYXI+XG5cdDwvbWFjcm9GaWx0ZXJCYXI6RmlsdGVyQmFyQVBJPmA7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQUE7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RUFzQkEsTUFBTUEsOEJBQThCLEdBQUcsVUFBVUMsZ0JBQXlCLEVBQUVDLGlCQUFzQixFQUFlO0lBQ2hIQSxpQkFBaUIsQ0FBQ0MsUUFBUSxHQUFHRCxpQkFBaUIsQ0FBQ0UsR0FBRztJQUNsREYsaUJBQWlCLENBQUNFLEdBQUcsR0FBR0YsaUJBQWlCLENBQUNFLEdBQUcsQ0FBQ0MsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7SUFDdkVILGlCQUFpQixDQUFDSSxLQUFLLEdBQUdMLGdCQUFnQixDQUFDTSxZQUFZLENBQUMsT0FBTyxDQUFDO0lBQ2hFTCxpQkFBaUIsQ0FBQ00sUUFBUSxHQUFHUCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLFVBQVUsQ0FBQyxLQUFLLE1BQU07SUFDakYsT0FBT0wsaUJBQWlCO0VBQ3pCLENBQUM7O0VBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBcEJBLElBMkJxQk8sY0FBYyxXQU5sQ0MsbUJBQW1CLENBQUM7SUFDcEJDLElBQUksRUFBRSxXQUFXO0lBQ2pCQyxTQUFTLEVBQUUsd0JBQXdCO0lBQ25D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QUFJLENBQUNnSCxPQUFRO0FBQzNCLGlDQUFpQyxJQUFJLENBQUNuSCxlQUFnQjtBQUN0RCxvQ0FBb0MsSUFBSSxDQUFDTSxrQkFBbUI7QUFDNUQsc0NBQXNDLElBQUksQ0FBQ3NCLG9CQUFxQjtBQUNoRSw0QkFBNEJxRSxtQkFBb0I7QUFDaEQsNEJBQTRCLElBQUksQ0FBQ04sV0FBWTtBQUM3QztBQUNBO0FBQ0EsTUFBTSxJQUFJLENBQUNwRixXQUFZO0FBQ3ZCO0FBQ0EsS0FBSyxJQUFJLENBQUNSLFNBQVMsRUFBRztBQUN0QjtBQUNBLE1BQU0sSUFBSSxDQUFDUyxhQUFjO0FBQ3pCO0FBQ0E7QUFDQSxnQ0FBZ0M7SUFDL0IsQ0FBQztJQUFBO0VBQUEsRUEvYzBDNEcsaUJBQWlCO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQThDN0MsS0FBSztJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0F3QkgsS0FBSztJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BUUcsSUFBSTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BUWxCLFlBQVk7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FhQSxJQUFJO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FTaEIsS0FBSztJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQW1CRyxLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FLSCxLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FLSCxLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BYVosU0FBUztJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BU1AsS0FBSztJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BS0gsS0FBSztJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0VBQUE7RUFBQTtBQUFBIn0=
652
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXMiLCJjaGlsZEZpbHRlckZpZWxkIiwiYWdncmVnYXRpb25PYmplY3QiLCJzbG90TmFtZSIsImtleSIsInJlcGxhY2UiLCJsYWJlbCIsImdldEF0dHJpYnV0ZSIsInJlcXVpcmVkIiwiRmlsdGVyQmFyQmxvY2siLCJkZWZpbmVCdWlsZGluZ0Jsb2NrIiwibmFtZSIsIm5hbWVzcGFjZSIsInB1YmxpY05hbWVzcGFjZSIsInJldHVyblR5cGVzIiwiYmxvY2tBdHRyaWJ1dGUiLCJ0eXBlIiwiaXNQdWJsaWMiLCJibG9ja0V2ZW50IiwiYmxvY2tBZ2dyZWdhdGlvbiIsImhhc1ZpcnR1YWxOb2RlIiwicHJvY2Vzc0FnZ3JlZ2F0aW9ucyIsInByb3BzIiwiY29uZmlndXJhdGlvbiIsIm1TZXR0aW5ncyIsImNoZWNrSWZDb2xsYWJvcmF0aW9uRHJhZnRTdXBwb3J0ZWQiLCJvTWV0YU1vZGVsIiwiTW9kZWxIZWxwZXIiLCJpc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCIsImlzRHJhZnRDb2xsYWJvcmF0aXZlIiwiZ2V0RW50aXR5VHlwZVBhdGgiLCJtZXRhUGF0aFBhcnRzIiwiZW5kc1dpdGgiLCJnZXRTZWFyY2giLCJoaWRlQmFzaWNTZWFyY2giLCJ4bWwiLCJnZW5lcmF0ZSIsImlkIiwicHJvY2Vzc1NlbGVjdGlvbkZpZWxkcyIsImRyYWZ0RWRpdFN0YXRlIiwic2hvd0RyYWZ0RWRpdFN0YXRlIiwiX3ZhbHVlSGVscHMiLCJfZmlsdGVyRmllbGRzIiwicHVzaCIsIkFycmF5IiwiaXNBcnJheSIsInNlbGVjdGlvbkZpZWxkcyIsImdldE9iamVjdCIsImZvckVhY2giLCJzZWxlY3Rpb25GaWVsZCIsInNlbGVjdGlvbkZpZWxkSWR4IiwiYXZhaWxhYmlsaXR5Iiwic2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyIsImxlbmd0aCIsInRlbXBsYXRlIiwidW5kZWZpbmVkIiwicHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMiLCJDb21tb25IZWxwZXIiLCJnZXROYXZpZ2F0aW9uUGF0aCIsImFubm90YXRpb25QYXRoIiwiX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQiLCJfaW50ZXJuYWxDb250ZXh0UGF0aCIsInVzZVNlbWFudGljRGF0ZVJhbmdlIiwic3RyaW5naWZ5Q3VzdG9tRGF0YSIsInNldHRpbmdzIiwidmlzdWFsRmlsdGVyIiwibWV0YVBhdGgiLCJMb2ciLCJlcnJvciIsInNNZXRhUGF0aCIsImdldFBhdGgiLCJlbnRpdHlUeXBlUGF0aCIsInNwbGl0Iiwic0VudGl0eVNldFBhdGgiLCJnZXRFbnRpdHlTZXRQYXRoIiwiY29udGV4dFBhdGgiLCJnZXRNb2RlbCIsImNyZWF0ZUJpbmRpbmdDb250ZXh0Iiwic09iamVjdFBhdGgiLCJvRXh0cmFQYXJhbXMiLCJmaWx0ZXJGaWVsZHMiLCJvVmlzdWFsaXphdGlvbk9iamVjdFBhdGgiLCJnZXRJbnZvbHZlZERhdGFNb2RlbE9iamVjdHMiLCJvQ29udmVydGVyQ29udGV4dCIsImdldENvbnZlcnRlckNvbnRleHQiLCJwcm9wZXJ0eUluZm8iLCJnZXRTZWxlY3Rpb25GaWVsZHMiLCJzUHJvcGVydHlJbmZvIiwib1NlbGVjdGlvbkZpZWxkcyIsIlRlbXBsYXRlTW9kZWwiLCJvRW50aXR5VHlwZSIsImdldEVudGl0eVR5cGUiLCJvU2VsZWN0aW9uVmFyaWFudCIsImdldFNlbGVjdGlvblZhcmlhbnQiLCJvRW50aXR5U2V0Q29udGV4dCIsImdldENvbnRleHQiLCJvRmlsdGVyQ29uZGl0aW9ucyIsImdldEZpbHRlckNvbmRpdGlvbnMiLCJzZWxlY3Rpb25WYXJpYW50IiwiZmlsdGVyQ29uZGl0aW9ucyIsIl9wcm9jZXNzUHJvcGVydHlJbmZvcyIsInRhcmdldEVudGl0eVNldCIsImFubm90YXRpb25zIiwiQ29tbW9uIiwiRHJhZnRSb290IiwiRHJhZnROb2RlIiwiX2FwcGx5SWRUb0NvbnRlbnQiLCJfYXBpSWQiLCJfY29udGVudElkIiwiZ2V0Q29udGVudElkIiwib1NlYXJjaFJlc3RyaWN0aW9uQW5ub3RhdGlvbiIsImdldFNlYXJjaFJlc3RyaWN0aW9ucyIsIkJvb2xlYW4iLCJTZWFyY2hhYmxlIiwibW9kZWwiLCJhUGFyYW1ldGVyRmllbGRzIiwic0ZldGNoZWRQcm9wZXJ0aWVzIiwiYUZldGNoZWRQcm9wZXJ0aWVzIiwiSlNPTiIsInBhcnNlIiwiZWRpdFN0YXRlTGFiZWwiLCJnZXRUcmFuc2xhdGVkVGV4dCIsInByb3BJbmZvIiwiaXNQYXJhbWV0ZXIiLCJwYXRoIiwiaW5jbHVkZXMiLCJwcm9wZXJ0eUxvY2F0aW9uUGF0aCIsImdldExvY2F0aW9uRm9yUHJvcGVydHlQYXRoIiwicHJvcGVydHlQYXRoIiwiQ29tbW9uVXRpbHMiLCJnZXRGaWx0ZXJSZXN0cmljdGlvbnNCeVBhdGgiLCJSZXF1aXJlZFByb3BlcnRpZXMiLCJzdHJpbmdpZnkiLCJfcGFyYW1ldGVycyIsImZpbHRlckJhckNvbnRleHRQYXRoIiwiYW5ub1BhdGgiLCJzdWJzdHJpbmciLCJsYXN0SW5kZXhPZiIsImdldFRlbXBsYXRlIiwiaW50ZXJuYWxDb250ZXh0UGF0aCIsImZpbHRlckRlbGVnYXRlIiwiZmlsdGVyQmFyRGVsZWdhdGUiLCJzZWFyY2giLCJmaWx0ZXJDaGFuZ2VkIiwiYWZ0ZXJDbGVhciIsImludGVybmFsU2VhcmNoIiwiaW50ZXJuYWxGaWx0ZXJDaGFuZ2VkIiwic3RhdGVDaGFuZ2UiLCJsaXZlTW9kZSIsInZhcmlhbnRCYWNrcmVmZXJlbmNlIiwic2hvd0FkYXB0RmlsdGVyc0J1dHRvbiIsInNob3dDbGVhckJ1dHRvbiIsInAxM25Nb2RlIiwic3VzcGVuZFNlbGVjdGlvbiIsInNob3dNZXNzYWdlcyIsInRvZ2dsZUNvbnRyb2xJZCIsImluaXRpYWxMYXlvdXQiLCJ2aXNpYmxlIiwiQnVpbGRpbmdCbG9ja0Jhc2UiXSwic291cmNlUm9vdCI6Ii4iLCJzb3VyY2VzIjpbIkZpbHRlckJhci5ibG9jay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVudGl0eVNldCB9IGZyb20gXCJAc2FwLXV4L3ZvY2FidWxhcmllcy10eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3Rpb25GaWVsZHMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgTG9nIGZyb20gXCJzYXAvYmFzZS9Mb2dcIjtcbmltcG9ydCBUZW1wbGF0ZU1vZGVsIGZyb20gXCJzYXAvZmUvY29yZS9UZW1wbGF0ZU1vZGVsXCI7XG5pbXBvcnQgQnVpbGRpbmdCbG9ja0Jhc2UgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tCYXNlXCI7XG5pbXBvcnQgeyBibG9ja0FnZ3JlZ2F0aW9uLCBibG9ja0F0dHJpYnV0ZSwgYmxvY2tFdmVudCwgZGVmaW5lQnVpbGRpbmdCbG9jayB9IGZyb20gXCJzYXAvZmUvY29yZS9idWlsZGluZ0Jsb2Nrcy9CdWlsZGluZ0Jsb2NrU3VwcG9ydFwiO1xuaW1wb3J0IHsgeG1sIH0gZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tUZW1wbGF0ZVByb2Nlc3NvclwiO1xuaW1wb3J0IHsgZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzIH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvTWV0YU1vZGVsQ29udmVydGVyXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25WYXJpYW50IH0gZnJvbSBcInNhcC9mZS9jb3JlL2NvbnZlcnRlcnMvY29udHJvbHMvQ29tbW9uL0RhdGFWaXN1YWxpemF0aW9uXCI7XG5pbXBvcnQgeyBnZXRTZWxlY3Rpb25GaWVsZHMgfSBmcm9tIFwic2FwL2ZlL2NvcmUvY29udmVydGVycy9jb250cm9scy9MaXN0UmVwb3J0L0ZpbHRlckJhclwiO1xuaW1wb3J0IHR5cGUgeyBQcm9wZXJ0aWVzT2YgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB7IGdldFNlYXJjaFJlc3RyaWN0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL01ldGFNb2RlbEZ1bmN0aW9uXCI7XG5pbXBvcnQgTW9kZWxIZWxwZXIgZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvTW9kZWxIZWxwZXJcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyQ29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0RmlsdGVyQ29uZGl0aW9ucyB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0ZpbHRlckhlbHBlclwiO1xuaW1wb3J0IENvbW1vbkhlbHBlciBmcm9tIFwic2FwL2ZlL21hY3Jvcy9Db21tb25IZWxwZXJcIjtcbmltcG9ydCB0eXBlIENvbnRleHQgZnJvbSBcInNhcC91aS9tb2RlbC9Db250ZXh0XCI7XG5pbXBvcnQgdHlwZSBPRGF0YU1ldGFNb2RlbCBmcm9tIFwic2FwL3VpL21vZGVsL29kYXRhL3Y0L09EYXRhTWV0YU1vZGVsXCI7XG5pbXBvcnQgdHlwZSB7IFByb3BlcnR5SW5mbyB9IGZyb20gXCIuLi9EZWxlZ2F0ZVV0aWxcIjtcbmltcG9ydCB0eXBlIHsgRmlsdGVyRmllbGQgfSBmcm9tIFwiLi9GaWx0ZXJCYXJBUElcIjtcbmltcG9ydCBDb21tb25VdGlscyBmcm9tIFwic2FwL2ZlL2NvcmUvQ29tbW9uVXRpbHNcIjtcblxuY29uc3Qgc2V0Q3VzdG9tRmlsdGVyRmllbGRQcm9wZXJ0aWVzID0gZnVuY3Rpb24gKGNoaWxkRmlsdGVyRmllbGQ6IEVsZW1lbnQsIGFnZ3JlZ2F0aW9uT2JqZWN0OiBhbnkpOiBGaWx0ZXJGaWVsZCB7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LnNsb3ROYW1lID0gYWdncmVnYXRpb25PYmplY3Qua2V5O1xuXHRhZ2dyZWdhdGlvbk9iamVjdC5rZXkgPSBhZ2dyZWdhdGlvbk9iamVjdC5rZXkucmVwbGFjZShcIklubGluZVhNTF9cIiwgXCJcIik7XG5cdGFnZ3JlZ2F0aW9uT2JqZWN0LmxhYmVsID0gY2hpbGRGaWx0ZXJGaWVsZC5nZXRBdHRyaWJ1dGUoXCJsYWJlbFwiKTtcblx0YWdncmVnYXRpb25PYmplY3QucmVxdWlyZWQgPSBjaGlsZEZpbHRlckZpZWxkLmdldEF0dHJpYnV0ZShcInJlcXVpcmVkXCIpID09PSBcInRydWVcIjtcblx0cmV0dXJuIGFnZ3JlZ2F0aW9uT2JqZWN0O1xufTtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBGaWx0ZXJCYXIgYmFzZWQgb24gdGhlIG1ldGFkYXRhIHByb3ZpZGVkIGJ5IE9EYXRhIFY0LlxuICpcbiAqXG4gKiBVc2FnZSBleGFtcGxlOlxuICogPHByZT5cbiAqICZsdDttYWNybzpGaWx0ZXJCYXJcbiAqICAgaWQ9XCJTb21lSURcIlxuICogICBzaG93QWRhcHRGaWx0ZXJzQnV0dG9uPVwidHJ1ZVwiXG4gKiAgIHAxM25Nb2RlPVtcIkl0ZW1cIixcIlZhbHVlXCJdXG4gKiAgIGxpc3RCaW5kaW5nTmFtZXMgPSBcInNhcC5mZS50YWJsZUJpbmRpbmdcIlxuICogICBsaXZlTW9kZT1cInRydWVcIlxuICogICBzZWFyY2g9XCIuaGFuZGxlcnMub25TZWFyY2hcIlxuICogICBmaWx0ZXJDaGFuZ2VkPVwiLmhhbmRsZXJzLm9uRmlsdGVyc0NoYW5nZWRcIlxuICogLyZndDtcbiAqIDwvcHJlPlxuICpcbiAqIEJ1aWxkaW5nIGJsb2NrIGZvciBjcmVhdGluZyBhIEZpbHRlckJhciBiYXNlZCBvbiB0aGUgbWV0YWRhdGEgcHJvdmlkZWQgYnkgT0RhdGEgVjQuXG4gKlxuICogQHNpbmNlIDEuOTQuMFxuICovXG5AZGVmaW5lQnVpbGRpbmdCbG9jayh7XG5cdG5hbWU6IFwiRmlsdGVyQmFyXCIsXG5cdG5hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zLmludGVybmFsXCIsXG5cdHB1YmxpY05hbWVzcGFjZTogXCJzYXAuZmUubWFjcm9zXCIsXG5cdHJldHVyblR5cGVzOiBbXCJzYXAuZmUubWFjcm9zLmZpbHRlckJhci5GaWx0ZXJCYXJBUElcIl1cbn0pXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGaWx0ZXJCYXJCbG9jayBleHRlbmRzIEJ1aWxkaW5nQmxvY2tCYXNlIHtcblx0LyoqXG5cdCAqIElEIG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRpZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdHZpc2libGU/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIHNlbGVjdGlvbkZpZWxkcyB0byBiZSBkaXNwbGF5ZWRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzYXAudWkubW9kZWwuQ29udGV4dFwiXG5cdH0pXG5cdHNlbGVjdGlvbkZpZWxkcz86IFNlbGVjdGlvbkZpZWxkcyB8IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHsgdHlwZTogXCJzdHJpbmdcIiB9KVxuXHRmaWx0ZXJCYXJEZWxlZ2F0ZT86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1vZGVsLkNvbnRleHRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRtZXRhUGF0aD86IENvbnRleHQ7XG5cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInNhcC51aS5tb2RlbC5Db250ZXh0XCIsXG5cdFx0aXNQdWJsaWM6IHRydWVcblx0fSlcblx0Y29udGV4dFBhdGg/OiBDb250ZXh0O1xuXG5cdC8qKlxuXHQgKiBEaXNwbGF5cyBwb3NzaWJsZSBlcnJvcnMgZHVyaW5nIHRoZSBzZWFyY2ggaW4gYSBtZXNzYWdlIGJveFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRzaG93TWVzc2FnZXMgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSUQgb2YgdGhlIGFzc2lnbmVkIHZhcmlhbnQgbWFuYWdlbWVudFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHZhcmlhbnRCYWNrcmVmZXJlbmNlPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBEb24ndCBzaG93IHRoZSBiYXNpYyBzZWFyY2ggZmllbGRcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aGlkZUJhc2ljU2VhcmNoPzogYm9vbGVhbjtcblxuXHQvKipcblx0ICogRW5hYmxlcyB0aGUgZmFsbGJhY2sgdG8gc2hvdyBhbGwgZmllbGRzIG9mIHRoZSBFbnRpdHlUeXBlIGFzIGZpbHRlciBmaWVsZHMgaWYgY29tLnNhcC52b2NhYnVsYXJpZXMuVUkudjEuU2VsZWN0aW9uRmllbGRzIGFyZSBub3QgcHJlc2VudFxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRlbmFibGVGYWxsYmFjayA9IGZhbHNlO1xuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHZpc2liaWxpdHkgb2YgdGhlICdBZGFwdCBGaWx0ZXJzJyBidXR0b24gb24gdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHRzaG93QWRhcHRGaWx0ZXJzQnV0dG9uID0gdHJ1ZTtcblxuXHQvKipcblx0ICogU3BlY2lmaWVzIHRoZSBwZXJzb25hbGl6YXRpb24gb3B0aW9ucyBmb3IgdGhlIGZpbHRlciBiYXIuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic2FwLnVpLm1kYy5GaWx0ZXJCYXJQMTNuTW9kZVtdXCJcblx0fSlcblx0cDEzbk1vZGUgPSBcIkl0ZW0sVmFsdWVcIjtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0cHJvcGVydHlJbmZvPzogc3RyaW5nO1xuXG5cdC8qKlxuXHQgKiBTcGVjaWZpZXMgdGhlIFNlbWF0aWMgRGF0ZSBSYW5nZSBvcHRpb24gZm9yIHRoZSBmaWx0ZXIgYmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIlxuXHR9KVxuXHR1c2VTZW1hbnRpY0RhdGVSYW5nZSA9IHRydWU7XG5cblx0LyoqXG5cdCAqIElmIHNldCB0aGUgc2VhcmNoIHdpbGwgYmUgYXV0b21hdGljYWxseSB0cmlnZ2VyZWQsIHdoZW4gYSBmaWx0ZXIgdmFsdWUgd2FzIGNoYW5nZWQuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiLFxuXHRcdGlzUHVibGljOiB0cnVlXG5cdH0pXG5cdGxpdmVNb2RlID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIEZpbHRlciBjb25kaXRpb25zIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogZmFsc2Vcblx0fSlcblx0ZmlsdGVyQ29uZGl0aW9ucz86IFJlY29yZDxzdHJpbmcsIEZpbHRlckNvbmRpdGlvbnNbXT47XG5cblx0LyoqXG5cdCAqIElmIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiwgYWxsIHNlYXJjaCByZXF1ZXN0cyBhcmUgaWdub3JlZC4gT25jZSBpdCBoYXMgYmVlbiBzZXQgdG8gPGNvZGU+ZmFsc2U8L2NvZGU+LFxuXHQgKiBhIHNlYXJjaCBpcyB0cmlnZ2VyZWQgaW1tZWRpYXRlbHkgaWYgb25lIG9yIG1vcmUgc2VhcmNoIHJlcXVlc3RzIGhhdmUgYmVlbiB0cmlnZ2VyZWQgaW4gdGhlIG1lYW50aW1lXG5cdCAqIGJ1dCB3ZXJlIGlnbm9yZWQgYmFzZWQgb24gdGhlIHNldHRpbmcuXG5cdCAqL1xuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHN1c3BlbmRTZWxlY3Rpb24gPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdHNob3dEcmFmdEVkaXRTdGF0ZSA9IGZhbHNlO1xuXG5cdEBibG9ja0F0dHJpYnV0ZSh7XG5cdFx0dHlwZTogXCJib29sZWFuXCJcblx0fSlcblx0aXNEcmFmdENvbGxhYm9yYXRpdmUgPSBmYWxzZTtcblxuXHQvKipcblx0ICogSWQgb2YgY29udHJvbCB0aGF0IHdpbGwgYWxsb3cgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIG5vcm1hbCBhbmQgdmlzdWFsIGZpbHRlclxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHRvZ2dsZUNvbnRyb2xJZD86IHN0cmluZztcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwic3RyaW5nXCJcblx0fSlcblx0aW5pdGlhbExheW91dCA9IFwiY29tcGFjdFwiO1xuXG5cdC8qKlxuXHQgKiBIYW5kbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSAnQ2xlYXInIGJ1dHRvbiBvbiB0aGUgRmlsdGVyQmFyLlxuXHQgKi9cblx0QGJsb2NrQXR0cmlidXRlKHtcblx0XHR0eXBlOiBcImJvb2xlYW5cIixcblx0XHRpc1B1YmxpYzogdHJ1ZVxuXHR9KVxuXHRzaG93Q2xlYXJCdXR0b24gPSBmYWxzZTtcblxuXHRAYmxvY2tBdHRyaWJ1dGUoe1xuXHRcdHR5cGU6IFwiYm9vbGVhblwiXG5cdH0pXG5cdF9hcHBseUlkVG9Db250ZW50ID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFRlbXBvcmFyeSB3b3JrYXJvdW5kIG9ubHlcblx0ICogcGF0aCB0byBjb250ZXh0UGF0aCB0byBiZSB1c2VkIGJ5IGNoaWxkIGZpbHRlcmZpZWxkc1xuXHQgKi9cblx0X2ludGVybmFsQ29udGV4dFBhdGghOiBDb250ZXh0O1xuXG5cdF9wYXJhbWV0ZXJzOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIHNlYXJjaCBldmVudCBvZiB0aGUgRmlsdGVyQmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdHNlYXJjaD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgZmlsdGVyQ2hhbmdlIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0ZmlsdGVyQ2hhbmdlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgc3RhdGVDaGFuZ2UgZXZlbnQgb2YgdGhlIEZpbHRlckJhci5cblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0c3RhdGVDaGFuZ2U/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIGZpbHRlckNoYW5nZWQgZXZlbnQgb2YgdGhlIEZpbHRlckJhci4gRXhwb3NlcyBwYXJhbWV0ZXJzIGZyb20gdGhlIE1EQyBmaWx0ZXIgYmFyXG5cdCAqL1xuXHRAYmxvY2tFdmVudCgpXG5cdGludGVybmFsRmlsdGVyQ2hhbmdlZD86IHN0cmluZztcblxuXHQvKipcblx0ICogRXZlbnQgaGFuZGxlciB0byByZWFjdCB0byB0aGUgc2VhcmNoIGV2ZW50IG9mIHRoZSBGaWx0ZXJCYXIuIEV4cG9zZXMgcGFyYW1ldGVyZXMgZnJvbSB0aGUgTURDIGZpbHRlciBiYXJcblx0ICovXG5cdEBibG9ja0V2ZW50KClcblx0aW50ZXJuYWxTZWFyY2g/OiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIEV2ZW50IGhhbmRsZXIgdG8gcmVhY3QgdG8gdGhlIGFmdGVyQ2xlYXIgZXZlbnQgb2YgdGhlIEZpbHRlckJhclxuXHQgKi9cblx0QGJsb2NrRXZlbnQoKVxuXHRhZnRlckNsZWFyPzogc3RyaW5nO1xuXG5cdEBibG9ja0FnZ3JlZ2F0aW9uKHtcblx0XHR0eXBlOiBcInNhcC5mZS5tYWNyb3MuRmlsdGVyRmllbGRcIixcblx0XHRpc1B1YmxpYzogdHJ1ZSxcblx0XHRoYXNWaXJ0dWFsTm9kZTogdHJ1ZSxcblx0XHRwcm9jZXNzQWdncmVnYXRpb25zOiBzZXRDdXN0b21GaWx0ZXJGaWVsZFByb3BlcnRpZXNcblx0fSlcblx0ZmlsdGVyRmllbGRzPzogRmlsdGVyRmllbGQ7XG5cblx0X2FwaUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cblx0X2NvbnRlbnRJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG5cdF92YWx1ZUhlbHBzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRfZmlsdGVyRmllbGRzOiBBcnJheTxzdHJpbmc+IHwgXCJcIiB8IHVuZGVmaW5lZDtcblxuXHRjb25zdHJ1Y3Rvcihwcm9wczogUHJvcGVydGllc09mPEZpbHRlckJhckJsb2NrPiwgY29uZmlndXJhdGlvbjogYW55LCBtU2V0dGluZ3M6IGFueSkge1xuXHRcdHN1cGVyKHByb3BzLCBjb25maWd1cmF0aW9uLCBtU2V0dGluZ3MpO1xuXHRcdGlmICghdGhpcy5tZXRhUGF0aCkge1xuXHRcdFx0TG9nLmVycm9yKFwiQ29udGV4dCBQYXRoIG5vdCBhdmFpbGFibGUgZm9yIEZpbHRlckJhciBNYWNyby5cIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGNvbnN0IHNNZXRhUGF0aCA9IHRoaXMubWV0YVBhdGguZ2V0UGF0aCgpO1xuXHRcdGxldCBlbnRpdHlUeXBlUGF0aCA9IFwiXCI7XG5cdFx0Y29uc3QgbWV0YVBhdGhQYXJ0cyA9IHNNZXRhUGF0aD8uc3BsaXQoXCIvQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiKSB8fCBbXTsgLy8gWzBdOiBlbnRpdHlUeXBlUGF0aCwgWzFdOiBTRiBRdWFsaWZpZXIuXG5cdFx0aWYgKG1ldGFQYXRoUGFydHMubGVuZ3RoID4gMCkge1xuXHRcdFx0ZW50aXR5VHlwZVBhdGggPSB0aGlzLmdldEVudGl0eVR5cGVQYXRoKG1ldGFQYXRoUGFydHMpO1xuXHRcdH1cblx0XHRjb25zdCBzRW50aXR5U2V0UGF0aCA9IE1vZGVsSGVscGVyLmdldEVudGl0eVNldFBhdGgoZW50aXR5VHlwZVBhdGgpO1xuXHRcdGNvbnN0IG9NZXRhTW9kZWwgPSB0aGlzLmNvbnRleHRQYXRoPy5nZXRNb2RlbCgpO1xuXHRcdHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGggPSBvTWV0YU1vZGVsPy5jcmVhdGVCaW5kaW5nQ29udGV4dChlbnRpdHlUeXBlUGF0aCkgYXMgQ29udGV4dDtcblx0XHRjb25zdCBzT2JqZWN0UGF0aCA9IFwiQGNvbS5zYXAudm9jYWJ1bGFyaWVzLlVJLnYxLlNlbGVjdGlvbkZpZWxkc1wiO1xuXHRcdGNvbnN0IGFubm90YXRpb25QYXRoOiBzdHJpbmcgPSBcIkBjb20uc2FwLnZvY2FidWxhcmllcy5VSS52MS5TZWxlY3Rpb25GaWVsZHNcIiArICgobWV0YVBhdGhQYXJ0cy5sZW5ndGggJiYgbWV0YVBhdGhQYXJ0c1sxXSkgfHwgXCJcIik7XG5cdFx0Y29uc3Qgb0V4dHJhUGFyYW1zOiBhbnkgPSB7fTtcblx0XHRvRXh0cmFQYXJhbXNbc09iamVjdFBhdGhdID0ge1xuXHRcdFx0ZmlsdGVyRmllbGRzOiB0aGlzLmZpbHRlckZpZWxkc1xuXHRcdH07XG5cdFx0Y29uc3Qgb1Zpc3VhbGl6YXRpb25PYmplY3RQYXRoID0gZ2V0SW52b2x2ZWREYXRhTW9kZWxPYmplY3RzKHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpO1xuXHRcdGNvbnN0IG9Db252ZXJ0ZXJDb250ZXh0ID0gdGhpcy5nZXRDb252ZXJ0ZXJDb250ZXh0KG9WaXN1YWxpemF0aW9uT2JqZWN0UGF0aCwgdW5kZWZpbmVkLCBtU2V0dGluZ3MsIG9FeHRyYVBhcmFtcyk7XG5cdFx0aWYgKCF0aGlzLnByb3BlcnR5SW5mbykge1xuXHRcdFx0dGhpcy5wcm9wZXJ0eUluZm8gPSBnZXRTZWxlY3Rpb25GaWVsZHMob0NvbnZlcnRlckNvbnRleHQsIFtdLCBhbm5vdGF0aW9uUGF0aCkuc1Byb3BlcnR5SW5mbztcblx0XHR9XG5cblx0XHQvL0ZpbHRlciBGaWVsZHMgYW5kIHZhbHVlcyB0byB0aGUgZmllbGQgYXJlIGZpbGxlZCBiYXNlZCBvbiB0aGUgc2VsZWN0aW9uRmllbGRzIGFuZCB0aGlzIHdvdWxkIGJlIGVtcHR5IGluIGNhc2Ugb2YgbWFjcm8gb3V0c2lkZSB0aGUgRkUgdGVtcGxhdGVcblx0XHRpZiAoIXRoaXMuc2VsZWN0aW9uRmllbGRzKSB7XG5cdFx0XHRjb25zdCBvU2VsZWN0aW9uRmllbGRzID0gZ2V0U2VsZWN0aW9uRmllbGRzKG9Db252ZXJ0ZXJDb250ZXh0LCBbXSwgYW5ub3RhdGlvblBhdGgpLnNlbGVjdGlvbkZpZWxkcztcblx0XHRcdHRoaXMuc2VsZWN0aW9uRmllbGRzID0gbmV3IFRlbXBsYXRlTW9kZWwob1NlbGVjdGlvbkZpZWxkcywgb01ldGFNb2RlbCBhcyBPRGF0YU1ldGFNb2RlbCkuY3JlYXRlQmluZGluZ0NvbnRleHQoXCIvXCIpO1xuXHRcdFx0Y29uc3Qgb0VudGl0eVR5cGUgPSBvQ29udmVydGVyQ29udGV4dC5nZXRFbnRpdHlUeXBlKCksXG5cdFx0XHRcdG9TZWxlY3Rpb25WYXJpYW50ID0gZ2V0U2VsZWN0aW9uVmFyaWFudChvRW50aXR5VHlwZSwgb0NvbnZlcnRlckNvbnRleHQpLFxuXHRcdFx0XHRvRW50aXR5U2V0Q29udGV4dCA9IChvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKS5nZXRDb250ZXh0KHNFbnRpdHlTZXRQYXRoKSxcblx0XHRcdFx0b0ZpbHRlckNvbmRpdGlvbnMgPSBnZXRGaWx0ZXJDb25kaXRpb25zKG9FbnRpdHlTZXRDb250ZXh0LCB7IHNlbGVjdGlvblZhcmlhbnQ6IG9TZWxlY3Rpb25WYXJpYW50IH0pO1xuXHRcdFx0dGhpcy5maWx0ZXJDb25kaXRpb25zID0gb0ZpbHRlckNvbmRpdGlvbnM7XG5cdFx0fVxuXHRcdHRoaXMuX3Byb2Nlc3NQcm9wZXJ0eUluZm9zKHRoaXMucHJvcGVydHlJbmZvLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblxuXHRcdGNvbnN0IHRhcmdldEVudGl0eVNldCA9IGdldEludm9sdmVkRGF0YU1vZGVsT2JqZWN0cyh0aGlzLm1ldGFQYXRoLCB0aGlzLmNvbnRleHRQYXRoKS50YXJnZXRFbnRpdHlTZXQgYXMgRW50aXR5U2V0O1xuXHRcdGlmICh0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Um9vdCB8fCB0YXJnZXRFbnRpdHlTZXQ/LmFubm90YXRpb25zPy5Db21tb24/LkRyYWZ0Tm9kZSkge1xuXHRcdFx0dGhpcy5zaG93RHJhZnRFZGl0U3RhdGUgPSB0cnVlO1xuXHRcdFx0dGhpcy5jaGVja0lmQ29sbGFib3JhdGlvbkRyYWZ0U3VwcG9ydGVkKG9NZXRhTW9kZWwgYXMgT0RhdGFNZXRhTW9kZWwpO1xuXHRcdH1cblxuXHRcdGlmICh0aGlzLl9hcHBseUlkVG9Db250ZW50KSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQgKyBcIjo6RmlsdGVyQmFyXCI7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmlkO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLl9hcGlJZCA9IHRoaXMuaWQ7XG5cdFx0XHR0aGlzLl9jb250ZW50SWQgPSB0aGlzLmdldENvbnRlbnRJZCh0aGlzLmlkICsgXCJcIik7XG5cdFx0fVxuXG5cdFx0aWYgKHRoaXMuaGlkZUJhc2ljU2VhcmNoICE9PSB0cnVlKSB7XG5cdFx0XHRjb25zdCBvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uID0gZ2V0U2VhcmNoUmVzdHJpY3Rpb25zKHNFbnRpdHlTZXRQYXRoLCBvTWV0YU1vZGVsIGFzIE9EYXRhTWV0YU1vZGVsKTtcblx0XHRcdHRoaXMuaGlkZUJhc2ljU2VhcmNoID0gQm9vbGVhbihvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uICYmICFvU2VhcmNoUmVzdHJpY3Rpb25Bbm5vdGF0aW9uLlNlYXJjaGFibGUpO1xuXHRcdH1cblx0XHR0aGlzLnByb2Nlc3NTZWxlY3Rpb25GaWVsZHMoKTtcblx0fVxuXG5cdF9wcm9jZXNzUHJvcGVydHlJbmZvcyhwcm9wZXJ0eUluZm86IHN0cmluZywgbW9kZWw6IE9EYXRhTWV0YU1vZGVsKTogdm9pZCB7XG5cdFx0Y29uc3QgYVBhcmFtZXRlckZpZWxkczogc3RyaW5nW10gPSBbXTtcblx0XHRpZiAocHJvcGVydHlJbmZvKSB7XG5cdFx0XHRjb25zdCBzRmV0Y2hlZFByb3BlcnRpZXMgPSBwcm9wZXJ0eUluZm8ucmVwbGFjZSgvXFxcXHsvZywgXCJ7XCIpLnJlcGxhY2UoL1xcXFx9L2csIFwifVwiKTtcblx0XHRcdGNvbnN0IGFGZXRjaGVkUHJvcGVydGllcyA9IEpTT04ucGFyc2Uoc0ZldGNoZWRQcm9wZXJ0aWVzKTtcblx0XHRcdGNvbnN0IGVkaXRTdGF0ZUxhYmVsID0gdGhpcy5nZXRUcmFuc2xhdGVkVGV4dChcIkZJTFRFUkJBUl9FRElUSU5HX1NUQVRVU1wiKTtcblx0XHRcdGFGZXRjaGVkUHJvcGVydGllcy5mb3JFYWNoKGZ1bmN0aW9uIChwcm9wSW5mbzogUHJvcGVydHlJbmZvKSB7XG5cdFx0XHRcdGlmIChwcm9wSW5mby5pc1BhcmFtZXRlcikge1xuXHRcdFx0XHRcdGFQYXJhbWV0ZXJGaWVsZHMucHVzaChwcm9wSW5mby5uYW1lKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAocHJvcEluZm8ucGF0aCA9PT0gXCIkZWRpdFN0YXRlXCIpIHtcblx0XHRcdFx0XHRwcm9wSW5mby5sYWJlbCA9IGVkaXRTdGF0ZUxhYmVsO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGlmICgocHJvcEluZm8ubmFtZSk/LmluY2x1ZGVzKCcvJykpIHtcblx0XHRcdFx0XHRjb25zdCBhbm5vdGF0aW9uUGF0aCA9IHByb3BJbmZvLmFubm90YXRpb25QYXRoXG5cdFx0XHRcdFx0Y29uc3QgcHJvcGVydHlMb2NhdGlvblBhdGggPSBDb21tb25IZWxwZXIuZ2V0TG9jYXRpb25Gb3JQcm9wZXJ0eVBhdGgobW9kZWwsIGFubm90YXRpb25QYXRoKTtcblx0XHRcdFx0XHRjb25zdCBwcm9wZXJ0eVBhdGggPSBhbm5vdGF0aW9uUGF0aD8ucmVwbGFjZShgJHtwcm9wZXJ0eUxvY2F0aW9uUGF0aH0vYCwgXCJcIilcblx0XHRcdFx0XHRwcm9wSW5mby5yZXF1aXJlZCA9IHByb3BlcnR5UGF0aCA/IENvbW1vblV0aWxzLmdldEZpbHRlclJlc3RyaWN0aW9uc0J5UGF0aChwcm9wZXJ0eUxvY2F0aW9uUGF0aCwgbW9kZWwpPy5SZXF1aXJlZFByb3BlcnRpZXM/LmluY2x1ZGVzKHByb3BlcnR5UGF0aCkgOiBwcm9wSW5mby5yZXF1aXJlZDtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cblx0XHRcdHRoaXMucHJvcGVydHlJbmZvID0gSlNPTi5zdHJpbmdpZnkoYUZldGNoZWRQcm9wZXJ0aWVzKS5yZXBsYWNlKC9cXHsvZywgXCJcXFxce1wiKS5yZXBsYWNlKC9cXH0vZywgXCJcXFxcfVwiKTtcblx0XHR9XG5cdFx0dGhpcy5fcGFyYW1ldGVycyA9IEpTT04uc3RyaW5naWZ5KGFQYXJhbWV0ZXJGaWVsZHMpO1xuXHR9XG5cblx0Y2hlY2tJZkNvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZCA9IChvTWV0YU1vZGVsOiBPRGF0YU1ldGFNb2RlbCB8IHVuZGVmaW5lZCkgPT4ge1xuXHRcdGlmIChNb2RlbEhlbHBlci5pc0NvbGxhYm9yYXRpb25EcmFmdFN1cHBvcnRlZChvTWV0YU1vZGVsKSkge1xuXHRcdFx0dGhpcy5pc0RyYWZ0Q29sbGFib3JhdGl2ZSA9IHRydWU7XG5cdFx0fVxuXHR9O1xuXG5cdGdldEVudGl0eVR5cGVQYXRoID0gKG1ldGFQYXRoUGFydHM6IHN0cmluZ1tdKSA9PiB7XG5cdFx0cmV0dXJuIG1ldGFQYXRoUGFydHNbMF0uZW5kc1dpdGgoXCIvXCIpID8gbWV0YVBhdGhQYXJ0c1swXSA6IG1ldGFQYXRoUGFydHNbMF0gKyBcIi9cIjtcblx0fTtcblxuXHRnZXRTZWFyY2ggPSAoKSA9PiB7XG5cdFx0aWYgKCF0aGlzLmhpZGVCYXNpY1NlYXJjaCkge1xuXHRcdFx0cmV0dXJuIHhtbGA8Y29udHJvbDpiYXNpY1NlYXJjaEZpZWxkPlxuXHRcdFx0PG1kYzpGaWx0ZXJGaWVsZFxuXHRcdFx0XHRpZD1cIiR7Z2VuZXJhdGUoW3RoaXMuaWQsIFwiQmFzaWNTZWFyY2hGaWVsZFwiXSl9XCJcblx0XHRcdFx0cGxhY2Vob2xkZXI9XCJ7c2FwLmZlLmkxOG4+TV9GSUxURVJCQVJfU0VBUkNIfVwiXG5cdFx0XHRcdGNvbmRpdGlvbnM9XCJ7JGZpbHRlcnM+L2NvbmRpdGlvbnMvJHNlYXJjaH1cIlxuXHRcdFx0XHRkYXRhVHlwZT1cInNhcC51aS5tb2RlbC5vZGF0YS50eXBlLlN0cmluZ1wiXG5cdFx0XHRcdG1heENvbmRpdGlvbnM9XCIxXCJcblx0XHRcdC8+XG5cdFx0PC9jb250cm9sOmJhc2ljU2VhcmNoRmllbGQ+YDtcblx0XHR9XG5cdFx0cmV0dXJuIFwiXCI7XG5cdH07XG5cblx0cHJvY2Vzc1NlbGVjdGlvbkZpZWxkcyA9ICgpID0+IHtcblx0XHRsZXQgZHJhZnRFZGl0U3RhdGUgPSBcIlwiO1xuXHRcdGlmICh0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZSkge1xuXHRcdFx0ZHJhZnRFZGl0U3RhdGUgPSBgPGNvcmU6RnJhZ21lbnQgZnJhZ21lbnROYW1lPVwic2FwLmZlLmNvcmUuZmlsdGVyLkRyYWZ0RWRpdFN0YXRlXCIgdHlwZT1cIlhNTFwiIC8+YDtcblx0XHR9XG5cdFx0dGhpcy5fdmFsdWVIZWxwcyA9IFtdO1xuXHRcdHRoaXMuX2ZpbHRlckZpZWxkcyA9IFtdO1xuXHRcdHRoaXMuX2ZpbHRlckZpZWxkcz8ucHVzaChkcmFmdEVkaXRTdGF0ZSk7XG5cdFx0aWYgKCFBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0aW9uRmllbGRzKSkge1xuXHRcdFx0dGhpcy5zZWxlY3Rpb25GaWVsZHMgPSB0aGlzLnNlbGVjdGlvbkZpZWxkcyEuZ2V0T2JqZWN0KCkgYXMgU2VsZWN0aW9uRmllbGRzO1xuXHRcdH1cblx0XHR0aGlzLnNlbGVjdGlvbkZpZWxkcz8uZm9yRWFjaCgoc2VsZWN0aW9uRmllbGQ6IGFueSwgc2VsZWN0aW9uRmllbGRJZHgpID0+IHtcblx0XHRcdGlmIChzZWxlY3Rpb25GaWVsZC5hdmFpbGFiaWxpdHkgPT09IFwiRGVmYXVsdFwiKSB7XG5cdFx0XHRcdHRoaXMuc2V0RmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCwgc2VsZWN0aW9uRmllbGRJZHgpO1xuXHRcdFx0fVxuXHRcdH0pO1xuXHRcdHRoaXMuX2ZpbHRlckZpZWxkcyA9IHRoaXMuX2ZpbHRlckZpZWxkcz8ubGVuZ3RoID4gMCA/IHRoaXMuX2ZpbHRlckZpZWxkcyA6IFwiXCI7XG5cdFx0dGhpcy5fdmFsdWVIZWxwcyA9IHRoaXMuX3ZhbHVlSGVscHM/Lmxlbmd0aCA+IDAgPyB0aGlzLl92YWx1ZUhlbHBzIDogXCJcIjtcblx0fTtcblxuXHRzZXRGaWx0ZXJGaWVsZHNBbmRWYWx1ZUhlbHBzID0gKHNlbGVjdGlvbkZpZWxkOiBhbnksIHNlbGVjdGlvbkZpZWxkSWR4OiBudW1iZXIpID0+IHtcblx0XHRpZiAoc2VsZWN0aW9uRmllbGQudGVtcGxhdGUgPT09IHVuZGVmaW5lZCAmJiBzZWxlY3Rpb25GaWVsZC50eXBlICE9PSBcIlNsb3RcIikge1xuXHRcdFx0dGhpcy5wdXNoRmlsdGVyRmllbGRzQW5kVmFsdWVIZWxwcyhzZWxlY3Rpb25GaWVsZCk7XG5cdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdHRoaXMuX2ZpbHRlckZpZWxkcz8ucHVzaChcblx0XHRcdFx0eG1sYDx0ZW1wbGF0ZTp3aXRoIHBhdGg9XCJzZWxlY3Rpb25GaWVsZHM+JHtzZWxlY3Rpb25GaWVsZElkeH1cIiB2YXI9XCJpdGVtXCI+XG5cdFx0XHRcdFx0PGNvcmU6RnJhZ21lbnQgZnJhZ21lbnROYW1lPVwic2FwLmZlLm1hY3Jvcy5maWx0ZXIuQ3VzdG9tRmlsdGVyXCIgdHlwZT1cIlhNTFwiIC8+XG5cdFx0XHRcdDwvdGVtcGxhdGU6d2l0aD5gXG5cdFx0XHQpO1xuXHRcdH1cblx0fTtcblxuXHRfZ2V0Q29udGV4dFBhdGhGb3JGaWx0ZXJGaWVsZChzZWxlY3Rpb25GaWVsZDogYW55LCBmaWx0ZXJCYXJDb250ZXh0UGF0aDogQ29udGV4dCk6IHN0cmluZyB8IENvbnRleHQge1xuXHRcdGxldCBjb250ZXh0UGF0aDogc3RyaW5nIHwgQ29udGV4dCA9IGZpbHRlckJhckNvbnRleHRQYXRoO1xuXHRcdGlmIChzZWxlY3Rpb25GaWVsZC5pc1BhcmFtZXRlcikge1xuXHRcdFx0Ly8gRXhhbXBsZTpcblx0XHRcdC8vIEZpbHRlckJhckNvbnRleHRQYXRoOiAvQ3VzdG9tZXIvU2V0XG5cdFx0XHQvLyBQYXJhbWV0ZXJQcm9wZXJ0eVBhdGg6IC9DdXN0b21lci9QX0NDXG5cdFx0XHQvLyBDb250ZXh0UGF0aEZvckZpbHRlckZpZWxkOiAvQ3VzdG9tZXJcblx0XHRcdGNvbnN0IGFubm9QYXRoID0gc2VsZWN0aW9uRmllbGQuYW5ub3RhdGlvblBhdGg7XG5cdFx0XHRjb250ZXh0UGF0aCA9IGFubm9QYXRoLnN1YnN0cmluZygwLCBhbm5vUGF0aC5sYXN0SW5kZXhPZihcIi9cIikgKyAxKTtcblx0XHR9XG5cdFx0cmV0dXJuIGNvbnRleHRQYXRoO1xuXHR9XG5cblx0cHVzaEZpbHRlckZpZWxkc0FuZFZhbHVlSGVscHMgPSAoc2VsZWN0aW9uRmllbGQ6IGFueSkgPT4ge1xuXHRcdGlmIChBcnJheS5pc0FycmF5KHRoaXMuX2ZpbHRlckZpZWxkcykpIHtcblx0XHRcdHRoaXMuX2ZpbHRlckZpZWxkcz8ucHVzaChcblx0XHRcdFx0eG1sYDxpbnRlcm5hbE1hY3JvOkZpbHRlckZpZWxkXG5cdFx0XHRpZFByZWZpeD1cIiR7Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRcIiwgQ29tbW9uSGVscGVyLmdldE5hdmlnYXRpb25QYXRoKHNlbGVjdGlvbkZpZWxkLmFubm90YXRpb25QYXRoKV0pfVwiXG5cdFx0XHR2aElkUHJlZml4PVwiJHtnZW5lcmF0ZShbdGhpcy5pZCwgXCJGaWx0ZXJGaWVsZFZhbHVlSGVscFwiXSl9XCJcblx0XHRcdHByb3BlcnR5PVwiJHtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aH1cIlxuXHRcdFx0Y29udGV4dFBhdGg9XCIke3RoaXMuX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQsIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpfVwiXG5cdFx0XHR1c2VTZW1hbnRpY0RhdGVSYW5nZT1cIiR7dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX1cIlxuXHRcdFx0c2V0dGluZ3M9XCIke0NvbW1vbkhlbHBlci5zdHJpbmdpZnlDdXN0b21EYXRhKHNlbGVjdGlvbkZpZWxkLnNldHRpbmdzKX1cIlxuXHRcdFx0dmlzdWFsRmlsdGVyPVwiJHtzZWxlY3Rpb25GaWVsZC52aXN1YWxGaWx0ZXJ9XCJcblx0XHRcdC8+YFxuXHRcdFx0KTtcblx0XHR9XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGhpcy5fdmFsdWVIZWxwcykpIHtcblx0XHRcdHRoaXMuX3ZhbHVlSGVscHM/LnB1c2goXG5cdFx0XHRcdHhtbGA8bWFjcm86VmFsdWVIZWxwXG5cdFx0XHRpZFByZWZpeD1cIiR7Z2VuZXJhdGUoW3RoaXMuaWQsIFwiRmlsdGVyRmllbGRWYWx1ZUhlbHBcIl0pfVwiXG5cdFx0XHRjb25kaXRpb25Nb2RlbD1cIiRmaWx0ZXJzXCJcblx0XHRcdHByb3BlcnR5PVwiJHtzZWxlY3Rpb25GaWVsZC5hbm5vdGF0aW9uUGF0aH1cIlxuXHRcdFx0Y29udGV4dFBhdGg9XCIke3RoaXMuX2dldENvbnRleHRQYXRoRm9yRmlsdGVyRmllbGQoc2VsZWN0aW9uRmllbGQsIHRoaXMuX2ludGVybmFsQ29udGV4dFBhdGgpfVwiXG5cdFx0XHRmaWx0ZXJGaWVsZFZhbHVlSGVscD1cInRydWVcIlxuXHRcdFx0dXNlU2VtYW50aWNEYXRlUmFuZ2U9XCIke3RoaXMudXNlU2VtYW50aWNEYXRlUmFuZ2V9XCJcblx0XHQvPmBcblx0XHRcdCk7XG5cdFx0fVxuXHR9O1xuXG5cdGdldFRlbXBsYXRlKCkge1xuXHRcdGNvbnN0IGludGVybmFsQ29udGV4dFBhdGggPSB0aGlzLl9pbnRlcm5hbENvbnRleHRQYXRoPy5nZXRQYXRoKCk7XG5cdFx0bGV0IGZpbHRlckRlbGVnYXRlID0gXCJcIjtcblx0XHRpZiAodGhpcy5maWx0ZXJCYXJEZWxlZ2F0ZSkge1xuXHRcdFx0ZmlsdGVyRGVsZWdhdGUgPSB0aGlzLmZpbHRlckJhckRlbGVnYXRlO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHRmaWx0ZXJEZWxlZ2F0ZSA9IFwie25hbWU6J3NhcC9mZS9tYWNyb3MvZmlsdGVyQmFyL0ZpbHRlckJhckRlbGVnYXRlJywgcGF5bG9hZDoge2VudGl0eVR5cGVQYXRoOiAnXCIgKyBpbnRlcm5hbENvbnRleHRQYXRoICsgXCInfX1cIjtcblx0XHR9XG5cdFx0cmV0dXJuIHhtbGA8bWFjcm9GaWx0ZXJCYXI6RmlsdGVyQmFyQVBJXG4gICAgICAgIHhtbG5zOnRlbXBsYXRlPVwiaHR0cDovL3NjaGVtYXMuc2FwLmNvbS9zYXB1aTUvZXh0ZW5zaW9uL3NhcC51aS5jb3JlLnRlbXBsYXRlLzFcIlxuICAgICAgICB4bWxuczpjb3JlPVwic2FwLnVpLmNvcmVcIlxuICAgICAgICB4bWxuczptZGM9XCJzYXAudWkubWRjXCJcbiAgICAgICAgeG1sbnM6Y29udHJvbD1cInNhcC5mZS5jb3JlLmNvbnRyb2xzXCJcbiAgICAgICAgeG1sbnM6bWFjcm9GaWx0ZXJCYXI9XCJzYXAuZmUubWFjcm9zLmZpbHRlckJhclwiXG4gICAgICAgIHhtbG5zOm1hY3JvPVwic2FwLmZlLm1hY3Jvc1wiXG4gICAgICAgIHhtbG5zOmludGVybmFsTWFjcm89XCJzYXAuZmUubWFjcm9zLmludGVybmFsXCJcbiAgICAgICAgeG1sbnM6Y3VzdG9tRGF0YT1cImh0dHA6Ly9zY2hlbWFzLnNhcC5jb20vc2FwdWk1L2V4dGVuc2lvbi9zYXAudWkuY29yZS5DdXN0b21EYXRhLzFcIlxuXHRcdGlkPVwiJHt0aGlzLl9hcGlJZH1cIlxuXHRcdHNlYXJjaD1cIiR7dGhpcy5zZWFyY2h9XCJcblx0XHRmaWx0ZXJDaGFuZ2VkPVwiJHt0aGlzLmZpbHRlckNoYW5nZWR9XCJcblx0XHRhZnRlckNsZWFyPVwiJHt0aGlzLmFmdGVyQ2xlYXJ9XCJcblx0XHRpbnRlcm5hbFNlYXJjaD1cIiR7dGhpcy5pbnRlcm5hbFNlYXJjaH1cIlxuXHRcdGludGVybmFsRmlsdGVyQ2hhbmdlZD1cIiR7dGhpcy5pbnRlcm5hbEZpbHRlckNoYW5nZWR9XCJcblx0XHRzdGF0ZUNoYW5nZT1cIiR7dGhpcy5zdGF0ZUNoYW5nZX1cIlxuXHQ+XG5cdFx0PGNvbnRyb2w6RmlsdGVyQmFyXG5cdFx0XHRjb3JlOnJlcXVpcmU9XCJ7QVBJOiAnc2FwL2ZlL21hY3Jvcy9maWx0ZXJCYXIvRmlsdGVyQmFyQVBJJ31cIlxuXHRcdFx0aWQ9XCIke3RoaXMuX2NvbnRlbnRJZH1cIlxuXHRcdFx0bGl2ZU1vZGU9XCIke3RoaXMubGl2ZU1vZGV9XCJcblx0XHRcdGRlbGVnYXRlPVwiJHtmaWx0ZXJEZWxlZ2F0ZX1cIlxuXHRcdFx0dmFyaWFudEJhY2tyZWZlcmVuY2U9XCIke3RoaXMudmFyaWFudEJhY2tyZWZlcmVuY2V9XCJcblx0XHRcdHNob3dBZGFwdEZpbHRlcnNCdXR0b249XCIke3RoaXMuc2hvd0FkYXB0RmlsdGVyc0J1dHRvbn1cIlxuXHRcdFx0c2hvd0NsZWFyQnV0dG9uPVwiJHt0aGlzLnNob3dDbGVhckJ1dHRvbn1cIlxuXHRcdFx0cDEzbk1vZGU9XCIke3RoaXMucDEzbk1vZGV9XCJcblx0XHRcdHNlYXJjaD1cIkFQSS5oYW5kbGVTZWFyY2goJGV2ZW50KVwiXG5cdFx0XHRmaWx0ZXJzQ2hhbmdlZD1cIkFQSS5oYW5kbGVGaWx0ZXJDaGFuZ2VkKCRldmVudClcIlxuXHRcdFx0ZmlsdGVyQ29uZGl0aW9ucz1cIiR7dGhpcy5maWx0ZXJDb25kaXRpb25zfVwiXG5cdFx0XHRzdXNwZW5kU2VsZWN0aW9uPVwiJHt0aGlzLnN1c3BlbmRTZWxlY3Rpb259XCJcblx0XHRcdHNob3dNZXNzYWdlcz1cIiR7dGhpcy5zaG93TWVzc2FnZXN9XCJcblx0XHRcdHRvZ2dsZUNvbnRyb2w9XCIke3RoaXMudG9nZ2xlQ29udHJvbElkfVwiXG5cdFx0XHRpbml0aWFsTGF5b3V0PVwiJHt0aGlzLmluaXRpYWxMYXlvdXR9XCJcblx0XHRcdHByb3BlcnR5SW5mbz1cIiR7dGhpcy5wcm9wZXJ0eUluZm99XCJcblx0XHRcdGN1c3RvbURhdGE6bG9jYWxJZD1cIiR7dGhpcy5pZH1cIlxuXHRcdFx0dmlzaWJsZT1cIiR7dGhpcy52aXNpYmxlfVwiXG5cdFx0XHRjdXN0b21EYXRhOmhpZGVCYXNpY1NlYXJjaD1cIiR7dGhpcy5oaWRlQmFzaWNTZWFyY2h9XCJcblx0XHRcdGN1c3RvbURhdGE6c2hvd0RyYWZ0RWRpdFN0YXRlPVwiJHt0aGlzLnNob3dEcmFmdEVkaXRTdGF0ZX1cIlxuXHRcdFx0Y3VzdG9tRGF0YTp1c2VTZW1hbnRpY0RhdGVSYW5nZT1cIiR7dGhpcy51c2VTZW1hbnRpY0RhdGVSYW5nZX1cIlxuXHRcdFx0Y3VzdG9tRGF0YTplbnRpdHlUeXBlPVwiJHtpbnRlcm5hbENvbnRleHRQYXRofVwiXG5cdFx0XHRjdXN0b21EYXRhOnBhcmFtZXRlcnM9XCIke3RoaXMuX3BhcmFtZXRlcnN9XCJcblx0XHQ+XG5cdFx0XHQ8Y29udHJvbDpkZXBlbmRlbnRzPlxuXHRcdFx0XHQke3RoaXMuX3ZhbHVlSGVscHN9XG5cdFx0XHQ8L2NvbnRyb2w6ZGVwZW5kZW50cz5cblx0XHRcdCR7dGhpcy5nZXRTZWFyY2goKX1cblx0XHRcdDxjb250cm9sOmZpbHRlckl0ZW1zPlxuXHRcdFx0XHQke3RoaXMuX2ZpbHRlckZpZWxkc31cblx0XHRcdDwvY29udHJvbDpmaWx0ZXJJdGVtcz5cblx0XHQ8L2NvbnRyb2w6RmlsdGVyQmFyPlxuXHQ8L21hY3JvRmlsdGVyQmFyOkZpbHRlckJhckFQST5gO1xuXHR9XG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdUJBLE1BQU1BLDhCQUE4QixHQUFHLFVBQVVDLGdCQUF5QixFQUFFQyxpQkFBc0IsRUFBZTtJQUNoSEEsaUJBQWlCLENBQUNDLFFBQVEsR0FBR0QsaUJBQWlCLENBQUNFLEdBQUc7SUFDbERGLGlCQUFpQixDQUFDRSxHQUFHLEdBQUdGLGlCQUFpQixDQUFDRSxHQUFHLENBQUNDLE9BQU8sQ0FBQyxZQUFZLEVBQUUsRUFBRSxDQUFDO0lBQ3ZFSCxpQkFBaUIsQ0FBQ0ksS0FBSyxHQUFHTCxnQkFBZ0IsQ0FBQ00sWUFBWSxDQUFDLE9BQU8sQ0FBQztJQUNoRUwsaUJBQWlCLENBQUNNLFFBQVEsR0FBR1AsZ0JBQWdCLENBQUNNLFlBQVksQ0FBQyxVQUFVLENBQUMsS0FBSyxNQUFNO0lBQ2pGLE9BQU9MLGlCQUFpQjtFQUN6QixDQUFDOztFQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQXBCQSxJQTJCcUJPLGNBQWMsV0FObENDLG1CQUFtQixDQUFDO0lBQ3BCQyxJQUFJLEVBQUUsV0FBVztJQUNqQkMsU0FBUyxFQUFFLHdCQUF3QjtJQUNuQ0MsZUFBZSxFQUFFLGVBQWU7SUFDaENDLFdBQVcsRUFBRSxDQUFDLHNDQUFzQztFQUNyRCxDQUFDLENBQUMsVUFLQUMsY0FBYyxDQUFDO0lBQ2ZDLElBQUksRUFBRSxRQUFRO0lBQ2RDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQyxVQUdERixjQUFjLENBQUM7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O0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQXdCSCxLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FRRyxJQUFJO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FRbEIsWUFBWTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQWFBLElBQUk7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQVNoQixLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtNQUFBLE9BbUJHLEtBQUs7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQUtILEtBQUs7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7TUFBQSxPQUtILEtBQUs7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FhWixTQUFTO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FTUCxLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO01BQUEsT0FLSCxLQUFLO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7SUFBQTtJQUFBO0lBQUE7SUFBQTtFQUFBO0lBQUE7SUFBQTtJQUFBO0lBQUE7RUFBQTtJQUFBO0lBQUE7SUFBQTtJQUFBO0VBQUE7RUFBQTtFQUFBO0FBQUEifQ==
@@ -19,6 +19,7 @@ import type Context from "sap/ui/model/Context";
19
19
  import type ODataMetaModel from "sap/ui/model/odata/v4/ODataMetaModel";
20
20
  import type { PropertyInfo } from "../DelegateUtil";
21
21
  import type { FilterField } from "./FilterBarAPI";
22
+ import CommonUtils from "sap/fe/core/CommonUtils";
22
23
 
23
24
  const setCustomFilterFieldProperties = function (childFilterField: Element, aggregationObject: any): FilterField {
24
25
  aggregationObject.slotName = aggregationObject.key;
@@ -318,7 +319,7 @@ export default class FilterBarBlock extends BuildingBlockBase {
318
319
  oFilterConditions = getFilterConditions(oEntitySetContext, { selectionVariant: oSelectionVariant });
319
320
  this.filterConditions = oFilterConditions;
320
321
  }
321
- this._processPropertyInfos(this.propertyInfo);
322
+ this._processPropertyInfos(this.propertyInfo, oMetaModel as ODataMetaModel);
322
323
 
323
324
  const targetEntitySet = getInvolvedDataModelObjects(this.metaPath, this.contextPath).targetEntitySet as EntitySet;
324
325
  if (targetEntitySet?.annotations?.Common?.DraftRoot || targetEntitySet?.annotations?.Common?.DraftNode) {
@@ -341,7 +342,7 @@ export default class FilterBarBlock extends BuildingBlockBase {
341
342
  this.processSelectionFields();
342
343
  }
343
344
 
344
- _processPropertyInfos(propertyInfo: string) {
345
+ _processPropertyInfos(propertyInfo: string, model: ODataMetaModel): void {
345
346
  const aParameterFields: string[] = [];
346
347
  if (propertyInfo) {
347
348
  const sFetchedProperties = propertyInfo.replace(/\\{/g, "{").replace(/\\}/g, "}");
@@ -354,6 +355,12 @@ export default class FilterBarBlock extends BuildingBlockBase {
354
355
  if (propInfo.path === "$editState") {
355
356
  propInfo.label = editStateLabel;
356
357
  }
358
+ if ((propInfo.name)?.includes('/')) {
359
+ const annotationPath = propInfo.annotationPath
360
+ const propertyLocationPath = CommonHelper.getLocationForPropertyPath(model, annotationPath);
361
+ const propertyPath = annotationPath?.replace(`${propertyLocationPath}/`, "")
362
+ propInfo.required = propertyPath ? CommonUtils.getFilterRestrictionsByPath(propertyLocationPath, model)?.RequiredProperties?.includes(propertyPath) : propInfo.required;
363
+ }
357
364
  });
358
365
 
359
366
  this.propertyInfo = JSON.stringify(aFetchedProperties).replace(/\{/g, "\\{").replace(/\}/g, "\\}");
@@ -25,7 +25,7 @@ sap.ui.define(["sap/fe/core/library", "sap/fe/macros/filter/type/MultiValue", "s
25
25
  controls: [],
26
26
  elements: [],
27
27
  // eslint-disable-next-line no-template-curly-in-string
28
- version: "1.120.19",
28
+ version: "1.120.21",
29
29
  noLibraryCSS: true
30
30
  });
31
31
  thisLib.NavigationType = {
@@ -29,7 +29,7 @@ M_CONDITIONFIELDHELP_PERIOD=Obdobje
29
29
  T_COMMON_PROGRESS_INDICATOR_DISPLAY_VALUE_NO_UOM={0} od {1}
30
30
  T_COMMON_PROGRESS_INDICATOR_DISPLAY_VALUE_WITH_UOM={0} od {1} {2}
31
31
 
32
- M_COMMON_TABLE_CREATE=Kreiraj
32
+ M_COMMON_TABLE_CREATE=Ustvari
33
33
 
34
34
  M_COMMON_TABLE_DELETE=Izbri\u0161i
35
35