@sapui5/sap.fe.controls 1.147.0 → 1.148.0

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.
@@ -5,6 +5,7 @@
5
5
  sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format/DateFormat", "sap/ui/model/FilterOperator", "sap/ui/model/odata/type/DateTimeOffset", "./ErrorMessageHandler"], function (deepEqual, Lib, DateFormat, FilterOperator, DateTimeOffset, ErrorMessageHandler) {
6
6
  "use strict";
7
7
 
8
+ var _exports = {};
8
9
  const resourceBundle = Lib.getResourceBundleFor("sap.fe.controls");
9
10
  const dateTimeOffset = new DateTimeOffset();
10
11
  function areItemsSame(arr1, arr2) {
@@ -235,6 +236,16 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
235
236
  selectedValues: values
236
237
  };
237
238
  }
239
+
240
+ /**
241
+ * Extracts the plain property name from an OData-style path (e.g. "/SalesOrderManage/SoldToParty" → "SoldToParty").
242
+ * @param path The OData-style path or plain property name to resolve.
243
+ * @returns The last path segment, or the original string if no "/" is present.
244
+ */
245
+ function resolvePropertyName(path) {
246
+ return path.includes("/") ? path.split("/").filter(Boolean).pop() ?? path : path;
247
+ }
248
+ _exports.resolvePropertyName = resolvePropertyName;
238
249
  const EasyFilterUtils = {
239
250
  areItemsSame,
240
251
  areCodeListsSame,
@@ -244,8 +255,9 @@ sap.ui.define(["sap/base/util/deepEqual", "sap/ui/core/Lib", "sap/ui/core/format
244
255
  mapOperatorForBetweenOperator,
245
256
  isBetweenSelectedValues,
246
257
  formatData,
247
- mapOperatorForValueHelp
258
+ mapOperatorForValueHelp,
259
+ resolvePropertyName
248
260
  };
249
261
  return EasyFilterUtils;
250
262
  }, false);
251
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsImZpcnN0VmFsdWUiLCJpbmRleCIsIm90aGVyVmFsdWUiLCJEYXRlIiwiZGVlcEVxdWFsIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRmlsdGVyT3BlcmF0b3IiLCJHVCIsIkxUIiwiR0UiLCJMRSIsIkVRIiwiQ29udGFpbnMiLCJFbmRzV2l0aCIsIlN0YXJ0c1dpdGgiLCJORSIsIk5vdENvbnRhaW5zIiwiTm90RW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwidG9TdHJpbmciLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwidmFsdWVzIiwibmV3VmFsdWUxIiwibmV3VmFsdWUyIiwiQlQiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIk5CIiwiZ2V0VGV4dCIsImZvcm1hdERhdGEiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZXJyb3JNZXNzYWdlSGFuZGxlciIsIkVycm9yTWVzc2FnZUhhbmRsZXIiLCJmaWx0ZXJWYWx1ZSIsImZpbHRlckNyaXRlcmlhIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiaXNJblZhbGlkVG9rZW4iLCJ2YWxpZGF0ZSIsInVwZGF0ZVRva2VucyIsImhhc0Vycm9ycyIsImdldEVycm9yTWVzc2FnZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwicHVzaCIsImxhYmVsIiwidHlwZSIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwiRWFzeUZpbHRlclV0aWxzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBFcXVhbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRGF0ZUZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L0RhdGVGb3JtYXRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0VG9rZW5EZWZpbml0aW9uLFxuXHRUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbixcblx0VG9rZW5UeXBlLFxuXHRWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRXJyb3JNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9FcnJvck1lc3NhZ2VIYW5kbGVyXCI7XG5cbnR5cGUgY29kZUxpc3RUeXBlID0gUHJvcGVydHlNZXRhZGF0YVtcImNvZGVMaXN0XCJdO1xudHlwZSBmaW5hbENvZGVMaXN0VHlwZSA9IHsgdmFsdWU6IFByaW1pdGl2ZVR5cGU7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXTtcbmNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcbmNvbnN0IGRhdGVUaW1lT2Zmc2V0ID0gbmV3IERhdGVUaW1lT2Zmc2V0KCk7XG5cbmZ1bmN0aW9uIGFyZUl0ZW1zU2FtZShcblx0YXJyMTogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRhcnIyOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cbik6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeSgoZmlyc3RWYWx1ZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3RoZXJWYWx1ZSA9IGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBEYXRlIG9iamVjdHNcblx0XHRcdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IG90aGVyVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRlZXBFcXVhbChmaXJzdFZhbHVlLCBvdGhlclZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBvYmplY3RzIHdpdGggZGVlcCBlcXVhbGl0eVxuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG90aGVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGVlcEVxdWFsKGZpcnN0VmFsdWUudmFsdWUsIG90aGVyVmFsdWUudmFsdWUpICYmIGZpcnN0VmFsdWUuZGVzY3JpcHRpb24gPT09IG90aGVyVmFsdWUuZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuXHRcdFx0XHRyZXR1cm4gZmlyc3RWYWx1ZSA9PT0gb3RoZXJWYWx1ZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuZnVuY3Rpb24gYXJlQXJyYXlTYW1lKGFycjE6IHJlYWRvbmx5IHVua25vd25bXSwgYXJyMjogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmVDb2RlTGlzdHNTYW1lKGFycjE6IGNvZGVMaXN0VHlwZSwgYXJyMjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFyck5ldzE6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIxKTtcblx0Y29uc3QgYXJyTmV3MjogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjIpO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXG5cdGNvbnN0IHZhbHVlMSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGNvbnN0IHZhbHVlMiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGlmICghZGVzY3JpcHRpb25OZXcxIHx8ICFkZXNjcmlwdGlvbk5ldzIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFyZUFycmF5U2FtZShkZXNjcmlwdGlvbk5ldzEsIGRlc2NyaXB0aW9uTmV3MikgJiYgYXJlQXJyYXlTYW1lKHZhbHVlMSBhcyBQcmltaXRpdmVUeXBlLCB2YWx1ZTIgYXMgUHJpbWl0aXZlVHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVMaXN0QXJyYXkoYXJyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkPiB7XG5cdGlmICh0eXBlb2YgYXJyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYXJyKCk7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZTogRGF0ZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRsZXQgZm9ybWF0dGVkRGF0ZVRpbWUgPSBcIlwiO1xuXHRpZiAoaXNEYXRlVGltZU9mZnNldCkge1xuXHRcdHJldHVybiBkYXRlVGltZU9mZnNldC5mb3JtYXRWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIikgYXMgc3RyaW5nO1xuXHR9XG5cdHN3aXRjaCAodG9rZW5UeXBlKSB7XG5cdFx0Y2FzZSBcIkNhbGVuZGFyXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybWF0dGVkRGF0ZVRpbWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWUuXG4gKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB0b2tlblR5cGUgVGhlIHRva2VuJ3MgdHlwZVxuICogQHBhcmFtIGlzRGF0ZVRpbWVPZmZzZXQgQ2hlY2tzIGlmIHRoZSBkYXRhIHR5cGUgaXMgb2YgRGF0ZVRpbWVPZmZzZXRcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBtYXBPcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWU6IG51bWJlciB8IHN0cmluZyA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWUsIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUgPSB2YWx1ZTtcblx0fVxuXG5cdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdUOlxuXHRcdFx0cmV0dXJuIGA+ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxUOlxuXHRcdFx0cmV0dXJuIGA8ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdFOlxuXHRcdFx0cmV0dXJuIGA+PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MRTpcblx0XHRcdHJldHVybiBgPD0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRVE6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkNvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5FOlxuXHRcdFx0cmV0dXJuIGAhPSgke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KilgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWV9KilgO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbmV3VmFsdWU/LnRvU3RyaW5nKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogQ29kZUxpc3RUeXBlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiBtYXBPcGVyYXRvcihvcGVyYXRvciwgdmFsdWUuZGVzY3JpcHRpb24sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzIHwgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlMTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGxldCBuZXdWYWx1ZTI6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1swXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzBdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdmFsdWVzWzFdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzFdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMV0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMV0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdO1xuXHR9XG5cdGlmIChvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQpIHtcblx0XHRyZXR1cm4gYCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfWA7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQjtcbn1cblxuZnVuY3Rpb24gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiB2YWx1ZVxuXHRcdD8gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX1RSVUVcIilcblx0XHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19GQUxTRVwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0YShcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWVzOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdLFxuXHRmaWx0ZXJCYXJNZXRhZGF0YTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXSxcblx0c2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVyczogKG1zZzogc3RyaW5nKSA9PiB2b2lkXG4pOiB2b2lkIHtcblx0aWYgKCFmaWx0ZXJWYWx1ZXMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXHRjb25zdCBlcnJvck1lc3NhZ2VIYW5kbGVyID0gbmV3IEVycm9yTWVzc2FnZUhhbmRsZXIoKTtcblxuXHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdGlmICghZmlsdGVyQ3JpdGVyaWEpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBub24tZmlsdGVyYWJsZSBhbmQgaGlkZGVuIGZpbHRlcnNcblx0XHRpZiAoIWVycm9yTWVzc2FnZUhhbmRsZXIuaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWEpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBWYWxpZGF0ZSBmb3IgZmlsdGVyIHZhbHVlIHJlc3RyaWN0aW9uXG5cdFx0Y29uc3QgaXNJblZhbGlkVG9rZW4gPSAhZXJyb3JNZXNzYWdlSGFuZGxlci52YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYSwgZmlsdGVyVmFsdWUpO1xuXG5cdFx0Ly8gVXBkYXRlIHRva2Vuc1xuXHRcdHVwZGF0ZVRva2Vucyh0b2tlbnMsIGZpbHRlclZhbHVlLCBmaWx0ZXJDcml0ZXJpYSwgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VucywgaXNJblZhbGlkVG9rZW4pO1xuXHR9XG5cblx0Ly8gSGFuZGxlIHZhbGlkYXRpb24gbWVzc2FnZXNcblx0aWYgKGVycm9yTWVzc2FnZUhhbmRsZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKGVycm9yTWVzc2FnZUhhbmRsZXIuZ2V0RXJyb3JNZXNzYWdlKCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2Vucyhcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWU6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl1bMF0sXG5cdGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdGlzSW5WYWxpZFRva2VuOiBib29sZWFuXG4pOiB2b2lkIHtcblx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRjb25zdCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gY3JlYXRlS2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyhmaWx0ZXJWYWx1ZSk7XG5cblx0aWYgKHRva2VuSW5kZXggPT09IC0xKSB7XG5cdFx0Ly8gQWRkIG5ldyB0b2tlblxuXHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdGtleTogZmlsdGVyVmFsdWUubmFtZSxcblx0XHRcdGxhYmVsOiBmaWx0ZXJDcml0ZXJpYS5sYWJlbCBhcyBzdHJpbmcsXG5cdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBpc0luVmFsaWRUb2tlbiA/IFtdIDogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0dHlwZTogZmlsdGVyQ3JpdGVyaWEudHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRidXN5OiBmaWx0ZXJDcml0ZXJpYS50eXBlID09PSBcIlZhbHVlSGVscFwiXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmIChpc0luVmFsaWRUb2tlbikge1xuXHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKChjdXJyZW50VG9rZW4uaXNSZXF1aXJlZCA/PyBmYWxzZSkgJiYgIXZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0pIHtcblx0XHRcdGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdO1xuXHRcdFx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdChjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKS5wdXNoKGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdWzBdKTogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24ge1xuXHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXG5cdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdH07XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7RUFxQkEsTUFBTUEsY0FBYyxHQUFHQyxHQUFHLENBQUNDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFFO0VBQ25FLE1BQU1DLGNBQWMsR0FBRyxJQUFJQyxjQUFjLENBQUMsQ0FBQztFQUUzQyxTQUFTQyxZQUFZQSxDQUNwQkMsSUFBb0YsRUFDcEZDLElBQW9GLEVBQzFFO0lBQ1YsSUFBSUQsSUFBSSxDQUFDRSxNQUFNLEtBQUtELElBQUksQ0FBQ0MsTUFBTSxFQUFFO01BQ2hDLE9BQU8sS0FBSztJQUNiOztJQUVBO0lBQ0EsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILElBQUksQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRTtNQUNyQyxJQUNDSCxJQUFJLENBQUNHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLEtBQUtILElBQUksQ0FBQ0UsQ0FBQyxDQUFDLENBQUNDLFFBQVEsSUFDckMsQ0FBQ0osSUFBSSxDQUFDRyxDQUFDLENBQUMsQ0FBQ0UsY0FBYyxDQUFDQyxLQUFLLENBQUMsQ0FBQ0MsVUFBVSxFQUFFQyxLQUFLLEtBQUs7UUFDcEQsTUFBTUMsVUFBVSxHQUFHUixJQUFJLENBQUNFLENBQUMsQ0FB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
263
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXNvdXJjZUJ1bmRsZSIsIkxpYiIsImdldFJlc291cmNlQnVuZGxlRm9yIiwiZGF0ZVRpbWVPZmZzZXQiLCJEYXRlVGltZU9mZnNldCIsImFyZUl0ZW1zU2FtZSIsImFycjEiLCJhcnIyIiwibGVuZ3RoIiwiaSIsIm9wZXJhdG9yIiwic2VsZWN0ZWRWYWx1ZXMiLCJldmVyeSIsImZpcnN0VmFsdWUiLCJpbmRleCIsIm90aGVyVmFsdWUiLCJEYXRlIiwiZGVlcEVxdWFsIiwidmFsdWUiLCJkZXNjcmlwdGlvbiIsImFyZUFycmF5U2FtZSIsImFyZUNvZGVMaXN0c1NhbWUiLCJhcnJOZXcxIiwiZ2V0Q29kZUxpc3RBcnJheSIsImFyck5ldzIiLCJkZXNjcmlwdGlvbk5ldzEiLCJtYXAiLCJkYXRhIiwiZGVzY3JpcHRpb25OZXcyIiwidmFsdWUxIiwidmFsdWUyIiwiYXJyIiwiY29udmVydERhdGVUb1N0cmluZyIsInRva2VuVHlwZSIsImlzRGF0ZVRpbWVPZmZzZXQiLCJmb3JtYXR0ZWREYXRlVGltZSIsImZvcm1hdFZhbHVlIiwiRGF0ZUZvcm1hdCIsImdldERhdGVJbnN0YW5jZSIsImZvcm1hdCIsImdldFRpbWVJbnN0YW5jZSIsIm1hcE9wZXJhdG9yIiwibmV3VmFsdWUiLCJjb252ZXJ0Qm9vbFRvU3RyaW5nIiwiRmlsdGVyT3BlcmF0b3IiLCJHVCIsIkxUIiwiR0UiLCJMRSIsIkVRIiwiQ29udGFpbnMiLCJFbmRzV2l0aCIsIlN0YXJ0c1dpdGgiLCJORSIsIk5vdENvbnRhaW5zIiwiTm90RW5kc1dpdGgiLCJOb3RTdGFydHNXaXRoIiwidG9TdHJpbmciLCJtYXBPcGVyYXRvckZvclZhbHVlSGVscCIsIm1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yIiwidmFsdWVzIiwibmV3VmFsdWUxIiwibmV3VmFsdWUyIiwiQlQiLCJpc0JldHdlZW5TZWxlY3RlZFZhbHVlcyIsIk5CIiwiZ2V0VGV4dCIsImZvcm1hdERhdGEiLCJ0b2tlbnMiLCJmaWx0ZXJWYWx1ZXMiLCJmaWx0ZXJCYXJNZXRhZGF0YSIsInNldE1lc3NhZ2VTdHJpcEZvclZhbGlkYXRlZEZpbHRlcnMiLCJ2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zIiwiZXJyb3JNZXNzYWdlSGFuZGxlciIsIkVycm9yTWVzc2FnZUhhbmRsZXIiLCJmaWx0ZXJWYWx1ZSIsImZpbHRlckNyaXRlcmlhIiwiZmluZCIsImZpZWxkIiwibmFtZSIsImlzRmlsdGVyYWJsZVByb3BlcnR5IiwiaXNJblZhbGlkVG9rZW4iLCJ2YWxpZGF0ZSIsInVwZGF0ZVRva2VucyIsImhhc0Vycm9ycyIsImdldEVycm9yTWVzc2FnZSIsInRva2VuSW5kZXgiLCJmaW5kSW5kZXgiLCJ0b2tlbiIsImtleSIsImtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMiLCJjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzIiwicHVzaCIsImxhYmVsIiwidHlwZSIsImJ1c3kiLCJjdXJyZW50VG9rZW4iLCJpc1JlcXVpcmVkIiwiRWFzeUZpbHRlclV0aWxzIiwicmVzb2x2ZVByb3BlcnR5TmFtZSIsInBhdGgiLCJpbmNsdWRlcyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsInBvcCIsIl9leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFByaW1pdGl2ZVR5cGUgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvRWRtXCI7XG5pbXBvcnQgZGVlcEVxdWFsIGZyb20gXCJzYXAvYmFzZS91dGlsL2RlZXBFcXVhbFwiO1xuaW1wb3J0IExpYiBmcm9tIFwic2FwL3VpL2NvcmUvTGliXCI7XG5pbXBvcnQgRGF0ZUZvcm1hdCBmcm9tIFwic2FwL3VpL2NvcmUvZm9ybWF0L0RhdGVGb3JtYXRcIjtcbmltcG9ydCBGaWx0ZXJPcGVyYXRvciBmcm9tIFwic2FwL3VpL21vZGVsL0ZpbHRlck9wZXJhdG9yXCI7XG5pbXBvcnQgRGF0ZVRpbWVPZmZzZXQgZnJvbSBcInNhcC91aS9tb2RlbC9vZGF0YS90eXBlL0RhdGVUaW1lT2Zmc2V0XCI7XG5pbXBvcnQgdHlwZSB7IEVhc3lGaWx0ZXJSZXN1bHQsIFByb3BlcnR5TWV0YWRhdGEgfSBmcm9tIFwidXgvZW5nL2Zpb3JpYWkvcmV1c2UvZWFzeWZpbHRlci9FYXN5RmlsdGVyXCI7XG5pbXBvcnQgdHlwZSB7XG5cdEJldHdlZW5TZWxlY3RlZFZhbHVlcyxcblx0Q29kZUxpc3RUeXBlLFxuXHRFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0VG9rZW5EZWZpbml0aW9uLFxuXHRUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbixcblx0VG9rZW5UeXBlLFxuXHRWYWx1ZUhlbHBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvblxufSBmcm9tIFwiLi9FYXN5RmlsdGVyQmFyQ29udGFpbmVyXCI7XG5pbXBvcnQgRXJyb3JNZXNzYWdlSGFuZGxlciBmcm9tIFwiLi9FcnJvck1lc3NhZ2VIYW5kbGVyXCI7XG5cbnR5cGUgY29kZUxpc3RUeXBlID0gUHJvcGVydHlNZXRhZGF0YVtcImNvZGVMaXN0XCJdO1xudHlwZSBmaW5hbENvZGVMaXN0VHlwZSA9IHsgdmFsdWU6IFByaW1pdGl2ZVR5cGU7IGRlc2NyaXB0aW9uPzogc3RyaW5nIH1bXTtcbmNvbnN0IHJlc291cmNlQnVuZGxlID0gTGliLmdldFJlc291cmNlQnVuZGxlRm9yKFwic2FwLmZlLmNvbnRyb2xzXCIpITtcbmNvbnN0IGRhdGVUaW1lT2Zmc2V0ID0gbmV3IERhdGVUaW1lT2Zmc2V0KCk7XG5cbmZ1bmN0aW9uIGFyZUl0ZW1zU2FtZShcblx0YXJyMTogcmVhZG9ubHkgVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb25bXSB8IFZhbHVlSGVscFNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdLFxuXHRhcnIyOiByZWFkb25seSBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdIHwgVmFsdWVIZWxwU2VsZWN0ZWRWYWx1ZXNEZWZpbml0aW9uW11cbik6IGJvb2xlYW4ge1xuXHRpZiAoYXJyMS5sZW5ndGggIT09IGFycjIubGVuZ3RoKSB7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoXG5cdFx0XHRhcnIxW2ldLm9wZXJhdG9yICE9PSBhcnIyW2ldLm9wZXJhdG9yIHx8XG5cdFx0XHQhYXJyMVtpXS5zZWxlY3RlZFZhbHVlcy5ldmVyeSgoZmlyc3RWYWx1ZSwgaW5kZXgpID0+IHtcblx0XHRcdFx0Y29uc3Qgb3RoZXJWYWx1ZSA9IGFycjJbaV0uc2VsZWN0ZWRWYWx1ZXNbaW5kZXhdO1xuXG5cdFx0XHRcdC8vIEhhbmRsZSBEYXRlIG9iamVjdHNcblx0XHRcdFx0aWYgKGZpcnN0VmFsdWUgaW5zdGFuY2VvZiBEYXRlIHx8IG90aGVyVmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGRlZXBFcXVhbChmaXJzdFZhbHVlLCBvdGhlclZhbHVlKTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdC8vIEhhbmRsZSBvYmplY3RzIHdpdGggZGVlcCBlcXVhbGl0eVxuXHRcdFx0XHRpZiAodHlwZW9mIGZpcnN0VmFsdWUgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIG90aGVyVmFsdWUgPT09IFwib2JqZWN0XCIpIHtcblx0XHRcdFx0XHRyZXR1cm4gZGVlcEVxdWFsKGZpcnN0VmFsdWUudmFsdWUsIG90aGVyVmFsdWUudmFsdWUpICYmIGZpcnN0VmFsdWUuZGVzY3JpcHRpb24gPT09IG90aGVyVmFsdWUuZGVzY3JpcHRpb247XG5cdFx0XHRcdH1cblxuXHRcdFx0XHQvLyBGYWxsYmFjayB0byBkaXJlY3QgY29tcGFyaXNvblxuXHRcdFx0XHRyZXR1cm4gZmlyc3RWYWx1ZSA9PT0gb3RoZXJWYWx1ZTtcblx0XHRcdH0pXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRydWU7IC8vIEFycmF5cyBhcmUgdGhlIHNhbWVcbn1cblxuZnVuY3Rpb24gYXJlQXJyYXlTYW1lKGFycjE6IHJlYWRvbmx5IHVua25vd25bXSwgYXJyMjogcmVhZG9ubHkgdW5rbm93bltdKTogYm9vbGVhbiB7XG5cdGlmIChhcnIxLmxlbmd0aCAhPT0gYXJyMi5sZW5ndGgpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0Ly8gQ29tcGFyZSBlbGVtZW50cyBvZiBib3RoIGFycmF5c1xuXHRmb3IgKGxldCBpID0gMDsgaSA8IGFycjEubGVuZ3RoOyBpKyspIHtcblx0XHRpZiAoYXJyMVtpXSAhPT0gYXJyMltpXSkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gdHJ1ZTsgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmVDb2RlTGlzdHNTYW1lKGFycjE6IGNvZGVMaXN0VHlwZSwgYXJyMjogY29kZUxpc3RUeXBlKTogUHJvbWlzZTxib29sZWFuPiB7XG5cdGNvbnN0IGFyck5ldzE6IGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkID0gYXdhaXQgZ2V0Q29kZUxpc3RBcnJheShhcnIxKTtcblx0Y29uc3QgYXJyTmV3MjogZmluYWxDb2RlTGlzdFR5cGUgfCB1bmRlZmluZWQgPSBhd2FpdCBnZXRDb2RlTGlzdEFycmF5KGFycjIpO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzEgPSBhcnJOZXcxPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXHRjb25zdCBkZXNjcmlwdGlvbk5ldzIgPSBhcnJOZXcyPy5tYXAoKGRhdGEpID0+IGRhdGEuZGVzY3JpcHRpb24pO1xuXG5cdGNvbnN0IHZhbHVlMSA9IGFyck5ldzE/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGNvbnN0IHZhbHVlMiA9IGFyck5ldzI/Lm1hcCgoZGF0YSkgPT4gZGF0YS52YWx1ZSk7XG5cdGlmICghZGVzY3JpcHRpb25OZXcxIHx8ICFkZXNjcmlwdGlvbk5ldzIpIHtcblx0XHRyZXR1cm4gZmFsc2U7XG5cdH1cblx0cmV0dXJuIGFyZUFycmF5U2FtZShkZXNjcmlwdGlvbk5ldzEsIGRlc2NyaXB0aW9uTmV3MikgJiYgYXJlQXJyYXlTYW1lKHZhbHVlMSBhcyBQcmltaXRpdmVUeXBlLCB2YWx1ZTIgYXMgUHJpbWl0aXZlVHlwZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldENvZGVMaXN0QXJyYXkoYXJyOiBjb2RlTGlzdFR5cGUpOiBQcm9taXNlPGZpbmFsQ29kZUxpc3RUeXBlIHwgdW5kZWZpbmVkPiB7XG5cdGlmICh0eXBlb2YgYXJyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0XHRyZXR1cm4gYXJyKCk7XG5cdH1cblx0cmV0dXJuIGFycjtcbn1cblxuZnVuY3Rpb24gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZTogRGF0ZSwgdG9rZW5UeXBlOiBUb2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuXHRsZXQgZm9ybWF0dGVkRGF0ZVRpbWUgPSBcIlwiO1xuXHRpZiAoaXNEYXRlVGltZU9mZnNldCkge1xuXHRcdHJldHVybiBkYXRlVGltZU9mZnNldC5mb3JtYXRWYWx1ZSh2YWx1ZSwgXCJzdHJpbmdcIikgYXMgc3RyaW5nO1xuXHR9XG5cdHN3aXRjaCAodG9rZW5UeXBlKSB7XG5cdFx0Y2FzZSBcIkNhbGVuZGFyXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGNhc2UgXCJUaW1lXCI6XG5cdFx0XHRmb3JtYXR0ZWREYXRlVGltZSA9IERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKCkuZm9ybWF0KHZhbHVlKTtcblx0XHRcdGJyZWFrO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRicmVhaztcblx0fVxuXHRyZXR1cm4gZm9ybWF0dGVkRGF0ZVRpbWU7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvcGVyYXRvciBhbmQgdmFsdWUuXG4gKiBAcGFyYW0gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIHRvIHJlcHJlc2VudFxuICogQHBhcmFtIHZhbHVlIFRoZSB2YWx1ZSB0byByZXByZXNlbnRcbiAqIEBwYXJhbSB0b2tlblR5cGUgVGhlIHRva2VuJ3MgdHlwZVxuICogQHBhcmFtIGlzRGF0ZVRpbWVPZmZzZXQgQ2hlY2tzIGlmIHRoZSBkYXRhIHR5cGUgaXMgb2YgRGF0ZVRpbWVPZmZzZXRcbiAqIEByZXR1cm5zIFRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIG9wZXJhdG9yIGFuZCB2YWx1ZVxuICovXG5mdW5jdGlvbiBtYXBPcGVyYXRvcihcblx0b3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLFxuXHR2YWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IERhdGUsXG5cdHRva2VuVHlwZTogVG9rZW5UeXBlLFxuXHRpc0RhdGVUaW1lT2Zmc2V0OiBib29sZWFuXG4pOiBzdHJpbmcge1xuXHRsZXQgbmV3VmFsdWU6IG51bWJlciB8IHN0cmluZyA9IFwiXCI7XG5cdGlmICh0eXBlb2YgdmFsdWUgPT09IFwiYm9vbGVhblwiKSB7XG5cdFx0bmV3VmFsdWUgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlKTtcblx0fSBlbHNlIGlmICh2YWx1ZSBpbnN0YW5jZW9mIERhdGUpIHtcblx0XHRuZXdWYWx1ZSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWUsIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUgPSB2YWx1ZTtcblx0fVxuXG5cdHN3aXRjaCAob3BlcmF0b3IpIHtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdUOlxuXHRcdFx0cmV0dXJuIGA+ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkxUOlxuXHRcdFx0cmV0dXJuIGA8ICR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkdFOlxuXHRcdFx0cmV0dXJuIGA+PSAke25ld1ZhbHVlfWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5MRTpcblx0XHRcdHJldHVybiBgPD0gJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuRVE6XG5cdFx0XHRyZXR1cm4gYCR7bmV3VmFsdWV9YDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkNvbnRhaW5zOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLkVuZHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAqJHtuZXdWYWx1ZX1gO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuU3RhcnRzV2l0aDpcblx0XHRcdHJldHVybiBgJHtuZXdWYWx1ZX0qYDtcblx0XHRjYXNlIEZpbHRlck9wZXJhdG9yLk5FOlxuXHRcdFx0cmV0dXJuIGAhPSgke25ld1ZhbHVlfSlgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90Q29udGFpbnM6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KilgO1xuXHRcdGNhc2UgRmlsdGVyT3BlcmF0b3IuTm90RW5kc1dpdGg6XG5cdFx0XHRyZXR1cm4gYCEoKiR7bmV3VmFsdWV9KWA7XG5cdFx0Y2FzZSBGaWx0ZXJPcGVyYXRvci5Ob3RTdGFydHNXaXRoOlxuXHRcdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWV9KilgO1xuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gbmV3VmFsdWU/LnRvU3RyaW5nKCk7XG5cdH1cbn1cblxuZnVuY3Rpb24gbWFwT3BlcmF0b3JGb3JWYWx1ZUhlbHAob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9yLCB2YWx1ZTogQ29kZUxpc3RUeXBlLCB0b2tlblR5cGU6IFRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldDogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiBtYXBPcGVyYXRvcihvcGVyYXRvciwgdmFsdWUuZGVzY3JpcHRpb24sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG59XG5cbmZ1bmN0aW9uIG1hcE9wZXJhdG9yRm9yQmV0d2Vlbk9wZXJhdG9yKFxuXHRvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3IsXG5cdHZhbHVlczogQmV0d2VlblNlbGVjdGVkVmFsdWVzIHwgVmFsdWVIZWxwQmV0d2VlblNlbGVjdGVkVmFsdWVzLFxuXHR0b2tlblR5cGU6IFRva2VuVHlwZSxcblx0aXNEYXRlVGltZU9mZnNldDogYm9vbGVhblxuKTogc3RyaW5nIHtcblx0bGV0IG5ld1ZhbHVlMTogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IFwiXCI7XG5cdGxldCBuZXdWYWx1ZTI6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBcIlwiO1xuXHRpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJib29sZWFuXCIpIHtcblx0XHRuZXdWYWx1ZTEgPSBjb252ZXJ0Qm9vbFRvU3RyaW5nKHZhbHVlc1swXSk7XG5cdH0gZWxzZSBpZiAodmFsdWVzWzBdIGluc3RhbmNlb2YgRGF0ZSkge1xuXHRcdG5ld1ZhbHVlMSA9IGNvbnZlcnREYXRlVG9TdHJpbmcodmFsdWVzWzBdLCB0b2tlblR5cGUsIGlzRGF0ZVRpbWVPZmZzZXQpO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZXNbMF0gPT09IFwib2JqZWN0XCIpIHtcblx0XHRuZXdWYWx1ZTEgPSB2YWx1ZXNbMF0uZGVzY3JpcHRpb24gYXMgc3RyaW5nO1xuXHR9IGVsc2Uge1xuXHRcdG5ld1ZhbHVlMSA9IHZhbHVlc1swXTtcblx0fVxuXG5cdGlmICh0eXBlb2YgdmFsdWVzWzFdID09PSBcImJvb2xlYW5cIikge1xuXHRcdG5ld1ZhbHVlMiA9IGNvbnZlcnRCb29sVG9TdHJpbmcodmFsdWVzWzFdKTtcblx0fSBlbHNlIGlmICh2YWx1ZXNbMV0gaW5zdGFuY2VvZiBEYXRlKSB7XG5cdFx0bmV3VmFsdWUyID0gY29udmVydERhdGVUb1N0cmluZyh2YWx1ZXNbMV0sIHRva2VuVHlwZSwgaXNEYXRlVGltZU9mZnNldCk7XG5cdH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlc1swXSA9PT0gXCJvYmplY3RcIikge1xuXHRcdG5ld1ZhbHVlMiA9IHZhbHVlc1sxXS5kZXNjcmlwdGlvbiBhcyBzdHJpbmc7XG5cdH0gZWxzZSB7XG5cdFx0bmV3VmFsdWUyID0gdmFsdWVzWzFdO1xuXHR9XG5cdGlmIChvcGVyYXRvciA9PT0gRmlsdGVyT3BlcmF0b3IuQlQpIHtcblx0XHRyZXR1cm4gYCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfWA7XG5cdH0gZWxzZSB7XG5cdFx0cmV0dXJuIGAhKCR7bmV3VmFsdWUxfS4uLiR7bmV3VmFsdWUyfSlgO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGlzQmV0d2VlblNlbGVjdGVkVmFsdWVzKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcik6IGJvb2xlYW4ge1xuXHRyZXR1cm4gb3BlcmF0b3IgPT09IEZpbHRlck9wZXJhdG9yLkJUIHx8IG9wZXJhdG9yID09PSBGaWx0ZXJPcGVyYXRvci5OQjtcbn1cblxuZnVuY3Rpb24gY29udmVydEJvb2xUb1N0cmluZyh2YWx1ZTogYm9vbGVhbik6IHN0cmluZyB7XG5cdHJldHVybiB2YWx1ZVxuXHRcdD8gcmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIk1fRUFTWV9GSUxURVJfU0VMRUNURURfVkFMVUVTX1RSVUVcIilcblx0XHQ6IHJlc291cmNlQnVuZGxlLmdldFRleHQoXCJNX0VBU1lfRklMVEVSX1NFTEVDVEVEX1ZBTFVFU19GQUxTRVwiKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0RGF0YShcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWVzOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdLFxuXHRmaWx0ZXJCYXJNZXRhZGF0YTogRWFzeUZpbHRlclByb3BlcnR5TWV0YWRhdGFbXSxcblx0c2V0TWVzc2FnZVN0cmlwRm9yVmFsaWRhdGVkRmlsdGVyczogKG1zZzogc3RyaW5nKSA9PiB2b2lkXG4pOiB2b2lkIHtcblx0aWYgKCFmaWx0ZXJWYWx1ZXMpIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2aXNpdGVkTWFwRm9yTWFuZGF0b3J5VG9rZW5zOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXHRjb25zdCBlcnJvck1lc3NhZ2VIYW5kbGVyID0gbmV3IEVycm9yTWVzc2FnZUhhbmRsZXIoKTtcblxuXHRmb3IgKGNvbnN0IGZpbHRlclZhbHVlIG9mIGZpbHRlclZhbHVlcykge1xuXHRcdGNvbnN0IGZpbHRlckNyaXRlcmlhID0gZmlsdGVyQmFyTWV0YWRhdGEuZmluZCgoZmllbGQpID0+IGZpZWxkLm5hbWUgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRcdGlmICghZmlsdGVyQ3JpdGVyaWEpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIEhhbmRsZSBub24tZmlsdGVyYWJsZSBhbmQgaGlkZGVuIGZpbHRlcnNcblx0XHRpZiAoIWVycm9yTWVzc2FnZUhhbmRsZXIuaXNGaWx0ZXJhYmxlUHJvcGVydHkoZmlsdGVyQ3JpdGVyaWEpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBWYWxpZGF0ZSBmb3IgZmlsdGVyIHZhbHVlIHJlc3RyaWN0aW9uXG5cdFx0Y29uc3QgaXNJblZhbGlkVG9rZW4gPSAhZXJyb3JNZXNzYWdlSGFuZGxlci52YWxpZGF0ZShmaWx0ZXJDcml0ZXJpYSwgZmlsdGVyVmFsdWUpO1xuXG5cdFx0Ly8gVXBkYXRlIHRva2Vuc1xuXHRcdHVwZGF0ZVRva2Vucyh0b2tlbnMsIGZpbHRlclZhbHVlLCBmaWx0ZXJDcml0ZXJpYSwgdmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VucywgaXNJblZhbGlkVG9rZW4pO1xuXHR9XG5cblx0Ly8gSGFuZGxlIHZhbGlkYXRpb24gbWVzc2FnZXNcblx0aWYgKGVycm9yTWVzc2FnZUhhbmRsZXIuaGFzRXJyb3JzKCkpIHtcblx0XHRzZXRNZXNzYWdlU3RyaXBGb3JWYWxpZGF0ZWRGaWx0ZXJzKGVycm9yTWVzc2FnZUhhbmRsZXIuZ2V0RXJyb3JNZXNzYWdlKCkpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZVRva2Vucyhcblx0dG9rZW5zOiBUb2tlbkRlZmluaXRpb25bXSxcblx0ZmlsdGVyVmFsdWU6IEVhc3lGaWx0ZXJSZXN1bHRbXCJmaWx0ZXJcIl1bMF0sXG5cdGZpbHRlckNyaXRlcmlhOiBFYXN5RmlsdGVyUHJvcGVydHlNZXRhZGF0YSxcblx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2VuczogUmVjb3JkPHN0cmluZywgYm9vbGVhbj4sXG5cdGlzSW5WYWxpZFRva2VuOiBib29sZWFuXG4pOiB2b2lkIHtcblx0Y29uc3QgdG9rZW5JbmRleCA9IHRva2Vucy5maW5kSW5kZXgoKHRva2VuKSA9PiB0b2tlbi5rZXkgPT09IGZpbHRlclZhbHVlLm5hbWUpO1xuXHRjb25zdCBrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gY3JlYXRlS2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyhmaWx0ZXJWYWx1ZSk7XG5cblx0aWYgKHRva2VuSW5kZXggPT09IC0xKSB7XG5cdFx0Ly8gQWRkIG5ldyB0b2tlblxuXHRcdHRva2Vucy5wdXNoKHtcblx0XHRcdGtleTogZmlsdGVyVmFsdWUubmFtZSxcblx0XHRcdGxhYmVsOiBmaWx0ZXJDcml0ZXJpYS5sYWJlbCBhcyBzdHJpbmcsXG5cdFx0XHRrZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzOiBpc0luVmFsaWRUb2tlbiA/IFtdIDogW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdLFxuXHRcdFx0dHlwZTogZmlsdGVyQ3JpdGVyaWEudHlwZSBhcyBFeGNsdWRlPFRva2VuVHlwZSwgXCJWYWx1ZUhlbHBcIj4sXG5cdFx0XHRidXN5OiBmaWx0ZXJDcml0ZXJpYS50eXBlID09PSBcIlZhbHVlSGVscFwiXG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0Ly8gVXBkYXRlIGV4aXN0aW5nIHRva2VuXG5cdFx0Y29uc3QgY3VycmVudFRva2VuID0gdG9rZW5zW3Rva2VuSW5kZXhdO1xuXHRcdGlmIChpc0luVmFsaWRUb2tlbikge1xuXHRcdFx0Y3VycmVudFRva2VuLmtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMgPSBbXTtcblx0XHR9IGVsc2UgaWYgKChjdXJyZW50VG9rZW4uaXNSZXF1aXJlZCA/PyBmYWxzZSkgJiYgIXZpc2l0ZWRNYXBGb3JNYW5kYXRvcnlUb2tlbnNbY3VycmVudFRva2VuLmtleV0pIHtcblx0XHRcdGN1cnJlbnRUb2tlbi5rZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzID0gW2tleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXNdO1xuXHRcdFx0dmlzaXRlZE1hcEZvck1hbmRhdG9yeVRva2Vuc1tjdXJyZW50VG9rZW4ua2V5XSA9IHRydWU7XG5cdFx0fSBlbHNlIHtcblx0XHRcdChjdXJyZW50VG9rZW4ua2V5U3BlY2lmaWNTZWxlY3RlZFZhbHVlcyBhcyBUb2tlblNlbGVjdGVkVmFsdWVzRGVmaW5pdGlvbltdKS5wdXNoKGtleVNwZWNpZmljU2VsZWN0ZWRWYWx1ZXMpO1xuXHRcdH1cblx0fVxufVxuXG5mdW5jdGlvbiBjcmVhdGVLZXlTcGVjaWZpY1NlbGVjdGVkVmFsdWVzKGZpbHRlclZhbHVlOiBFYXN5RmlsdGVyUmVzdWx0W1wiZmlsdGVyXCJdWzBdKTogVG9rZW5TZWxlY3RlZFZhbHVlc0RlZmluaXRpb24ge1xuXHRjb25zdCB7IG9wZXJhdG9yLCB2YWx1ZXMgfSA9IGZpbHRlclZhbHVlO1xuXG5cdGlmIChFYXN5RmlsdGVyVXRpbHMuaXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMob3BlcmF0b3IpKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdG9wZXJhdG9yLFxuXHRcdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXNcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRvcGVyYXRvcjogb3BlcmF0b3IgYXMgRXhjbHVkZTxGaWx0ZXJPcGVyYXRvciwgRmlsdGVyT3BlcmF0b3IuQlQgfCBGaWx0ZXJPcGVyYXRvci5OQj4sXG5cdFx0c2VsZWN0ZWRWYWx1ZXM6IHZhbHVlcyBhcyBzdHJpbmdbXSB8IERhdGVbXSB8IG51bWJlcltdIHwgYm9vbGVhbltdXG5cdH07XG59XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIHBsYWluIHByb3BlcnR5IG5hbWUgZnJvbSBhbiBPRGF0YS1zdHlsZSBwYXRoIChlLmcuIFwiL1NhbGVzT3JkZXJNYW5hZ2UvU29sZFRvUGFydHlcIiDihpIgXCJTb2xkVG9QYXJ0eVwiKS5cbiAqIEBwYXJhbSBwYXRoIFRoZSBPRGF0YS1zdHlsZSBwYXRoIG9yIHBsYWluIHByb3BlcnR5IG5hbWUgdG8gcmVzb2x2ZS5cbiAqIEByZXR1cm5zIFRoZSBsYXN0IHBhdGggc2VnbWVudCwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyBpZiBubyBcIi9cIiBpcyBwcmVzZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzb2x2ZVByb3BlcnR5TmFtZShwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuXHRyZXR1cm4gcGF0aC5pbmNsdWRlcyhcIi9cIikgPyBwYXRoLnNwbGl0KFwiL1wiKS5maWx0ZXIoQm9vbGVhbikucG9wKCkgPz8gcGF0aCA6IHBhdGg7XG59XG5cbmNvbnN0IEVhc3lGaWx0ZXJVdGlscyA9IHtcblx0YXJlSXRlbXNTYW1lLFxuXHRhcmVDb2RlTGlzdHNTYW1lLFxuXHRnZXRDb2RlTGlzdEFycmF5LFxuXHRhcmVBcnJheVNhbWUsXG5cdG1hcE9wZXJhdG9yLFxuXHRtYXBPcGVyYXRvckZvckJldHdlZW5PcGVyYXRvcixcblx0aXNCZXR3ZWVuU2VsZWN0ZWRWYWx1ZXMsXG5cdGZvcm1hdERhdGEsXG5cdG1hcE9wZXJhdG9yRm9yVmFsdWVIZWxwLFxuXHRyZXNvbHZlUHJvcGVydHlOYW1lXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFYXN5RmlsdGVyVXRpbHM7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
@@ -297,6 +297,15 @@ function createKeySpecificSelectedValues(filterValue: EasyFilterResult["filter"]
297
297
  };
298
298
  }
299
299
 
300
+ /**
301
+ * Extracts the plain property name from an OData-style path (e.g. "/SalesOrderManage/SoldToParty" → "SoldToParty").
302
+ * @param path The OData-style path or plain property name to resolve.
303
+ * @returns The last path segment, or the original string if no "/" is present.
304
+ */
305
+ export function resolvePropertyName(path: string): string {
306
+ return path.includes("/") ? path.split("/").filter(Boolean).pop() ?? path : path;
307
+ }
308
+
300
309
  const EasyFilterUtils = {
301
310
  areItemsSame,
302
311
  areCodeListsSame,
@@ -306,7 +315,8 @@ const EasyFilterUtils = {
306
315
  mapOperatorForBetweenOperator,
307
316
  isBetweenSelectedValues,
308
317
  formatData,
309
- mapOperatorForValueHelp
318
+ mapOperatorForValueHelp,
319
+ resolvePropertyName
310
320
  };
311
321
 
312
322
  export default EasyFilterUtils;
@@ -22,7 +22,7 @@ sap.ui.define(["sap/fe/base/library", "sap/fe/controls/shortcuts/ShortcutExplana
22
22
  controls: [],
23
23
  elements: [],
24
24
  // eslint-disable-next-line no-template-curly-in-string
25
- version: "1.147.0",
25
+ version: "1.148.0",
26
26
  noLibraryCSS: false
27
27
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
28
  });
@@ -17,6 +17,8 @@ M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=Show All Items
17
17
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} values
18
18
  # XBUT
19
19
  M_EASY_FILTER_RESET=Reset Filters
20
+ # XMSG: Warning message when user tries to sort on non-sortable properties. Parameters: {0}= list of field names
21
+ M_EASY_FILTER_NON_SORTABLE=You can''t sort by {0}.
20
22
  # XFLD
21
23
  M_EASY_FILTER_SELECTED_VALUES_TRUE=Yes
22
24
  # XFLD
@@ -65,13 +67,23 @@ T_EASY_FILTER_INPUT_TEXT_LINK_POPOVER_ARIA=To move to the list of favorite queri
65
67
  # XMSG
66
68
  M_EASY_FILTER_SINGLE_VALUE_MESSAGE=Only one single value can be applied to the following: {0}
67
69
  # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
68
- M_EASY_FILTER_NON_FILTERABLE=This specific app doesn''t support filtering on {0}.
70
+ M_EASY_FILTER_NON_FILTERABLE=This app doesn''t support filtering by {0}.
69
71
  # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
70
- M_EASY_FILTER_SINGLE_RANGE=Only one single condition can be applied to {0}.
72
+ M_EASY_FILTER_SINGLE_RANGE=You can apply only one condition to {0}.
71
73
  # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
72
- M_EASY_FILTER_HIDDEN_FILTER=This specific app doesn''t support filtering on {0}.
74
+ M_EASY_FILTER_HIDDEN_FILTER=This app doesn''t support filtering by {0}.
73
75
  # XMSG: We need to block the user from filtering on hidden, non-filterable or system-controlled properties, as doing so would conflict with the intended behavior of the app
74
76
  M_EASY_FILTER_OPERATOR={0} is not a valid condition for: {1}
77
+ # XMSG: Warn the user that grouping is not supported for the given fields in this app
78
+ M_EASY_FILTER_NON_GROUPABLE=You can''t group by {0}.
79
+ # XMSG: Warn the user that only the first groupable field is applied when multiple group levels are requested
80
+ M_EASY_FILTER_MULTIPLE_GROUP_WARNING=Filters applied, but results grouped by {0} only. You can''t group by multiple properties.
81
+ # XMSG: Warn the user that this app does not support sorting
82
+ M_EASY_FILTER_SORTING_NOT_SUPPORTED=Filters applied, but this app doesn't support sorting.
83
+ # XMSG: Warn the user that this app does not support grouping
84
+ M_EASY_FILTER_GROUPING_NOT_SUPPORTED=Filters applied, but this app doesn't support grouping.
85
+ # XMSG: Warn the user that this app does not support sorting or grouping
86
+ M_EASY_FILTER_SORTING_AND_GROUPING_NOT_SUPPORTED=Filters applied, but this app doesn't support sorting or grouping.
75
87
  # XTIT: Title in the shell user menu to open the shortcut dialog and the dialog title
76
88
  C_SHORTCUT_TITLE=Keyboard Shortcuts
77
89
  # XMSG,30: Placeholder message for the keyboard interaction input field
@@ -9,7 +9,7 @@ M_EASY_FILTER_MANDATORY_TOKEN_ITEMS={0} Werte
9
9
  M_EASY_FILTER_RESET=Filter zur\u00FCcksetzen
10
10
  M_EASY_FILTER_SELECTED_VALUES_TRUE=Ja
11
11
  M_EASY_FILTER_SELECTED_VALUES_FALSE=Nein
12
- M_BUSINESS_AI_SHELL_SETTINGS_TITLE=AI Settings
12
+ M_BUSINESS_AI_SHELL_SETTINGS_TITLE=KI-Einstellungen
13
13
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER=Einfacher Filter
14
14
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_MAKE_DEFAULT=Stellen Sie den einfachen Filter als die Standard-Filteroption ein.
15
15
  M_BUSINESS_AI_SHELL_SETTINGS_EASY_FILTER_KEEP_QUERIES=Meine zuletzt verwendeten Anfragen im einfachen Filter unter 'Zuletzt verwendete Anfragen' beibehalten.
@@ -7,6 +7,7 @@ M_EASY_FILTER_POPOVER_OK=\u206A\u206A\u206A\u200D\u200D\u200B\u200B\u200C\u200C\
7
7
  M_EASY_FILTER_POPOVER_SHOW_ALL_ITEMS=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200D\u200B\u200B\u200C\u200C\u200B\u200B\u200D\u200B\u200D\u200D\u200C\u200B\u200C\u200B\u200B\u200D\u200C\u200D\u200B\u200D\u200D\u200D\u200B\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200B\u200C\u200C\u200D\u200C\u200B\u206AShow All Items\u206A\u206A
8
8
  M_EASY_FILTER_MANDATORY_TOKEN_ITEMS=\u206A\u206A\u206A\u200C\u200B\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200B\u200D\u200C\u200C\u200B\u200C\u200D\u200D\u200B\u200B\u200D\u200C\u200B\u200D\u200D\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200C\u200B\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C values\u206A\u206A
9
9
  M_EASY_FILTER_RESET=\u206A\u206A\u206A\u200D\u200B\u200C\u200D\u200D\u200B\u200B\u200B\u200D\u200B\u200C\u200D\u200C\u200D\u200B\u200B\u200C\u200C\u200D\u200B\u200D\u200B\u200C\u200B\u200D\u200D\u200C\u200D\u200C\u200C\u200D\u200D\u200D\u200B\u200B\u200B\u200B\u200B\u200C\u200D\u206AReset Filters\u206A\u206A
10
+ M_EASY_FILTER_NON_SORTABLE=\u206A\u206A\u206A\u200C\u200B\u200D\u200B\u200D\u200D\u200B\u200C\u200C\u200D\u200B\u200D\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200D\u200D\u200B\u200D\u200C\u200D\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200C\u206AYou can''t sort by \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
10
11
  M_EASY_FILTER_SELECTED_VALUES_TRUE=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200D\u200D\u200B\u200C\u200B\u200B\u200B\u200C\u200B\u200D\u200D\u200C\u200C\u200B\u200D\u200D\u200C\u200C\u200B\u200D\u200B\u200C\u200C\u200B\u200B\u200C\u200C\u200C\u200D\u200D\u200D\u200D\u200C\u200B\u200C\u200D\u206AYes\u206A\u206A
11
12
  M_EASY_FILTER_SELECTED_VALUES_FALSE=\u206A\u206A\u206A\u200C\u200C\u200B\u200B\u200B\u200D\u200B\u200C\u200D\u200C\u200D\u200D\u200B\u200B\u200D\u200D\u200B\u200C\u200B\u200C\u200D\u200C\u200D\u200B\u200D\u200C\u200C\u200C\u200C\u200C\u200D\u200C\u200D\u200C\u200B\u200C\u200D\u200B\u200D\u200D\u200B\u206ANo\u206A\u206A
12
13
  M_BUSINESS_AI_SHELL_SETTINGS_TITLE=\u206A\u206A\u206A\u200C\u200D\u200D\u200D\u200D\u200B\u200B\u200D\u200B\u200B\u200C\u200D\u200B\u200C\u200D\u200B\u200C\u200C\u200C\u200D\u200C\u200D\u200C\u200D\u200D\u200D\u200B\u200C\u200D\u200D\u200B\u200B\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200B\u206AAI Settings\u206A\u206A
@@ -35,6 +36,8 @@ M_EASY_FILTER_NON_FILTERABLE=\u206A\u206A\u206A\u200C\u200B\u200C\u200C\u200D\u2
35
36
  M_EASY_FILTER_SINGLE_RANGE=\u206A\u206A\u206A\u200C\u200B\u200D\u200C\u200B\u200C\u200D\u200C\u200B\u200D\u200B\u200D\u200C\u200B\u200D\u200D\u200D\u200C\u200C\u200B\u200B\u200D\u200B\u200C\u200D\u200C\u200B\u200B\u200B\u200B\u200D\u200C\u200C\u200D\u200C\u200D\u200D\u200B\u200D\u200D\u206AOnly one single condition can be applied to \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
36
37
  M_EASY_FILTER_HIDDEN_FILTER=\u206A\u206A\u206A\u200C\u200C\u200C\u200B\u200D\u200D\u200C\u200B\u200D\u200B\u200D\u200C\u200B\u200B\u200C\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200C\u200D\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200D\u200C\u200C\u206AThis specific app doesn''t support filtering on \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
37
38
  M_EASY_FILTER_OPERATOR=\u206A\u206A\u206A\u200C\u200D\u200B\u200B\u200C\u200B\u200C\u200D\u200D\u200C\u200B\u200B\u200B\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200C\u200C\u200D\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200C\u200D\u200C\u200B\u200D\u200B\u200C\u200D\u200D\u200D\u206A\u200B\u200B\u200B{0}\u200C\u200C\u200C is not a valid condition for\: \u200B\u200B\u200B{1}\u200C\u200C\u200C\u206A\u206A
39
+ M_EASY_FILTER_NON_GROUPABLE=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200C\u200B\u200B\u200C\u200B\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200B\u200C\u200C\u200C\u200D\u200B\u200B\u200B\u200D\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200C\u200D\u200D\u200D\u200D\u200C\u200C\u200D\u200C\u206AYou can''t group by \u200B\u200B\u200B{0}\u200C\u200C\u200C.\u206A\u206A
40
+ M_EASY_FILTER_MULTIPLE_GROUP_WARNING=\u206A\u206A\u206A\u200C\u200B\u200C\u200D\u200B\u200C\u200D\u200C\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200D\u200D\u200B\u200B\u200C\u200B\u200D\u200C\u200D\u200D\u200C\u200B\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200C\u200D\u200B\u200B\u200B\u200D\u200C\u206AFilters applied, but results grouped by \u200B\u200B\u200B{0}\u200C\u200C\u200C only. You can''t group by multiple properties.\u206A\u206A
38
41
  C_SHORTCUT_TITLE=\u206A\u206A\u206A\u200C\u200C\u200C\u200C\u200B\u200C\u200C\u200C\u200D\u200D\u200B\u200D\u200C\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200B\u200B\u200C\u200D\u200D\u200D\u200B\u200B\u200C\u200C\u200D\u200C\u200D\u200B\u200B\u200D\u200B\u200D\u200B\u200D\u200D\u206AKeyboard Shortcuts\u206A\u206A
39
42
  C_SHORTCUT_PLACEHOLDER=\u206A\u206A\u206A\u200C\u200D\u200B\u200D\u200D\u200D\u200D\u200C\u200D\u200C\u200B\u200B\u200D\u200B\u200C\u200B\u200B\u200B\u200C\u200C\u200C\u200D\u200B\u200D\u200B\u200D\u200C\u200D\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200B\u200D\u200B\u200D\u206AFind a keyboard shortcut\u206A\u206A
40
43
 
@@ -18,7 +18,11 @@
18
18
 
19
19
  .sapFeEasyFillPreviousValue {
20
20
  padding: 0 !important;
21
- color: var(--sapContent_LabelColor) !important;
21
+ }
22
+
23
+ .sapFeEasyFillPreviousValue::before {
24
+ content: attr(data-label);
25
+ color: var(--sapContent_LabelColor);
22
26
  }
23
27
 
24
28
  .sapFeEasyFillDialog .sapUiFormCLContainer {
@@ -28,3 +32,23 @@
28
32
  .sapFeEasyFillDialog .sapUiFormCL.sapUiFormCLSmallColumns .sapUiFormCLElement > .sapUiFormCLCellsS6 {
29
33
  width: 100% !important;
30
34
  }
35
+
36
+ #easyFillObjectPageLayout {
37
+ min-width: 20rem;
38
+ }
39
+
40
+ #easyFillObjectPageLayout-spacer {
41
+ display: none !important;
42
+ }
43
+
44
+ .sapUiEasyFillPreviewTable {
45
+ border-radius: 0.5rem;
46
+ border: 1px solid var(--sapList_BorderColor, #e5e5e5);
47
+ }
48
+ .sapUiEasyFillPreviewTable .sapMListTblRow:first-child {
49
+ border-top: none;
50
+ }
51
+ .sapUiEasyFillWarningCell .sapMInputBaseContentWrapper {
52
+ background-color: var(--sapField_WarningBackground, #fff3b0) !important;
53
+ border-color: var(--sapField_WarningColor, #e9730c) !important;
54
+ }