@netgrif/components-core 6.2.6 → 6.2.8

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.
@@ -232,7 +232,8 @@
232
232
  "min": "Die eingegebene Nummer muss größer als {{length}} sein",
233
233
  "translationRequired": "Übersetzung für Sprachen: <{{translation}}> muss eingegeben werden",
234
234
  "translationOnly": "Nur die Übersetzung für Sprachen: <{{translation}}> ist erlaubt",
235
- "requiredI18n": "Es muss mindestens ein Wert eingegeben werden"
235
+ "requiredI18n": "Es muss mindestens ein Wert eingegeben werden",
236
+ "requiredUserList": "Es muss mindestens ein Wert eingegeben werden"
236
237
  },
237
238
  "snackBar": {
238
239
  "downloadFail": " könnte nicht heruntergeladen werden",
@@ -232,7 +232,8 @@
232
232
  "min": "Entered number must be greater than {{length}}",
233
233
  "translationRequired": "Translation for languages: <{{translation}}> must be entered",
234
234
  "translationOnly": "Only translation for languages: <{{translation}}> is allowed",
235
- "requiredI18n": "At least one value must be entered"
235
+ "requiredI18n": "At least one value must be entered",
236
+ "requiredUserList": "At least one value must be entered"
236
237
  },
237
238
  "snackBar": {
238
239
  "downloadFail": " failed to download",
@@ -232,7 +232,8 @@
232
232
  "min": "Zadané číslo musí byť väčšie ako {{length}}",
233
233
  "translationRequired": "Musí byť vyplnený preklad pre jazyky: <{{translation}}>",
234
234
  "translationOnly": "Je povolený iba preklad pre jazyky: <{{translation}}>",
235
- "requiredI18n": "Aspoň jedna hodnota musí byť vyplnená"
235
+ "requiredI18n": "Aspoň jedna hodnota musí byť vyplnená",
236
+ "requiredUserList": "Aspoň jedna hodnota musí byť vyplnená"
236
237
  },
237
238
  "snackBar": {
238
239
  "downloadFail": " sťahovanie zlyhalo",
@@ -7,5 +7,41 @@ export class UserListField extends DataField {
7
7
  return (!a && !b) ||
8
8
  (!!a && !!b && a.userValues.length === b.userValues.length);
9
9
  }
10
+ calculateValidity(forValidRequired, formControl) {
11
+ const isDisabled = formControl.disabled;
12
+ if (forValidRequired) {
13
+ formControl.enable();
14
+ }
15
+ formControl.clearValidators();
16
+ if (forValidRequired) {
17
+ formControl.setValidators(this.behavior.required ? [this.requiredTrue] : []);
18
+ }
19
+ else {
20
+ formControl.setValidators(this.resolveFormControlValidators());
21
+ }
22
+ formControl.updateValueAndValidity();
23
+ const validity = this._determineFormControlValidity(formControl);
24
+ isDisabled ? formControl.disable() : formControl.enable();
25
+ return validity;
26
+ }
27
+ resolveFormControlValidators() {
28
+ const result = [];
29
+ if (this.behavior.required) {
30
+ result.push(this.requiredTrue);
31
+ }
32
+ if (this.validations) {
33
+ if (this._validators) {
34
+ result.push(...this._validators);
35
+ }
36
+ else {
37
+ this._validators = this.resolveValidations();
38
+ result.push(...this._validators);
39
+ }
40
+ }
41
+ return result;
42
+ }
43
+ requiredTrue(control) {
44
+ return !!control.value && !!control.value._userValues && control.value._userValues.length > 0 ? null : { requiredUserList: true };
45
+ }
10
46
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFPN0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUF3QjtJQUV2RCxZQUFZLFFBQWdCLEVBQUUsS0FBYSxFQUFFLFFBQWtCLEVBQUUsS0FBb0IsRUFDekUsV0FBb0IsRUFBRSxXQUFvQixFQUFFLE1BQWUsRUFBRSxXQUErQixFQUFFLFNBQXFCLEVBQ25ILFlBQXFCO1FBQzdCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRVMsYUFBYSxDQUFDLENBQWdCLEVBQUUsQ0FBZ0I7UUFDdEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMvYWJzdHJhY3QtZGF0YS1maWVsZCc7XG5pbXBvcnQgeyBCZWhhdmlvciB9IGZyb20gJy4uLy4uL21vZGVscy9iZWhhdmlvcic7XG5pbXBvcnQgeyBMYXlvdXQgfSBmcm9tICcuLi8uLi9tb2RlbHMvbGF5b3V0JztcbmltcG9ydCB7IFZhbGlkYXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvdmFsaWRhdGlvbic7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2RlbHMvY29tcG9uZW50JztcbmltcG9ydCB7IFVzZXJMaXN0VmFsdWUgfSBmcm9tICcuL3VzZXItbGlzdC12YWx1ZSc7XG5cbmV4cG9ydCBjbGFzcyBVc2VyTGlzdEZpZWxkIGV4dGVuZHMgRGF0YUZpZWxkPFVzZXJMaXN0VmFsdWU+IHtcblxuICAgIGNvbnN0cnVjdG9yKHN0cmluZ0lkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGJlaGF2aW9yOiBCZWhhdmlvciwgdmFsdWU6IFVzZXJMaXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBsYXlvdXQ/OiBMYXlvdXQsIHZhbGlkYXRpb25zPzogQXJyYXk8VmFsaWRhdGlvbj4sIGNvbXBvbmVudD86IENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYXNrSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc3RyaW5nSWQsIHRpdGxlLCB2YWx1ZSwgYmVoYXZpb3IsIHBsYWNlaG9sZGVyLCBkZXNjcmlwdGlvbiwgbGF5b3V0LCB2YWxpZGF0aW9ucywgY29tcG9uZW50LCBwYXJlbnRUYXNrSWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWx1ZUVxdWFsaXR5KGE6IFVzZXJMaXN0VmFsdWUsIGI6IFVzZXJMaXN0VmFsdWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghYSAmJiAhYikgfHxcbiAgICAgICAgICAgICghIWEgJiYgISFiICYmIGEudXNlclZhbHVlcy5sZW5ndGggPT09IGIudXNlclZhbHVlcy5sZW5ndGgpO1xuICAgIH1cbn1cbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LWZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmV0Z3JpZi1jb21wb25lbnRzLWNvcmUvc3JjL2xpYi9kYXRhLWZpZWxkcy91c2VyLWxpc3QtZmllbGQvbW9kZWxzL3VzZXItbGlzdC1maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFRN0QsTUFBTSxPQUFPLGFBQWMsU0FBUSxTQUF3QjtJQUV2RCxZQUFZLFFBQWdCLEVBQUUsS0FBYSxFQUFFLFFBQWtCLEVBQUUsS0FBb0IsRUFDekUsV0FBb0IsRUFBRSxXQUFvQixFQUFFLE1BQWUsRUFBRSxXQUErQixFQUFFLFNBQXFCLEVBQ25ILFlBQXFCO1FBQzdCLEtBQUssQ0FBQyxRQUFRLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNwSCxDQUFDO0lBRVMsYUFBYSxDQUFDLENBQWdCLEVBQUUsQ0FBZ0I7UUFDdEQsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRVMsaUJBQWlCLENBQUMsZ0JBQXlCLEVBQUUsV0FBd0I7UUFDM0UsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFFBQVEsQ0FBQztRQUN4QyxJQUFJLGdCQUFnQixFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUN4QjtRQUNELFdBQVcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM5QixJQUFJLGdCQUFnQixFQUFFO1lBQ2xCLFdBQVcsQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUNoRjthQUFNO1lBQ0gsV0FBVyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsV0FBVyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDckMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ2pFLFVBQVUsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDMUQsT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztJQUdTLDRCQUE0QjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7UUFFbEIsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtZQUN4QixNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7Z0JBQ2xCLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7YUFDcEM7aUJBQU07Z0JBQ0gsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUNwQztTQUNKO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVPLFlBQVksQ0FBQyxPQUF3QjtRQUN6QyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUMsZ0JBQWdCLEVBQUUsSUFBSSxFQUFDLENBQUM7SUFDcEksQ0FBQztDQUVKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGF0YUZpZWxkIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Fic3RyYWN0LWRhdGEtZmllbGQnO1xuaW1wb3J0IHsgQmVoYXZpb3IgfSBmcm9tICcuLi8uLi9tb2RlbHMvYmVoYXZpb3InO1xuaW1wb3J0IHsgTGF5b3V0IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2xheW91dCc7XG5pbXBvcnQgeyBWYWxpZGF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9kZWxzL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBVc2VyTGlzdFZhbHVlIH0gZnJvbSAnLi91c2VyLWxpc3QtdmFsdWUnO1xuaW1wb3J0IHtBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbn0gZnJvbSBcIkBhbmd1bGFyL2Zvcm1zXCI7XG5cbmV4cG9ydCBjbGFzcyBVc2VyTGlzdEZpZWxkIGV4dGVuZHMgRGF0YUZpZWxkPFVzZXJMaXN0VmFsdWU+IHtcblxuICAgIGNvbnN0cnVjdG9yKHN0cmluZ0lkOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIGJlaGF2aW9yOiBCZWhhdmlvciwgdmFsdWU6IFVzZXJMaXN0VmFsdWUsXG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI/OiBzdHJpbmcsIGRlc2NyaXB0aW9uPzogc3RyaW5nLCBsYXlvdXQ/OiBMYXlvdXQsIHZhbGlkYXRpb25zPzogQXJyYXk8VmFsaWRhdGlvbj4sIGNvbXBvbmVudD86IENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICBwYXJlbnRUYXNrSWQ/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIoc3RyaW5nSWQsIHRpdGxlLCB2YWx1ZSwgYmVoYXZpb3IsIHBsYWNlaG9sZGVyLCBkZXNjcmlwdGlvbiwgbGF5b3V0LCB2YWxpZGF0aW9ucywgY29tcG9uZW50LCBwYXJlbnRUYXNrSWQpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCB2YWx1ZUVxdWFsaXR5KGE6IFVzZXJMaXN0VmFsdWUsIGI6IFVzZXJMaXN0VmFsdWUpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghYSAmJiAhYikgfHxcbiAgICAgICAgICAgICghIWEgJiYgISFiICYmIGEudXNlclZhbHVlcy5sZW5ndGggPT09IGIudXNlclZhbHVlcy5sZW5ndGgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjYWxjdWxhdGVWYWxpZGl0eShmb3JWYWxpZFJlcXVpcmVkOiBib29sZWFuLCBmb3JtQ29udHJvbDogRm9ybUNvbnRyb2wpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgaXNEaXNhYmxlZCA9IGZvcm1Db250cm9sLmRpc2FibGVkO1xuICAgICAgICBpZiAoZm9yVmFsaWRSZXF1aXJlZCkge1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybUNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgIGlmIChmb3JWYWxpZFJlcXVpcmVkKSB7XG4gICAgICAgICAgICBmb3JtQ29udHJvbC5zZXRWYWxpZGF0b3JzKHRoaXMuYmVoYXZpb3IucmVxdWlyZWQgPyBbdGhpcy5yZXF1aXJlZFRydWVdIDogW10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9ybUNvbnRyb2wuc2V0VmFsaWRhdG9ycyh0aGlzLnJlc29sdmVGb3JtQ29udHJvbFZhbGlkYXRvcnMoKSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9ybUNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICBjb25zdCB2YWxpZGl0eSA9IHRoaXMuX2RldGVybWluZUZvcm1Db250cm9sVmFsaWRpdHkoZm9ybUNvbnRyb2wpO1xuICAgICAgICBpc0Rpc2FibGVkID8gZm9ybUNvbnRyb2wuZGlzYWJsZSgpIDogZm9ybUNvbnRyb2wuZW5hYmxlKCk7XG4gICAgICAgIHJldHVybiB2YWxpZGl0eTtcbiAgICB9XG5cblxuICAgIHByb3RlY3RlZCByZXNvbHZlRm9ybUNvbnRyb2xWYWxpZGF0b3JzKCk6IEFycmF5PFZhbGlkYXRvckZuPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IFtdO1xuXG4gICAgICAgIGlmICh0aGlzLmJlaGF2aW9yLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh0aGlzLnJlcXVpcmVkVHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy52YWxpZGF0aW9ucykge1xuICAgICAgICAgICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnMpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCguLi50aGlzLl92YWxpZGF0b3JzKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fdmFsaWRhdG9ycyA9IHRoaXMucmVzb2x2ZVZhbGlkYXRpb25zKCk7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goLi4udGhpcy5fdmFsaWRhdG9ycyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVxdWlyZWRUcnVlKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCk6IHsgW2s6IHN0cmluZ106IGJvb2xlYW4gfSB7XG4gICAgICAgIHJldHVybiAhIWNvbnRyb2wudmFsdWUgJiYgISFjb250cm9sLnZhbHVlLl91c2VyVmFsdWVzICYmIGNvbnRyb2wudmFsdWUuX3VzZXJWYWx1ZXMubGVuZ3RoID4gMCA/IG51bGwgOiB7cmVxdWlyZWRVc2VyTGlzdDogdHJ1ZX07XG4gICAgfVxuXG59XG4iXX0=
@@ -219,7 +219,7 @@ export class TabView {
219
219
  ];
220
220
  providers.push({
221
221
  provide: NAE_VIEW_ID_SEGMENT,
222
- useValue: tab.initial ? tab.uniqueId : TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT
222
+ useValue: tab.initial ? tab.uniqueId : (tab.injectedObject?.loadFilter?.id ?? TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT)
223
223
  });
224
224
  const injector = Injector.create({ providers, parent: this._parentInjector });
225
225
  tab.portal = new ComponentPortal(tab.tabContentComponent, null, injector);
@@ -260,4 +260,4 @@ export class TabView {
260
260
  }
261
261
  }
262
262
  TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT = 'dynamic';
263
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3RhYnMvY2xhc3Nlcy90YWItdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBTWxGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQTZCaEI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsWUFBeUIsRUFDekIsT0FBc0IsRUFDdEIsWUFBK0IsRUFDL0IsZUFBeUI7UUFIekIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQVU7UUF4QnJDLG9CQUFlLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BEOzs7V0FHRztRQUNLLHFCQUFnQixHQUFxQjtZQUN6QyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsT0FBTyxFQUFFLENBQUMsVUFBc0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxF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QUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEQsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEM7WUFDRCxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkMsSUFBSSxHQUFHLEVBQUU7Z0JBQ0wsR0FBRyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDL0I7WUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ssV0FBVyxDQUFDLFFBQWdCO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztRQUMxRSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsRUFBRTtZQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsa0JBQWtCLFFBQVEsU0FBUyxDQUFDLENBQUM7U0FDeEQ7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU8sZUFBZSxDQUFDLEtBQWE7UUFDakMsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLHFCQUFxQixLQUFLLFNBQVMsQ0FBQyxDQUFDO1NBQ3hEO0lBQ0wsQ0FBQzs7QUE5UnNCLG1DQUEyQixHQUFHLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0ZWRUYWJEYXRhLCBUYWJDb250ZW50LCBUYWJWaWV3SW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7T3BlbmVkVGFifSBmcm9tICcuL29wZW5lZC10YWInO1xuaW1wb3J0IHtJbmplY3RvciwgU3RhdGljUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtvcmRlckJ5fSBmcm9tICduYXR1cmFsLW9yZGVyYnknO1xuaW1wb3J0IHtOQUVfVEFCX0RBVEF9IGZyb20gJy4uL3RhYi1kYXRhLWluamVjdGlvbi10b2tlbi90YWItZGF0YS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vcm91dGluZy92aWV3LXNlcnZpY2Uvdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGF9IGZyb20gJy4uLy4uL3ZpZXcvdGFzay12aWV3L21vZGVscy9pbmplY3RlZC10YWJiZWQtdGFzay12aWV3LWRhdGEnO1xuaW1wb3J0IHtUYXNrU2VhcmNoQ2FzZVF1ZXJ5LCBUYXNrU2VhcmNoUmVxdWVzdEJvZHl9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvdGFzay1zZWFyY2gtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7TWF0VGFiQ2hhbmdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtJbmNyZW1lbnRpbmdDb3VudGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2luY3JlbWVudGluZy1jb3VudGVyJztcbmltcG9ydCB7TkFFX1ZJRVdfSURfU0VHTUVOVH0gZnJvbSAnLi4vLi4vdXNlci9tb2RlbHMvdmlldy1pZC1pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBIb2xkcyB0aGUgbG9naWMgZm9yIHRhYiBtYW5hZ2VtZW50IGluIHtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LlxuICogSWYgeW91IHdhbnQgdG8gaW1wbGVtZW50IHlvdXIgb3duIFRhYlZpZXdDb21wb25lbnQsIHlvdSBtaWdodCB3YW50IHRvIGV4dGVuZCB0aGlzIGNsYXNzIHRvIGhvbGQgeW91ciBsb2dpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYlZpZXcgaW1wbGVtZW50cyBUYWJWaWV3SW50ZXJmYWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UID0gJ2R5bmFtaWMnO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHRhYnMgdGhhdCBhcmUgb3BlbmVkIGluIHRoZSB0YWIgdmlldywgYW5kIGFsbG93cyB0aGVtIHRvIGJlIGJvdW5kIHRvIEhUTUwuXG4gICAgICovXG4gICAgcHVibGljIG9wZW5lZFRhYnM6IEFycmF5PE9wZW5lZFRhYj47XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgICAqXG4gICAgICogU2VsZWN0ZWQgaW5kZXggaW5pdGlhbGl6ZXMgdG8gYDBgLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBGb3JtQ29udHJvbDtcblxuICAgIHByaXZhdGUgdW5pcXVlSWRDb3VudGVyID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IHRoYXQgaGlkZXMgc29tZSBwdWJsaWMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIHRhYnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YWJWaWV3SW50ZXJmYWNlOiBUYWJWaWV3SW50ZXJmYWNlID0ge1xuICAgICAgICBjdXJyZW50bHlTZWxlY3RlZFRhYjogKCkgPT4gdGhpcy5jdXJyZW50bHlTZWxlY3RlZFRhYigpLFxuICAgICAgICBvcGVuVGFiOiAodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlKSA9PiB0aGlzLm9wZW5UYWIodGFiQ29udGVudCwgYXV0b3N3aXRjaCksXG4gICAgICAgIHN3aXRjaFRvVGFiSW5kZXg6IChpbmRleDogbnVtYmVyKSA9PiB0aGlzLnN3aXRjaFRvVGFiSW5kZXgoaW5kZXgpLFxuICAgICAgICBzd2l0Y2hUb1RhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZykgPT4gdGhpcy5zd2l0Y2hUb1RhYlVuaXF1ZUlkKHVuaXF1ZUlkKSxcbiAgICAgICAgY2xvc2VUYWJJbmRleDogKGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpID0+IHRoaXMuY2xvc2VUYWJJbmRleChpbmRleCwgZm9yY2UpLFxuICAgICAgICBjbG9zZVRhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSkgPT4gdGhpcy5jbG9zZVRhYlVuaXF1ZUlkKHVuaXF1ZUlkLCBmb3JjZSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIF92aWV3U2VydmljZSBbVmlld1NlcnZpY2Vde0BsaW5rIFZpZXdTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2xvZ2dlciBbTG9nZ2VyXXtAbGluayBMb2dnZXJTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2luaXRpYWxUYWJzIFRhYnMgdGhhdCBzaG91bGQgYmUgaW5pdGlhbGx5IG9wZW5lZCBpbiB0aGUgdGFiIHZpZXdcbiAgICAgKiBAcGFyYW0gX3BhcmVudEluamVjdG9yIGBJbmplY3RvcmAgaW5zdGFuY2Ugb2YgdGhlIFtUYWJWaWV3Q29tcG9uZW50XXtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LFxuICAgICAqIHRvIGJlIHBhc3NlZCBvbnRvIGVhY2ggdGFiLCBzbyB0aGF0IHRoZSBkZXBlbmRlbmN5IGluamVjdGlvbiB0cmVlIGlzIG5vdCBicm9rZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3U2VydmljZTogVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2luaXRpYWxUYWJzOiBBcnJheTxUYWJDb250ZW50PixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnRJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgICAgICAgaWYgKHRhYi5vcmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGFiLm9yZGVyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYi5pbml0aWFsID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcblxuICAgICAgICAvLyBvcmRlckJ5IGlzIGEgc3RhYmxlIHNvcnRcbiAgICAgICAgLy8gTmF0aXZlIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gaGFzIHVuZGVmaW5lZCBzdGFiaWxpdHkgYW5kIGl0IGRlcGVuZHMgb24gaXQncyBpbXBsZW1lbnRhdGlvbiAoYnJvd3NlcilcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzID0gb3JkZXJCeSh0aGlzLl9pbml0aWFsVGFicywgdiA9PiB2Lm9yZGVyLCAnYXNjJykubWFwKHRhYkRhdGEgPT5cbiAgICAgICAgICAgIG5ldyBPcGVuZWRUYWIodGFiRGF0YSwgYCR7dGhpcy51bmlxdWVJZENvdW50ZXIubmV4dCgpfWApKTtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFRhYnNbMF0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWJcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVudGx5U2VsZWN0ZWRUYWIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIG5ldyB0YWIgd2l0aCB0aGUgcHJvdmlkZWQgY29udGVudC5cbiAgICAgKiBAcGFyYW0gdGFiQ29udGVudCAtIGNvbnRlbnQgb2YgdGhlIG5ldyB0YWJcbiAgICAgKiBAcGFyYW0gYXV0b3N3aXRjaCAtIHdoZXRoZXIgdGhlIG5ld2x5IG9wZW5lZCB0YWIgc2hvdWxkIGJlIHN3aXRjaGVkIHRvLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBvcGVuRXhpc3RpbmcgLSB3aGV0aGVyIHRoZSBvcGVuZWQgdGFiIGFscmVhZHkgZXhpc3Rpbmcgc2hvdWxkIGJlIHN3aXRjaGVkIHRvIGV4aXN0aW5nIG9uZS4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgICAqIEByZXR1cm5zIHRoZSBgdGFiVW5pcXVlSWRgIG9mIHRoZSBuZXdseSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHVibGljIG9wZW5UYWIodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlLCBvcGVuRXhpc3RpbmcgPSB0cnVlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRhYkNvbnRlbnQuaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oYCdpbml0aWFsJyBhdHRyaWJ1dGUgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgd2l0aCBuZXcgdGFicyBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7XG4gICAgICAgICAgICBkZWxldGUgdGFiQ29udGVudC5pbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VGFiID0gbmV3IE9wZW5lZFRhYih0YWJDb250ZW50LCBgJHt0aGlzLnVuaXF1ZUlkQ291bnRlci5uZXh0KCl9YCk7XG4gICAgICAgIGNvbnN0IGluZGV4RXhpc3RpbmcgPSB0aGlzLmZpbmRJbmRleEV4aXN0aW5nVGFiKG5ld1RhYik7XG4gICAgICAgIGlmIChpbmRleEV4aXN0aW5nID09PSAtMSB8fCAhb3BlbkV4aXN0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3VGFiKG5ld1RhYiwgYXV0b3N3aXRjaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleEV4aXN0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhFeGlzdGluZ10udW5pcXVlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEluZGV4RXhpc3RpbmdUYWIobmV3VGFiOiBPcGVuZWRUYWIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaGVzRm9yT25lQ2FzZUlkKG5ld1RhYikpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRUYWJzLmZpbmRJbmRleChleGlzdGluZ1RhYiA9PlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlc0Zvck9uZUNhc2VJZChleGlzdGluZ1RhYikgJiYgdGhpcy5nZXRTZWFyY2hlZENhc2VJZChleGlzdGluZ1RhYikgPT09IHRoaXMuZ2V0U2VhcmNoZWRDYXNlSWQobmV3VGFiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hlc0Zvck9uZUNhc2VJZCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiKVxuICAgICAgICAgICAgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5nZXRTZWFyY2hlZENhc2UodGFiKSlcbiAgICAgICAgICAgICYmICEhdGhpcy5nZXRTZWFyY2hlZENhc2VJZCh0YWIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VhcmNoZWRDYXNlSWQodGFiOiBPcGVuZWRUYWIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0U2VhcmNoZWRDYXNlKHRhYikgYXMgVGFza1NlYXJjaENhc2VRdWVyeSkuaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWFyY2hlZENhc2UodGFiOiBPcGVuZWRUYWIpOiBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHwgQXJyYXk8VGFza1NlYXJjaENhc2VRdWVyeT4ge1xuICAgICAgICByZXR1cm4gKCh0YWIuaW5qZWN0ZWRPYmplY3QgYXMgSW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGEpLmJhc2VGaWx0ZXIuZ2V0UmVxdWVzdEJvZHkoKSBhcyBUYXNrU2VhcmNoUmVxdWVzdEJvZHkpLmNhc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiOiBPcGVuZWRUYWIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQmFzZUZpbHRlcih0YWIpXG4gICAgICAgICAgICAmJiAhISgoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlci5nZXRSZXF1ZXN0Qm9keSgpIGFzIFRhc2tTZWFyY2hSZXF1ZXN0Qm9keSkuY2FzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNCYXNlRmlsdGVyKHRhYjogT3BlbmVkVGFiKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0luamVjdGVkT2JqZWN0KHRhYikgJiYgISEoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNJbmplY3RlZE9iamVjdCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0YWIuaW5qZWN0ZWRPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyB0YWIgaW50byB0aGUgY29ycmVjdCBwb3NpdGlvbiBiYXNlZCBvbiBpdHMgYG9yZGVyYCBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gbmV3VGFiIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgb3BlbmVkXG4gICAgICogQHBhcmFtIGF1dG9zd2l0Y2ggd2hldGhlciB0aGUgbmV3IHRhYiBzaG91bGQgYmUgc3dpdGNoZWQgdG8gYWZ0ZXIgaXQgaXMgY3JlYXRlZFxuICAgICAqIEByZXR1cm5zIHRoZSBgdW5pcXVlSWRgIG9mIHRoZSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9wZW5OZXdUYWIobmV3VGFiOiBPcGVuZWRUYWIsIGF1dG9zd2l0Y2g6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMuZmluZEluZGV4KGV4aXN0aW5nVGFiID0+IGV4aXN0aW5nVGFiLm9yZGVyID4gbmV3VGFiLm9yZGVyKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFicy5zcGxpY2UoaW5kZXgsIDAsIG5ld1RhYik7XG5cbiAgICAgICAgaWYgKGF1dG9zd2l0Y2ggfHwgdGhpcy5vcGVuZWRUYWJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUYWIudW5pcXVlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYHVuaXF1ZUlkYCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIGlkIG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJVbmlxdWVJZCh1bmlxdWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXhXaXRoTm90aWZpY2F0aW9uKHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1t0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWVdLnRhYlNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKGluZGV4KTtcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzW3RoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZV0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBjbG9zZWRcbiAgICAgKiBAcGFyYW0gZm9yY2Ugd2hlbiBgdHJ1ZWAgY2xvc2VzIGEgdGFiIGV2ZW4gaWYgaXQncyBgY2FudEJlQ2xvc2VkYCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGB0cnVlYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZVRhYkluZGV4KGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZVRhYihpbmRleCwgZm9yY2UsIGBUYWIgYXQgaW5kZXggJHtpbmRleH0gY2FuJ3QgYmUgY2xvc2VkYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBgdW5pcXVlSWRgIGlzIGludmFsaWQuXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gdW5pcXVlSWQgLSBpZCBvZiB0aGUgdGFiIHRoYXQgc2hvdWxkIGJlIGNsb3NlZFxuICAgICAqIEBwYXJhbSBmb3JjZSB3aGVuIGB0cnVlYCBjbG9zZXMgYSB0YWIgZXZlbiBpZiBpdCdzIGBjYW50QmVDbG9zZWRgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHRydWVgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlVGFiVW5pcXVlSWQodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpO1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBmb3JjZSwgYFRhYiB3aXRoIElEICR7dW5pcXVlSWR9IGNhbid0IGJlIGNsb3NlZGApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgdGFiIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAgICAgKlxuICAgICAqIElmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0IHRocm93cyBhbiBgRXJyb3JgIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIGluZGV4IGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgY2xvc2VkXG4gICAgICogQHBhcmFtIGZvcmNlIHdoZW4gYHRydWVgIGNsb3NlcyBhIHRhYiBldmVuIGlmIGl0J3MgYGNhbnRCZUNsb3NlZGAgYXR0cmlidXRlIGlzIHNldCB0byBgdHJ1ZWBcbiAgICAgKiBAcGFyYW0gZXJyb3IgdGhlIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGlmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGZvcmNlOiBib29sZWFuLCBlcnJvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgaWYgKCFmb3JjZSAmJiAhdGhpcy5vcGVuZWRUYWJzW2luZGV4XS5jYW5CZUNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAmJiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdLnBhcmVudFVuaXF1ZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRvVGFiVW5pcXVlSWQodGhpcy5vcGVuZWRUYWJzW2luZGV4XS5wYXJlbnRVbmlxdWVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWUgJiYgdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlICsgMSA8IHRoaXMub3BlbmVkVGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleCArIDFdLnRhYlNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleF0udGFiQ2xvc2VkJC5uZXh0KCk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSB0aGlzLm9wZW5lZFRhYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgZGVsZXRlZFswXS5kZXN0cm95KCk7XG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIHRhYiBpZiBpdCB3YXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIENvbXBvbmVudFBvcnRhbH0gZm9yIHRoZSB0YWIgYW5kIHByb3ZpZGVzIHRoZSBkYXRhIGZvciB0aGUgdGFiIHVuZGVyIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gICAgICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBpbml0aWFsaXplZFxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0luZGV4UmFuZ2UoaW5kZXgpO1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRhYi5pc1RhYkluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRhYi5pbmplY3RlZE9iamVjdCwge1xuICAgICAgICAgICAgICAgIHRhYlVuaXF1ZUlkOiB0YWIudW5pcXVlSWQsXG4gICAgICAgICAgICAgICAgdGFiVmlld1JlZjogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgIHNldEljb246IHQgPT4gdGFiLnNldEljb24odCksXG4gICAgICAgICAgICAgICAgICAgIHNldFRleHQ6IHQgPT4gdGFiLnNldFRleHQodCksXG4gICAgICAgICAgICAgICAgICAgIGdldEljb24kOiAoKSA9PiB0YWIuZ2V0SWNvbiQoKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGV4dCQ6ICgpID0+IHRhYi5nZXRUZXh0JCgpLFxuICAgICAgICAgICAgICAgIH0sIHRoaXMudGFiVmlld0ludGVyZmFjZSksXG4gICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQkOiB0YWIudGFiU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgICAgIHRhYkNsb3NlZCQ6IHRhYi50YWJDbG9zZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgfSBhcyBJbmplY3RlZFRhYkRhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm92aWRlcnM6IEFycmF5PFN0YXRpY1Byb3ZpZGVyPiA9IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTkFFX1RBQl9EQVRBLCB1c2VWYWx1ZTogdGFiLmluamVjdGVkT2JqZWN0fVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOQUVfVklFV19JRF9TRUdNRU5ULFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB0YWIuaW5pdGlhbCA/IHRhYi51bmlxdWVJZCA6IFRhYlZpZXcuRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgaW5qZWN0b3IgPSBJbmplY3Rvci5jcmVhdGUoe3Byb3ZpZGVycywgcGFyZW50OiB0aGlzLl9wYXJlbnRJbmplY3Rvcn0pO1xuXG4gICAgICAgICAgICB0YWIucG9ydGFsID0gbmV3IENvbXBvbmVudFBvcnRhbCh0YWIudGFiQ29udGVudENvbXBvbmVudCwgbnVsbCwgaW5qZWN0b3IpO1xuICAgICAgICAgICAgdGFiLmlzVGFiSW5pdGlhbGl6ZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIHRhYkNoYW5nZShldmVudDogTWF0VGFiQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmluZGV4ICE9PSB0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWUpIHtcbiAgICAgICAgICAgIGxldCB0YWIgPSB0aGlzLm9wZW5lZFRhYnNbdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlXTtcbiAgICAgICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgICAgICB0YWIudGFiU2VsZWN0ZWQkLm5leHQoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFiID0gdGhpcy5vcGVuZWRUYWJzW2V2ZW50LmluZGV4XTtcbiAgICAgICAgICAgIGlmICh0YWIpIHtcbiAgICAgICAgICAgICAgICB0YWIudGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXguc2V0VmFsdWUoZXZlbnQuaW5kZXgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJhbnNmb3JtcyBhIHRhYiBgdW5pcXVlSWRgIGludG8gaXQncyBpbmRleC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiBubyB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYCBleGlzdHMuXG4gICAgICogQHBhcmFtIHVuaXF1ZUlkIC0gaWQgb2YgdGhlIHRhYiB0aGF0IHdlIHdhbnQgdG8gZmluZCBpbmRleCBmb3JcbiAgICAgKiBAcmV0dXJucyBpbmRleCBvZiB0aGUgdGFiIHdpdGggdGhlIGdpdmVuIGlkXG4gICAgICovXG4gICAgcHJpdmF0ZSBnZXRUYWJJbmRleCh1bmlxdWVJZDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMuZmluZEluZGV4KHRhYiA9PiB0YWIudW5pcXVlSWQgPT09IHVuaXF1ZUlkKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyB0YWIgd2l0aCBJRCAke3VuaXF1ZUlkfSBleGlzdHNgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaW5kZXg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0luZGV4UmFuZ2UoaW5kZXg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoaW5kZXggPCAwIHx8IGluZGV4ID49IHRoaXMub3BlbmVkVGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gdGFiIHdpdGggaW5kZXggJHtpbmRleH0gZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXX0=
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFiLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZXRncmlmLWNvbXBvbmVudHMtY29yZS9zcmMvbGliL3RhYnMvY2xhc3Nlcy90YWItdmlldy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sY0FBYyxDQUFDO0FBQ3ZDLE9BQU8sRUFBQyxRQUFRLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHNEQUFzRCxDQUFDO0FBTWxGLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQy9FLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQzs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sT0FBTztJQTZCaEI7Ozs7OztPQU1HO0lBQ0gsWUFBb0IsWUFBeUIsRUFDekIsT0FBc0IsRUFDdEIsWUFBK0IsRUFDL0IsZUFBeUI7UUFIekIsaUJBQVksR0FBWixZQUFZLENBQWE7UUFDekIsWUFBTyxHQUFQLE9BQU8sQ0FBZTtRQUN0QixpQkFBWSxHQUFaLFlBQVksQ0FBbUI7UUFDL0Isb0JBQWUsR0FBZixlQUFlLENBQVU7UUF4QnJDLG9CQUFlLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ3BEOzs7V0FHRztRQUNLLHFCQUFnQixHQUFxQjtZQUN6QyxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDdkQsT0FBTyxFQUFFLENBQUMsVUFBc0IsRUFBRSxVQUFVLEdBQUcsS0FBSyxF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ZW50LCBUYWJWaWV3SW50ZXJmYWNlfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7T3BlbmVkVGFifSBmcm9tICcuL29wZW5lZC10YWInO1xuaW1wb3J0IHtJbmplY3RvciwgU3RhdGljUHJvdmlkZXJ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb21wb25lbnRQb3J0YWx9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtvcmRlckJ5fSBmcm9tICduYXR1cmFsLW9yZGVyYnknO1xuaW1wb3J0IHtOQUVfVEFCX0RBVEF9IGZyb20gJy4uL3RhYi1kYXRhLWluamVjdGlvbi10b2tlbi90YWItZGF0YS1pbmplY3Rpb24tdG9rZW4nO1xuaW1wb3J0IHtWaWV3U2VydmljZX0gZnJvbSAnLi4vLi4vcm91dGluZy92aWV3LXNlcnZpY2Uvdmlldy5zZXJ2aWNlJztcbmltcG9ydCB7TG9nZ2VyU2VydmljZX0gZnJvbSAnLi4vLi4vbG9nZ2VyL3NlcnZpY2VzL2xvZ2dlci5zZXJ2aWNlJztcbmltcG9ydCB7SW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGF9IGZyb20gJy4uLy4uL3ZpZXcvdGFzay12aWV3L21vZGVscy9pbmplY3RlZC10YWJiZWQtdGFzay12aWV3LWRhdGEnO1xuaW1wb3J0IHtUYXNrU2VhcmNoQ2FzZVF1ZXJ5LCBUYXNrU2VhcmNoUmVxdWVzdEJvZHl9IGZyb20gJy4uLy4uL2ZpbHRlci9tb2RlbHMvdGFzay1zZWFyY2gtcmVxdWVzdC1ib2R5JztcbmltcG9ydCB7TWF0VGFiQ2hhbmdlRXZlbnR9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xuaW1wb3J0IHtJbmNyZW1lbnRpbmdDb3VudGVyfSBmcm9tICcuLi8uLi91dGlsaXR5L2luY3JlbWVudGluZy1jb3VudGVyJztcbmltcG9ydCB7TkFFX1ZJRVdfSURfU0VHTUVOVH0gZnJvbSAnLi4vLi4vdXNlci9tb2RlbHMvdmlldy1pZC1pbmplY3Rpb24tdG9rZW5zJztcbmltcG9ydCB7Rm9ybUNvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuLyoqXG4gKiBIb2xkcyB0aGUgbG9naWMgZm9yIHRhYiBtYW5hZ2VtZW50IGluIHtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LlxuICogSWYgeW91IHdhbnQgdG8gaW1wbGVtZW50IHlvdXIgb3duIFRhYlZpZXdDb21wb25lbnQsIHlvdSBtaWdodCB3YW50IHRvIGV4dGVuZCB0aGlzIGNsYXNzIHRvIGhvbGQgeW91ciBsb2dpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIFRhYlZpZXcgaW1wbGVtZW50cyBUYWJWaWV3SW50ZXJmYWNlIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UID0gJ2R5bmFtaWMnO1xuXG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIHRhYnMgdGhhdCBhcmUgb3BlbmVkIGluIHRoZSB0YWIgdmlldywgYW5kIGFsbG93cyB0aGVtIHRvIGJlIGJvdW5kIHRvIEhUTUwuXG4gICAgICovXG4gICAgcHVibGljIG9wZW5lZFRhYnM6IEFycmF5PE9wZW5lZFRhYj47XG4gICAgLyoqXG4gICAgICogSG9sZHMgdGhlIGluZGV4IG9mIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGFiLlxuICAgICAqXG4gICAgICogU2VsZWN0ZWQgaW5kZXggaW5pdGlhbGl6ZXMgdG8gYDBgLlxuICAgICAqL1xuICAgIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBGb3JtQ29udHJvbDtcblxuICAgIHByaXZhdGUgdW5pcXVlSWRDb3VudGVyID0gbmV3IEluY3JlbWVudGluZ0NvdW50ZXIoKTtcbiAgICAvKipcbiAgICAgKiBAaWdub3JlXG4gICAgICogSG9sZHMgYSByZWZlcmVuY2UgdG8gYW4gb2JqZWN0IHRoYXQgaGlkZXMgc29tZSBwdWJsaWMgYXR0cmlidXRlcyBhbmQgbWV0aG9kcyBmcm9tIHRhYnMuXG4gICAgICovXG4gICAgcHJpdmF0ZSB0YWJWaWV3SW50ZXJmYWNlOiBUYWJWaWV3SW50ZXJmYWNlID0ge1xuICAgICAgICBjdXJyZW50bHlTZWxlY3RlZFRhYjogKCkgPT4gdGhpcy5jdXJyZW50bHlTZWxlY3RlZFRhYigpLFxuICAgICAgICBvcGVuVGFiOiAodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlKSA9PiB0aGlzLm9wZW5UYWIodGFiQ29udGVudCwgYXV0b3N3aXRjaCksXG4gICAgICAgIHN3aXRjaFRvVGFiSW5kZXg6IChpbmRleDogbnVtYmVyKSA9PiB0aGlzLnN3aXRjaFRvVGFiSW5kZXgoaW5kZXgpLFxuICAgICAgICBzd2l0Y2hUb1RhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZykgPT4gdGhpcy5zd2l0Y2hUb1RhYlVuaXF1ZUlkKHVuaXF1ZUlkKSxcbiAgICAgICAgY2xvc2VUYWJJbmRleDogKGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpID0+IHRoaXMuY2xvc2VUYWJJbmRleChpbmRleCwgZm9yY2UpLFxuICAgICAgICBjbG9zZVRhYlVuaXF1ZUlkOiAodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSkgPT4gdGhpcy5jbG9zZVRhYlVuaXF1ZUlkKHVuaXF1ZUlkLCBmb3JjZSlcbiAgICB9O1xuXG4gICAgLyoqXG4gICAgICogQHBhcmFtIF92aWV3U2VydmljZSBbVmlld1NlcnZpY2Vde0BsaW5rIFZpZXdTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2xvZ2dlciBbTG9nZ2VyXXtAbGluayBMb2dnZXJTZXJ2aWNlfSByZWZlcmVuY2VcbiAgICAgKiBAcGFyYW0gX2luaXRpYWxUYWJzIFRhYnMgdGhhdCBzaG91bGQgYmUgaW5pdGlhbGx5IG9wZW5lZCBpbiB0aGUgdGFiIHZpZXdcbiAgICAgKiBAcGFyYW0gX3BhcmVudEluamVjdG9yIGBJbmplY3RvcmAgaW5zdGFuY2Ugb2YgdGhlIFtUYWJWaWV3Q29tcG9uZW50XXtAbGluayBBYnN0cmFjdFRhYlZpZXdDb21wb25lbnR9LFxuICAgICAqIHRvIGJlIHBhc3NlZCBvbnRvIGVhY2ggdGFiLCBzbyB0aGF0IHRoZSBkZXBlbmRlbmN5IGluamVjdGlvbiB0cmVlIGlzIG5vdCBicm9rZW5cbiAgICAgKi9cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF92aWV3U2VydmljZTogVmlld1NlcnZpY2UsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZSBfbG9nZ2VyOiBMb2dnZXJTZXJ2aWNlLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2luaXRpYWxUYWJzOiBBcnJheTxUYWJDb250ZW50PixcbiAgICAgICAgICAgICAgICBwcml2YXRlIF9wYXJlbnRJbmplY3RvcjogSW5qZWN0b3IpIHtcbiAgICAgICAgdGhpcy5faW5pdGlhbFRhYnMuZm9yRWFjaCh0YWIgPT4ge1xuICAgICAgICAgICAgaWYgKHRhYi5vcmRlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGFiLm9yZGVyID0gMDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYi5pbml0aWFsID0gdHJ1ZTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IG5ldyBGb3JtQ29udHJvbCgwKTtcblxuICAgICAgICAvLyBvcmRlckJ5IGlzIGEgc3RhYmxlIHNvcnRcbiAgICAgICAgLy8gTmF0aXZlIGphdmFzY3JpcHQgaW1wbGVtZW50YXRpb24gaGFzIHVuZGVmaW5lZCBzdGFiaWxpdHkgYW5kIGl0IGRlcGVuZHMgb24gaXQncyBpbXBsZW1lbnRhdGlvbiAoYnJvd3NlcilcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzID0gb3JkZXJCeSh0aGlzLl9pbml0aWFsVGFicywgdiA9PiB2Lm9yZGVyLCAnYXNjJykubWFwKHRhYkRhdGEgPT5cbiAgICAgICAgICAgIG5ldyBPcGVuZWRUYWIodGFiRGF0YSwgYCR7dGhpcy51bmlxdWVJZENvdW50ZXIubmV4dCgpfWApKTtcbiAgICAgICAgaWYgKHRoaXMub3BlbmVkVGFicy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9wZW5lZFRhYnNbMF0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAcmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0YWJcbiAgICAgKi9cbiAgICBwdWJsaWMgY3VycmVudGx5U2VsZWN0ZWRUYWIoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBPcGVucyBhIG5ldyB0YWIgd2l0aCB0aGUgcHJvdmlkZWQgY29udGVudC5cbiAgICAgKiBAcGFyYW0gdGFiQ29udGVudCAtIGNvbnRlbnQgb2YgdGhlIG5ldyB0YWJcbiAgICAgKiBAcGFyYW0gYXV0b3N3aXRjaCAtIHdoZXRoZXIgdGhlIG5ld2x5IG9wZW5lZCB0YWIgc2hvdWxkIGJlIHN3aXRjaGVkIHRvLiBEZWZhdWx0cyB0byBgZmFsc2VgLlxuICAgICAqIEBwYXJhbSBvcGVuRXhpc3RpbmcgLSB3aGV0aGVyIHRoZSBvcGVuZWQgdGFiIGFscmVhZHkgZXhpc3Rpbmcgc2hvdWxkIGJlIHN3aXRjaGVkIHRvIGV4aXN0aW5nIG9uZS4gRGVmYXVsdHMgdG8gYHRydWVgLlxuICAgICAqIEByZXR1cm5zIHRoZSBgdGFiVW5pcXVlSWRgIG9mIHRoZSBuZXdseSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHVibGljIG9wZW5UYWIodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaCA9IGZhbHNlLCBvcGVuRXhpc3RpbmcgPSB0cnVlKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRhYkNvbnRlbnQuaW5pdGlhbCkge1xuICAgICAgICAgICAgdGhpcy5fbG9nZ2VyLndhcm4oYCdpbml0aWFsJyBhdHRyaWJ1dGUgaXMgbm90IG1lYW50IHRvIGJlIHVzZWQgd2l0aCBuZXcgdGFicyBhbmQgd2lsbCBiZSBpZ25vcmVkYCk7XG4gICAgICAgICAgICBkZWxldGUgdGFiQ29udGVudC5pbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbmV3VGFiID0gbmV3IE9wZW5lZFRhYih0YWJDb250ZW50LCBgJHt0aGlzLnVuaXF1ZUlkQ291bnRlci5uZXh0KCl9YCk7XG4gICAgICAgIGNvbnN0IGluZGV4RXhpc3RpbmcgPSB0aGlzLmZpbmRJbmRleEV4aXN0aW5nVGFiKG5ld1RhYik7XG4gICAgICAgIGlmIChpbmRleEV4aXN0aW5nID09PSAtMSB8fCAhb3BlbkV4aXN0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5vcGVuTmV3VGFiKG5ld1RhYiwgYXV0b3N3aXRjaCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleEV4aXN0aW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhFeGlzdGluZ10udW5pcXVlSWQ7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZmluZEluZGV4RXhpc3RpbmdUYWIobmV3VGFiOiBPcGVuZWRUYWIpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaGVzRm9yT25lQ2FzZUlkKG5ld1RhYikpIHtcbiAgICAgICAgICAgIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuZWRUYWJzLmZpbmRJbmRleChleGlzdGluZ1RhYiA9PlxuICAgICAgICAgICAgdGhpcy5zZWFyY2hlc0Zvck9uZUNhc2VJZChleGlzdGluZ1RhYikgJiYgdGhpcy5nZXRTZWFyY2hlZENhc2VJZChleGlzdGluZ1RhYikgPT09IHRoaXMuZ2V0U2VhcmNoZWRDYXNlSWQobmV3VGFiKSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZWFyY2hlc0Zvck9uZUNhc2VJZCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5oYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiKVxuICAgICAgICAgICAgJiYgIUFycmF5LmlzQXJyYXkodGhpcy5nZXRTZWFyY2hlZENhc2UodGFiKSlcbiAgICAgICAgICAgICYmICEhdGhpcy5nZXRTZWFyY2hlZENhc2VJZCh0YWIpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0U2VhcmNoZWRDYXNlSWQodGFiOiBPcGVuZWRUYWIpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gKHRoaXMuZ2V0U2VhcmNoZWRDYXNlKHRhYikgYXMgVGFza1NlYXJjaENhc2VRdWVyeSkuaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTZWFyY2hlZENhc2UodGFiOiBPcGVuZWRUYWIpOiBUYXNrU2VhcmNoQ2FzZVF1ZXJ5IHwgQXJyYXk8VGFza1NlYXJjaENhc2VRdWVyeT4ge1xuICAgICAgICByZXR1cm4gKCh0YWIuaW5qZWN0ZWRPYmplY3QgYXMgSW5qZWN0ZWRUYWJiZWRUYXNrVmlld0RhdGEpLmJhc2VGaWx0ZXIuZ2V0UmVxdWVzdEJvZHkoKSBhcyBUYXNrU2VhcmNoUmVxdWVzdEJvZHkpLmNhc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNDYXNlRmlsdGVyUGFyYW1TZXQodGFiOiBPcGVuZWRUYWIpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQmFzZUZpbHRlcih0YWIpXG4gICAgICAgICAgICAmJiAhISgoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlci5nZXRSZXF1ZXN0Qm9keSgpIGFzIFRhc2tTZWFyY2hSZXF1ZXN0Qm9keSkuY2FzZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNCYXNlRmlsdGVyKHRhYjogT3BlbmVkVGFiKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmhhc0luamVjdGVkT2JqZWN0KHRhYikgJiYgISEoKHRhYi5pbmplY3RlZE9iamVjdCBhcyBJbmplY3RlZFRhYmJlZFRhc2tWaWV3RGF0YSkuYmFzZUZpbHRlcik7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYXNJbmplY3RlZE9iamVjdCh0YWI6IE9wZW5lZFRhYik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0YWIuaW5qZWN0ZWRPYmplY3Q7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQWRkcyBhIG5ldyB0YWIgaW50byB0aGUgY29ycmVjdCBwb3NpdGlvbiBiYXNlZCBvbiBpdHMgYG9yZGVyYCBwcm9wZXJ0eS5cbiAgICAgKiBAcGFyYW0gbmV3VGFiIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgb3BlbmVkXG4gICAgICogQHBhcmFtIGF1dG9zd2l0Y2ggd2hldGhlciB0aGUgbmV3IHRhYiBzaG91bGQgYmUgc3dpdGNoZWQgdG8gYWZ0ZXIgaXQgaXMgY3JlYXRlZFxuICAgICAqIEByZXR1cm5zIHRoZSBgdW5pcXVlSWRgIG9mIHRoZSBvcGVuZWQgdGFiXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9wZW5OZXdUYWIobmV3VGFiOiBPcGVuZWRUYWIsIGF1dG9zd2l0Y2g6IGJvb2xlYW4pOiBzdHJpbmcge1xuICAgICAgICBsZXQgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMuZmluZEluZGV4KGV4aXN0aW5nVGFiID0+IGV4aXN0aW5nVGFiLm9yZGVyID4gbmV3VGFiLm9yZGVyKTtcbiAgICAgICAgaWYgKGluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgaW5kZXggPSB0aGlzLm9wZW5lZFRhYnMubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFicy5zcGxpY2UoaW5kZXgsIDAsIG5ld1RhYik7XG5cbiAgICAgICAgaWYgKGF1dG9zd2l0Y2ggfHwgdGhpcy5vcGVuZWRUYWJzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXdUYWIudW5pcXVlSWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSBpbmRleCAtIGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgdGhpcy5zZXRUYWJJbmRleFdpdGhOb3RpZmljYXRpb24oaW5kZXgpXG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3dpdGNoZXMgdG8gYSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYHVuaXF1ZUlkYCBpcyBpbnZhbGlkLlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIGlkIG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgc3dpdGNoZWQgdG9cbiAgICAgKi9cbiAgICBwdWJsaWMgc3dpdGNoVG9UYWJVbmlxdWVJZCh1bmlxdWVJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0VGFiSW5kZXhXaXRoTm90aWZpY2F0aW9uKHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldFRhYkluZGV4V2l0aE5vdGlmaWNhdGlvbihpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1t0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWVdLnRhYlNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKGluZGV4KTtcbiAgICAgICAgdGhpcy5vcGVuZWRUYWJzW3RoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZV0udGFiU2VsZWN0ZWQkLm5leHQodHJ1ZSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYGluZGV4YC5cbiAgICAgKlxuICAgICAqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgYGluZGV4YCBpcyBpbnZhbGlkLlxuICAgICAqXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gaW5kZXggaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBjbG9zZWRcbiAgICAgKiBAcGFyYW0gZm9yY2Ugd2hlbiBgdHJ1ZWAgY2xvc2VzIGEgdGFiIGV2ZW4gaWYgaXQncyBgY2FudEJlQ2xvc2VkYCBhdHRyaWJ1dGUgaXMgc2V0IHRvIGB0cnVlYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZVRhYkluZGV4KGluZGV4OiBudW1iZXIsIGZvcmNlID0gZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZVRhYihpbmRleCwgZm9yY2UsIGBUYWIgYXQgaW5kZXggJHtpbmRleH0gY2FuJ3QgYmUgY2xvc2VkYCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ2xvc2VzIHRoZSB0YWIgd2l0aCB0aGUgZ2l2ZW4gYHVuaXF1ZUlkYC4gVGhyb3dzIGFuIGVycm9yIGlmIHRoZSBgdW5pcXVlSWRgIGlzIGludmFsaWQuXG4gICAgICogVGhyb3dzIGFuIGVycm9yIGlmIHRoZSB0YWIgaGFzIGl0J3MgYGNhbkJlQ2xvc2VkYCBwcm9wZXJ0eSBzZXQgdG8gYGZhbHNlYC5cbiAgICAgKiBAcGFyYW0gdW5pcXVlSWQgLSBpZCBvZiB0aGUgdGFiIHRoYXQgc2hvdWxkIGJlIGNsb3NlZFxuICAgICAqIEBwYXJhbSBmb3JjZSB3aGVuIGB0cnVlYCBjbG9zZXMgYSB0YWIgZXZlbiBpZiBpdCdzIGBjYW50QmVDbG9zZWRgIGF0dHJpYnV0ZSBpcyBzZXQgdG8gYHRydWVgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlVGFiVW5pcXVlSWQodW5pcXVlSWQ6IHN0cmluZywgZm9yY2UgPSBmYWxzZSk6IHZvaWQge1xuICAgICAgICBjb25zdCBpbmRleCA9IHRoaXMuZ2V0VGFiSW5kZXgodW5pcXVlSWQpO1xuICAgICAgICB0aGlzLmNsb3NlVGFiKGluZGV4LCBmb3JjZSwgYFRhYiB3aXRoIElEICR7dW5pcXVlSWR9IGNhbid0IGJlIGNsb3NlZGApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENsb3NlcyB0aGUgdGFiIGF0IHRoZSBnaXZlbiBpbmRleC5cbiAgICAgKlxuICAgICAqIElmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0IHRocm93cyBhbiBgRXJyb3JgIHdpdGggdGhlIGdpdmVuIG1lc3NhZ2UuXG4gICAgICogQHBhcmFtIGluZGV4IGluZGV4IG9mIHRoZSB0YWIgdGhhdCBzaG91bGQgYmUgY2xvc2VkXG4gICAgICogQHBhcmFtIGZvcmNlIHdoZW4gYHRydWVgIGNsb3NlcyBhIHRhYiBldmVuIGlmIGl0J3MgYGNhbnRCZUNsb3NlZGAgYXR0cmlidXRlIGlzIHNldCB0byBgdHJ1ZWBcbiAgICAgKiBAcGFyYW0gZXJyb3IgdGhlIG1lc3NhZ2UgdGhhdCBzaG91bGQgYmUgZGlzcGxheWVkIGlmIHRoZSBjb25kaXRpb25zIGZvciBjbG9zaW5nIGEgdGFiIGFyZSBub3QgbWV0XG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsb3NlVGFiKGluZGV4OiBudW1iZXIsIGZvcmNlOiBib29sZWFuLCBlcnJvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2hlY2tJbmRleFJhbmdlKGluZGV4KTtcbiAgICAgICAgaWYgKCFmb3JjZSAmJiAhdGhpcy5vcGVuZWRUYWJzW2luZGV4XS5jYW5CZUNsb3NlZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5kZXggPT09IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAmJiB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdLnBhcmVudFVuaXF1ZUlkKSB7XG4gICAgICAgICAgICB0aGlzLnN3aXRjaFRvVGFiVW5pcXVlSWQodGhpcy5vcGVuZWRUYWJzW2luZGV4XS5wYXJlbnRVbmlxdWVJZCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGluZGV4ID09PSB0aGlzLnNlbGVjdGVkSW5kZXgudmFsdWUgJiYgdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlICsgMSA8IHRoaXMub3BlbmVkVGFicy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleCArIDFdLnRhYlNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMub3BlbmVkVGFic1tpbmRleF0udGFiQ2xvc2VkJC5uZXh0KCk7XG4gICAgICAgIGNvbnN0IGRlbGV0ZWQgPSB0aGlzLm9wZW5lZFRhYnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgZGVsZXRlZFswXS5kZXN0cm95KCk7XG4gICAgICAgIGlmIChpbmRleCA8IHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKHRoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZSAtIDEpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW5pdGlhbGl6ZXMgdGhlIHRhYiBpZiBpdCB3YXNuJ3QgaW5pdGlhbGl6ZWQgeWV0LlxuICAgICAqIENyZWF0ZXMgYSBuZXcge0BsaW5rIENvbXBvbmVudFBvcnRhbH0gZm9yIHRoZSB0YWIgYW5kIHByb3ZpZGVzIHRoZSBkYXRhIGZvciB0aGUgdGFiIHVuZGVyIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gICAgICogQHBhcmFtIGluZGV4IC0gaW5kZXggb2YgdGhlIHRhYiB0aGF0IHNob3VsZCBiZSBpbml0aWFsaXplZFxuICAgICAqL1xuICAgIHB1YmxpYyBpbml0aWFsaXplVGFiKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jaGVja0luZGV4UmFuZ2UoaW5kZXgpO1xuICAgICAgICBjb25zdCB0YWIgPSB0aGlzLm9wZW5lZFRhYnNbaW5kZXhdO1xuICAgICAgICBpZiAoIXRhYi5pc1RhYkluaXRpYWxpemVkKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRhYi5pbmplY3RlZE9iamVjdCwge1xuICAgICAgICAgICAgICAgIHRhYlVuaXF1ZUlkOiB0YWIudW5pcXVlSWQsXG4gICAgICAgICAgICAgICAgdGFiVmlld1JlZjogT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICAgICAgICAgIHNldEljb246IHQgPT4gdGFiLnNldEljb24odCksXG4gICAgICAgICAgICAgICAgICAgIHNldFRleHQ6IHQgPT4gdGFiLnNldFRleHQodCksXG4gICAgICAgICAgICAgICAgICAgIGdldEljb24kOiAoKSA9PiB0YWIuZ2V0SWNvbiQoKSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0VGV4dCQ6ICgpID0+IHRhYi5nZXRUZXh0JCgpLFxuICAgICAgICAgICAgICAgIH0sIHRoaXMudGFiVmlld0ludGVyZmFjZSksXG4gICAgICAgICAgICAgICAgdGFiU2VsZWN0ZWQkOiB0YWIudGFiU2VsZWN0ZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgICAgIHRhYkNsb3NlZCQ6IHRhYi50YWJDbG9zZWQkLmFzT2JzZXJ2YWJsZSgpLFxuICAgICAgICAgICAgfSBhcyBJbmplY3RlZFRhYkRhdGEpO1xuXG4gICAgICAgICAgICBjb25zdCBwcm92aWRlcnM6IEFycmF5PFN0YXRpY1Byb3ZpZGVyPiA9IFtcbiAgICAgICAgICAgICAgICB7cHJvdmlkZTogTkFFX1RBQl9EQVRBLCB1c2VWYWx1ZTogdGFiLmluamVjdGVkT2JqZWN0fVxuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIHByb3ZpZGVycy5wdXNoKHtcbiAgICAgICAgICAgICAgICBwcm92aWRlOiBOQUVfVklFV19JRF9TRUdNRU5ULFxuICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB0YWIuaW5pdGlhbCA/IHRhYi51bmlxdWVJZCA6ICgodGFiLmluamVjdGVkT2JqZWN0IGFzIEluamVjdGVkVGFiRGF0YSk/LmxvYWRGaWx0ZXI/LmlkID8/IFRhYlZpZXcuRFlOQU1JQ19UQUJfVklFV19JRF9TRUdNRU5UKVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGluamVjdG9yID0gSW5qZWN0b3IuY3JlYXRlKHtwcm92aWRlcnMsIHBhcmVudDogdGhpcy5fcGFyZW50SW5qZWN0b3J9KTtcblxuICAgICAgICAgICAgdGFiLnBvcnRhbCA9IG5ldyBDb21wb25lbnRQb3J0YWwodGFiLnRhYkNvbnRlbnRDb21wb25lbnQsIG51bGwsIGluamVjdG9yKTtcbiAgICAgICAgICAgIHRhYi5pc1RhYkluaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0YWJDaGFuZ2UoZXZlbnQ6IE1hdFRhYkNoYW5nZUV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5pbmRleCAhPT0gdGhpcy5zZWxlY3RlZEluZGV4LnZhbHVlKSB7XG4gICAgICAgICAgICBsZXQgdGFiID0gdGhpcy5vcGVuZWRUYWJzW3RoaXMuc2VsZWN0ZWRJbmRleC52YWx1ZV07XG4gICAgICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICAgICAgdGFiLnRhYlNlbGVjdGVkJC5uZXh0KGZhbHNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRhYiA9IHRoaXMub3BlbmVkVGFic1tldmVudC5pbmRleF07XG4gICAgICAgICAgICBpZiAodGFiKSB7XG4gICAgICAgICAgICAgICAgdGFiLnRhYlNlbGVjdGVkJC5uZXh0KHRydWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4LnNldFZhbHVlKGV2ZW50LmluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyYW5zZm9ybXMgYSB0YWIgYHVuaXF1ZUlkYCBpbnRvIGl0J3MgaW5kZXguXG4gICAgICpcbiAgICAgKiBUaHJvd3MgYW4gZXJyb3IgaWYgbm8gdGFiIHdpdGggdGhlIGdpdmVuIGB1bmlxdWVJZGAgZXhpc3RzLlxuICAgICAqIEBwYXJhbSB1bmlxdWVJZCAtIGlkIG9mIHRoZSB0YWIgdGhhdCB3ZSB3YW50IHRvIGZpbmQgaW5kZXggZm9yXG4gICAgICogQHJldHVybnMgaW5kZXggb2YgdGhlIHRhYiB3aXRoIHRoZSBnaXZlbiBpZFxuICAgICAqL1xuICAgIHByaXZhdGUgZ2V0VGFiSW5kZXgodW5pcXVlSWQ6IHN0cmluZyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gdGhpcy5vcGVuZWRUYWJzLmZpbmRJbmRleCh0YWIgPT4gdGFiLnVuaXF1ZUlkID09PSB1bmlxdWVJZCk7XG4gICAgICAgIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gdGFiIHdpdGggSUQgJHt1bmlxdWVJZH0gZXhpc3RzYCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tJbmRleFJhbmdlKGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSB0aGlzLm9wZW5lZFRhYnMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHRhYiB3aXRoIGluZGV4ICR7aW5kZXh9IGV4aXN0c2ApO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFicy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiBTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgY29udGVudCBvZiBvbmUgb3BlbmVkIHRhYiBpbiB0YWIgdmlldy5cbiAqXG4gKiBTZWUge0BsaW5rIFRhYlZpZXd9IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2FnZSBvZiB0aGlzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJDb250ZW50IHtcbiAgICAvKipcbiAgICAgKiBDb250ZW50cyBvZiB0aGUgdGFiIGxhYmVsLlxuICAgICAqXG4gICAgICogT25seSBhdHRyaWJ1dGVzIHdpdGggZGVmaW5lZCB2YWx1ZXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgbGFiZWwuXG4gICAgICogWW91IGNhbiBoYXZlIGJvdGggaWNvbiBhbmQgdGV4dCBkaXNwbGF5ZWQsIGVpdGhlciBvbmUsIG9yIG5laXRoZXIuXG4gICAgICogSWNvbiBpcyBkaXNwbGF5ZWQgaW4gZnJvbnQgb2YgdGhlIHRleHQuXG4gICAgICovXG4gICAgbGFiZWw/OiBUYWJMYWJlbDtcbiAgICAvKipcbiAgICAgKiBBIGNsb3NlIGJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZCBhZnRlciB0aGUgdGV4dCBpbiB0aGUgbGFiZWwgaWYgdGhlIHRhYiBjYW4gYmUgY2xvc2VkLlxuICAgICAqL1xuICAgIGNhbkJlQ2xvc2VkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENsYXNzIG5hbWUgb2YgdGhlIENvbXBvbmVudCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgdGhlIHRhYiBjb250ZW50LlxuICAgICAqL1xuICAgIHRhYkNvbnRlbnRDb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgICAvKipcbiAgICAgKiBEYXRhIHRoYXQgeW91IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUgZm9yIGluamVjdGlvbiB0byB0aGUgdGFiIGNvbnRlbnQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogVGhlIGRhdGEgY2FuIGJlIGluamVjdGVkIHRyb3VnaCB0aGUgYE5BRV9UQUJfREFUQWAgaW5qZWN0aW9uIHRva2VuLlxuICAgICAqXG4gICAgICogU2VlIFtJbmplY3RlZFRhYkRhdGFde0BsaW5rIEluamVjdGVkVGFiRGF0YX0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB0aGUgaW5qZWN0ZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIGluamVjdGVkT2JqZWN0Pzogb2JqZWN0O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIG5hdHVyYWwgb3JkZXJpbmcgb2YgdGhlIHRhYnMuXG4gICAgICpcbiAgICAgKiBUYWJzIGFyZSBvcmRlcmVkIGZyb20gbGVmdCB0byByaWdodCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICogSWYgdHdvIHRhYnMgaGF2ZSB0aGUgc2FtZSBvcmRlciB0aGUgb25lIHRoYXQgd2FzIGNyZWF0ZWQgbGF0ZXIgd2lsbCBhcHBlYXIgZnVydGhlciB0byB0aGUgcmlnaHQuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBgMGAuXG4gICAgICovXG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFiIHdhcyBpbml0aWFsbHkgb3BlbmVkLiBPbmx5IGluaXRpYWxseSBvcGVuZWQgdGFicyBoYXZlIHRoZWlyIHZpZXcgSUQgZGVmaW5lZC5cbiAgICAgKiBUYWJzIHRoYXQgYXJlIG9wZW5lZCBkeW5hbWljYWxseSBkb24ndCBoYXZlIGEgdmlldyBJRCBhbmQgdGh1cyBjYW5ub3Qgc2F2ZSB0aGVpciBzdGF0ZSBpbnRvIHVzZXIgcHJlZmVyZW5jZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgd2hlbiBpbml0aWFsIHRhYnMgYXJlIGNyZWF0ZWQuIFRoZSBbb3BlblRhYl17QGxpbmsgVGFiVmlldyNvcGVuVGFifSBtZXRob2QgaWdub3JlcyB0aGlzIGF0dHJpYnV0ZVxuICAgICAqIGFuZCBsb2dzIGEgd2FybmluZyBpZiBpdCBpcyBzZXQgb24gdGhlIHByb3ZpZGVkIG9iamVjdC5cbiAgICAgKi9cbiAgICBpbml0aWFsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIG5lZWQgdG8ga25vdywgdGhvIHdoaWNoIHRhYiB3ZSBuZWVkIHRvIHN3aXRjaCB3aGVuIHdlIGNsb3NlIGN1cnJlbnQgdGFiLCB3ZSBuZWVkIGEgcGFyZW50IHVuaXF1ZSBpZCwgaXRzXG4gICAgICogYSB1bmlxdWUgSUQgb2YgdGFiLCBmcm9tIHdoaWNoIHdlIG9wZW4gY3VycmVudCB0YWIuIEluaXRpYWwgdGFicyBhbmQgY2FzZSB0YWJzIGRvbnQgaGF2ZSB0aG9zZSBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBwYXJlbnRVbmlxdWVJZD86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIFN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFiZWwgb2YgYSB0YWIgaW4gdGFiIHZpZXcuXG4gKlxuICogU2VlIHtAbGluayBUYWJDb250ZW50I2xhYmVsfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJMYWJlbCB7XG4gICAgLyoqXG4gICAgICogTWF0ZXJpYWwgZGVzaWduIGljb24gbmFtZS5cbiAgICAgKlxuICAgICAqIFNlZSBbbWF0ZXJpYWwgd2Vic2l0ZV17QGxpbmsgaHR0cHM6Ly9tYXRlcmlhbC5pby9yZXNvdXJjZXMvaWNvbnN9IGZvciBzdXBwb3J0ZWQgaWNvbiBsaXN0LlxuICAgICAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGFiIG5hbWUgdGhhdCBpcyBkaXNwbGF5ZWQgaW4gaXQncyBsYWJlbC5cbiAgICAgKlxuICAgICAqIFRoZSB0ZXh0IGlzIHBhc3NlZCB0cm91Z2ggdGhlIHRyYW5zbGF0ZSBwaXBlLiBJZiB5b3Ugd2FudCB0aGUgdGFiIGxhYmVsIHRvIGJlIHRyYW5zbGF0ZWQgc2ltcGx5IHBhc3MgdGhlIHRyYW5zbGF0aW9uIGtleSBhcyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRhYiBjb3VudCBpcyBkaXNwbGF5ZWQgaW4gaXQncyBsYWJlbCwgaWNoIHN0cmVhbSBpcyBwcm92aWRlZFxuICAgICAqL1xuICAgIGNvdW50PzogUmVwbGF5U3ViamVjdDxudW1iZXI+O1xuXG59XG5cblxuLyoqXG4gKiBUaGUgYmFzZSBpbnRlcmZhY2UgZm9yIGRhdGEgaW5qZWN0ZWQgaW50byB0YWJzLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpcyBtYWRlIGF2YWlsYWJsZSBmb3IgaW5qZWN0aW9uIHRvIGFueSB0YWIgY29udGVudCBjb21wb25lbnQgdHJvdWdoIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gKiBJZiB7QGxpbmsgVGFiQ29udGVudH0gaGFzIHRoZSBgaW5qZWN0ZWRPYmplY3RgIGRlZmluZWQsIHRoZW4gdGhhdCBkYXRhIGlzIHByb3ZpZGVkIGFzIHdlbGwuXG4gKiBTaG91bGQgdGhlcmUgYmUgYSBrZXkgY29uZmxpY3QgaW4gdGhlIG9iamVjdHMsIHRoZW4gdmFsdWVzIGZyb20gdGhpcyBpbnRlcmZhY2UgdGFrZSBwcmVjZWRlbmNlIGFuZCByZXBsYWNlIHRoZSBwcm92aWRlZCBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGVkVGFiRGF0YSB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgdGFiIHdpdGhpbiB0aGUgdGFiIHZpZXcuXG4gICAgICovXG4gICAgdGFiVW5pcXVlSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIHBhcmVudCB0YWIgdmlldyBhbGxvd2luZyBzb21lIGNvbnRyb2wgb3ZlciBpdCBmcm9tIHRoZSB0YWIgY29udGVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgdGFiVmlld1JlZjogT3BlbmVkVGFiVmlld0ludGVyZmFjZTtcbiAgICAvKipcbiAgICAgKiBgdHJ1ZWAgaXMgZW1pdHRlZCBpbnRvIHRoaXMgc3RyZWFtIHdoZW4gdGhlIHRhYiBpcyBzd2l0Y2hlZCBpbnRvLlxuICAgICAqXG4gICAgICogYGZhbHNlYCBpcyBlbWl0dGVkIGludG8gdGhpcyBzdHJlYW0gd2hlbiB0aGUgdGFiIGlzIHN3aXRjaGVkIGF3YXkgZnJvbS5cbiAgICAgKi9cbiAgICB0YWJTZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqXG4gICAgICogc3RyZWFtIGVtaXRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQgYnkgYW55IG1lYW5zIGV4Y2VwdCBmb3IgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICovXG4gICAgdGFiQ2xvc2VkJDogT2JzZXJ2YWJsZTx2b2lkPjtcbn1cblxuXG4vKipcbiAqIE1ldGhvZHMgb2YgcGFyZW50IHRhYiB2aWV3LCB0aGF0IHRhYnMgY2FuIGFjY2Vzcy5cbiAqXG4gKiBTZWUge0BsaW5rIFRhYlZpZXd9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRhYlZpZXdJbnRlcmZhY2Uge1xuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiVmlldy5jdXJyZW50bHlTZWxlY3RlZFRhYl17QGxpbmsgVGFiVmlldyNjdXJyZW50bHlTZWxlY3RlZFRhYn1cbiAgICAgKi9cbiAgICBjdXJyZW50bHlTZWxlY3RlZFRhYigpOiBudW1iZXI7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcub3BlblRhYl17QGxpbmsgVGFiVmlldyNvcGVuVGFifVxuICAgICAqL1xuICAgIG9wZW5UYWIodGFiQ29udGVudDogVGFiQ29udGVudCwgYXV0b3N3aXRjaD86IGJvb2xlYW4sIG9wZW5FeGlzaW5nPzogYm9vbGVhbik6IHN0cmluZztcblxuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiVmlldy5zd2l0Y2hUb1RhYkluZGV4XXtAbGluayBUYWJWaWV3I3N3aXRjaFRvVGFiSW5kZXh9XG4gICAgICovXG4gICAgc3dpdGNoVG9UYWJJbmRleChpbmRleDogbnVtYmVyKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiVmlldy51bmlxdWVJZF17QGxpbmsgVGFiVmlldyN1bmlxdWVJZH1cbiAgICAgKi9cbiAgICBzd2l0Y2hUb1RhYlVuaXF1ZUlkKHVuaXF1ZUlkOiBzdHJpbmcpOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtUYWJWaWV3LmNsb3NlVGFiSW5kZXhde0BsaW5rIFRhYlZpZXcjY2xvc2VUYWJJbmRleH1cbiAgICAgKi9cbiAgICBjbG9zZVRhYkluZGV4KGluZGV4OiBudW1iZXIsIGZvcmNlPzogYm9vbGVhbik6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcuY2xvc2VUYWJVbmlxdWVJZF17QGxpbmsgVGFiVmlldyNjbG9zZVRhYlVuaXF1ZUlkfVxuICAgICAqL1xuICAgIGNsb3NlVGFiVW5pcXVlSWQodW5pcXVlSWQ6IHN0cmluZywgZm9yY2U/OiBib29sZWFuKTogdm9pZDtcbn1cblxuLyoqXG4gKiBVcGRhdGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGxhYmVsIG9mIGEgdGFiIGluIHRhYiB2aWV3LlxuICpcbiAqIFNlZSB7QGxpbmsgVGFiQ29udGVudCNsYWJlbH0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gKiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcGVuZWRUYWJWaWV3SW50ZXJmYWNlIGV4dGVuZHMgVGFiVmlld0ludGVyZmFjZSB7XG5cbiAgICBzZXRJY29uKGljb246IHN0cmluZyk7XG5cbiAgICBzZXRUZXh0KHRleHQ6IHN0cmluZyk7XG5cbiAgICBnZXRJY29uJCgpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbiAgICBnZXRUZXh0JCgpOiBPYnNlcnZhYmxlPHN0cmluZz47XG5cbn1cbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJmYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25ldGdyaWYtY29tcG9uZW50cy1jb3JlL3NyYy9saWIvdGFicy9pbnRlcmZhY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1R5cGV9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7RmlsdGVyfSBmcm9tIFwiLi4vZmlsdGVyL21vZGVscy9maWx0ZXJcIjtcblxuLyoqXG4gKiBTdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgY29udGVudCBvZiBvbmUgb3BlbmVkIHRhYiBpbiB0YWIgdmlldy5cbiAqXG4gKiBTZWUge0BsaW5rIFRhYlZpZXd9IGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2FnZSBvZiB0aGlzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJDb250ZW50IHtcbiAgICAvKipcbiAgICAgKiBDb250ZW50cyBvZiB0aGUgdGFiIGxhYmVsLlxuICAgICAqXG4gICAgICogT25seSBhdHRyaWJ1dGVzIHdpdGggZGVmaW5lZCB2YWx1ZXMgYXJlIGRpc3BsYXllZCBpbiB0aGUgbGFiZWwuXG4gICAgICogWW91IGNhbiBoYXZlIGJvdGggaWNvbiBhbmQgdGV4dCBkaXNwbGF5ZWQsIGVpdGhlciBvbmUsIG9yIG5laXRoZXIuXG4gICAgICogSWNvbiBpcyBkaXNwbGF5ZWQgaW4gZnJvbnQgb2YgdGhlIHRleHQuXG4gICAgICovXG4gICAgbGFiZWw/OiBUYWJMYWJlbDtcbiAgICAvKipcbiAgICAgKiBBIGNsb3NlIGJ1dHRvbiB3aWxsIGJlIGRpc3BsYXllZCBhZnRlciB0aGUgdGV4dCBpbiB0aGUgbGFiZWwgaWYgdGhlIHRhYiBjYW4gYmUgY2xvc2VkLlxuICAgICAqL1xuICAgIGNhbkJlQ2xvc2VkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIENsYXNzIG5hbWUgb2YgdGhlIENvbXBvbmVudCB0aGF0IHNob3VsZCBiZSBkaXNwbGF5ZWQgYXMgdGhlIHRhYiBjb250ZW50LlxuICAgICAqL1xuICAgIHRhYkNvbnRlbnRDb21wb25lbnQ6IFR5cGU8YW55PjtcbiAgICAvKipcbiAgICAgKiBEYXRhIHRoYXQgeW91IHdhbnQgdG8gbWFrZSBhdmFpbGFibGUgZm9yIGluamVjdGlvbiB0byB0aGUgdGFiIGNvbnRlbnQgY29tcG9uZW50LlxuICAgICAqXG4gICAgICogVGhlIGRhdGEgY2FuIGJlIGluamVjdGVkIHRyb3VnaCB0aGUgYE5BRV9UQUJfREFUQWAgaW5qZWN0aW9uIHRva2VuLlxuICAgICAqXG4gICAgICogU2VlIFtJbmplY3RlZFRhYkRhdGFde0BsaW5rIEluamVjdGVkVGFiRGF0YX0gZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB0aGUgaW5qZWN0ZWQgb2JqZWN0LlxuICAgICAqL1xuICAgIGluamVjdGVkT2JqZWN0Pzogb2JqZWN0O1xuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgdGhlIG5hdHVyYWwgb3JkZXJpbmcgb2YgdGhlIHRhYnMuXG4gICAgICpcbiAgICAgKiBUYWJzIGFyZSBvcmRlcmVkIGZyb20gbGVmdCB0byByaWdodCBpbiBhc2NlbmRpbmcgb3JkZXIuXG4gICAgICogSWYgdHdvIHRhYnMgaGF2ZSB0aGUgc2FtZSBvcmRlciB0aGUgb25lIHRoYXQgd2FzIGNyZWF0ZWQgbGF0ZXIgd2lsbCBhcHBlYXIgZnVydGhlciB0byB0aGUgcmlnaHQuXG4gICAgICpcbiAgICAgKiBEZWZhdWx0cyB0byBgMGAuXG4gICAgICovXG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogV2hldGhlciB0aGUgdGFiIHdhcyBpbml0aWFsbHkgb3BlbmVkLiBPbmx5IGluaXRpYWxseSBvcGVuZWQgdGFicyBoYXZlIHRoZWlyIHZpZXcgSUQgZGVmaW5lZC5cbiAgICAgKiBUYWJzIHRoYXQgYXJlIG9wZW5lZCBkeW5hbWljYWxseSBkb24ndCBoYXZlIGEgdmlldyBJRCBhbmQgdGh1cyBjYW5ub3Qgc2F2ZSB0aGVpciBzdGF0ZSBpbnRvIHVzZXIgcHJlZmVyZW5jZXMuXG4gICAgICpcbiAgICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBvbmx5IHVzZWQgd2hlbiBpbml0aWFsIHRhYnMgYXJlIGNyZWF0ZWQuIFRoZSBbb3BlblRhYl17QGxpbmsgVGFiVmlldyNvcGVuVGFifSBtZXRob2QgaWdub3JlcyB0aGlzIGF0dHJpYnV0ZVxuICAgICAqIGFuZCBsb2dzIGEgd2FybmluZyBpZiBpdCBpcyBzZXQgb24gdGhlIHByb3ZpZGVkIG9iamVjdC5cbiAgICAgKi9cbiAgICBpbml0aWFsPzogYm9vbGVhbjtcbiAgICAvKipcbiAgICAgKiBXaGVuIHdlIG5lZWQgdG8ga25vdywgdGhvIHdoaWNoIHRhYiB3ZSBuZWVkIHRvIHN3aXRjaCB3aGVuIHdlIGNsb3NlIGN1cnJlbnQgdGFiLCB3ZSBuZWVkIGEgcGFyZW50IHVuaXF1ZSBpZCwgaXRzXG4gICAgICogYSB1bmlxdWUgSUQgb2YgdGFiLCBmcm9tIHdoaWNoIHdlIG9wZW4gY3VycmVudCB0YWIuIEluaXRpYWwgdGFicyBhbmQgY2FzZSB0YWJzIGRvbnQgaGF2ZSB0aG9zZSBwcm9wZXJ0eS5cbiAgICAgKi9cbiAgICBwYXJlbnRVbmlxdWVJZD86IHN0cmluZztcbn1cblxuXG4vKipcbiAqIFN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbGFiZWwgb2YgYSB0YWIgaW4gdGFiIHZpZXcuXG4gKlxuICogU2VlIHtAbGluayBUYWJDb250ZW50I2xhYmVsfSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJMYWJlbCB7XG4gICAgLyoqXG4gICAgICogTWF0ZXJpYWwgZGVzaWduIGljb24gbmFtZS5cbiAgICAgKlxuICAgICAqIFNlZSBbbWF0ZXJpYWwgd2Vic2l0ZV17QGxpbmsgaHR0cHM6Ly9tYXRlcmlhbC5pby9yZXNvdXJjZXMvaWNvbnN9IGZvciBzdXBwb3J0ZWQgaWNvbiBsaXN0LlxuICAgICAqL1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogVGFiIG5hbWUgdGhhdCBpcyBkaXNwbGF5ZWQgaW4gaXQncyBsYWJlbC5cbiAgICAgKlxuICAgICAqIFRoZSB0ZXh0IGlzIHBhc3NlZCB0cm91Z2ggdGhlIHRyYW5zbGF0ZSBwaXBlLiBJZiB5b3Ugd2FudCB0aGUgdGFiIGxhYmVsIHRvIGJlIHRyYW5zbGF0ZWQgc2ltcGx5IHBhc3MgdGhlIHRyYW5zbGF0aW9uIGtleSBhcyB2YWx1ZS5cbiAgICAgKi9cbiAgICB0ZXh0Pzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIFRhYiBjb3VudCBpcyBkaXNwbGF5ZWQgaW4gaXQncyBsYWJlbCwgaWNoIHN0cmVhbSBpcyBwcm92aWRlZFxuICAgICAqL1xuICAgIGNvdW50PzogUmVwbGF5U3ViamVjdDxudW1iZXI+O1xuXG59XG5cblxuLyoqXG4gKiBUaGUgYmFzZSBpbnRlcmZhY2UgZm9yIGRhdGEgaW5qZWN0ZWQgaW50byB0YWJzLlxuICogVGhpcyBpbmZvcm1hdGlvbiBpcyBtYWRlIGF2YWlsYWJsZSBmb3IgaW5qZWN0aW9uIHRvIGFueSB0YWIgY29udGVudCBjb21wb25lbnQgdHJvdWdoIHRoZSBgTkFFX1RBQl9EQVRBYCBpbmplY3Rpb24gdG9rZW4uXG4gKiBJZiB7QGxpbmsgVGFiQ29udGVudH0gaGFzIHRoZSBgaW5qZWN0ZWRPYmplY3RgIGRlZmluZWQsIHRoZW4gdGhhdCBkYXRhIGlzIHByb3ZpZGVkIGFzIHdlbGwuXG4gKiBTaG91bGQgdGhlcmUgYmUgYSBrZXkgY29uZmxpY3QgaW4gdGhlIG9iamVjdHMsIHRoZW4gdmFsdWVzIGZyb20gdGhpcyBpbnRlcmZhY2UgdGFrZSBwcmVjZWRlbmNlIGFuZCByZXBsYWNlIHRoZSBwcm92aWRlZCBkYXRhLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluamVjdGVkVGFiRGF0YSB7XG4gICAgLyoqXG4gICAgICogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGUgdGFiIHdpdGhpbiB0aGUgdGFiIHZpZXcuXG4gICAgICovXG4gICAgdGFiVW5pcXVlSWQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBSZWZlcmVuY2UgdG8gdGhlIHBhcmVudCB0YWIgdmlldyBhbGxvd2luZyBzb21lIGNvbnRyb2wgb3ZlciBpdCBmcm9tIHRoZSB0YWIgY29udGVudCBjb21wb25lbnQuXG4gICAgICovXG4gICAgdGFiVmlld1JlZjogT3BlbmVkVGFiVmlld0ludGVyZmFjZTtcbiAgICAvKipcbiAgICAgKiBgdHJ1ZWAgaXMgZW1pdHRlZCBpbnRvIHRoaXMgc3RyZWFtIHdoZW4gdGhlIHRhYiBpcyBzd2l0Y2hlZCBpbnRvLlxuICAgICAqXG4gICAgICogYGZhbHNlYCBpcyBlbWl0dGVkIGludG8gdGhpcyBzdHJlYW0gd2hlbiB0aGUgdGFiIGlzIHN3aXRjaGVkIGF3YXkgZnJvbS5cbiAgICAgKi9cbiAgICB0YWJTZWxlY3RlZCQ6IE9ic2VydmFibGU8Ym9vbGVhbj47XG4gICAgLyoqXG4gICAgICogc3RyZWFtIGVtaXRzIHdoZW4gdGhlIHRhYiBpcyBjbG9zZWQgYnkgYW55IG1lYW5zIGV4Y2VwdCBmb3IgdGhlIGRlc3RydWN0aW9uIG9mIHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICovXG4gICAgdGFiQ2xvc2VkJDogT2JzZXJ2YWJsZTx2b2lkPjtcblxuICAgIGxvYWRGaWx0ZXI/OiBGaWx0ZXI7XG59XG5cblxuLyoqXG4gKiBNZXRob2RzIG9mIHBhcmVudCB0YWIgdmlldywgdGhhdCB0YWJzIGNhbiBhY2Nlc3MuXG4gKlxuICogU2VlIHtAbGluayBUYWJWaWV3fSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWJWaWV3SW50ZXJmYWNlIHtcbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcuY3VycmVudGx5U2VsZWN0ZWRUYWJde0BsaW5rIFRhYlZpZXcjY3VycmVudGx5U2VsZWN0ZWRUYWJ9XG4gICAgICovXG4gICAgY3VycmVudGx5U2VsZWN0ZWRUYWIoKTogbnVtYmVyO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtUYWJWaWV3Lm9wZW5UYWJde0BsaW5rIFRhYlZpZXcjb3BlblRhYn1cbiAgICAgKi9cbiAgICBvcGVuVGFiKHRhYkNvbnRlbnQ6IFRhYkNvbnRlbnQsIGF1dG9zd2l0Y2g/OiBib29sZWFuLCBvcGVuRXhpc2luZz86IGJvb2xlYW4pOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcuc3dpdGNoVG9UYWJJbmRleF17QGxpbmsgVGFiVmlldyNzd2l0Y2hUb1RhYkluZGV4fVxuICAgICAqL1xuICAgIHN3aXRjaFRvVGFiSW5kZXgoaW5kZXg6IG51bWJlcik6IHZvaWQ7XG5cbiAgICAvKipcbiAgICAgKiBTZWUgW1RhYlZpZXcudW5pcXVlSWRde0BsaW5rIFRhYlZpZXcjdW5pcXVlSWR9XG4gICAgICovXG4gICAgc3dpdGNoVG9UYWJVbmlxdWVJZCh1bmlxdWVJZDogc3RyaW5nKTogdm9pZDtcblxuICAgIC8qKlxuICAgICAqIFNlZSBbVGFiVmlldy5jbG9zZVRhYkluZGV4XXtAbGluayBUYWJWaWV3I2Nsb3NlVGFiSW5kZXh9XG4gICAgICovXG4gICAgY2xvc2VUYWJJbmRleChpbmRleDogbnVtYmVyLCBmb3JjZT86IGJvb2xlYW4pOiB2b2lkO1xuXG4gICAgLyoqXG4gICAgICogU2VlIFtUYWJWaWV3LmNsb3NlVGFiVW5pcXVlSWRde0BsaW5rIFRhYlZpZXcjY2xvc2VUYWJVbmlxdWVJZH1cbiAgICAgKi9cbiAgICBjbG9zZVRhYlVuaXF1ZUlkKHVuaXF1ZUlkOiBzdHJpbmcsIGZvcmNlPzogYm9vbGVhbik6IHZvaWQ7XG59XG5cbi8qKlxuICogVXBkYXRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsYWJlbCBvZiBhIHRhYiBpbiB0YWIgdmlldy5cbiAqXG4gKiBTZWUge0BsaW5rIFRhYkNvbnRlbnQjbGFiZWx9IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuICogKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3BlbmVkVGFiVmlld0ludGVyZmFjZSBleHRlbmRzIFRhYlZpZXdJbnRlcmZhY2Uge1xuXG4gICAgc2V0SWNvbihpY29uOiBzdHJpbmcpO1xuXG4gICAgc2V0VGV4dCh0ZXh0OiBzdHJpbmcpO1xuXG4gICAgZ2V0SWNvbiQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG4gICAgZ2V0VGV4dCQoKTogT2JzZXJ2YWJsZTxzdHJpbmc+O1xuXG59XG4iXX0=
@@ -929,7 +929,8 @@ var dataField$2 = {
929
929
  min: "Entered number must be greater than {{length}}",
930
930
  translationRequired: "Translation for languages: <{{translation}}> must be entered",
931
931
  translationOnly: "Only translation for languages: <{{translation}}> is allowed",
932
- requiredI18n: "At least one value must be entered"
932
+ requiredI18n: "At least one value must be entered",
933
+ requiredUserList: "At least one value must be entered"
933
934
  },
934
935
  snackBar: {
935
936
  downloadFail: " failed to download",
@@ -1409,7 +1410,8 @@ var dataField$1 = {
1409
1410
  min: "Zadané číslo musí byť väčšie ako {{length}}",
1410
1411
  translationRequired: "Musí byť vyplnený preklad pre jazyky: <{{translation}}>",
1411
1412
  translationOnly: "Je povolený iba preklad pre jazyky: <{{translation}}>",
1412
- requiredI18n: "Aspoň jedna hodnota musí byť vyplnená"
1413
+ requiredI18n: "Aspoň jedna hodnota musí byť vyplnená",
1414
+ requiredUserList: "Aspoň jedna hodnota musí byť vyplnená"
1413
1415
  },
1414
1416
  snackBar: {
1415
1417
  downloadFail: " sťahovanie zlyhalo",
@@ -1889,7 +1891,8 @@ var dataField = {
1889
1891
  min: "Die eingegebene Nummer muss größer als {{length}} sein",
1890
1892
  translationRequired: "Übersetzung für Sprachen: <{{translation}}> muss eingegeben werden",
1891
1893
  translationOnly: "Nur die Übersetzung für Sprachen: <{{translation}}> ist erlaubt",
1892
- requiredI18n: "Es muss mindestens ein Wert eingegeben werden"
1894
+ requiredI18n: "Es muss mindestens ein Wert eingegeben werden",
1895
+ requiredUserList: "Es muss mindestens ein Wert eingegeben werden"
1893
1896
  },
1894
1897
  snackBar: {
1895
1898
  downloadFail: " könnte nicht heruntergeladen werden",
@@ -5810,6 +5813,42 @@ class UserListField extends DataField {
5810
5813
  return (!a && !b) ||
5811
5814
  (!!a && !!b && a.userValues.length === b.userValues.length);
5812
5815
  }
5816
+ calculateValidity(forValidRequired, formControl) {
5817
+ const isDisabled = formControl.disabled;
5818
+ if (forValidRequired) {
5819
+ formControl.enable();
5820
+ }
5821
+ formControl.clearValidators();
5822
+ if (forValidRequired) {
5823
+ formControl.setValidators(this.behavior.required ? [this.requiredTrue] : []);
5824
+ }
5825
+ else {
5826
+ formControl.setValidators(this.resolveFormControlValidators());
5827
+ }
5828
+ formControl.updateValueAndValidity();
5829
+ const validity = this._determineFormControlValidity(formControl);
5830
+ isDisabled ? formControl.disable() : formControl.enable();
5831
+ return validity;
5832
+ }
5833
+ resolveFormControlValidators() {
5834
+ const result = [];
5835
+ if (this.behavior.required) {
5836
+ result.push(this.requiredTrue);
5837
+ }
5838
+ if (this.validations) {
5839
+ if (this._validators) {
5840
+ result.push(...this._validators);
5841
+ }
5842
+ else {
5843
+ this._validators = this.resolveValidations();
5844
+ result.push(...this._validators);
5845
+ }
5846
+ }
5847
+ return result;
5848
+ }
5849
+ requiredTrue(control) {
5850
+ return !!control.value && !!control.value._userValues && control.value._userValues.length > 0 ? null : { requiredUserList: true };
5851
+ }
5813
5852
  }
5814
5853
 
5815
5854
  /**
@@ -19862,6 +19901,7 @@ class TabView {
19862
19901
  * @param index - index of the tab that should be initialized
19863
19902
  */
19864
19903
  initializeTab(index) {
19904
+ var _a, _b, _c;
19865
19905
  this.checkIndexRange(index);
19866
19906
  const tab = this.openedTabs[index];
19867
19907
  if (!tab.isTabInitialized) {
@@ -19881,7 +19921,7 @@ class TabView {
19881
19921
  ];
19882
19922
  providers.push({
19883
19923
  provide: NAE_VIEW_ID_SEGMENT,
19884
- useValue: tab.initial ? tab.uniqueId : TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT
19924
+ useValue: tab.initial ? tab.uniqueId : ((_c = (_b = (_a = tab.injectedObject) === null || _a === void 0 ? void 0 : _a.loadFilter) === null || _b === void 0 ? void 0 : _b.id) !== null && _c !== void 0 ? _c : TabView.DYNAMIC_TAB_VIEW_ID_SEGMENT)
19885
19925
  });
19886
19926
  const injector = Injector.create({ providers, parent: this._parentInjector });
19887
19927
  tab.portal = new ComponentPortal(tab.tabContentComponent, null, injector);