@alfresco/adf-core 7.0.0-alpha.8-14354971618 → 7.0.0-alpha.8-15717586720

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.
@@ -241,12 +241,12 @@ export class FormFieldModel extends FormWidgetModel {
241
241
  }
242
242
  const isEmptyValue = !value || [this.emptyOption.id, this.emptyOption.name].includes(value);
243
243
  if (isEmptyValue) {
244
- return this.emptyOption.id;
244
+ return this.emptyOption;
245
245
  }
246
246
  }
247
247
  if (this.isValidOption(value)) {
248
248
  this.addOption({ id: value.id, name: value.name });
249
- return value.id;
249
+ return value;
250
250
  }
251
251
  if (this.hasMultipleValues) {
252
252
  const validSelectedOptions = (Array.isArray(json.value) ? json.value : []).filter((option) => this.isValidOption(option));
@@ -324,6 +324,14 @@ export class FormFieldModel extends FormWidgetModel {
324
324
  const matchingOption = this.options.find((opt) => opt.id === this.value);
325
325
  this.form.values[this.id] = matchingOption || null;
326
326
  }
327
+ if (typeof this.value === 'object') {
328
+ if (this.value.id === 'empty' || this.value.id === '') {
329
+ this.form.values[this.id] = null;
330
+ break;
331
+ }
332
+ const matchingOption = this.options.find((opt) => opt.id === this.value.id);
333
+ this.form.values[this.id] = matchingOption;
334
+ }
327
335
  break;
328
336
  }
329
337
  case FormFieldTypes.RADIO_BUTTONS: {
@@ -474,4 +482,4 @@ export class FormFieldModel extends FormWidgetModel {
474
482
  return json.params?.field?.type === FormFieldTypes.BOOLEAN || json.type === FormFieldTypes.BOOLEAN;
475
483
  }
476
484
  }
477
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvY29yZS9mb3JtLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNbEQsa0NBQWtDO0FBQ2xDLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQW9FL0MsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNyQixPQUFPLElB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Q0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVPLGFBQWEsQ0FBQyxNQUFXO1FBQzdCLE9BQU8sT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxNQUFNLEVBQUUsRUFBRSxJQUFJLE1BQU0sRUFBRSxJQUFJLENBQUM7SUFDOUYsQ0FBQztJQUVPLFdBQVcsQ0FBQyxJQUFTO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxLQUFLLGNBQWMsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ2pHLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBUztRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLFFBQVEsQ0FBQztJQUN6RyxDQUFDO0lBRU8sZUFBZSxDQUFDLElBQVM7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEtBQUssY0FBYyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxPQUFPLENBQUM7SUFDdkcsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yICovXG5pbXBvcnQgeyBXaWRnZXRWaXNpYmlsaXR5TW9kZWwgfSBmcm9tICcuLi8uLi8uLi9tb2RlbHMvd2lkZ2V0LXZpc2liaWxpdHkubW9kZWwnO1xuaW1wb3J0IHsgQ29udGFpbmVyQ29sdW1uTW9kZWwgfSBmcm9tICcuL2NvbnRhaW5lci1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRXJyb3JNZXNzYWdlTW9kZWwgfSBmcm9tICcuL2Vycm9yLW1lc3NhZ2UubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUZpZWxkTWV0YWRhdGEgfSBmcm9tICcuL2Zvcm0tZmllbGQtbWV0YWRhdGEnO1xuaW1wb3J0IHsgRm9ybUZpZWxkT3B0aW9uIH0gZnJvbSAnLi9mb3JtLWZpZWxkLW9wdGlvbic7XG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlcyB9IGZyb20gJy4vZm9ybS1maWVsZC10eXBlcyc7XG5pbXBvcnQgeyBGb3JtV2lkZ2V0TW9kZWwgfSBmcm9tICcuL2Zvcm0td2lkZ2V0Lm1vZGVsJztcbmltcG9ydCB7IEZvcm1GaWVsZFJ1bGUgfSBmcm9tICcuL2Zvcm0tZmllbGQtcnVsZSc7XG5pbXBvcnQgeyBQcm9jZXNzRm9ybU1vZGVsIH0gZnJvbSAnLi9wcm9jZXNzLWZvcm0tbW9kZWwuaW50ZXJmYWNlJztcbmltcG9ydCB7IGlzTnVtYmVyVmFsdWUgfSBmcm9tICcuL2Zvcm0tZmllbGQtdXRpbHMnO1xuaW1wb3J0IHsgVmFyaWFibGVDb25maWcgfSBmcm9tICcuL2Zvcm0tZmllbGQtdmFyaWFibGUtb3B0aW9ucyc7XG5pbXBvcnQgeyBEYXRhQ29sdW1uIH0gZnJvbSAnLi4vLi4vLi4vLi4vZGF0YXRhYmxlL2RhdGEvZGF0YS1jb2x1bW4ubW9kZWwnO1xuaW1wb3J0IHsgRGF0ZUZuc1V0aWxzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29tbW9uJztcbmltcG9ydCB7IGlzVmFsaWQgYXMgaXNWYWxpZERhdGUgfSBmcm9tICdkYXRlLWZucyc7XG5cbmV4cG9ydCB0eXBlIEZpZWxkT3B0aW9uVHlwZSA9ICdyZXN0JyB8ICdtYW51YWwnIHwgJ3ZhcmlhYmxlJztcbmV4cG9ydCB0eXBlIEZpZWxkU2VsZWN0aW9uVHlwZSA9ICdzaW5nbGUnIHwgJ211bHRpcGxlJztcbmV4cG9ydCB0eXBlIEZpZWxkQWxpZ25tZW50VHlwZSA9ICd2ZXJ0aWNhbCcgfCAnaG9yaXpvbnRhbCc7XG5cbi8vIE1hcHMgdG8gRm9ybUZpZWxkUmVwcmVzZW50YXRpb25cbmV4cG9ydCBjbGFzcyBGb3JtRmllbGRNb2RlbCBleHRlbmRzIEZvcm1XaWRnZXRNb2RlbCB7XG4gICAgcHJpdmF0ZSBfdmFsdWU6IHN0cmluZztcbiAgICBwcml2YXRlIF9yZWFkT25seTogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2lzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICByZWFkb25seSBkZWZhdWx0RGF0ZUZvcm1hdDogc3RyaW5nID0gJ0QtTS1ZWVlZJztcbiAgICByZWFkb25seSBkZWZhdWx0RGF0ZVRpbWVGb3JtYXQ6IHN0cmluZyA9ICdELU0tWVlZWSBoaDptbSBBJztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRFbXB0eU9wdGlvbklkID0gJ2VtcHR5JztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlZmF1bHRFbXB0eU9wdGlvbk5hbWUgPSAnQ2hvb3NlIG9uZS4uLic7XG5cbiAgICAvLyBtb2RlbCBtZW1iZXJzXG4gICAgZmllbGRUeXBlOiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdHlwZTogc3RyaW5nO1xuICAgIG92ZXJyaWRlSWQ6IGJvb2xlYW47XG4gICAgdGFiOiBzdHJpbmc7XG4gICAgcm93c3BhbjogbnVtYmVyID0gMTtcbiAgICBjb2xzcGFuOiBudW1iZXIgPSAxO1xuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSBudWxsO1xuICAgIHRvb2x0aXA6IHN0cmluZyA9IG51bGw7XG4gICAgbWluTGVuZ3RoOiBudW1iZXIgPSAwO1xuICAgIG1heExlbmd0aDogbnVtYmVyID0gMDtcbiAgICBtaW5WYWx1ZTogc3RyaW5nO1xuICAgIG1heFZhbHVlOiBzdHJpbmc7XG4gICAgbWF4RGF0ZVJhbmdlVmFsdWU6IG51bWJlciA9IDA7XG4gICAgbWluRGF0ZVJhbmdlVmFsdWU6IG51bWJlciA9IDA7XG4gICAgcHJlY2lzaW9uOiBudW1iZXI7XG4gICAgZHluYW1pY0RhdGVSYW5nZVNlbGVjdGlvbjogYm9vbGVhbjtcbiAgICByZWdleFBhdHRlcm46IHN0cmluZztcbiAgICBvcHRpb25zOiBGb3JtRmllbGRPcHRpb25bXSA9IFtdO1xuICAgIHJlc3RVcmw6IHN0cmluZztcbiAgICByb2xlczogc3RyaW5nW107XG4gICAgcmVzdFJlc3BvbnNlUGF0aDogc3RyaW5nO1xuICAgIHJlc3RJZFByb3BlcnR5OiBzdHJpbmc7XG4gICAgcmVzdExhYmVsUHJvcGVydHk6IHN0cmluZztcbiAgICBoYXNFbXB0eVZhbHVlOiBib29sZWFuO1xuICAgIGNsYXNzTmFtZTogc3RyaW5nO1xuICAgIG9wdGlvblR5cGU6IEZpZWxkT3B0aW9uVHlwZTtcbiAgICBwYXJhbXM6IEZvcm1GaWVsZE1ldGFkYXRhID0ge307XG4gICAgaHlwZXJsaW5rVXJsOiBzdHJpbmc7XG4gICAgZGlzcGxheVRleHQ6IHN0cmluZztcbiAgICBpc1Zpc2libGU6IGJvb2xlYW4gPSB0cnVlO1xuICAgIHZpc2liaWxpdHlDb25kaXRpb246IFdpZGdldFZpc2liaWxpdHlNb2RlbCA9IG51bGw7XG4gICAgZW5hYmxlRnJhY3Rpb25zOiBib29sZWFuID0gZmFsc2U7XG4gICAgY3VycmVuY3k6IHN0cmluZyA9IG51bGw7XG4gICAgZGF0ZURpc3BsYXlGb3JtYXQ6IHN0cmluZyA9IHRoaXMuZGVmYXVsdERhdGVGb3JtYXQ7XG4gICAgc2VsZWN0aW9uVHlwZTogRmllbGRTZWxlY3Rpb25UeXBlO1xuICAgIGFsaWdubWVudFR5cGU6IEZpZWxkQWxpZ25tZW50VHlwZTtcbiAgICBydWxlPzogRm9ybUZpZWxkUnVsZTtcbiAgICBzZWxlY3RMb2dnZWRVc2VyOiBib29sZWFuO1xuICAgIGdyb3Vwc1Jlc3RyaWN0aW9uOiBzdHJpbmdbXTtcbiAgICBsZWZ0TGFiZWxzOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFyaWFibGVDb25maWc6IFZhcmlhYmxlQ29uZmlnO1xuICAgIHNjaGVtYURlZmluaXRpb246IERhdGFDb2x1bW5bXTtcbiAgICBleHRlcm5hbFByb3BlcnR5Pzogc3RyaW5nO1xuICAgIHN0eWxlPzogc3RyaW5nO1xuXG4gICAgLy8gY29udGFpbmVyIG1vZGVsIG1lbWJlcnNcbiAgICBudW1iZXJPZkNvbHVtbnM6IG51bWJlciA9IDE7XG4gICAgZmllbGRzOiBGb3JtRmllbGRNb2RlbFtdID0gW107XG4gICAgY29sdW1uczogQ29udGFpbmVyQ29sdW1uTW9kZWxbXSA9IFtdO1xuXG4gICAgLy8gdXRpbCBtZW1iZXJzXG4gICAgZW1wdHlPcHRpb246IEZvcm1GaWVsZE9wdGlvbjtcbiAgICB2YWxpZGF0aW9uU3VtbWFyeTogRXJyb3JNZXNzYWdlTW9kZWw7XG5cbiAgICBnZXQgdmFsdWUoKTogYW55IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIHNldCB2YWx1ZSh2OiBhbnkpIHtcbiAgICAgICAgaWYgKHYgIT09IHRoaXMuX3ZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHY7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGdldCByZWFkT25seSgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybT8ucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLl9yZWFkT25seTtcbiAgICB9XG5cbiAgICBzZXQgcmVhZE9ubHkocmVhZE9ubHk6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSByZWFkT25seTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgfVxuXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7XG4gICAgfVxuXG4gICAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX3JlcXVpcmVkID0gdmFsdWU7XG4gICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIGdldCBpc1ZhbGlkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBnZXQgaGFzTXVsdGlwbGVWYWx1ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblR5cGUgPT09ICdtdWx0aXBsZSc7XG4gICAgfVxuXG4gICAgbWFya0FzSW52YWxpZCgpIHtcbiAgICAgICAgdGhpcy5faXNWYWxpZCA9IGZhbHNlO1xuICAgIH1cblxuICAgIG1hcmtBc1ZhbGlkKCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeSA9IG5ldyBFcnJvck1lc3NhZ2VNb2RlbCgpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzRmllbGRWYWxpZGF0YWJsZSgpKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0b3JzID0gdGhpcy5mb3JtLmZpZWxkVmFsaWRhdG9ycyB8fCBbXTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXZhbGlkYXRvci52YWxpZGF0ZSh0aGlzKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0ZpZWxkVmFsaWRhdGFibGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5yZWFkT25seSB8fCBGb3JtRmllbGRUeXBlcy5pc1ZhbGlkYXRhYmxlVHlwZSh0aGlzLnR5cGUpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGZvcm06IGFueSwganNvbj86IGFueSkge1xuICAgICAgICBzdXBlcihmb3JtLCBqc29uKTtcbiAgICAgICAgaWYgKGpzb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRUeXBlID0ganNvbi5maWVsZFR5cGU7XG4gICAgICAgICAgICB0aGlzLmlkID0ganNvbi5pZDtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9IGpzb24ubmFtZTtcbiAgICAgICAgICAgIHRoaXMudHlwZSA9IGpzb24udHlwZTtcbiAgICAgICAgICAgIHRoaXMucm9sZXMgPSBqc29uLnJvbGVzO1xuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBqc29uLnJlcXVpcmVkO1xuICAgICAgICAgICAgdGhpcy5fcmVhZE9ubHkgPSBqc29uLnJlYWRPbmx5IHx8IGpzb24udHlwZSA9PT0gJ3JlYWRvbmx5JztcbiAgICAgICAgICAgIHRoaXMub3ZlcnJpZGVJZCA9IGpzb24ub3ZlcnJpZGVJZDtcbiAgICAgICAgICAgIHRoaXMudGFiID0ganNvbi50YWI7XG4gICAgICAgICAgICB0aGlzLnJlc3RVcmwgPSBqc29uLnJlc3RVcmw7XG4gICAgICAgICAgICB0aGlzLnJlc3RSZXNwb25zZVBhdGggPSBqc29uLnJlc3RSZXNwb25zZVBhdGg7XG4gICAgICAgICAgICB0aGlzLnJlc3RJZFByb3BlcnR5ID0ganNvbi5yZXN0SWRQcm9wZXJ0eTtcbiAgICAgICAgICAgIHRoaXMucmVzdExhYmVsUHJvcGVydHkgPSBqc29uLnJlc3RMYWJlbFByb3BlcnR5O1xuICAgICAgICAgICAgdGhpcy5jb2xzcGFuID0ganNvbi5jb2xzcGFuO1xuICAgICAgICAgICAgdGhpcy5yb3dzcGFuID0ganNvbi5yb3dzcGFuO1xuICAgICAgICAgICAgdGhpcy5taW5MZW5ndGggPSBqc29uLm1pbkxlbmd0aCB8fCAwO1xuICAgICAgICAgICAgdGhpcy5tYXhMZW5ndGggPSBqc29uLm1heExlbmd0aCB8fCAwO1xuICAgICAgICAgICAgdGhpcy5taW5WYWx1ZSA9IGpzb24ubWluVmFsdWU7XG4gICAgICAgICAgICB0aGlzLm1heFZhbHVlID0ganNvbi5tYXhWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZVJhbmdlVmFsdWUgPSBqc29uLm1pbkRhdGVSYW5nZVZhbHVlO1xuICAgICAgICAgICAgdGhpcy5tYXhEYXRlUmFuZ2VWYWx1ZSA9IGpzb24ubWF4RGF0ZVJhbmdlVmFsdWU7XG4gICAgICAgICAgICB0aGlzLmR5bmFtaWNEYXRlUmFuZ2VTZWxlY3Rpb24gPSBqc29uLmR5bmFtaWNEYXRlUmFuZ2VTZWxlY3Rpb247XG4gICAgICAgICAgICB0aGlzLnJlZ2V4UGF0dGVybiA9IGpzb24ucmVnZXhQYXR0ZXJuO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5wYXJzZU9wdGlvbnMoanNvbi5vcHRpb25zLCBqc29uLm9wdGlvblR5cGUpO1xuICAgICAgICAgICAgdGhpcy5lbXB0eU9wdGlvbiA9IHRoaXMuZ2V0RW1wdHlPcHRpb24odGhpcy5vcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuaGFzRW1wdHlWYWx1ZSA9IGpzb24/Lmhhc0VtcHR5VmFsdWUgPz8gISF0aGlzLmVtcHR5T3B0aW9uO1xuICAgICAgICAgICAgdGhpcy5jbGFzc05hbWUgPSBqc29uLmNsYXNzTmFtZTtcbiAgICAgICAgICAgIHRoaXMub3B0aW9uVHlwZSA9IGpzb24ub3B0aW9uVHlwZTtcbiAgICAgICAgICAgIHRoaXMucGFyYW1zID0ganNvbi5wYXJhbXMgfHwge307XG4gICAgICAgICAgICB0aGlzLmh5cGVybGlua1VybCA9IGpzb24uaHlwZXJsaW5rVXJsO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5VGV4dCA9IGpzb24uZGlzcGxheVRleHQ7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlDb25kaXRpb24gPSBqc29uLnZpc2liaWxpdHlDb25kaXRpb24gPyBuZXcgV2lkZ2V0VmlzaWJpbGl0eU1vZGVsKGpzb24udmlzaWJpbGl0eUNvbmRpdGlvbikgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgICB0aGlzLmVuYWJsZUZyYWN0aW9ucyA9IGpzb24uZW5hYmxlRnJhY3Rpb25zO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW5jeSA9IGpzb24uY3VycmVuY3k7XG4gICAgICAgICAgICB0aGlzLmRhdGVEaXNwbGF5Rm9ybWF0ID0ganNvbi5kYXRlRGlzcGxheUZvcm1hdCB8fCB0aGlzLmdldERlZmF1bHREYXRlRm9ybWF0KGpzb24pO1xuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uU3VtbWFyeSA9IG5ldyBFcnJvck1lc3NhZ2VNb2RlbCgpO1xuICAgICAgICAgICAgdGhpcy50b29sdGlwID0ganNvbi50b29sdGlwO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25UeXBlID0ganNvbi5zZWxlY3Rpb25UeXBlO1xuICAgICAgICAgICAgdGhpcy5hbGlnbm1lbnRUeXBlID0ganNvbi5hbGlnbm1lbnRUeXBlO1xuICAgICAgICAgICAgdGhpcy5ydWxlID0ganNvbi5ydWxlO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RMb2dnZWRVc2VyID0ganNvbi5zZWxlY3RMb2dnZWRVc2VyO1xuICAgICAgICAgICAgdGhpcy5ncm91cHNSZXN0cmljdGlvbiA9IGpzb24uZ3JvdXBzUmVzdHJpY3Rpb24/Lmdyb3VwcztcbiAgICAgICAgICAgIHRoaXMudmFyaWFibGVDb25maWcgPSBqc29uLnZhcmlhYmxlQ29uZmlnO1xuICAgICAgICAgICAgdGhpcy5zY2hlbWFEZWZpbml0aW9uID0ganNvbi5zY2hlbWFEZWZpbml0aW9uO1xuICAgICAgICAgICAgdGhpcy5wcmVjaXNpb24gPSBqc29uLnByZWNpc2lvbjtcbiAgICAgICAgICAgIHRoaXMuZXh0ZXJuYWxQcm9wZXJ0eSA9IGpzb24uZXh0ZXJuYWxQcm9wZXJ0eTtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5wYXJzZVZhbHVlKGpzb24pO1xuICAgICAgICAgICAgdGhpcy5zdHlsZSA9IGpzb24uc3R5bGU7XG5cbiAgICAgICAgICAgIGlmIChqc29uLnBsYWNlaG9sZGVyICYmIGpzb24ucGxhY2Vob2xkZXIgIT09ICcnICYmIGpzb24ucGxhY2Vob2xkZXIgIT09ICdudWxsJykge1xuICAgICAgICAgICAgICAgIHRoaXMucGxhY2Vob2xkZXIgPSBqc29uLnBsYWNlaG9sZGVyO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoRm9ybUZpZWxkVHlwZXMuaXNSZWFkT25seVR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmFtcz8uZmllbGQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZUZvclJlYWRvbmx5VHlwZShmb3JtKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChGb3JtRmllbGRUeXBlcy5pc0NvbnRhaW5lclR5cGUodGhpcy50eXBlKSB8fCBGb3JtRmllbGRUeXBlcy5pc1NlY3Rpb25UeXBlKHRoaXMudHlwZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNvbnRhaW5lckZhY3RvcnkoanNvbiwgZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZm9ybT8uanNvbikge1xuICAgICAgICAgICAgdGhpcy5sZWZ0TGFiZWxzID0gZm9ybS5qc29uLmxlZnRMYWJlbHMgfHwgZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEVtcHR5T3B0aW9uKG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdKTogRm9ybUZpZWxkT3B0aW9uIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24/LmlkID09PSB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbklkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFZhbHVlRm9yUmVhZG9ubHlUeXBlKGZvcm06IGFueSkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHRoaXMuZ2V0UHJvY2Vzc1ZhcmlhYmxlVmFsdWUodGhpcy5wYXJhbXMuZmllbGQsIGZvcm0pO1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RGVmYXVsdERhdGVGb3JtYXQoanNvbkZpZWxkOiBhbnkpOiBzdHJpbmcge1xuICAgICAgICBsZXQgb3JpZ2luYWxUeXBlID0ganNvbkZpZWxkLnR5cGU7XG4gICAgICAgIGlmIChGb3JtRmllbGRUeXBlcy5pc1JlYWRPbmx5VHlwZShqc29uRmllbGQudHlwZSkgJiYganNvbkZpZWxkLnBhcmFtcyAmJiBqc29uRmllbGQucGFyYW1zLmZpZWxkKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFR5cGUgPSBqc29uRmllbGQucGFyYW1zLmZpZWxkLnR5cGU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsVHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURVRJTUUgPyB0aGlzLmRlZmF1bHREYXRlVGltZUZvcm1hdCA6IHRoaXMuZGVmYXVsdERhdGVGb3JtYXQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1R5cGVhaGVhZEZpZWxkVHlwZSh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09ICd0eXBlYWhlYWQnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmllbGROYW1lV2l0aExhYmVsKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBuYW1lICsgJ19MQUJFTCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQcm9jZXNzVmFyaWFibGVWYWx1ZShmaWVsZDogYW55LCBmb3JtOiBQcm9jZXNzRm9ybU1vZGVsKTogYW55IHtcbiAgICAgICAgbGV0IGZpZWxkTmFtZSA9IGZpZWxkLm5hbWU7XG4gICAgICAgIGlmICh0aGlzLmlzVHlwZWFoZWFkRmllbGRUeXBlKGZpZWxkLnR5cGUpKSB7XG4gICAgICAgICAgICBmaWVsZE5hbWUgPSB0aGlzLmdldEZpZWxkTmFtZVdpdGhMYWJlbChmaWVsZC5pZCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZvcm0uZ2V0UHJvY2Vzc1ZhcmlhYmxlVmFsdWUoZmllbGROYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnRhaW5lckZhY3RvcnkoanNvbjogYW55LCBmb3JtOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5udW1iZXJPZkNvbHVtbnMgPSBqc29uLm51bWJlck9mQ29sdW1ucyB8fCAxO1xuXG4gICAgICAgIHRoaXMuZmllbGRzID0ganNvbi5maWVsZHM7XG5cbiAgICAgICAgdGhpcy5yb3dzcGFuID0gMTtcbiAgICAgICAgdGhpcy5jb2xzcGFuID0gMTtcblxuICAgICAgICBpZiAoanNvbi5maWVsZHMpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY3VycmVudEZpZWxkIGluIGpzb24uZmllbGRzKSB7XG4gICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChqc29uLmZpZWxkcywgY3VycmVudEZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb2wgPSBuZXcgQ29udGFpbmVyQ29sdW1uTW9kZWwoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb2wuZmllbGRzID0gKGpzb24uZmllbGRzW2N1cnJlbnRGaWVsZF0gfHwgW10pLm1hcCgoZmllbGQpID0+IG5ldyBGb3JtRmllbGRNb2RlbChmb3JtLCBmaWVsZCkpO1xuICAgICAgICAgICAgICAgICAgICBjb2wucm93c3BhbiA9IGpzb24uZmllbGRzW2N1cnJlbnRGaWVsZF0ubGVuZ3RoO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbC5maWVsZHMuZm9yRWFjaCgoY29sRmllbGRzOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY29sc3BhbiA9IGNvbEZpZWxkcy5jb2xzcGFuID4gdGhpcy5jb2xzcGFuID8gY29sRmllbGRzLmNvbHNwYW4gOiB0aGlzLmNvbHNwYW47XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucm93c3BhbiA9IHRoaXMucm93c3BhbiA8IGNvbC5yb3dzcGFuID8gY29sLnJvd3NwYW4gOiB0aGlzLnJvd3NwYW47XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29sdW1ucy5wdXNoKGNvbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGFyc2VWYWx1ZShqc29uOiBhbnkpOiBhbnkge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChqc29uLCAndmFsdWUnKSAmJiBqc29uLnZhbHVlICE9PSB1bmRlZmluZWQgPyBqc29uLnZhbHVlIDogbnVsbDtcblxuICAgICAgICAvKlxuICAgICAgICAgVGhpcyBpcyBuZWVkZWQgZHVlIHRvIEFjdGl2aXRpIGlzc3VlIHJlbGF0ZWQgdG8gcmVhZGluZyBkcm9wZG93biB2YWx1ZXMgYXMgdmFsdWUgc3RyaW5nXG4gICAgICAgICBidXQgc2F2aW5nIGJhY2sgYXMgb2JqZWN0OiB7IGlkOiA8aWQ+LCBuYW1lOiA8bmFtZT4gfVxuICAgICAgICAgKi9cbiAgICAgICAgaWYgKGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuRFJPUERPV04pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc0VtcHR5VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZW1wdHlPcHRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbXB0eU9wdGlvbiA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbklkLFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogdGhpcy5kZWZhdWx0RW1wdHlPcHRpb25OYW1lXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucy51bnNoaWZ0KHRoaXMuZW1wdHlPcHRpb24pO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGlzRW1wdHlWYWx1ZSA9ICF2YWx1ZSB8fCBbdGhpcy5lbXB0eU9wdGlvbi5pZCwgdGhpcy5lbXB0eU9wdGlvbi5uYW1lXS5pbmNsdWRlcyh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKGlzRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5lbXB0eU9wdGlvbi5pZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRPcHRpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRPcHRpb24oeyBpZDogdmFsdWUuaWQsIG5hbWU6IHZhbHVlLm5hbWUgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodGhpcy5oYXNNdWx0aXBsZVZhbHVlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHZhbGlkU2VsZWN0ZWRPcHRpb25zID0gKEFycmF5LmlzQXJyYXkoanNvbi52YWx1ZSkgPyBqc29uLnZhbHVlIDogW10pLmZpbHRlcigob3B0aW9uKSA9PiB0aGlzLmlzVmFsaWRPcHRpb24ob3B0aW9uKSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvbnModmFsaWRTZWxlY3RlZE9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZFNlbGVjdGVkT3B0aW9ucztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLypcbiAgICAgICAgIFRoaXMgaXMgbmVlZGVkIGR1ZSB0byBBY3Rpdml0aSBpc3N1ZSByZWxhdGVkIHRvIHJlYWRpbmcgcmFkaW8gYnV0dG9uIHZhbHVlcyBhcyB2YWx1ZSBzdHJpbmdcbiAgICAgICAgIGJ1dCBzYXZpbmcgYmFjayBhcyBvYmplY3Q6IHsgaWQ6IDxpZD4sIG5hbWU6IDxuYW1lPiB9XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoanNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5SQURJT19CVVRUT05TKSB7XG4gICAgICAgICAgICBpZiAoanNvbi52YWx1ZT8ub3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHRoaXMub3B0aW9ucyA9IHRoaXMucGFyc2VWYWxpZE9wdGlvbnMoanNvbi52YWx1ZS5vcHRpb25zKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQWN0aXZpdGkgaGFzIGEgYnVnIHdpdGggZGVmYXVsdCByYWRpbyBidXR0b24gdmFsdWUgd2hlcmUgaW5pdGlhbCBzZWxlY3Rpb24gcGFzc2VkIGFzIGBuYW1lYCB2YWx1ZVxuICAgICAgICAgICAgLy8gc28gdHJ5IHJlc29sdmluZyBjdXJyZW50IG9uZSB3aXRoIGEgZmFsbGJhY2sgdG8gZmlyc3QgZW50cnkgdmlhIG5hbWUgb3IgaWRcbiAgICAgICAgICAgIC8vIFRPRE86IG5lZWRzIHRvIGJlIHJlcG9ydGVkIGFuZCBmaXhlZCBhdCBBY3Rpdml0aSBzaWRlXG4gICAgICAgICAgICBjb25zdCBtYXRjaGluZ09wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKFxuICAgICAgICAgICAgICAgIChvcHQpID0+IG9wdC5pZCA9PT0gdmFsdWUgfHwgb3B0Lm5hbWUgPT09IHZhbHVlIHx8ICh2YWx1ZSAmJiAob3B0LmlkID09PSB2YWx1ZS5pZCB8fCBvcHQubmFtZSA9PT0gdmFsdWUubmFtZSkpXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAobWF0Y2hpbmdPcHRpb24pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmdPcHRpb24uaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmlzVmFsaWRPcHRpb24odmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRPcHRpb24oeyBpZDogdmFsdWUuaWQsIG5hbWU6IHZhbHVlLm5hbWUgfSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0RhdGVGaWVsZChqc29uKSB8fCB0aGlzLmlzRGF0ZVRpbWVGaWVsZChqc29uKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IGRhdGVWYWx1ZTogRGF0ZTtcblxuICAgICAgICAgICAgICAgIGlmIChpc051bWJlclZhbHVlKHZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSBuZXcgRGF0ZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlID0gdGhpcy5pc0RhdGVUaW1lRmllbGQoanNvbilcbiAgICAgICAgICAgICAgICAgICAgICAgID8gRGF0ZUZuc1V0aWxzLnBhcnNlRGF0ZSh2YWx1ZSwgJ1lZWVktTU0tREQgaGg6bW0gQScpXG4gICAgICAgICAgICAgICAgICAgICAgICA6IERhdGVGbnNVdGlscy5wYXJzZURhdGUodmFsdWUuc3BsaXQoJ1QnKVswXSwgJ1lZWVktTS1EJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRhdGVWYWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ2hlY2tib3hGaWVsZChqc29uKSkge1xuICAgICAgICAgICAgcmV0dXJuIGpzb24udmFsdWUgPT09ICd0cnVlJyB8fCBqc29uLnZhbHVlID09PSB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH1cblxuICAgIHVwZGF0ZUZvcm0oKSB7XG4gICAgICAgIGlmICghdGhpcy5mb3JtKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzd2l0Y2ggKHRoaXMudHlwZSkge1xuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5EUk9QRE9XTjoge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLypcbiAgICAgICAgICAgICAgICAgVGhpcyBpcyBuZWVkZWQgZHVlIHRvIEFjdGl2aXRpIHJlYWRpbmcgZHJvcGRvd24gdmFsdWVzIGFzIHN0cmluZ1xuICAgICAgICAgICAgICAgICBidXQgc2F2aW5nIGJhY2sgYXMgb2JqZWN0OiB7IGlkOiA8aWQ+LCBuYW1lOiA8bmFtZT4gfVxuICAgICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlID09PSAnZW1wdHknIHx8IHRoaXMudmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb246IEZvcm1GaWVsZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG1hdGNoaW5nT3B0aW9uIHx8IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5SQURJT19CVVRUT05TOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFkaW9CdXR0b246IEZvcm1GaWVsZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25UeXBlID09PSAncmVzdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHJhZGlvQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICA/IHsgLi4ucmFkaW9CdXR0b24sIG9wdGlvbnM6IHRoaXMub3B0aW9ucyB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IHsgaWQ6IG51bGwsIG5hbWU6IG51bGwsIG9wdGlvbnM6IHRoaXMub3B0aW9ucyB9O1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSByYWRpb0J1dHRvbiA/IHsgLi4ucmFkaW9CdXR0b24gfSA6IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLlVQTE9BRDoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5oYXNVcGxvYWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSA/IHRoaXMudmFsdWUubWFwKChlbGVtKSA9PiBlbGVtLmlkKS5qb2luKCcsJykgOiBbdGhpcy52YWx1ZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5UWVBFQUhFQUQ6IHtcbiAgICAgICAgICAgICAgICBjb25zdCB0eXBlQWhlYWRFbnRyeTogRm9ybUZpZWxkT3B0aW9uW10gPSB0aGlzLm9wdGlvbnMuZmlsdGVyKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZSB8fCBvcHQubmFtZSA9PT0gdGhpcy52YWx1ZSk7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVBaGVhZEVudHJ5Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHR5cGVBaGVhZEVudHJ5WzBdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5EQVRFOiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlID09PSAnc3RyaW5nJyAmJiB0aGlzLnZhbHVlID09PSAndG9kYXknKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBkYXRlVmFsdWU7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZVZhbHVlID0gRGF0ZUZuc1V0aWxzLnBhcnNlRGF0ZSh0aGlzLnZhbHVlLCB0aGlzLmRhdGVEaXNwbGF5Rm9ybWF0KTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9IG5ldyBEYXRlKCdlcnJvcicpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChpc1ZhbGlkRGF0ZShkYXRlVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVQYXJ0ID0gRGF0ZUZuc1V0aWxzLmZvcm1hdERhdGUoZGF0ZVZhbHVlLCAneXl5eS1NTS1kZCcpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gYCR7ZGF0ZVBhcnR9VDAwOjAwOjAwLjAwMFpgO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl92YWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5EQVRFVElNRToge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy52YWx1ZSA9PT0gJ25vdycpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVRpbWVWYWx1ZSA9IHRoaXMudmFsdWUgIT09IG51bGwgPyBEYXRlRm5zVXRpbHMuZ2V0RGF0ZSh0aGlzLnZhbHVlKSA6IG51bGw7XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZERhdGUoZGF0ZVRpbWVWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IGRhdGVUaW1lVmFsdWUudG9JU09TdHJpbmcoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuTlVNQkVSOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMuZW5hYmxlRnJhY3Rpb25zID8gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKSA6IHBhcnNlSW50KHRoaXMudmFsdWUsIDEwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuQU1PVU5UOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMuZW5hYmxlRnJhY3Rpb25zID8gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKSA6IHBhcnNlSW50KHRoaXMudmFsdWUsIDEwKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuREVDSU1BTDoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBwYXJzZUZsb2F0KHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5CT09MRUFOOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWUgIT09IG51bGwgJiYgdGhpcy52YWx1ZSAhPT0gdW5kZWZpbmVkID8gdGhpcy52YWx1ZSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5QRU9QTEU6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWUgOiBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5GVU5DVElPTkFMX0dST1VQOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkVXBkYXRlRm9ybVZhbHVlcyh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9ybS5vbkZvcm1GaWVsZENoYW5nZWQodGhpcyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2hlY2sgaWYgdGhlIGZpZWxkIHR5cGUgaXMgaW52YWxpZCwgcmVxdWlyZXMgYSB0eXBlIHRvIGJlIGEgYGNvbnRhaW5lcmBcbiAgICAgKlxuICAgICAqIEBwYXJhbSB0eXBlIGZpZWxkIHR5cGVcbiAgICAgKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdHlwZSBpcyBhIGBjb250YWluZXJgLCBvdGhlcndpc2UgYGZhbHNlYFxuICAgICAqL1xuICAgIGlzSW52YWxpZEZpZWxkVHlwZSh0eXBlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHR5cGUgPT09ICdjb250YWluZXInO1xuICAgIH1cblxuICAgIGdldE9wdGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3Qgb3B0aW9uOiBGb3JtRmllbGRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUpO1xuICAgICAgICByZXR1cm4gb3B0aW9uID8gb3B0aW9uLm5hbWUgOiBudWxsO1xuICAgIH1cblxuICAgIGhhc09wdGlvbnMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnM/Lmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgaXNFbXB0eVZhbHVlT3B0aW9uKG9wdGlvbjogRm9ybUZpZWxkT3B0aW9uKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0VtcHR5VmFsdWUgJiYgb3B0aW9uPy5pZCA9PT0gdGhpcy5kZWZhdWx0RW1wdHlPcHRpb25JZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNob3VsZFVwZGF0ZUZvcm1WYWx1ZXModHlwZSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIUZvcm1GaWVsZFR5cGVzLmlzUmVhZE9ubHlUeXBlKHR5cGUpICYmICF0aGlzLmlzSW52YWxpZEZpZWxkVHlwZSh0eXBlKSAmJiAhRm9ybUZpZWxkVHlwZXMuaXNTZWN0aW9uVHlwZSh0eXBlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE9wdGlvbnMob3B0aW9uczogRm9ybUZpZWxkT3B0aW9uW10pIHtcbiAgICAgICAgb3B0aW9ucy5mb3JFYWNoKChvcHRpb24pID0+IHRoaXMuYWRkT3B0aW9uKG9wdGlvbikpO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkT3B0aW9uKG9wdGlvbjogRm9ybUZpZWxkT3B0aW9uKSB7XG4gICAgICAgIGNvbnN0IGFscmVhZHlFeGlzdHMgPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQ/LmlkID09PSBvcHRpb24/LmlkKTtcbiAgICAgICAgaWYgKCFhbHJlYWR5RXhpc3RzKSB7XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMucHVzaChvcHRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZVZhbGlkT3B0aW9ucyhvcHRpb25zOiBhbnkpOiBGb3JtRmllbGRPcHRpb25bXSB7XG4gICAgICAgIHJldHVybiBBcnJheS5pc0FycmF5KG9wdGlvbnMpID8gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gdGhpcy5pc1ZhbGlkT3B0aW9uKG9wdGlvbikpIDogW107XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwYXJzZU9wdGlvbnMob3B0aW9uczogYW55LCBvcHRpb25UeXBlOiBGaWVsZE9wdGlvblR5cGUpOiBGb3JtRmllbGRPcHRpb25bXSB7XG4gICAgICAgIHJldHVybiBvcHRpb25UeXBlID09PSAncmVzdCcgPyBbXSA6IHRoaXMucGFyc2VWYWxpZE9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc1ZhbGlkT3B0aW9uKG9wdGlvbjogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygb3B0aW9uID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShvcHRpb24pICYmIG9wdGlvbj8uaWQgJiYgb3B0aW9uPy5uYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRlRmllbGQoanNvbjogYW55KSB7XG4gICAgICAgIHJldHVybiBqc29uLnBhcmFtcz8uZmllbGQ/LnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEUgfHwganNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNEYXRlVGltZUZpZWxkKGpzb246IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4ganNvbi5wYXJhbXM/LmZpZWxkPy50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFVElNRSB8fCBqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkRBVEVUSU1FO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNDaGVja2JveEZpZWxkKGpzb246IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4ganNvbi5wYXJhbXM/LmZpZWxkPy50eXBlID09PSBGb3JtRmllbGRUeXBlcy5CT09MRUFOIHx8IGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuQk9PTEVBTjtcbiAgICB9XG59XG4iXX0=
485
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9jb3JlL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL3dpZGdldHMvY29yZS9mb3JtLWZpZWxkLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRztBQUVILHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNoRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUNoRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUcxRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBR3RELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUduRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFNbEQsa0NBQWtDO0FBQ2xDLE1BQU0sT0FBTyxjQUFlLFNBQVEsZUFBZTtJQW9FL0MsSUFBSSxLQUFLO1FBQ0wsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ1osSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNuQixJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNoQixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDckI7SUFDTCxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUNyQixPQUFPLElB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SyxjQUFjLENBQUMsUUFBUSxDQUFDO0lBQ3pHLENBQUM7SUFFTyxlQUFlLENBQUMsSUFBUztRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLElBQUksS0FBSyxjQUFjLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLE9BQU8sQ0FBQztJQUN2RyxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3IgKi9cbmltcG9ydCB7IFdpZGdldFZpc2liaWxpdHlNb2RlbCB9IGZyb20gJy4uLy4uLy4uL21vZGVscy93aWRnZXQtdmlzaWJpbGl0eS5tb2RlbCc7XG5pbXBvcnQgeyBDb250YWluZXJDb2x1bW5Nb2RlbCB9IGZyb20gJy4vY29udGFpbmVyLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBFcnJvck1lc3NhZ2VNb2RlbCB9IGZyb20gJy4vZXJyb3ItbWVzc2FnZS5tb2RlbCc7XG5pbXBvcnQgeyBGb3JtRmllbGRNZXRhZGF0YSB9IGZyb20gJy4vZm9ybS1maWVsZC1tZXRhZGF0YSc7XG5pbXBvcnQgeyBGb3JtRmllbGRPcHRpb24gfSBmcm9tICcuL2Zvcm0tZmllbGQtb3B0aW9uJztcbmltcG9ydCB7IEZvcm1GaWVsZFR5cGVzIH0gZnJvbSAnLi9mb3JtLWZpZWxkLXR5cGVzJztcbmltcG9ydCB7IEZvcm1XaWRnZXRNb2RlbCB9IGZyb20gJy4vZm9ybS13aWRnZXQubW9kZWwnO1xuaW1wb3J0IHsgRm9ybUZpZWxkUnVsZSB9IGZyb20gJy4vZm9ybS1maWVsZC1ydWxlJztcbmltcG9ydCB7IFByb2Nlc3NGb3JtTW9kZWwgfSBmcm9tICcuL3Byb2Nlc3MtZm9ybS1tb2RlbC5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaXNOdW1iZXJWYWx1ZSB9IGZyb20gJy4vZm9ybS1maWVsZC11dGlscyc7XG5pbXBvcnQgeyBWYXJpYWJsZUNvbmZpZyB9IGZyb20gJy4vZm9ybS1maWVsZC12YXJpYWJsZS1vcHRpb25zJztcbmltcG9ydCB7IERhdGFDb2x1bW4gfSBmcm9tICcuLi8uLi8uLi8uLi9kYXRhdGFibGUvZGF0YS9kYXRhLWNvbHVtbi5tb2RlbCc7XG5pbXBvcnQgeyBEYXRlRm5zVXRpbHMgfSBmcm9tICcuLi8uLi8uLi8uLi9jb21tb24nO1xuaW1wb3J0IHsgaXNWYWxpZCBhcyBpc1ZhbGlkRGF0ZSB9IGZyb20gJ2RhdGUtZm5zJztcblxuZXhwb3J0IHR5cGUgRmllbGRPcHRpb25UeXBlID0gJ3Jlc3QnIHwgJ21hbnVhbCcgfCAndmFyaWFibGUnO1xuZXhwb3J0IHR5cGUgRmllbGRTZWxlY3Rpb25UeXBlID0gJ3NpbmdsZScgfCAnbXVsdGlwbGUnO1xuZXhwb3J0IHR5cGUgRmllbGRBbGlnbm1lbnRUeXBlID0gJ3ZlcnRpY2FsJyB8ICdob3Jpem9udGFsJztcblxuLy8gTWFwcyB0byBGb3JtRmllbGRSZXByZXNlbnRhdGlvblxuZXhwb3J0IGNsYXNzIEZvcm1GaWVsZE1vZGVsIGV4dGVuZHMgRm9ybVdpZGdldE1vZGVsIHtcbiAgICBwcml2YXRlIF92YWx1ZTogc3RyaW5nO1xuICAgIHByaXZhdGUgX3JlYWRPbmx5OiBib29sZWFuID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIHJlYWRvbmx5IGRlZmF1bHREYXRlRm9ybWF0OiBzdHJpbmcgPSAnRC1NLVlZWVknO1xuICAgIHJlYWRvbmx5IGRlZmF1bHREYXRlVGltZUZvcm1hdDogc3RyaW5nID0gJ0QtTS1ZWVlZIGhoOm1tIEEnO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEVtcHR5T3B0aW9uSWQgPSAnZW1wdHknO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdEVtcHR5T3B0aW9uTmFtZSA9ICdDaG9vc2Ugb25lLi4uJztcblxuICAgIC8vIG1vZGVsIG1lbWJlcnNcbiAgICBmaWVsZFR5cGU6IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG4gICAgb3ZlcnJpZGVJZDogYm9vbGVhbjtcbiAgICB0YWI6IHN0cmluZztcbiAgICByb3dzcGFuOiBudW1iZXIgPSAxO1xuICAgIGNvbHNwYW46IG51bWJlciA9IDE7XG4gICAgcGxhY2Vob2xkZXI6IHN0cmluZyA9IG51bGw7XG4gICAgdG9vbHRpcDogc3RyaW5nID0gbnVsbDtcbiAgICBtaW5MZW5ndGg6IG51bWJlciA9IDA7XG4gICAgbWF4TGVuZ3RoOiBudW1iZXIgPSAwO1xuICAgIG1pblZhbHVlOiBzdHJpbmc7XG4gICAgbWF4VmFsdWU6IHN0cmluZztcbiAgICBtYXhEYXRlUmFuZ2VWYWx1ZTogbnVtYmVyID0gMDtcbiAgICBtaW5EYXRlUmFuZ2VWYWx1ZTogbnVtYmVyID0gMDtcbiAgICBwcmVjaXNpb246IG51bWJlcjtcbiAgICBkeW5hbWljRGF0ZVJhbmdlU2VsZWN0aW9uOiBib29sZWFuO1xuICAgIHJlZ2V4UGF0dGVybjogc3RyaW5nO1xuICAgIG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdID0gW107XG4gICAgcmVzdFVybDogc3RyaW5nO1xuICAgIHJvbGVzOiBzdHJpbmdbXTtcbiAgICByZXN0UmVzcG9uc2VQYXRoOiBzdHJpbmc7XG4gICAgcmVzdElkUHJvcGVydHk6IHN0cmluZztcbiAgICByZXN0TGFiZWxQcm9wZXJ0eTogc3RyaW5nO1xuICAgIGhhc0VtcHR5VmFsdWU6IGJvb2xlYW47XG4gICAgY2xhc3NOYW1lOiBzdHJpbmc7XG4gICAgb3B0aW9uVHlwZTogRmllbGRPcHRpb25UeXBlO1xuICAgIHBhcmFtczogRm9ybUZpZWxkTWV0YWRhdGEgPSB7fTtcbiAgICBoeXBlcmxpbmtVcmw6IHN0cmluZztcbiAgICBkaXNwbGF5VGV4dDogc3RyaW5nO1xuICAgIGlzVmlzaWJsZTogYm9vbGVhbiA9IHRydWU7XG4gICAgdmlzaWJpbGl0eUNvbmRpdGlvbjogV2lkZ2V0VmlzaWJpbGl0eU1vZGVsID0gbnVsbDtcbiAgICBlbmFibGVGcmFjdGlvbnM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBjdXJyZW5jeTogc3RyaW5nID0gbnVsbDtcbiAgICBkYXRlRGlzcGxheUZvcm1hdDogc3RyaW5nID0gdGhpcy5kZWZhdWx0RGF0ZUZvcm1hdDtcbiAgICBzZWxlY3Rpb25UeXBlOiBGaWVsZFNlbGVjdGlvblR5cGU7XG4gICAgYWxpZ25tZW50VHlwZTogRmllbGRBbGlnbm1lbnRUeXBlO1xuICAgIHJ1bGU/OiBGb3JtRmllbGRSdWxlO1xuICAgIHNlbGVjdExvZ2dlZFVzZXI6IGJvb2xlYW47XG4gICAgZ3JvdXBzUmVzdHJpY3Rpb246IHN0cmluZ1tdO1xuICAgIGxlZnRMYWJlbHM6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICB2YXJpYWJsZUNvbmZpZzogVmFyaWFibGVDb25maWc7XG4gICAgc2NoZW1hRGVmaW5pdGlvbjogRGF0YUNvbHVtbltdO1xuICAgIGV4dGVybmFsUHJvcGVydHk/OiBzdHJpbmc7XG4gICAgc3R5bGU/OiBzdHJpbmc7XG5cbiAgICAvLyBjb250YWluZXIgbW9kZWwgbWVtYmVyc1xuICAgIG51bWJlck9mQ29sdW1uczogbnVtYmVyID0gMTtcbiAgICBmaWVsZHM6IEZvcm1GaWVsZE1vZGVsW10gPSBbXTtcbiAgICBjb2x1bW5zOiBDb250YWluZXJDb2x1bW5Nb2RlbFtdID0gW107XG5cbiAgICAvLyB1dGlsIG1lbWJlcnNcbiAgICBlbXB0eU9wdGlvbjogRm9ybUZpZWxkT3B0aW9uO1xuICAgIHZhbGlkYXRpb25TdW1tYXJ5OiBFcnJvck1lc3NhZ2VNb2RlbDtcblxuICAgIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgICAgICBpZiAodiAhPT0gdGhpcy5fdmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdjtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0IHJlYWRPbmx5KCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5mb3JtPy5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX3JlYWRPbmx5O1xuICAgIH1cblxuICAgIHNldCByZWFkT25seShyZWFkT25seTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9yZWFkT25seSA9IHJlYWRPbmx5O1xuICAgICAgICB0aGlzLnVwZGF0ZUZvcm0oKTtcbiAgICB9XG5cbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgICAgICAgdGhpcy51cGRhdGVGb3JtKCk7XG4gICAgfVxuXG4gICAgZ2V0IGlzVmFsaWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1ZhbGlkO1xuICAgIH1cblxuICAgIGdldCBoYXNNdWx0aXBsZVZhbHVlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0aW9uVHlwZSA9PT0gJ211bHRpcGxlJztcbiAgICB9XG5cbiAgICBtYXJrQXNJbnZhbGlkKCkge1xuICAgICAgICB0aGlzLl9pc1ZhbGlkID0gZmFsc2U7XG4gICAgfVxuXG4gICAgbWFya0FzVmFsaWQoKSB7XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHZhbGlkYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICB0aGlzLnZhbGlkYXRpb25TdW1tYXJ5ID0gbmV3IEVycm9yTWVzc2FnZU1vZGVsKCk7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNGaWVsZFZhbGlkYXRhYmxlKCkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSB0aGlzLmZvcm0uZmllbGRWYWxpZGF0b3JzIHx8IFtdO1xuICAgICAgICAgICAgZm9yIChjb25zdCB2YWxpZGF0b3Igb2YgdmFsaWRhdG9ycykge1xuICAgICAgICAgICAgICAgIGlmICghdmFsaWRhdG9yLnZhbGlkYXRlKHRoaXMpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2lzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2lzVmFsaWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2lzVmFsaWQgPSB0cnVlO1xuICAgICAgICByZXR1cm4gdGhpcy5faXNWYWxpZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmllbGRWYWxpZGF0YWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnJlYWRPbmx5IHx8IEZvcm1GaWVsZFR5cGVzLmlzVmFsaWRhdGFibGVUeXBlKHRoaXMudHlwZSk7XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3IoZm9ybTogYW55LCBqc29uPzogYW55KSB7XG4gICAgICAgIHN1cGVyKGZvcm0sIGpzb24pO1xuICAgICAgICBpZiAoanNvbikge1xuICAgICAgICAgICAgdGhpcy5maWVsZFR5cGUgPSBqc29uLmZpZWxkVHlwZTtcbiAgICAgICAgICAgIHRoaXMuaWQgPSBqc29uLmlkO1xuICAgICAgICAgICAgdGhpcy5uYW1lID0ganNvbi5uYW1lO1xuICAgICAgICAgICAgdGhpcy50eXBlID0ganNvbi50eXBlO1xuICAgICAgICAgICAgdGhpcy5yb2xlcyA9IGpzb24ucm9sZXM7XG4gICAgICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IGpzb24ucmVxdWlyZWQ7XG4gICAgICAgICAgICB0aGlzLl9yZWFkT25seSA9IGpzb24ucmVhZE9ubHkgfHwganNvbi50eXBlID09PSAncmVhZG9ubHknO1xuICAgICAgICAgICAgdGhpcy5vdmVycmlkZUlkID0ganNvbi5vdmVycmlkZUlkO1xuICAgICAgICAgICAgdGhpcy50YWIgPSBqc29uLnRhYjtcbiAgICAgICAgICAgIHRoaXMucmVzdFVybCA9IGpzb24ucmVzdFVybDtcbiAgICAgICAgICAgIHRoaXMucmVzdFJlc3BvbnNlUGF0aCA9IGpzb24ucmVzdFJlc3BvbnNlUGF0aDtcbiAgICAgICAgICAgIHRoaXMucmVzdElkUHJvcGVydHkgPSBqc29uLnJlc3RJZFByb3BlcnR5O1xuICAgICAgICAgICAgdGhpcy5yZXN0TGFiZWxQcm9wZXJ0eSA9IGpzb24ucmVzdExhYmVsUHJvcGVydHk7XG4gICAgICAgICAgICB0aGlzLmNvbHNwYW4gPSBqc29uLmNvbHNwYW47XG4gICAgICAgICAgICB0aGlzLnJvd3NwYW4gPSBqc29uLnJvd3NwYW47XG4gICAgICAgICAgICB0aGlzLm1pbkxlbmd0aCA9IGpzb24ubWluTGVuZ3RoIHx8IDA7XG4gICAgICAgICAgICB0aGlzLm1heExlbmd0aCA9IGpzb24ubWF4TGVuZ3RoIHx8IDA7XG4gICAgICAgICAgICB0aGlzLm1pblZhbHVlID0ganNvbi5taW5WYWx1ZTtcbiAgICAgICAgICAgIHRoaXMubWF4VmFsdWUgPSBqc29uLm1heFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5taW5EYXRlUmFuZ2VWYWx1ZSA9IGpzb24ubWluRGF0ZVJhbmdlVmFsdWU7XG4gICAgICAgICAgICB0aGlzLm1heERhdGVSYW5nZVZhbHVlID0ganNvbi5tYXhEYXRlUmFuZ2VWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuZHluYW1pY0RhdGVSYW5nZVNlbGVjdGlvbiA9IGpzb24uZHluYW1pY0RhdGVSYW5nZVNlbGVjdGlvbjtcbiAgICAgICAgICAgIHRoaXMucmVnZXhQYXR0ZXJuID0ganNvbi5yZWdleFBhdHRlcm47XG4gICAgICAgICAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLnBhcnNlT3B0aW9ucyhqc29uLm9wdGlvbnMsIGpzb24ub3B0aW9uVHlwZSk7XG4gICAgICAgICAgICB0aGlzLmVtcHR5T3B0aW9uID0gdGhpcy5nZXRFbXB0eU9wdGlvbih0aGlzLm9wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5oYXNFbXB0eVZhbHVlID0ganNvbj8uaGFzRW1wdHlWYWx1ZSA/PyAhIXRoaXMuZW1wdHlPcHRpb247XG4gICAgICAgICAgICB0aGlzLmNsYXNzTmFtZSA9IGpzb24uY2xhc3NOYW1lO1xuICAgICAgICAgICAgdGhpcy5vcHRpb25UeXBlID0ganNvbi5vcHRpb25UeXBlO1xuICAgICAgICAgICAgdGhpcy5wYXJhbXMgPSBqc29uLnBhcmFtcyB8fCB7fTtcbiAgICAgICAgICAgIHRoaXMuaHlwZXJsaW5rVXJsID0ganNvbi5oeXBlcmxpbmtVcmw7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlUZXh0ID0ganNvbi5kaXNwbGF5VGV4dDtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eUNvbmRpdGlvbiA9IGpzb24udmlzaWJpbGl0eUNvbmRpdGlvbiA/IG5ldyBXaWRnZXRWaXNpYmlsaXR5TW9kZWwoanNvbi52aXNpYmlsaXR5Q29uZGl0aW9uKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHRoaXMuZW5hYmxlRnJhY3Rpb25zID0ganNvbi5lbmFibGVGcmFjdGlvbnM7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbmN5ID0ganNvbi5jdXJyZW5jeTtcbiAgICAgICAgICAgIHRoaXMuZGF0ZURpc3BsYXlGb3JtYXQgPSBqc29uLmRhdGVEaXNwbGF5Rm9ybWF0IHx8IHRoaXMuZ2V0RGVmYXVsdERhdGVGb3JtYXQoanNvbik7XG4gICAgICAgICAgICB0aGlzLnZhbGlkYXRpb25TdW1tYXJ5ID0gbmV3IEVycm9yTWVzc2FnZU1vZGVsKCk7XG4gICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSBqc29uLnRvb2x0aXA7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblR5cGUgPSBqc29uLnNlbGVjdGlvblR5cGU7XG4gICAgICAgICAgICB0aGlzLmFsaWdubWVudFR5cGUgPSBqc29uLmFsaWdubWVudFR5cGU7XG4gICAgICAgICAgICB0aGlzLnJ1bGUgPSBqc29uLnJ1bGU7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdExvZ2dlZFVzZXIgPSBqc29uLnNlbGVjdExvZ2dlZFVzZXI7XG4gICAgICAgICAgICB0aGlzLmdyb3Vwc1Jlc3RyaWN0aW9uID0ganNvbi5ncm91cHNSZXN0cmljdGlvbj8uZ3JvdXBzO1xuICAgICAgICAgICAgdGhpcy52YXJpYWJsZUNvbmZpZyA9IGpzb24udmFyaWFibGVDb25maWc7XG4gICAgICAgICAgICB0aGlzLnNjaGVtYURlZmluaXRpb24gPSBqc29uLnNjaGVtYURlZmluaXRpb247XG4gICAgICAgICAgICB0aGlzLnByZWNpc2lvbiA9IGpzb24ucHJlY2lzaW9uO1xuICAgICAgICAgICAgdGhpcy5leHRlcm5hbFByb3BlcnR5ID0ganNvbi5leHRlcm5hbFByb3BlcnR5O1xuICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLnBhcnNlVmFsdWUoanNvbik7XG4gICAgICAgICAgICB0aGlzLnN0eWxlID0ganNvbi5zdHlsZTtcblxuICAgICAgICAgICAgaWYgKGpzb24ucGxhY2Vob2xkZXIgJiYganNvbi5wbGFjZWhvbGRlciAhPT0gJycgJiYganNvbi5wbGFjZWhvbGRlciAhPT0gJ251bGwnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wbGFjZWhvbGRlciA9IGpzb24ucGxhY2Vob2xkZXI7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChGb3JtRmllbGRUeXBlcy5pc1JlYWRPbmx5VHlwZSh0aGlzLnR5cGUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyYW1zPy5maWVsZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFZhbHVlRm9yUmVhZG9ubHlUeXBlKGZvcm0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEZvcm1GaWVsZFR5cGVzLmlzQ29udGFpbmVyVHlwZSh0aGlzLnR5cGUpIHx8IEZvcm1GaWVsZFR5cGVzLmlzU2VjdGlvblR5cGUodGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgIHRoaXMuY29udGFpbmVyRmFjdG9yeShqc29uLCBmb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmb3JtPy5qc29uKSB7XG4gICAgICAgICAgICB0aGlzLmxlZnRMYWJlbHMgPSBmb3JtLmpzb24ubGVmdExhYmVscyB8fCBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudXBkYXRlRm9ybSgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RW1wdHlPcHRpb24ob3B0aW9uczogRm9ybUZpZWxkT3B0aW9uW10pOiBGb3JtRmllbGRPcHRpb24ge1xuICAgICAgICByZXR1cm4gb3B0aW9ucy5maW5kKChvcHRpb24pID0+IG9wdGlvbj8uaWQgPT09IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uSWQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0VmFsdWVGb3JSZWFkb25seVR5cGUoZm9ybTogYW55KSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5nZXRQcm9jZXNzVmFyaWFibGVWYWx1ZSh0aGlzLnBhcmFtcy5maWVsZCwgZm9ybSk7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXREZWZhdWx0RGF0ZUZvcm1hdChqc29uRmllbGQ6IGFueSk6IHN0cmluZyB7XG4gICAgICAgIGxldCBvcmlnaW5hbFR5cGUgPSBqc29uRmllbGQudHlwZTtcbiAgICAgICAgaWYgKEZvcm1GaWVsZFR5cGVzLmlzUmVhZE9ubHlUeXBlKGpzb25GaWVsZC50eXBlKSAmJiBqc29uRmllbGQucGFyYW1zICYmIGpzb25GaWVsZC5wYXJhbXMuZmllbGQpIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVHlwZSA9IGpzb25GaWVsZC5wYXJhbXMuZmllbGQudHlwZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxUeXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFVElNRSA/IHRoaXMuZGVmYXVsdERhdGVUaW1lRm9ybWF0IDogdGhpcy5kZWZhdWx0RGF0ZUZvcm1hdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzVHlwZWFoZWFkRmllbGRUeXBlKHR5cGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZSA9PT0gJ3R5cGVhaGVhZCc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGaWVsZE5hbWVXaXRoTGFiZWwobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIG5hbWUgKyAnX0xBQkVMJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFByb2Nlc3NWYXJpYWJsZVZhbHVlKGZpZWxkOiBhbnksIGZvcm06IFByb2Nlc3NGb3JtTW9kZWwpOiBhbnkge1xuICAgICAgICBsZXQgZmllbGROYW1lID0gZmllbGQubmFtZTtcbiAgICAgICAgaWYgKHRoaXMuaXNUeXBlYWhlYWRGaWVsZFR5cGUoZmllbGQudHlwZSkpIHtcbiAgICAgICAgICAgIGZpZWxkTmFtZSA9IHRoaXMuZ2V0RmllbGROYW1lV2l0aExhYmVsKGZpZWxkLmlkKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZm9ybS5nZXRQcm9jZXNzVmFyaWFibGVWYWx1ZShmaWVsZE5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgY29udGFpbmVyRmFjdG9yeShqc29uOiBhbnksIGZvcm06IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLm51bWJlck9mQ29sdW1ucyA9IGpzb24ubnVtYmVyT2ZDb2x1bW5zIHx8IDE7XG5cbiAgICAgICAgdGhpcy5maWVsZHMgPSBqc29uLmZpZWxkcztcblxuICAgICAgICB0aGlzLnJvd3NwYW4gPSAxO1xuICAgICAgICB0aGlzLmNvbHNwYW4gPSAxO1xuXG4gICAgICAgIGlmIChqc29uLmZpZWxkcykge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjdXJyZW50RmllbGQgaW4ganNvbi5maWVsZHMpIHtcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGpzb24uZmllbGRzLCBjdXJyZW50RmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbCA9IG5ldyBDb250YWluZXJDb2x1bW5Nb2RlbCgpO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbC5maWVsZHMgPSAoanNvbi5maWVsZHNbY3VycmVudEZpZWxkXSB8fCBbXSkubWFwKChmaWVsZCkgPT4gbmV3IEZvcm1GaWVsZE1vZGVsKGZvcm0sIGZpZWxkKSk7XG4gICAgICAgICAgICAgICAgICAgIGNvbC5yb3dzcGFuID0ganNvbi5maWVsZHNbY3VycmVudEZpZWxkXS5sZW5ndGg7XG5cbiAgICAgICAgICAgICAgICAgICAgY29sLmZpZWxkcy5mb3JFYWNoKChjb2xGaWVsZHM6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2xzcGFuID0gY29sRmllbGRzLmNvbHNwYW4gPiB0aGlzLmNvbHNwYW4gPyBjb2xGaWVsZHMuY29sc3BhbiA6IHRoaXMuY29sc3BhbjtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3dzcGFuID0gdGhpcy5yb3dzcGFuIDwgY29sLnJvd3NwYW4gPyBjb2wucm93c3BhbiA6IHRoaXMucm93c3BhbjtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jb2x1bW5zLnB1c2goY29sKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXJzZVZhbHVlKGpzb246IGFueSk6IGFueSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGpzb24sICd2YWx1ZScpICYmIGpzb24udmFsdWUgIT09IHVuZGVmaW5lZCA/IGpzb24udmFsdWUgOiBudWxsO1xuXG4gICAgICAgIC8qXG4gICAgICAgICBUaGlzIGlzIG5lZWRlZCBkdWUgdG8gQWN0aXZpdGkgaXNzdWUgcmVsYXRlZCB0byByZWFkaW5nIGRyb3Bkb3duIHZhbHVlcyBhcyB2YWx1ZSBzdHJpbmdcbiAgICAgICAgIGJ1dCBzYXZpbmcgYmFjayBhcyBvYmplY3Q6IHsgaWQ6IDxpZD4sIG5hbWU6IDxuYW1lPiB9XG4gICAgICAgICAqL1xuICAgICAgICBpZiAoanNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EUk9QRE9XTikge1xuICAgICAgICAgICAgaWYgKHRoaXMuaGFzRW1wdHlWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdGhpcy5lbXB0eU9wdGlvbikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmVtcHR5T3B0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uSWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiB0aGlzLmRlZmF1bHRFbXB0eU9wdGlvbk5hbWVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnVuc2hpZnQodGhpcy5lbXB0eU9wdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY29uc3QgaXNFbXB0eVZhbHVlID0gIXZhbHVlIHx8IFt0aGlzLmVtcHR5T3B0aW9uLmlkLCB0aGlzLmVtcHR5T3B0aW9uLm5hbWVdLmluY2x1ZGVzKHZhbHVlKTtcbiAgICAgICAgICAgICAgICBpZiAoaXNFbXB0eVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmVtcHR5T3B0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE9wdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvbih7IGlkOiB2YWx1ZS5pZCwgbmFtZTogdmFsdWUubmFtZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc011bHRpcGxlVmFsdWVzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsaWRTZWxlY3RlZE9wdGlvbnMgPSAoQXJyYXkuaXNBcnJheShqc29uLnZhbHVlKSA/IGpzb24udmFsdWUgOiBbXSkuZmlsdGVyKChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKTtcblxuICAgICAgICAgICAgICAgIHRoaXMuYWRkT3B0aW9ucyh2YWxpZFNlbGVjdGVkT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkU2VsZWN0ZWRPcHRpb25zO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIH1cblxuICAgICAgICAvKlxuICAgICAgICAgVGhpcyBpcyBuZWVkZWQgZHVlIHRvIEFjdGl2aXRpIGlzc3VlIHJlbGF0ZWQgdG8gcmVhZGluZyByYWRpbyBidXR0b24gdmFsdWVzIGFzIHZhbHVlIHN0cmluZ1xuICAgICAgICAgYnV0IHNhdmluZyBiYWNrIGFzIG9iamVjdDogeyBpZDogPGlkPiwgbmFtZTogPG5hbWU+IH1cbiAgICAgICAgICovXG4gICAgICAgIGlmIChqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLlJBRElPX0JVVFRPTlMpIHtcbiAgICAgICAgICAgIGlmIChqc29uLnZhbHVlPy5vcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5vcHRpb25zID0gdGhpcy5wYXJzZVZhbGlkT3B0aW9ucyhqc29uLnZhbHVlLm9wdGlvbnMpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBBY3Rpdml0aSBoYXMgYSBidWcgd2l0aCBkZWZhdWx0IHJhZGlvIGJ1dHRvbiB2YWx1ZSB3aGVyZSBpbml0aWFsIHNlbGVjdGlvbiBwYXNzZWQgYXMgYG5hbWVgIHZhbHVlXG4gICAgICAgICAgICAvLyBzbyB0cnkgcmVzb2x2aW5nIGN1cnJlbnQgb25lIHdpdGggYSBmYWxsYmFjayB0byBmaXJzdCBlbnRyeSB2aWEgbmFtZSBvciBpZFxuICAgICAgICAgICAgLy8gVE9ETzogbmVlZHMgdG8gYmUgcmVwb3J0ZWQgYW5kIGZpeGVkIGF0IEFjdGl2aXRpIHNpZGVcbiAgICAgICAgICAgIGNvbnN0IG1hdGNoaW5nT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoXG4gICAgICAgICAgICAgICAgKG9wdCkgPT4gb3B0LmlkID09PSB2YWx1ZSB8fCBvcHQubmFtZSA9PT0gdmFsdWUgfHwgKHZhbHVlICYmIChvcHQuaWQgPT09IHZhbHVlLmlkIHx8IG9wdC5uYW1lID09PSB2YWx1ZS5uYW1lKSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChtYXRjaGluZ09wdGlvbikge1xuICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGluZ09wdGlvbi5pZDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuaXNWYWxpZE9wdGlvbih2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZE9wdGlvbih7IGlkOiB2YWx1ZS5pZCwgbmFtZTogdmFsdWUubmFtZSB9KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsdWUuaWQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzRGF0ZUZpZWxkKGpzb24pIHx8IHRoaXMuaXNEYXRlVGltZUZpZWxkKGpzb24pKSB7XG4gICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgZGF0ZVZhbHVlOiBEYXRlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzTnVtYmVyVmFsdWUodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9IG5ldyBEYXRlKHZhbHVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSB0aGlzLmlzRGF0ZVRpbWVGaWVsZChqc29uKVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBEYXRlRm5zVXRpbHMucGFyc2VEYXRlKHZhbHVlLCAnWVlZWS1NTS1ERCBoaDptbSBBJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogRGF0ZUZuc1V0aWxzLnBhcnNlRGF0ZSh2YWx1ZS5zcGxpdCgnVCcpWzBdLCAnWVlZWS1NLUQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZERhdGUoZGF0ZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZVZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuaXNDaGVja2JveEZpZWxkKGpzb24pKSB7XG4gICAgICAgICAgICByZXR1cm4ganNvbi52YWx1ZSA9PT0gJ3RydWUnIHx8IGpzb24udmFsdWUgPT09IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuXG4gICAgdXBkYXRlRm9ybSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLmZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRST1BET1dOOiB7XG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvKlxuICAgICAgICAgICAgICAgICBUaGlzIGlzIG5lZWRlZCBkdWUgdG8gQWN0aXZpdGkgcmVhZGluZyBkcm9wZG93biB2YWx1ZXMgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICAgIGJ1dCBzYXZpbmcgYmFjayBhcyBvYmplY3Q6IHsgaWQ6IDxpZD4sIG5hbWU6IDxuYW1lPiB9XG4gICAgICAgICAgICAgICAgICovXG4gICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWU7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWUgPT09ICdlbXB0eScgfHwgdGhpcy52YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaGluZ09wdGlvbjogRm9ybUZpZWxkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbWF0Y2hpbmdPcHRpb24gfHwgbnVsbDtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnZhbHVlLmlkID09PSAnZW1wdHknIHx8IHRoaXMudmFsdWUuaWQgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdPcHRpb246IEZvcm1GaWVsZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKChvcHQpID0+IG9wdC5pZCA9PT0gdGhpcy52YWx1ZS5pZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG1hdGNoaW5nT3B0aW9uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuUkFESU9fQlVUVE9OUzoge1xuICAgICAgICAgICAgICAgIGNvbnN0IHJhZGlvQnV0dG9uOiBGb3JtRmllbGRPcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCgob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9uVHlwZSA9PT0gJ3Jlc3QnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSByYWRpb0J1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgPyB7IC4uLnJhZGlvQnV0dG9uLCBvcHRpb25zOiB0aGlzLm9wdGlvbnMgfVxuICAgICAgICAgICAgICAgICAgICAgICAgOiB7IGlkOiBudWxsLCBuYW1lOiBudWxsLCBvcHRpb25zOiB0aGlzLm9wdGlvbnMgfTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gcmFkaW9CdXR0b24gPyB7IC4uLnJhZGlvQnV0dG9uIH0gOiBudWxsO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FzZSBGb3JtRmllbGRUeXBlcy5VUExPQUQ6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uaGFzVXBsb2FkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy52YWx1ZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IEFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkgPyB0aGlzLnZhbHVlLm1hcCgoZWxlbSkgPT4gZWxlbS5pZCkuam9pbignLCcpIDogW3RoaXMudmFsdWVdO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuVFlQRUFIRUFEOiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdHlwZUFoZWFkRW50cnk6IEZvcm1GaWVsZE9wdGlvbltdID0gdGhpcy5vcHRpb25zLmZpbHRlcigob3B0KSA9PiBvcHQuaWQgPT09IHRoaXMudmFsdWUgfHwgb3B0Lm5hbWUgPT09IHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgICAgIGlmICh0eXBlQWhlYWRFbnRyeS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0eXBlQWhlYWRFbnRyeVswXTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBudWxsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuREFURToge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSA9PT0gJ3N0cmluZycgJiYgdGhpcy52YWx1ZSA9PT0gJ3RvZGF5Jykge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsZXQgZGF0ZVZhbHVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGVWYWx1ZSA9IERhdGVGbnNVdGlscy5wYXJzZURhdGUodGhpcy52YWx1ZSwgdGhpcy5kYXRlRGlzcGxheUZvcm1hdCk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgICAgICAgICBkYXRlVmFsdWUgPSBuZXcgRGF0ZSgnZXJyb3InKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoaXNWYWxpZERhdGUoZGF0ZVZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkYXRlUGFydCA9IERhdGVGbnNVdGlscy5mb3JtYXREYXRlKGRhdGVWYWx1ZSwgJ3l5eXktTU0tZGQnKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IGAke2RhdGVQYXJ0fVQwMDowMDowMC4wMDBaYDtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fdmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuREFURVRJTUU6IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgPT09ICdzdHJpbmcnICYmIHRoaXMudmFsdWUgPT09ICdub3cnKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVUaW1lVmFsdWUgPSB0aGlzLnZhbHVlICE9PSBudWxsID8gRGF0ZUZuc1V0aWxzLmdldERhdGUodGhpcy52YWx1ZSkgOiBudWxsO1xuXG4gICAgICAgICAgICAgICAgaWYgKGlzVmFsaWREYXRlKGRhdGVUaW1lVmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSBkYXRlVGltZVZhbHVlLnRvSVNPU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLk5VTUJFUjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLmVuYWJsZUZyYWN0aW9ucyA/IHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgOiBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkFNT1VOVDoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLmVuYWJsZUZyYWN0aW9ucyA/IHBhcnNlRmxvYXQodGhpcy52YWx1ZSkgOiBwYXJzZUludCh0aGlzLnZhbHVlLCAxMCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlIEZvcm1GaWVsZFR5cGVzLkRFQ0lNQUw6IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gcGFyc2VGbG9hdCh0aGlzLnZhbHVlKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuQk9PTEVBTjoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlICE9PSBudWxsICYmIHRoaXMudmFsdWUgIT09IHVuZGVmaW5lZCA/IHRoaXMudmFsdWUgOiBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuUEVPUExFOiB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnZhbHVlc1t0aGlzLmlkXSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogbnVsbDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNhc2UgRm9ybUZpZWxkVHlwZXMuRlVOQ1RJT05BTF9HUk9VUDoge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS52YWx1ZXNbdGhpcy5pZF0gPSB0aGlzLnZhbHVlID8gdGhpcy52YWx1ZSA6IG51bGw7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZFVwZGF0ZUZvcm1WYWx1ZXModGhpcy50eXBlKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0udmFsdWVzW3RoaXMuaWRdID0gdGhpcy52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmZvcm0ub25Gb3JtRmllbGRDaGFuZ2VkKHRoaXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENoZWNrIGlmIHRoZSBmaWVsZCB0eXBlIGlzIGludmFsaWQsIHJlcXVpcmVzIGEgdHlwZSB0byBiZSBhIGBjb250YWluZXJgXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdHlwZSBmaWVsZCB0eXBlXG4gICAgICogQHJldHVybnMgYHRydWVgIGlmIHR5cGUgaXMgYSBgY29udGFpbmVyYCwgb3RoZXJ3aXNlIGBmYWxzZWBcbiAgICAgKi9cbiAgICBpc0ludmFsaWRGaWVsZFR5cGUodHlwZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0eXBlID09PSAnY29udGFpbmVyJztcbiAgICB9XG5cbiAgICBnZXRPcHRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IG9wdGlvbjogRm9ybUZpZWxkT3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0LmlkID09PSB0aGlzLnZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbiA/IG9wdGlvbi5uYW1lIDogbnVsbDtcbiAgICB9XG5cbiAgICBoYXNPcHRpb25zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zPy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIGlzRW1wdHlWYWx1ZU9wdGlvbihvcHRpb246IEZvcm1GaWVsZE9wdGlvbik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNFbXB0eVZhbHVlICYmIG9wdGlvbj8uaWQgPT09IHRoaXMuZGVmYXVsdEVtcHR5T3B0aW9uSWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG91bGRVcGRhdGVGb3JtVmFsdWVzKHR5cGUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICFGb3JtRmllbGRUeXBlcy5pc1JlYWRPbmx5VHlwZSh0eXBlKSAmJiAhdGhpcy5pc0ludmFsaWRGaWVsZFR5cGUodHlwZSkgJiYgIUZvcm1GaWVsZFR5cGVzLmlzU2VjdGlvblR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRPcHRpb25zKG9wdGlvbnM6IEZvcm1GaWVsZE9wdGlvbltdKSB7XG4gICAgICAgIG9wdGlvbnMuZm9yRWFjaCgob3B0aW9uKSA9PiB0aGlzLmFkZE9wdGlvbihvcHRpb24pKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE9wdGlvbihvcHRpb246IEZvcm1GaWVsZE9wdGlvbikge1xuICAgICAgICBjb25zdCBhbHJlYWR5RXhpc3RzID0gdGhpcy5vcHRpb25zLmZpbmQoKG9wdCkgPT4gb3B0Py5pZCA9PT0gb3B0aW9uPy5pZCk7XG4gICAgICAgIGlmICghYWxyZWFkeUV4aXN0cykge1xuICAgICAgICAgICAgdGhpcy5vcHRpb25zLnB1c2gob3B0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VWYWxpZE9wdGlvbnMob3B0aW9uczogYW55KTogRm9ybUZpZWxkT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMuZmlsdGVyKChvcHRpb24pID0+IHRoaXMuaXNWYWxpZE9wdGlvbihvcHRpb24pKSA6IFtdO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFyc2VPcHRpb25zKG9wdGlvbnM6IGFueSwgb3B0aW9uVHlwZTogRmllbGRPcHRpb25UeXBlKTogRm9ybUZpZWxkT3B0aW9uW10ge1xuICAgICAgICByZXR1cm4gb3B0aW9uVHlwZSA9PT0gJ3Jlc3QnID8gW10gOiB0aGlzLnBhcnNlVmFsaWRPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWYWxpZE9wdGlvbihvcHRpb246IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG9wdGlvbiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkob3B0aW9uKSAmJiBvcHRpb24/LmlkICYmIG9wdGlvbj8ubmFtZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF0ZUZpZWxkKGpzb246IGFueSkge1xuICAgICAgICByZXR1cm4ganNvbi5wYXJhbXM/LmZpZWxkPy50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFIHx8IGpzb24udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRGF0ZVRpbWVGaWVsZChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGpzb24ucGFyYW1zPy5maWVsZD8udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuREFURVRJTUUgfHwganNvbi50eXBlID09PSBGb3JtRmllbGRUeXBlcy5EQVRFVElNRTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ2hlY2tib3hGaWVsZChqc29uOiBhbnkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIGpzb24ucGFyYW1zPy5maWVsZD8udHlwZSA9PT0gRm9ybUZpZWxkVHlwZXMuQk9PTEVBTiB8fCBqc29uLnR5cGUgPT09IEZvcm1GaWVsZFR5cGVzLkJPT0xFQU47XG4gICAgfVxufVxuIl19
@@ -20659,12 +20659,12 @@ class FormFieldModel extends FormWidgetModel {
20659
20659
  }
20660
20660
  const isEmptyValue = !value || [this.emptyOption.id, this.emptyOption.name].includes(value);
20661
20661
  if (isEmptyValue) {
20662
- return this.emptyOption.id;
20662
+ return this.emptyOption;
20663
20663
  }
20664
20664
  }
20665
20665
  if (this.isValidOption(value)) {
20666
20666
  this.addOption({ id: value.id, name: value.name });
20667
- return value.id;
20667
+ return value;
20668
20668
  }
20669
20669
  if (this.hasMultipleValues) {
20670
20670
  const validSelectedOptions = (Array.isArray(json.value) ? json.value : []).filter((option) => this.isValidOption(option));
@@ -20742,6 +20742,14 @@ class FormFieldModel extends FormWidgetModel {
20742
20742
  const matchingOption = this.options.find((opt) => opt.id === this.value);
20743
20743
  this.form.values[this.id] = matchingOption || null;
20744
20744
  }
20745
+ if (typeof this.value === 'object') {
20746
+ if (this.value.id === 'empty' || this.value.id === '') {
20747
+ this.form.values[this.id] = null;
20748
+ break;
20749
+ }
20750
+ const matchingOption = this.options.find((opt) => opt.id === this.value.id);
20751
+ this.form.values[this.id] = matchingOption;
20752
+ }
20745
20753
  break;
20746
20754
  }
20747
20755
  case FormFieldTypes.RADIO_BUTTONS: {