@myrmidon/auth-jwt-admin 4.0.0 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -25,8 +25,8 @@ import { ConfirmDialogComponent } from './components/confirm-dialog/confirm-dial
25
25
  import { UserEditorComponent } from './components/user-editor/user-editor.component';
26
26
  import * as i0 from "@angular/core";
27
27
  export class AuthJwtAdminModule {
28
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAdminModule, declarations: [AuthJwtRegistrationComponent,
28
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAdminModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
29
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAdminModule, declarations: [AuthJwtRegistrationComponent,
30
30
  PasswordStrengthBarComponent,
31
31
  UserFilterComponent,
32
32
  UserListComponent,
@@ -54,7 +54,7 @@ export class AuthJwtAdminModule {
54
54
  PasswordStrengthBarComponent,
55
55
  UserFilterComponent,
56
56
  UserListComponent] }); }
57
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAdminModule, imports: [CommonModule,
57
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAdminModule, imports: [CommonModule,
58
58
  HttpClientModule,
59
59
  FormsModule,
60
60
  RouterModule,
@@ -75,7 +75,7 @@ export class AuthJwtAdminModule {
75
75
  AuthJwtLoginModule,
76
76
  NgToolsModule] }); }
77
77
  }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtAdminModule, decorators: [{
78
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtAdminModule, decorators: [{
79
79
  type: NgModule,
80
80
  args: [{
81
81
  declarations: [
@@ -6,17 +6,20 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "@angular/forms";
7
7
  import * as i2 from "@angular/material/snack-bar";
8
8
  import * as i3 from "../../services/auth-jwt-account.service";
9
- import * as i4 from "@angular/common";
10
- import * as i5 from "@angular/material/button";
11
- import * as i6 from "@angular/material/icon";
12
- import * as i7 from "@angular/material/input";
13
- import * as i8 from "@angular/material/form-field";
14
- import * as i9 from "@angular/material/progress-spinner";
15
- import * as i10 from "../password-strength-bar/password-strength-bar.component";
9
+ import * as i4 from "../state/user-list.repository";
10
+ import * as i5 from "@angular/common";
11
+ import * as i6 from "@angular/material/button";
12
+ import * as i7 from "@angular/material/icon";
13
+ import * as i8 from "@angular/material/input";
14
+ import * as i9 from "@angular/material/form-field";
15
+ import * as i10 from "@angular/material/progress-spinner";
16
+ import * as i11 from "../password-strength-bar/password-strength-bar.component";
16
17
  export class AuthJwtRegistrationComponent {
17
- constructor(formBuilder, _snackbar, _accountService) {
18
+ constructor(formBuilder, _snackbar, _accountService, _userRepository) {
18
19
  this._snackbar = _snackbar;
19
20
  this._accountService = _accountService;
21
+ this._userRepository = _userRepository;
22
+ this.hide = true;
20
23
  this.registered = new EventEmitter();
21
24
  // form
22
25
  this.email = formBuilder.control('', {
@@ -142,23 +145,24 @@ export class AuthJwtRegistrationComponent {
142
145
  .subscribe({
143
146
  next: () => {
144
147
  this.busy = false;
145
- this._snackbar.open($localize `Registration succeeded`, 'OK');
148
+ this._snackbar.open($localize `:auth-jwt-admin:Registration succeeded`, 'OK');
149
+ this._userRepository.reset();
146
150
  this.registered.emit();
147
151
  },
148
152
  error: (error) => {
149
153
  this.busy = false;
150
154
  console.error('Registration error' + (error ? JSON.stringify(error) : ''));
151
- this._snackbar.open($localize `Registration error`, 'OK');
155
+ this._snackbar.open($localize `:auth-jwt-admin:Registration error`, 'OK');
152
156
  },
153
157
  });
154
158
  }
155
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtRegistrationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MatSnackBar }, { token: i3.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Component }); }
156
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: AuthJwtRegistrationComponent, selector: "auth-jwt-registration", outputs: { registered: "registered" }, ngImport: i0, template: "<div>\r\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\r\n <fieldset>\r\n <legend i18n>registration</legend>\r\n <!-- email -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n>email</mat-label>\r\n <input\r\n matInput\r\n type=\"email\"\r\n id=\"email\"\r\n maxlength=\"256\"\r\n required\r\n autofocus\r\n spellcheck=\"false\"\r\n [formControl]=\"email\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(email).errors?.required && (email.dirty || email.touched)\r\n \"\r\n >email required</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"$any(email).errors?.email && (email.dirty || email.touched)\"\r\n >invalid email</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(email).errors?.uniqueEmail && (email.dirty || email.touched)\r\n \"\r\n >email already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"email.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- name -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n>username</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"name\"\r\n maxlength=\"50\"\r\n required\r\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\r\n spellcheck=\"false\"\r\n [formControl]=\"name\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\r\n >username required</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"$any(name).errors?.pattern && (name.dirty || name.touched)\"\r\n >invalid username</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(name).errors?.uniqueName && (name.dirty || name.touched)\r\n \"\r\n >username already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"name.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- first name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>first name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"firstName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"firstName\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n firstName.hasError('required') &&\r\n (firstName.dirty || firstName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n first name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- last name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>last name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"lastName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"lastName\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n lastName.hasError('required') &&\r\n (lastName.dirty || lastName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n last name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- <div [formGroup]=\"passwords\"> -->\r\n <!-- password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>password</mat-label>\r\n <input\r\n matInput\r\n type=\"password\"\r\n name=\"password\"\r\n autocomplete=\"new-password\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"password\"\r\n />\r\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\r\n </auth-jwt-password-strength-bar>\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.required &&\r\n (password.dirty || password.touched)\r\n \"\r\n >password required</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.passwordtooshort &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 8 characters</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.noupperinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 uppercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.nolowerinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 lowercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.nosymbolinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 punctuation/symbol</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- confirm password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>confirm password</mat-label>\r\n <input\r\n matInput\r\n type=\"password\"\r\n name=\"confirmPassword\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"confirmPassword\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div\r\n i18n\r\n *ngIf=\"form.errors?.areequal && confirmPassword.touched\"\r\n style=\"color: red\"\r\n >\r\n password differs from confirmation password\r\n </div>\r\n\r\n <button i18n\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n [disabled]=\"\r\n form.invalid || form.pristine || busy || name.pending || email.pending\r\n \"\r\n >\r\n register\r\n </button>\r\n <mat-progress-spinner diameter=\"20\" *ngIf=\"busy\"></mat-progress-spinner>\r\n </fieldset>\r\n </form>\r\n\r\n <details>\r\n <summary i18n>Hints</summary>\r\n <p i18n>\r\n To register a new user, you must provide his email address, choose a\r\n password, and choose a username, which must be unique (you will be\r\n notified if another user has already taken that name). The username must\r\n include only letters/digits, start with a letter, and be no shorter than 3\r\n characters, nor longer than 50.\r\n </p>\r\n <p i18n>\r\n To promote a decent security level, the password must include at least 8\r\n characters, uppercase and lowercase letters, digits, and punctuation (like\r\n dashes, stops, parentheses, etc.).\r\n </p>\r\n <p i18n>\r\n Once registered, if messaging is enabled on the server side the user will\r\n receive an email message to the email address you specified; he will have\r\n to click on the provided link to complete the registration process.\r\n Otherwise, you should edit the newly created user and confirm the email\r\n registration.\r\n </p>\r\n </details>\r\n</div>\r\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}\n"], dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i7.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i8.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i8.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "component", type: i9.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i10.PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: ["passwordToCheck"], outputs: ["strengthChange"] }] }); }
159
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtRegistrationComponent, deps: [{ token: i1.FormBuilder }, { token: i2.MatSnackBar }, { token: i3.AuthJwtAccountService }, { token: i4.UserListRepository }], target: i0.ɵɵFactoryTarget.Component }); }
160
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: AuthJwtRegistrationComponent, selector: "auth-jwt-registration", outputs: { registered: "registered" }, ngImport: i0, template: "<div>\r\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\r\n <fieldset>\r\n <legend i18n=\"auth-jwt-admin\">registration</legend>\r\n <!-- email -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n>email</mat-label>\r\n <input\r\n matInput\r\n type=\"email\"\r\n id=\"email\"\r\n maxlength=\"256\"\r\n required\r\n autofocus\r\n spellcheck=\"false\"\r\n [formControl]=\"email\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(email).errors?.required && (email.dirty || email.touched)\r\n \"\r\n >email required</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"$any(email).errors?.email && (email.dirty || email.touched)\"\r\n >invalid email</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(email).errors?.uniqueEmail && (email.dirty || email.touched)\r\n \"\r\n >email already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"email.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- name -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">username</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"name\"\r\n maxlength=\"50\"\r\n required\r\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\r\n spellcheck=\"false\"\r\n [formControl]=\"name\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\r\n >username required</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"$any(name).errors?.pattern && (name.dirty || name.touched)\"\r\n >invalid username</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(name).errors?.uniqueName && (name.dirty || name.touched)\r\n \"\r\n >username already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"name.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- first name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"firstName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"firstName\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n firstName.hasError('required') &&\r\n (firstName.dirty || firstName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n first name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- last name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"lastName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"lastName\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n lastName.hasError('required') &&\r\n (lastName.dirty || lastName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n last name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- <div [formGroup]=\"passwords\"> -->\r\n <!-- password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">password</mat-label>\r\n <input\r\n matInput\r\n [type]=\"hide ? 'password' : 'text'\"\r\n name=\"password\"\r\n autocomplete=\"new-password\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"password\"\r\n />\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"hide = !hide\"\r\n i18n-aria-label=\"auth-jwt-login\"\r\n aria-label=\"Hide password\"\r\n [attr.aria-pressed]=\"hide\"\r\n >\r\n <mat-icon>{{ hide ? \"visibility_off\" : \"visibility\" }}</mat-icon>\r\n </button>\r\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\r\n </auth-jwt-password-strength-bar>\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.required &&\r\n (password.dirty || password.touched)\r\n \"\r\n >password required</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.passwordtooshort &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 8 characters</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.noupperinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 uppercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.nolowerinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 lowercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.nosymbolinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 punctuation/symbol</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- confirm password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">confirm password</mat-label>\r\n <input\r\n matInput\r\n [type]=\"hide ? 'password' : 'text'\"\r\n name=\"confirmPassword\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"confirmPassword\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"form.errors?.areequal && confirmPassword.touched\"\r\n style=\"color: red\"\r\n >\r\n password differs from confirmation password\r\n </div>\r\n\r\n <button\r\n i18n=\"auth-jwt-admin\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n [disabled]=\"\r\n form.invalid || form.pristine || busy || name.pending || email.pending\r\n \"\r\n >\r\n register\r\n </button>\r\n <mat-progress-spinner diameter=\"20\" *ngIf=\"busy\"></mat-progress-spinner>\r\n </fieldset>\r\n </form>\r\n\r\n <details>\r\n <summary i18n=\"auth-jwt-admin\">Hints</summary>\r\n <div class=\"info\">\r\n <p i18n=\"auth-jwt-admin\">\r\n To register a new user, you must provide his email address, choose a\r\n password, and choose a username, which must be unique (you will be\r\n notified if another user has already taken that name). The username must\r\n include only letters/digits, start with a letter, and be no shorter than\r\n 3 characters, nor longer than 50.\r\n </p>\r\n <p i18n=\"auth-jwt-admin\">\r\n To promote a decent security level, the password must include at least 8\r\n characters, uppercase and lowercase letters, digits, and punctuation\r\n (like dashes, stops, parentheses, etc.).\r\n </p>\r\n <p i18n=\"auth-jwt-admin\">\r\n Once registered, if messaging is enabled on the server side the user\r\n will receive an email message to the email address you specified; he\r\n will have to click on the provided link to complete the registration\r\n process. Otherwise, you should edit the newly created user and confirm\r\n the email registration.\r\n </p>\r\n </div>\r\n </details>\r\n</div>\r\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}.info{column-width:600px}\n"], dependencies: [{ kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1.PatternValidator, selector: "[pattern][formControlName],[pattern][formControl],[pattern][ngModel]", inputs: ["pattern"] }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i6.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "component", type: i6.MatIconButton, selector: "button[mat-icon-button]", exportAs: ["matButton"] }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i9.MatLabel, selector: "mat-label" }, { kind: "directive", type: i9.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i9.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i10.MatProgressSpinner, selector: "mat-progress-spinner, mat-spinner", inputs: ["color", "mode", "value", "diameter", "strokeWidth"], exportAs: ["matProgressSpinner"] }, { kind: "component", type: i11.PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: ["passwordToCheck"], outputs: ["strengthChange"] }] }); }
157
161
  }
158
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: AuthJwtRegistrationComponent, decorators: [{
162
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: AuthJwtRegistrationComponent, decorators: [{
159
163
  type: Component,
160
- args: [{ selector: 'auth-jwt-registration', template: "<div>\r\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\r\n <fieldset>\r\n <legend i18n>registration</legend>\r\n <!-- email -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n>email</mat-label>\r\n <input\r\n matInput\r\n type=\"email\"\r\n id=\"email\"\r\n maxlength=\"256\"\r\n required\r\n autofocus\r\n spellcheck=\"false\"\r\n [formControl]=\"email\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(email).errors?.required && (email.dirty || email.touched)\r\n \"\r\n >email required</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"$any(email).errors?.email && (email.dirty || email.touched)\"\r\n >invalid email</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(email).errors?.uniqueEmail && (email.dirty || email.touched)\r\n \"\r\n >email already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"email.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- name -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n>username</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"name\"\r\n maxlength=\"50\"\r\n required\r\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\r\n spellcheck=\"false\"\r\n [formControl]=\"name\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\r\n >username required</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"$any(name).errors?.pattern && (name.dirty || name.touched)\"\r\n >invalid username</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(name).errors?.uniqueName && (name.dirty || name.touched)\r\n \"\r\n >username already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"name.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- first name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>first name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"firstName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"firstName\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n firstName.hasError('required') &&\r\n (firstName.dirty || firstName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n first name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- last name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>last name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"lastName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"lastName\"\r\n />\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n lastName.hasError('required') &&\r\n (lastName.dirty || lastName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n last name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- <div [formGroup]=\"passwords\"> -->\r\n <!-- password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>password</mat-label>\r\n <input\r\n matInput\r\n type=\"password\"\r\n name=\"password\"\r\n autocomplete=\"new-password\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"password\"\r\n />\r\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\r\n </auth-jwt-password-strength-bar>\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.required &&\r\n (password.dirty || password.touched)\r\n \"\r\n >password required</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.passwordtooshort &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 8 characters</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.noupperinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 uppercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.nolowerinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 lowercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n\r\n *ngIf=\"\r\n $any(password).errors?.nosymbolinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 punctuation/symbol</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- confirm password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n>confirm password</mat-label>\r\n <input\r\n matInput\r\n type=\"password\"\r\n name=\"confirmPassword\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"confirmPassword\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div\r\n i18n\r\n *ngIf=\"form.errors?.areequal && confirmPassword.touched\"\r\n style=\"color: red\"\r\n >\r\n password differs from confirmation password\r\n </div>\r\n\r\n <button i18n\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n [disabled]=\"\r\n form.invalid || form.pristine || busy || name.pending || email.pending\r\n \"\r\n >\r\n register\r\n </button>\r\n <mat-progress-spinner diameter=\"20\" *ngIf=\"busy\"></mat-progress-spinner>\r\n </fieldset>\r\n </form>\r\n\r\n <details>\r\n <summary i18n>Hints</summary>\r\n <p i18n>\r\n To register a new user, you must provide his email address, choose a\r\n password, and choose a username, which must be unique (you will be\r\n notified if another user has already taken that name). The username must\r\n include only letters/digits, start with a letter, and be no shorter than 3\r\n characters, nor longer than 50.\r\n </p>\r\n <p i18n>\r\n To promote a decent security level, the password must include at least 8\r\n characters, uppercase and lowercase letters, digits, and punctuation (like\r\n dashes, stops, parentheses, etc.).\r\n </p>\r\n <p i18n>\r\n Once registered, if messaging is enabled on the server side the user will\r\n receive an email message to the email address you specified; he will have\r\n to click on the provided link to complete the registration process.\r\n Otherwise, you should edit the newly created user and confirm the email\r\n registration.\r\n </p>\r\n </details>\r\n</div>\r\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}\n"] }]
161
- }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.MatSnackBar }, { type: i3.AuthJwtAccountService }], propDecorators: { registered: [{
164
+ args: [{ selector: 'auth-jwt-registration', template: "<div>\r\n <form role=\"form\" [formGroup]=\"form\" (submit)=\"onSubmit()\">\r\n <fieldset>\r\n <legend i18n=\"auth-jwt-admin\">registration</legend>\r\n <!-- email -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n>email</mat-label>\r\n <input\r\n matInput\r\n type=\"email\"\r\n id=\"email\"\r\n maxlength=\"256\"\r\n required\r\n autofocus\r\n spellcheck=\"false\"\r\n [formControl]=\"email\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(email).errors?.required && (email.dirty || email.touched)\r\n \"\r\n >email required</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"$any(email).errors?.email && (email.dirty || email.touched)\"\r\n >invalid email</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(email).errors?.uniqueEmail && (email.dirty || email.touched)\r\n \"\r\n >email already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"email.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- name -->\r\n <div class=\"form-row\">\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">username</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"name\"\r\n maxlength=\"50\"\r\n required\r\n pattern=\"^[a-zA-Z][a-zA-Z0-9]{2,49}$\"\r\n spellcheck=\"false\"\r\n [formControl]=\"name\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"$any(name).errors?.required && (name.dirty || name.touched)\"\r\n >username required</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"$any(name).errors?.pattern && (name.dirty || name.touched)\"\r\n >invalid username</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(name).errors?.uniqueName && (name.dirty || name.touched)\r\n \"\r\n >username already registered</mat-error\r\n >\r\n </mat-form-field>\r\n <mat-icon *ngIf=\"name.pending\">hourglass</mat-icon>\r\n </div>\r\n\r\n <!-- first name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">first name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"firstName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"firstName\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n firstName.hasError('required') &&\r\n (firstName.dirty || firstName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n first name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- last name -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">last name</mat-label>\r\n <input\r\n matInput\r\n type=\"text\"\r\n id=\"lastName\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"lastName\"\r\n />\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n lastName.hasError('required') &&\r\n (lastName.dirty || lastName.touched)\r\n \"\r\n class=\"text-danger small\"\r\n >\r\n last name required\r\n </mat-error>\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- <div [formGroup]=\"passwords\"> -->\r\n <!-- password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">password</mat-label>\r\n <input\r\n matInput\r\n [type]=\"hide ? 'password' : 'text'\"\r\n name=\"password\"\r\n autocomplete=\"new-password\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"password\"\r\n />\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matSuffix\r\n (click)=\"hide = !hide\"\r\n i18n-aria-label=\"auth-jwt-login\"\r\n aria-label=\"Hide password\"\r\n [attr.aria-pressed]=\"hide\"\r\n >\r\n <mat-icon>{{ hide ? \"visibility_off\" : \"visibility\" }}</mat-icon>\r\n </button>\r\n <auth-jwt-password-strength-bar [passwordToCheck]=\"password.value\">\r\n </auth-jwt-password-strength-bar>\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.required &&\r\n (password.dirty || password.touched)\r\n \"\r\n >password required</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.passwordtooshort &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 8 characters</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.noupperinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 uppercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.nolowerinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 lowercase letter</mat-error\r\n >\r\n <mat-error\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"\r\n $any(password).errors?.nosymbolinpassword &&\r\n (password.dirty || password.touched)\r\n \"\r\n >at least 1 punctuation/symbol</mat-error\r\n >\r\n </mat-form-field>\r\n </div>\r\n\r\n <!-- confirm password -->\r\n <div>\r\n <mat-form-field>\r\n <mat-label i18n=\"auth-jwt-admin\">confirm password</mat-label>\r\n <input\r\n matInput\r\n [type]=\"hide ? 'password' : 'text'\"\r\n name=\"confirmPassword\"\r\n maxlength=\"50\"\r\n required\r\n spellcheck=\"false\"\r\n [formControl]=\"confirmPassword\"\r\n />\r\n </mat-form-field>\r\n </div>\r\n <div\r\n i18n=\"auth-jwt-admin\"\r\n *ngIf=\"form.errors?.areequal && confirmPassword.touched\"\r\n style=\"color: red\"\r\n >\r\n password differs from confirmation password\r\n </div>\r\n\r\n <button\r\n i18n=\"auth-jwt-admin\"\r\n mat-raised-button\r\n type=\"submit\"\r\n color=\"primary\"\r\n [disabled]=\"\r\n form.invalid || form.pristine || busy || name.pending || email.pending\r\n \"\r\n >\r\n register\r\n </button>\r\n <mat-progress-spinner diameter=\"20\" *ngIf=\"busy\"></mat-progress-spinner>\r\n </fieldset>\r\n </form>\r\n\r\n <details>\r\n <summary i18n=\"auth-jwt-admin\">Hints</summary>\r\n <div class=\"info\">\r\n <p i18n=\"auth-jwt-admin\">\r\n To register a new user, you must provide his email address, choose a\r\n password, and choose a username, which must be unique (you will be\r\n notified if another user has already taken that name). The username must\r\n include only letters/digits, start with a letter, and be no shorter than\r\n 3 characters, nor longer than 50.\r\n </p>\r\n <p i18n=\"auth-jwt-admin\">\r\n To promote a decent security level, the password must include at least 8\r\n characters, uppercase and lowercase letters, digits, and punctuation\r\n (like dashes, stops, parentheses, etc.).\r\n </p>\r\n <p i18n=\"auth-jwt-admin\">\r\n Once registered, if messaging is enabled on the server side the user\r\n will receive an email message to the email address you specified; he\r\n will have to click on the provided link to complete the registration\r\n process. Otherwise, you should edit the newly created user and confirm\r\n the email registration.\r\n </p>\r\n </div>\r\n </details>\r\n</div>\r\n", styles: ["mat-form-field{width:400px}fieldset{border:1px solid silver;border-radius:8px;padding:16px}.form-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.form-row *{flex:0 0 auto}details{margin:8px}.info{column-width:600px}\n"] }]
165
+ }], ctorParameters: () => [{ type: i1.FormBuilder }, { type: i2.MatSnackBar }, { type: i3.AuthJwtAccountService }, { type: i4.UserListRepository }], propDecorators: { registered: [{
162
166
  type: Output
163
167
  }] } });
164
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9hdXRoLWp3dC1yZWdpc3RyYXRpb24vYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9hdXRoLWp3dC1yZWdpc3RyYXRpb24vYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsVUFBVSxHQU1YLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7QUFPMUUsTUFBTSxPQUFPLDRCQUE0QjtJQW1CdkMsWUFDRSxXQUF3QixFQUNoQixTQUFzQixFQUN0QixlQUFzQztRQUR0QyxjQUFTLEdBQVQsU0FBUyxDQUFhO1FBQ3RCLG9CQUFlLEdBQWYsZUFBZSxDQUF1QjtRQUU5QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFDMUMsT0FBTztRQUNQLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUU7WUFDbkMsVUFBVSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsS0FBSyxDQUFDO1lBQ25ELGVBQWUsRUFBRSxJQUFJLENBQUMsdUJBQXVC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cUJBQXFCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQSxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUMzRCxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs4R0ExTFUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsb0dDekJ6Qyx1NVBBd1BBOzsyRkQvTmEsNEJBQTRCO2tCQUx4QyxTQUFTOytCQUNFLHVCQUF1Qjs4SUFxQjFCLFVBQVU7c0JBRGhCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBWYWxpZGF0b3JzLFxyXG4gIEFic3RyYWN0Q29udHJvbCxcclxuICBWYWxpZGF0aW9uRXJyb3JzLFxyXG4gIEZvcm1Hcm91cCxcclxuICBGb3JtQ29udHJvbCxcclxuICBGb3JtQnVpbGRlcixcclxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFNuYWNrQmFyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc25hY2stYmFyJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICBBdXRoSnd0QWNjb3VudFNlcnZpY2UsXHJcbiAgRXhpc3RSZXN1bHQsXHJcbiAgUmVnaXN0cmF0aW9uTW9kZWwsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUGFzc3dvcmRWYWxpZGF0b3JzIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9wYXNzd29yZC52YWxpZGF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtcmVnaXN0cmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRoLWp3dC1yZWdpc3RyYXRpb24uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aEp3dFJlZ2lzdHJhdGlvbkNvbXBvbmVudCB7XHJcbiAgcHVibGljIGJ1c3k6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgLy8gZm9ybVxyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIGVtYWlsOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG4gIHB1YmxpYyBuYW1lOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG4gIHB1YmxpYyBmaXJzdE5hbWU6IEZvcm1Db250cm9sPHN0cmluZz47XHJcbiAgcHVibGljIGxhc3ROYW1lOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG4gIHB1YmxpYyBwYXNzd29yZDogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICBwdWJsaWMgY29uZmlybVBhc3N3b3JkOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0dGVkIHdoZW4gYSB1c2VyIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC4gVXN1YWxseVxyXG4gICAqIHlvdSBzaG91bGQgaGFuZGxlIHRoaXMgdG8gbW92ZSBhd2F5IGZyb20gdGhlIHJlZ2lzdHJhdGlvblxyXG4gICAqIHBhZ2UuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlZ2lzdGVyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIGZvcm1CdWlsZGVyOiBGb3JtQnVpbGRlcixcclxuICAgIHByaXZhdGUgX3NuYWNrYmFyOiBNYXRTbmFja0JhcixcclxuICAgIHByaXZhdGUgX2FjY291bnRTZXJ2aWNlOiBBdXRoSnd0QWNjb3VudFNlcnZpY2VcclxuICApIHtcclxuICAgIHRoaXMucmVnaXN0ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5lbWFpbCA9IGZvcm1CdWlsZGVyLmNvbnRyb2woJycsIHtcclxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdLFxyXG4gICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMuZ2V0VW5pcXVlRW1haWxWYWxpZGF0b3IodGhpcy5fYWNjb3VudFNlcnZpY2UpLmJpbmQoXHJcbiAgICAgICAgdGhpc1xyXG4gICAgICApLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2woJycsIHtcclxuICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLmdldFVuaXF1ZU5hbWVWYWxpZGF0b3IodGhpcy5fYWNjb3VudFNlcnZpY2UpLmJpbmQoXHJcbiAgICAgICAgdGhpc1xyXG4gICAgICApLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZmlyc3ROYW1lID0gZm9ybUJ1aWxkZXIuY29udHJvbCgnJywge1xyXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXSxcclxuICAgICAgbm9uTnVsbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdE5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sKCcnLCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU0NzQ5OTEvYW5ndWxhci0yLWZvcm0tdmFsaWRhdGluZy1mb3ItcmVwZWF0LXBhc3N3b3JkXHJcbiAgICB0aGlzLnBhc3N3b3JkID0gZm9ybUJ1aWxkZXIuY29udHJvbCgnJywge1xyXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgUGFzc3dvcmRWYWxpZGF0b3JzLnN0YW5kYXJkKCldLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb25maXJtUGFzc3dvcmQgPSBmb3JtQnVpbGRlci5jb250cm9sKCcnLCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgIHtcclxuICAgICAgICBlbWFpbDogdGhpcy5lbWFpbCxcclxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgZmlyc3ROYW1lOiB0aGlzLmZpcnN0TmFtZSxcclxuICAgICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZSxcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcclxuICAgICAgICBjb25maXJtUGFzc3dvcmQ6IHRoaXMuY29uZmlybVBhc3N3b3JkLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAgUGFzc3dvcmRWYWxpZGF0b3JzLmFyZUVxdWFsKCdwYXNzd29yZCcsICdjb25maXJtUGFzc3dvcmQnKSxcclxuICAgICAgICBdLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHVuaXF1ZSBuYW1lIHZhbGlkYXRvci4gVGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBpbmplY3Rpb24gYXQgdGhpcyBsZXZlbCxcclxuICAgKiBidXQgd2UgY2FuIHVzZSBjbG9zdXJlcy4gQXMgYSBtYXR0ZXIgb2YgZmFjdCwgd2UgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZpY2UgaW5zdGFuY2VcclxuICAgKiBmcm9tIHRoZSBjb21wb25lbnQgd2hlcmUgd2UgcmVnaXN0ZXIgdmFsaWRhdG9ycy4gU28gd2Ugd2lsbCBpbXBsZW1lbnQgYSBmdW5jdGlvblxyXG4gICAqIHRoYXQgd2lsbCBhY2NlcHQgdGhlIHNlcnZpY2UgYXMgcGFyYW1ldGVyLCBhbmQgY3JlYXRlIHRoZSBhY3R1YWwgdmFsaWRhdGlvbiBmdW5jdGlvbi5cclxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZpY2Ugd2hlbiBjYWxsZWQgZHVyaW5nIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MuXHJcbiAgICogU2VlIGh0dHA6Ly9yZXN0bGV0LmNvbS9ibG9nLzIwMTYvMDIvMTcvaW1wbGVtZW50aW5nLWFuZ3VsYXIyLWZvcm1zLWJleW9uZC1iYXNpY3MtcGFydC0yLy5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFVuaXF1ZU5hbWVWYWxpZGF0b3Ioc2VydmljZTogQXV0aEp3dEFjY291bnRTZXJ2aWNlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICk6XHJcbiAgICAgIHwgUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD5cclxuICAgICAgfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgLy8gYXZvaWQgY2hlY2tpbmcgaWYgZW1wdHlcclxuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlcnZpY2UuaXNOYW1lUmVnaXN0ZXJlZChjb250cm9sLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YTogRXhpc3RSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNFeGlzdGluZykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHVuaXF1ZU5hbWU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICdVbmlxdWUgbmFtZSB2YWxpZGF0b3IgZXJyb3InICtcclxuICAgICAgICAgICAgICAgICAgKGVycm9yID8gSlNPTi5zdHJpbmdpZnkoZXJyb3IpIDogJycpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHsgdW5pcXVlTmFtZTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVbmlxdWVFbWFpbFZhbGlkYXRvcihzZXJ2aWNlOiBBdXRoSnd0QWNjb3VudFNlcnZpY2UpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTpcclxuICAgICAgfCBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPlxyXG4gICAgICB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAvLyBhdm9pZCBjaGVja2luZyBpZiBlbXB0eVxyXG4gICAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VydmljZS5pc0VtYWlsUmVnaXN0ZXJlZChjb250cm9sLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YTogRXhpc3RSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNFeGlzdGluZykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHVuaXF1ZUVtYWlsOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnVW5pcXVlIGVtYWlsIHZhbGlkYXRvciBlcnJvcicgK1xyXG4gICAgICAgICAgICAgICAgICAoZXJyb3IgPyBKU09OLnN0cmluZ2lmeShlcnJvcikgOiAnJylcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoeyB1bmlxdWVFbWFpbDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5mb3JtLnZhbGlkIHx8XHJcbiAgICAgIHRoaXMuYnVzeSB8fFxyXG4gICAgICB0aGlzLm5hbWUucGVuZGluZyB8fFxyXG4gICAgICB0aGlzLmVtYWlsLnBlbmRpbmdcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbW9kZWw6IFJlZ2lzdHJhdGlvbk1vZGVsID0ge1xyXG4gICAgICBlbWFpbDogdGhpcy5lbWFpbC52YWx1ZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLnZhbHVlLFxyXG4gICAgICBmaXJzdE5hbWU6IHRoaXMuZmlyc3ROYW1lLnZhbHVlLFxyXG4gICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZS52YWx1ZSxcclxuICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQudmFsdWUsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuYnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLl9hY2NvdW50U2VydmljZVxyXG4gICAgICAucmVnaXN0ZXIobW9kZWwpXHJcbiAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbigkbG9jYWxpemVgUmVnaXN0cmF0aW9uIHN1Y2NlZWRlZGAsICdPSycpO1xyXG4gICAgICAgICAgdGhpcy5yZWdpc3RlcmVkLmVtaXQoKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgJ1JlZ2lzdHJhdGlvbiAgZXJyb3InICsgKGVycm9yID8gSlNPTi5zdHJpbmdpZnkoZXJyb3IpIDogJycpXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbigkbG9jYWxpemVgUmVnaXN0cmF0aW9uIGVycm9yYCwgJ09LJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgPGZvcm0gcm9sZT1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cIm9uU3VibWl0KClcIj5cclxuICAgIDxmaWVsZHNldD5cclxuICAgICAgPGxlZ2VuZCBpMThuPnJlZ2lzdHJhdGlvbjwvbGVnZW5kPlxyXG4gICAgICA8IS0tIGVtYWlsIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsIGkxOG4+ZW1haWw8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwiZW1haWxcIlxyXG4gICAgICAgICAgICBpZD1cImVtYWlsXCJcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiMjU2XCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgYXV0b2ZvY3VzXHJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJlbWFpbFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShlbWFpbCkuZXJyb3JzPy5yZXF1aXJlZCAmJiAoZW1haWwuZGlydHkgfHwgZW1haWwudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPmVtYWlsIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4blxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkoZW1haWwpLmVycm9ycz8uZW1haWwgJiYgKGVtYWlsLmRpcnR5IHx8IGVtYWlsLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPmludmFsaWQgZW1haWw8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShlbWFpbCkuZXJyb3JzPy51bmlxdWVFbWFpbCAmJiAoZW1haWwuZGlydHkgfHwgZW1haWwudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPmVtYWlsIGFscmVhZHkgcmVnaXN0ZXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJlbWFpbC5wZW5kaW5nXCI+aG91cmdsYXNzPC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIG5hbWUgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj51c2VybmFtZTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgaWQ9XCJuYW1lXCJcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBwYXR0ZXJuPVwiXlthLXpBLVpdW2EtekEtWjAtOV17Miw0OX0kXCJcclxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cIm5hbWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4blxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobmFtZSkuZXJyb3JzPy5yZXF1aXJlZCAmJiAobmFtZS5kaXJ0eSB8fCBuYW1lLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPnVzZXJuYW1lIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4blxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobmFtZSkuZXJyb3JzPy5wYXR0ZXJuICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcIlxyXG4gICAgICAgICAgICA+aW52YWxpZCB1c2VybmFtZTwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgIGkxOG5cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KG5hbWUpLmVycm9ycz8udW5pcXVlTmFtZSAmJiAobmFtZS5kaXJ0eSB8fCBuYW1lLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID51c2VybmFtZSBhbHJlYWR5IHJlZ2lzdGVyZWQ8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwibmFtZS5wZW5kaW5nXCI+aG91cmdsYXNzPC9tYXQtaWNvbj5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIGZpcnN0IG5hbWUgLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbCBpMThuPmZpcnN0IG5hbWU8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIGlkPVwiZmlyc3ROYW1lXCJcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlyc3ROYW1lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgIGkxOG5cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICBmaXJzdE5hbWUuaGFzRXJyb3IoJ3JlcXVpcmVkJykgJiZcclxuICAgICAgICAgICAgICAoZmlyc3ROYW1lLmRpcnR5IHx8IGZpcnN0TmFtZS50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICBjbGFzcz1cInRleHQtZGFuZ2VyIHNtYWxsXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgZmlyc3QgbmFtZSByZXF1aXJlZFxyXG4gICAgICAgICAgPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tIGxhc3QgbmFtZSAtLT5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsIGkxOG4+bGFzdCBuYW1lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBpZD1cImxhc3ROYW1lXCJcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibGFzdE5hbWVcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4blxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGxhc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmXHJcbiAgICAgICAgICAgICAgKGxhc3ROYW1lLmRpcnR5IHx8IGxhc3ROYW1lLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBsYXN0IG5hbWUgcmVxdWlyZWRcclxuICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSA8ZGl2IFtmb3JtR3JvdXBdPVwicGFzc3dvcmRzXCI+IC0tPlxyXG4gICAgICA8IS0tIHBhc3N3b3JkIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj5wYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgIHR5cGU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8YXV0aC1qd3QtcGFzc3dvcmQtc3RyZW5ndGgtYmFyIFtwYXNzd29yZFRvQ2hlY2tdPVwicGFzc3dvcmQudmFsdWVcIj5cclxuICAgICAgICAgIDwvYXV0aC1qd3QtcGFzc3dvcmQtc3RyZW5ndGgtYmFyPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShwYXNzd29yZCkuZXJyb3JzPy5yZXF1aXJlZCAmJlxyXG4gICAgICAgICAgICAgIChwYXNzd29yZC5kaXJ0eSB8fCBwYXNzd29yZC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+cGFzc3dvcmQgcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShwYXNzd29yZCkuZXJyb3JzPy5wYXNzd29yZHRvb3Nob3J0ICYmXHJcbiAgICAgICAgICAgICAgKHBhc3N3b3JkLmRpcnR5IHx8IHBhc3N3b3JkLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5hdCBsZWFzdCA4IGNoYXJhY3RlcnM8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShwYXNzd29yZCkuZXJyb3JzPy5ub3VwcGVyaW5wYXNzd29yZCAmJlxyXG4gICAgICAgICAgICAgIChwYXNzd29yZC5kaXJ0eSB8fCBwYXNzd29yZC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+YXQgbGVhc3QgMSB1cHBlcmNhc2UgbGV0dGVyPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4blxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkocGFzc3dvcmQpLmVycm9ycz8ubm9sb3dlcmlucGFzc3dvcmQgJiZcclxuICAgICAgICAgICAgICAocGFzc3dvcmQuZGlydHkgfHwgcGFzc3dvcmQudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPmF0IGxlYXN0IDEgbG93ZXJjYXNlIGxldHRlcjwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgIGkxOG5cclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHBhc3N3b3JkKS5lcnJvcnM/Lm5vc3ltYm9saW5wYXNzd29yZCAmJlxyXG4gICAgICAgICAgICAgIChwYXNzd29yZC5kaXJ0eSB8fCBwYXNzd29yZC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+YXQgbGVhc3QgMSBwdW5jdHVhdGlvbi9zeW1ib2w8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBjb25maXJtIHBhc3N3b3JkIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj5jb25maXJtIHBhc3N3b3JkPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgICAgbmFtZT1cImNvbmZpcm1QYXNzd29yZFwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbmZpcm1QYXNzd29yZFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgaTE4blxyXG4gICAgICAgICpuZ0lmPVwiZm9ybS5lcnJvcnM/LmFyZWVxdWFsICYmIGNvbmZpcm1QYXNzd29yZC50b3VjaGVkXCJcclxuICAgICAgICBzdHlsZT1cImNvbG9yOiByZWRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgcGFzc3dvcmQgZGlmZmVycyBmcm9tIGNvbmZpcm1hdGlvbiBwYXNzd29yZFxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxidXR0b24gaTE4blxyXG4gICAgICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICAgICAgdHlwZT1cInN1Ym1pdFwiXHJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcclxuICAgICAgICBbZGlzYWJsZWRdPVwiXHJcbiAgICAgICAgICBmb3JtLmludmFsaWQgfHwgZm9ybS5wcmlzdGluZSB8fCBidXN5IHx8IG5hbWUucGVuZGluZyB8fCBlbWFpbC5wZW5kaW5nXHJcbiAgICAgICAgXCJcclxuICAgICAgPlxyXG4gICAgICAgIHJlZ2lzdGVyXHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8bWF0LXByb2dyZXNzLXNwaW5uZXIgZGlhbWV0ZXI9XCIyMFwiICpuZ0lmPVwiYnVzeVwiPjwvbWF0LXByb2dyZXNzLXNwaW5uZXI+XHJcbiAgICA8L2ZpZWxkc2V0PlxyXG4gIDwvZm9ybT5cclxuXHJcbiAgPGRldGFpbHM+XHJcbiAgICA8c3VtbWFyeSBpMThuPkhpbnRzPC9zdW1tYXJ5PlxyXG4gICAgPHAgaTE4bj5cclxuICAgICAgVG8gcmVnaXN0ZXIgYSBuZXcgdXNlciwgeW91IG11c3QgcHJvdmlkZSBoaXMgZW1haWwgYWRkcmVzcywgY2hvb3NlIGFcclxuICAgICAgcGFzc3dvcmQsIGFuZCBjaG9vc2UgYSB1c2VybmFtZSwgd2hpY2ggbXVzdCBiZSB1bmlxdWUgKHlvdSB3aWxsIGJlXHJcbiAgICAgIG5vdGlmaWVkIGlmIGFub3RoZXIgdXNlciBoYXMgYWxyZWFkeSB0YWtlbiB0aGF0IG5hbWUpLiBUaGUgdXNlcm5hbWUgbXVzdFxyXG4gICAgICBpbmNsdWRlIG9ubHkgbGV0dGVycy9kaWdpdHMsIHN0YXJ0IHdpdGggYSBsZXR0ZXIsIGFuZCBiZSBubyBzaG9ydGVyIHRoYW4gM1xyXG4gICAgICBjaGFyYWN0ZXJzLCBub3IgbG9uZ2VyIHRoYW4gNTAuXHJcbiAgICA8L3A+XHJcbiAgICA8cCBpMThuPlxyXG4gICAgICBUbyBwcm9tb3RlIGEgZGVjZW50IHNlY3VyaXR5IGxldmVsLCB0aGUgcGFzc3dvcmQgbXVzdCBpbmNsdWRlIGF0IGxlYXN0IDhcclxuICAgICAgY2hhcmFjdGVycywgdXBwZXJjYXNlIGFuZCBsb3dlcmNhc2UgbGV0dGVycywgZGlnaXRzLCBhbmQgcHVuY3R1YXRpb24gKGxpa2VcclxuICAgICAgZGFzaGVzLCBzdG9wcywgcGFyZW50aGVzZXMsIGV0Yy4pLlxyXG4gICAgPC9wPlxyXG4gICAgPHAgaTE4bj5cclxuICAgICAgT25jZSByZWdpc3RlcmVkLCBpZiBtZXNzYWdpbmcgaXMgZW5hYmxlZCBvbiB0aGUgc2VydmVyIHNpZGUgdGhlIHVzZXIgd2lsbFxyXG4gICAgICByZWNlaXZlIGFuIGVtYWlsIG1lc3NhZ2UgdG8gdGhlIGVtYWlsIGFkZHJlc3MgeW91IHNwZWNpZmllZDsgaGUgd2lsbCBoYXZlXHJcbiAgICAgIHRvIGNsaWNrIG9uIHRoZSBwcm92aWRlZCBsaW5rIHRvIGNvbXBsZXRlIHRoZSByZWdpc3RyYXRpb24gcHJvY2Vzcy5cclxuICAgICAgT3RoZXJ3aXNlLCB5b3Ugc2hvdWxkIGVkaXQgdGhlIG5ld2x5IGNyZWF0ZWQgdXNlciBhbmQgY29uZmlybSB0aGUgZW1haWxcclxuICAgICAgcmVnaXN0cmF0aW9uLlxyXG4gICAgPC9wPlxyXG4gIDwvZGV0YWlscz5cclxuPC9kaXY+XHJcbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9hdXRoLWp3dC1yZWdpc3RyYXRpb24vYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9hdXRoLWp3dC1yZWdpc3RyYXRpb24vYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFVLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQ0wsVUFBVSxHQU1YLE1BQU0sZ0JBQWdCLENBQUM7QUFHeEIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBT3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDOzs7Ozs7Ozs7Ozs7O0FBUTFFLE1BQU0sT0FBTyw0QkFBNEI7SUFxQnZDLFlBQ0UsV0FBd0IsRUFDaEIsU0FBc0IsRUFDdEIsZUFBc0MsRUFDdEMsZUFBbUM7UUFGbkMsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBdUI7UUFDdEMsb0JBQWUsR0FBZixlQUFlLENBQW9CO1FBTnRDLFNBQUksR0FBRyxJQUFJLENBQUM7UUFRakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBQzFDLE9BQU87UUFDUCxJQUFJLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO1lBQ25DLFVBQVUsRUFBRSxDQUFDLFVBQVUs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SSxDQUNMLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDN0IsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7Z0JBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7Z0JBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQ1gscUJBQXFCLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUM3RCxDQUFDO2dCQUNGLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUNqQixTQUFTLENBQUEsb0NBQW9DLEVBQzdDLElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNQLENBQUM7OEdBcE1VLDRCQUE0QjtrR0FBNUIsNEJBQTRCLG9HQzFCekMsODRSQXNRQTs7MkZENU9hLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSx1QkFBdUI7K0tBcUIxQixVQUFVO3NCQURoQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgVmFsaWRhdG9ycyxcclxuICBBYnN0cmFjdENvbnRyb2wsXHJcbiAgVmFsaWRhdGlvbkVycm9ycyxcclxuICBGb3JtR3JvdXAsXHJcbiAgRm9ybUNvbnRyb2wsXHJcbiAgRm9ybUJ1aWxkZXIsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NuYWNrLWJhcic7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZSB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQXV0aEp3dEFjY291bnRTZXJ2aWNlLFxyXG4gIEV4aXN0UmVzdWx0LFxyXG4gIFJlZ2lzdHJhdGlvbk1vZGVsLFxyXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtand0LWFjY291bnQuc2VydmljZSc7XHJcbmltcG9ydCB7IFBhc3N3b3JkVmFsaWRhdG9ycyB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMvcGFzc3dvcmQudmFsaWRhdG9ycyc7XHJcbmltcG9ydCB7IFVzZXJMaXN0UmVwb3NpdG9yeSB9IGZyb20gJy4uL3N0YXRlL3VzZXItbGlzdC5yZXBvc2l0b3J5JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXV0aC1qd3QtcmVnaXN0cmF0aW9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1qd3QtcmVnaXN0cmF0aW9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9hdXRoLWp3dC1yZWdpc3RyYXRpb24uY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQXV0aEp3dFJlZ2lzdHJhdGlvbkNvbXBvbmVudCB7XHJcbiAgcHVibGljIGJ1c3k6IGJvb2xlYW4gfCB1bmRlZmluZWQ7XHJcbiAgLy8gZm9ybVxyXG4gIHB1YmxpYyBmb3JtOiBGb3JtR3JvdXA7XHJcbiAgcHVibGljIGVtYWlsOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG4gIHB1YmxpYyBuYW1lOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG4gIHB1YmxpYyBmaXJzdE5hbWU6IEZvcm1Db250cm9sPHN0cmluZz47XHJcbiAgcHVibGljIGxhc3ROYW1lOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG4gIHB1YmxpYyBwYXNzd29yZDogRm9ybUNvbnRyb2w8c3RyaW5nPjtcclxuICBwdWJsaWMgY29uZmlybVBhc3N3b3JkOiBGb3JtQ29udHJvbDxzdHJpbmc+O1xyXG5cclxuICAvKipcclxuICAgKiBFbWl0dGVkIHdoZW4gYSB1c2VyIHdhcyBzdWNjZXNzZnVsbHkgcmVnaXN0ZXJlZC4gVXN1YWxseVxyXG4gICAqIHlvdSBzaG91bGQgaGFuZGxlIHRoaXMgdG8gbW92ZSBhd2F5IGZyb20gdGhlIHJlZ2lzdHJhdGlvblxyXG4gICAqIHBhZ2UuXHJcbiAgICovXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJlZ2lzdGVyZWQ6IEV2ZW50RW1pdHRlcjxhbnk+O1xyXG5cclxuICBwdWJsaWMgaGlkZSA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgZm9ybUJ1aWxkZXI6IEZvcm1CdWlsZGVyLFxyXG4gICAgcHJpdmF0ZSBfc25hY2tiYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBfYWNjb3VudFNlcnZpY2U6IEF1dGhKd3RBY2NvdW50U2VydmljZSxcclxuICAgIHByaXZhdGUgX3VzZXJSZXBvc2l0b3J5OiBVc2VyTGlzdFJlcG9zaXRvcnlcclxuICApIHtcclxuICAgIHRoaXMucmVnaXN0ZXJlZCA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG4gICAgLy8gZm9ybVxyXG4gICAgdGhpcy5lbWFpbCA9IGZvcm1CdWlsZGVyLmNvbnRyb2woJycsIHtcclxuICAgICAgdmFsaWRhdG9yczogW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdLFxyXG4gICAgICBhc3luY1ZhbGlkYXRvcnM6IHRoaXMuZ2V0VW5pcXVlRW1haWxWYWxpZGF0b3IodGhpcy5fYWNjb3VudFNlcnZpY2UpLmJpbmQoXHJcbiAgICAgICAgdGhpc1xyXG4gICAgICApLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMubmFtZSA9IGZvcm1CdWlsZGVyLmNvbnRyb2woJycsIHtcclxuICAgICAgdmFsaWRhdG9yczogVmFsaWRhdG9ycy5yZXF1aXJlZCxcclxuICAgICAgYXN5bmNWYWxpZGF0b3JzOiB0aGlzLmdldFVuaXF1ZU5hbWVWYWxpZGF0b3IodGhpcy5fYWNjb3VudFNlcnZpY2UpLmJpbmQoXHJcbiAgICAgICAgdGhpc1xyXG4gICAgICApLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuZmlyc3ROYW1lID0gZm9ybUJ1aWxkZXIuY29udHJvbCgnJywge1xyXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5tYXhMZW5ndGgoNTApXSxcclxuICAgICAgbm9uTnVsbGFibGU6IHRydWUsXHJcbiAgICB9KTtcclxuICAgIHRoaXMubGFzdE5hbWUgPSBmb3JtQnVpbGRlci5jb250cm9sKCcnLCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCg1MCldLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzU0NzQ5OTEvYW5ndWxhci0yLWZvcm0tdmFsaWRhdGluZy1mb3ItcmVwZWF0LXBhc3N3b3JkXHJcbiAgICB0aGlzLnBhc3N3b3JkID0gZm9ybUJ1aWxkZXIuY29udHJvbCgnJywge1xyXG4gICAgICB2YWxpZGF0b3JzOiBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgUGFzc3dvcmRWYWxpZGF0b3JzLnN0YW5kYXJkKCldLFxyXG4gICAgICBub25OdWxsYWJsZTogdHJ1ZSxcclxuICAgIH0pO1xyXG4gICAgdGhpcy5jb25maXJtUGFzc3dvcmQgPSBmb3JtQnVpbGRlci5jb250cm9sKCcnLCB7XHJcbiAgICAgIHZhbGlkYXRvcnM6IFZhbGlkYXRvcnMucmVxdWlyZWQsXHJcbiAgICAgIG5vbk51bGxhYmxlOiB0cnVlLFxyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5mb3JtID0gZm9ybUJ1aWxkZXIuZ3JvdXAoXHJcbiAgICAgIHtcclxuICAgICAgICBlbWFpbDogdGhpcy5lbWFpbCxcclxuICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXHJcbiAgICAgICAgZmlyc3ROYW1lOiB0aGlzLmZpcnN0TmFtZSxcclxuICAgICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZSxcclxuICAgICAgICBwYXNzd29yZDogdGhpcy5wYXNzd29yZCxcclxuICAgICAgICBjb25maXJtUGFzc3dvcmQ6IHRoaXMuY29uZmlybVBhc3N3b3JkLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgdmFsaWRhdG9yczogW1xyXG4gICAgICAgICAgUGFzc3dvcmRWYWxpZGF0b3JzLmFyZUVxdWFsKCdwYXNzd29yZCcsICdjb25maXJtUGFzc3dvcmQnKSxcclxuICAgICAgICBdLFxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQ3JlYXRlcyBhIHVuaXF1ZSBuYW1lIHZhbGlkYXRvci4gVGhlcmUgaXMgbm8gZGVwZW5kZW5jeSBpbmplY3Rpb24gYXQgdGhpcyBsZXZlbCxcclxuICAgKiBidXQgd2UgY2FuIHVzZSBjbG9zdXJlcy4gQXMgYSBtYXR0ZXIgb2YgZmFjdCwgd2UgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZpY2UgaW5zdGFuY2VcclxuICAgKiBmcm9tIHRoZSBjb21wb25lbnQgd2hlcmUgd2UgcmVnaXN0ZXIgdmFsaWRhdG9ycy4gU28gd2Ugd2lsbCBpbXBsZW1lbnQgYSBmdW5jdGlvblxyXG4gICAqIHRoYXQgd2lsbCBhY2NlcHQgdGhlIHNlcnZpY2UgYXMgcGFyYW1ldGVyLCBhbmQgY3JlYXRlIHRoZSBhY3R1YWwgdmFsaWRhdGlvbiBmdW5jdGlvbi5cclxuICAgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgaGF2ZSBhY2Nlc3MgdG8gdGhlIHNlcnZpY2Ugd2hlbiBjYWxsZWQgZHVyaW5nIHRoZSB2YWxpZGF0aW9uIHByb2Nlc3MuXHJcbiAgICogU2VlIGh0dHA6Ly9yZXN0bGV0LmNvbS9ibG9nLzIwMTYvMDIvMTcvaW1wbGVtZW50aW5nLWFuZ3VsYXIyLWZvcm1zLWJleW9uZC1iYXNpY3MtcGFydC0yLy5cclxuICAgKi9cclxuICBwcml2YXRlIGdldFVuaXF1ZU5hbWVWYWxpZGF0b3Ioc2VydmljZTogQXV0aEp3dEFjY291bnRTZXJ2aWNlKSB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICBjb250cm9sOiBBYnN0cmFjdENvbnRyb2xcclxuICAgICk6XHJcbiAgICAgIHwgUHJvbWlzZTxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD5cclxuICAgICAgfCBPYnNlcnZhYmxlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPiA9PiB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgLy8gYXZvaWQgY2hlY2tpbmcgaWYgZW1wdHlcclxuICAgICAgICBpZiAoIWNvbnRyb2wudmFsdWUpIHtcclxuICAgICAgICAgIHJlc29sdmUobnVsbCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNlcnZpY2UuaXNOYW1lUmVnaXN0ZXJlZChjb250cm9sLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YTogRXhpc3RSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNFeGlzdGluZykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHVuaXF1ZU5hbWU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgICAgICdVbmlxdWUgbmFtZSB2YWxpZGF0b3IgZXJyb3InICtcclxuICAgICAgICAgICAgICAgICAgKGVycm9yID8gSlNPTi5zdHJpbmdpZnkoZXJyb3IpIDogJycpXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICByZXNvbHZlKHsgdW5pcXVlTmFtZTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRVbmlxdWVFbWFpbFZhbGlkYXRvcihzZXJ2aWNlOiBBdXRoSnd0QWNjb3VudFNlcnZpY2UpIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbFxyXG4gICAgKTpcclxuICAgICAgfCBQcm9taXNlPFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPlxyXG4gICAgICB8IE9ic2VydmFibGU8VmFsaWRhdGlvbkVycm9ycyB8IG51bGw+ID0+IHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAvLyBhdm9pZCBjaGVja2luZyBpZiBlbXB0eVxyXG4gICAgICAgIGlmICghY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc2VydmljZS5pc0VtYWlsUmVnaXN0ZXJlZChjb250cm9sLnZhbHVlKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgICBuZXh0OiAoZGF0YTogRXhpc3RSZXN1bHQpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoIWRhdGEuaXNFeGlzdGluZykge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmVzb2x2ZSh7IHVuaXF1ZUVtYWlsOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgICAgICAnVW5pcXVlIGVtYWlsIHZhbGlkYXRvciBlcnJvcicgK1xyXG4gICAgICAgICAgICAgICAgICAoZXJyb3IgPyBKU09OLnN0cmluZ2lmeShlcnJvcikgOiAnJylcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIHJlc29sdmUoeyB1bmlxdWVFbWFpbDogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU3VibWl0KCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICAhdGhpcy5mb3JtLnZhbGlkIHx8XHJcbiAgICAgIHRoaXMuYnVzeSB8fFxyXG4gICAgICB0aGlzLm5hbWUucGVuZGluZyB8fFxyXG4gICAgICB0aGlzLmVtYWlsLnBlbmRpbmdcclxuICAgICkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgbW9kZWw6IFJlZ2lzdHJhdGlvbk1vZGVsID0ge1xyXG4gICAgICBlbWFpbDogdGhpcy5lbWFpbC52YWx1ZSxcclxuICAgICAgbmFtZTogdGhpcy5uYW1lLnZhbHVlLFxyXG4gICAgICBmaXJzdE5hbWU6IHRoaXMuZmlyc3ROYW1lLnZhbHVlLFxyXG4gICAgICBsYXN0TmFtZTogdGhpcy5sYXN0TmFtZS52YWx1ZSxcclxuICAgICAgcGFzc3dvcmQ6IHRoaXMucGFzc3dvcmQudmFsdWUsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuYnVzeSA9IHRydWU7XHJcbiAgICB0aGlzLl9hY2NvdW50U2VydmljZVxyXG4gICAgICAucmVnaXN0ZXIobW9kZWwpXHJcbiAgICAgIC5waXBlKHRha2UoMSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuYnVzeSA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fc25hY2tiYXIub3BlbihcclxuICAgICAgICAgICAgJGxvY2FsaXplYDphdXRoLWp3dC1hZG1pbjpSZWdpc3RyYXRpb24gc3VjY2VlZGVkYCxcclxuICAgICAgICAgICAgJ09LJ1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHRoaXMuX3VzZXJSZXBvc2l0b3J5LnJlc2V0KCk7XHJcbiAgICAgICAgICB0aGlzLnJlZ2lzdGVyZWQuZW1pdCgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5idXN5ID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICAnUmVnaXN0cmF0aW9uICBlcnJvcicgKyAoZXJyb3IgPyBKU09OLnN0cmluZ2lmeShlcnJvcikgOiAnJylcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICB0aGlzLl9zbmFja2Jhci5vcGVuKFxyXG4gICAgICAgICAgICAkbG9jYWxpemVgOmF1dGgtand0LWFkbWluOlJlZ2lzdHJhdGlvbiBlcnJvcmAsXHJcbiAgICAgICAgICAgICdPSydcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXY+XHJcbiAgPGZvcm0gcm9sZT1cImZvcm1cIiBbZm9ybUdyb3VwXT1cImZvcm1cIiAoc3VibWl0KT1cIm9uU3VibWl0KClcIj5cclxuICAgIDxmaWVsZHNldD5cclxuICAgICAgPGxlZ2VuZCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5yZWdpc3RyYXRpb248L2xlZ2VuZD5cclxuICAgICAgPCEtLSBlbWFpbCAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tcm93XCI+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbCBpMThuPmVtYWlsPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cImVtYWlsXCJcclxuICAgICAgICAgICAgaWQ9XCJlbWFpbFwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjI1NlwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIGF1dG9mb2N1c1xyXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZW1haWxcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KGVtYWlsKS5lcnJvcnM/LnJlcXVpcmVkICYmIChlbWFpbC5kaXJ0eSB8fCBlbWFpbC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+ZW1haWwgcmVxdWlyZWQ8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkoZW1haWwpLmVycm9ycz8uZW1haWwgJiYgKGVtYWlsLmRpcnR5IHx8IGVtYWlsLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPmludmFsaWQgZW1haWw8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkoZW1haWwpLmVycm9ycz8udW5pcXVlRW1haWwgJiYgKGVtYWlsLmRpcnR5IHx8IGVtYWlsLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5lbWFpbCBhbHJlYWR5IHJlZ2lzdGVyZWQ8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZW1haWwucGVuZGluZ1wiPmhvdXJnbGFzczwvbWF0LWljb24+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBuYW1lIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1yb3dcIj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPnVzZXJuYW1lPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgbWF0SW5wdXRcclxuICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICBpZD1cIm5hbWVcIlxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIHBhdHRlcm49XCJeW2EtekEtWl1bYS16QS1aMC05XXsyLDQ5fSRcIlxyXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibmFtZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIiRhbnkobmFtZSkuZXJyb3JzPy5yZXF1aXJlZCAmJiAobmFtZS5kaXJ0eSB8fCBuYW1lLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPnVzZXJuYW1lIHJlcXVpcmVkPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgICAgICAgKm5nSWY9XCIkYW55KG5hbWUpLmVycm9ycz8ucGF0dGVybiAmJiAobmFtZS5kaXJ0eSB8fCBuYW1lLnRvdWNoZWQpXCJcclxuICAgICAgICAgICAgPmludmFsaWQgdXNlcm5hbWU8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkobmFtZSkuZXJyb3JzPy51bmlxdWVOYW1lICYmIChuYW1lLmRpcnR5IHx8IG5hbWUudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPnVzZXJuYW1lIGFscmVhZHkgcmVnaXN0ZXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJuYW1lLnBlbmRpbmdcIj5ob3VyZ2xhc3M8L21hdC1pY29uPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS0gZmlyc3QgbmFtZSAtLT5cclxuICAgICAgPGRpdj5cclxuICAgICAgICA8bWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWxhYmVsIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPmZpcnN0IG5hbWU8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIGlkPVwiZmlyc3ROYW1lXCJcclxuICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNTBcIlxyXG4gICAgICAgICAgICByZXF1aXJlZFxyXG4gICAgICAgICAgICBzcGVsbGNoZWNrPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZmlyc3ROYW1lXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgZmlyc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmXHJcbiAgICAgICAgICAgICAgKGZpcnN0TmFtZS5kaXJ0eSB8fCBmaXJzdE5hbWUudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWRhbmdlciBzbWFsbFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIGZpcnN0IG5hbWUgcmVxdWlyZWRcclxuICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBsYXN0IG5hbWUgLS0+XHJcbiAgICAgIDxkaXY+XHJcbiAgICAgICAgPG1hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgPG1hdC1sYWJlbCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5sYXN0IG5hbWU8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgIGlkPVwibGFzdE5hbWVcIlxyXG4gICAgICAgICAgICBtYXhsZW5ndGg9XCI1MFwiXHJcbiAgICAgICAgICAgIHJlcXVpcmVkXHJcbiAgICAgICAgICAgIHNwZWxsY2hlY2s9XCJmYWxzZVwiXHJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJsYXN0TmFtZVwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgIGxhc3ROYW1lLmhhc0Vycm9yKCdyZXF1aXJlZCcpICYmXHJcbiAgICAgICAgICAgICAgKGxhc3ROYW1lLmRpcnR5IHx8IGxhc3ROYW1lLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwidGV4dC1kYW5nZXIgc21hbGxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICBsYXN0IG5hbWUgcmVxdWlyZWRcclxuICAgICAgICAgIDwvbWF0LWVycm9yPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSA8ZGl2IFtmb3JtR3JvdXBdPVwicGFzc3dvcmRzXCI+IC0tPlxyXG4gICAgICA8IS0tIHBhc3N3b3JkIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+cGFzc3dvcmQ8L21hdC1sYWJlbD5cclxuICAgICAgICAgIDxpbnB1dFxyXG4gICAgICAgICAgICBtYXRJbnB1dFxyXG4gICAgICAgICAgICBbdHlwZV09XCJoaWRlID8gJ3Bhc3N3b3JkJyA6ICd0ZXh0J1wiXHJcbiAgICAgICAgICAgIG5hbWU9XCJwYXNzd29yZFwiXHJcbiAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm5ldy1wYXNzd29yZFwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInBhc3N3b3JkXCJcclxuICAgICAgICAgIC8+XHJcbiAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgbWF0U3VmZml4XHJcbiAgICAgICAgICAgIChjbGljayk9XCJoaWRlID0gIWhpZGVcIlxyXG4gICAgICAgICAgICBpMThuLWFyaWEtbGFiZWw9XCJhdXRoLWp3dC1sb2dpblwiXHJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJIaWRlIHBhc3N3b3JkXCJcclxuICAgICAgICAgICAgW2F0dHIuYXJpYS1wcmVzc2VkXT1cImhpZGVcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+e3sgaGlkZSA/IFwidmlzaWJpbGl0eV9vZmZcIiA6IFwidmlzaWJpbGl0eVwiIH19PC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGF1dGgtand0LXBhc3N3b3JkLXN0cmVuZ3RoLWJhciBbcGFzc3dvcmRUb0NoZWNrXT1cInBhc3N3b3JkLnZhbHVlXCI+XHJcbiAgICAgICAgICA8L2F1dGgtand0LXBhc3N3b3JkLXN0cmVuZ3RoLWJhcj5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHBhc3N3b3JkKS5lcnJvcnM/LnJlcXVpcmVkICYmXHJcbiAgICAgICAgICAgICAgKHBhc3N3b3JkLmRpcnR5IHx8IHBhc3N3b3JkLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5wYXNzd29yZCByZXF1aXJlZDwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShwYXNzd29yZCkuZXJyb3JzPy5wYXNzd29yZHRvb3Nob3J0ICYmXHJcbiAgICAgICAgICAgICAgKHBhc3N3b3JkLmRpcnR5IHx8IHBhc3N3b3JkLnRvdWNoZWQpXHJcbiAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgID5hdCBsZWFzdCA4IGNoYXJhY3RlcnM8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgPG1hdC1lcnJvclxyXG4gICAgICAgICAgICBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIlxyXG4gICAgICAgICAgICAqbmdJZj1cIlxyXG4gICAgICAgICAgICAgICRhbnkocGFzc3dvcmQpLmVycm9ycz8ubm91cHBlcmlucGFzc3dvcmQgJiZcclxuICAgICAgICAgICAgICAocGFzc3dvcmQuZGlydHkgfHwgcGFzc3dvcmQudG91Y2hlZClcclxuICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgPmF0IGxlYXN0IDEgdXBwZXJjYXNlIGxldHRlcjwvbWF0LWVycm9yXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICA8bWF0LWVycm9yXHJcbiAgICAgICAgICAgIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiXHJcbiAgICAgICAgICAgICpuZ0lmPVwiXHJcbiAgICAgICAgICAgICAgJGFueShwYXNzd29yZCkuZXJyb3JzPy5ub2xvd2VyaW5wYXNzd29yZCAmJlxyXG4gICAgICAgICAgICAgIChwYXNzd29yZC5kaXJ0eSB8fCBwYXNzd29yZC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+YXQgbGVhc3QgMSBsb3dlcmNhc2UgbGV0dGVyPC9tYXQtZXJyb3JcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDxtYXQtZXJyb3JcclxuICAgICAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgICAgICAgKm5nSWY9XCJcclxuICAgICAgICAgICAgICAkYW55KHBhc3N3b3JkKS5lcnJvcnM/Lm5vc3ltYm9saW5wYXNzd29yZCAmJlxyXG4gICAgICAgICAgICAgIChwYXNzd29yZC5kaXJ0eSB8fCBwYXNzd29yZC50b3VjaGVkKVxyXG4gICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICA+YXQgbGVhc3QgMSBwdW5jdHVhdGlvbi9zeW1ib2w8L21hdC1lcnJvclxyXG4gICAgICAgICAgPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLSBjb25maXJtIHBhc3N3b3JkIC0tPlxyXG4gICAgICA8ZGl2PlxyXG4gICAgICAgIDxtYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtbGFiZWwgaTE4bj1cImF1dGgtand0LWFkbWluXCI+Y29uZmlybSBwYXNzd29yZDwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgPGlucHV0XHJcbiAgICAgICAgICAgIG1hdElucHV0XHJcbiAgICAgICAgICAgIFt0eXBlXT1cImhpZGUgPyAncGFzc3dvcmQnIDogJ3RleHQnXCJcclxuICAgICAgICAgICAgbmFtZT1cImNvbmZpcm1QYXNzd29yZFwiXHJcbiAgICAgICAgICAgIG1heGxlbmd0aD1cIjUwXCJcclxuICAgICAgICAgICAgcmVxdWlyZWRcclxuICAgICAgICAgICAgc3BlbGxjaGVjaz1cImZhbHNlXCJcclxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbmZpcm1QYXNzd29yZFwiXHJcbiAgICAgICAgICAvPlxyXG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgICAqbmdJZj1cImZvcm0uZXJyb3JzPy5hcmVlcXVhbCAmJiBjb25maXJtUGFzc3dvcmQudG91Y2hlZFwiXHJcbiAgICAgICAgc3R5bGU9XCJjb2xvcjogcmVkXCJcclxuICAgICAgPlxyXG4gICAgICAgIHBhc3N3b3JkIGRpZmZlcnMgZnJvbSBjb25maXJtYXRpb24gcGFzc3dvcmRcclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8YnV0dG9uXHJcbiAgICAgICAgaTE4bj1cImF1dGgtand0LWFkbWluXCJcclxuICAgICAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgICAgIHR5cGU9XCJzdWJtaXRcIlxyXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXHJcbiAgICAgICAgW2Rpc2FibGVkXT1cIlxyXG4gICAgICAgICAgZm9ybS5pbnZhbGlkIHx8IGZvcm0ucHJpc3RpbmUgfHwgYnVzeSB8fCBuYW1lLnBlbmRpbmcgfHwgZW1haWwucGVuZGluZ1xyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgICByZWdpc3RlclxyXG4gICAgICA8L2J1dHRvbj5cclxuICAgICAgPG1hdC1wcm9ncmVzcy1zcGlubmVyIGRpYW1ldGVyPVwiMjBcIiAqbmdJZj1cImJ1c3lcIj48L21hdC1wcm9ncmVzcy1zcGlubmVyPlxyXG4gICAgPC9maWVsZHNldD5cclxuICA8L2Zvcm0+XHJcblxyXG4gIDxkZXRhaWxzPlxyXG4gICAgPHN1bW1hcnkgaTE4bj1cImF1dGgtand0LWFkbWluXCI+SGludHM8L3N1bW1hcnk+XHJcbiAgICA8ZGl2IGNsYXNzPVwiaW5mb1wiPlxyXG4gICAgICA8cCBpMThuPVwiYXV0aC1qd3QtYWRtaW5cIj5cclxuICAgICAgICBUbyByZWdpc3RlciBhIG5ldyB1c2VyLCB5b3UgbXVzdCBwcm92aWRlIGhpcyBlbWFpbCBhZGRyZXNzLCBjaG9vc2UgYVxyXG4gICAgICAgIHBhc3N3b3JkLCBhbmQgY2hvb3NlIGEgdXNlcm5hbWUsIHdoaWNoIG11c3QgYmUgdW5pcXVlICh5b3Ugd2lsbCBiZVxyXG4gICAgICAgIG5vdGlmaWVkIGlmIGFub3RoZXIgdXNlciBoYXMgYWxyZWFkeSB0YWtlbiB0aGF0IG5hbWUpLiBUaGUgdXNlcm5hbWUgbXVzdFxyXG4gICAgICAgIGluY2x1ZGUgb25seSBsZXR0ZXJzL2RpZ2l0cywgc3RhcnQgd2l0aCBhIGxldHRlciwgYW5kIGJlIG5vIHNob3J0ZXIgdGhhblxyXG4gICAgICAgIDMgY2hhcmFjdGVycywgbm9yIGxvbmdlciB0aGFuIDUwLlxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxwIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPlxyXG4gICAgICAgIFRvIHByb21vdGUgYSBkZWNlbnQgc2VjdXJpdHkgbGV2ZWwsIHRoZSBwYXNzd29yZCBtdXN0IGluY2x1ZGUgYXQgbGVhc3QgOFxyXG4gICAgICAgIGNoYXJhY3RlcnMsIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGxldHRlcnMsIGRpZ2l0cywgYW5kIHB1bmN0dWF0aW9uXHJcbiAgICAgICAgKGxpa2UgZGFzaGVzLCBzdG9wcywgcGFyZW50aGVzZXMsIGV0Yy4pLlxyXG4gICAgICA8L3A+XHJcbiAgICAgIDxwIGkxOG49XCJhdXRoLWp3dC1hZG1pblwiPlxyXG4gICAgICAgIE9uY2UgcmVnaXN0ZXJlZCwgaWYgbWVzc2FnaW5nIGlzIGVuYWJsZWQgb24gdGhlIHNlcnZlciBzaWRlIHRoZSB1c2VyXHJcbiAgICAgICAgd2lsbCByZWNlaXZlIGFuIGVtYWlsIG1lc3NhZ2UgdG8gdGhlIGVtYWlsIGFkZHJlc3MgeW91IHNwZWNpZmllZDsgaGVcclxuICAgICAgICB3aWxsIGhhdmUgdG8gY2xpY2sgb24gdGhlIHByb3ZpZGVkIGxpbmsgdG8gY29tcGxldGUgdGhlIHJlZ2lzdHJhdGlvblxyXG4gICAgICAgIHByb2Nlc3MuIE90aGVyd2lzZSwgeW91IHNob3VsZCBlZGl0IHRoZSBuZXdseSBjcmVhdGVkIHVzZXIgYW5kIGNvbmZpcm1cclxuICAgICAgICB0aGUgZW1haWwgcmVnaXN0cmF0aW9uLlxyXG4gICAgICA8L3A+XHJcbiAgICA8L2Rpdj5cclxuICA8L2RldGFpbHM+XHJcbjwvZGl2PlxyXG4iXX0=
@@ -8,16 +8,16 @@ export class ConfirmDialogComponent {
8
8
  constructor(dialogRef, data) {
9
9
  this.dialogRef = dialogRef;
10
10
  this.data = data;
11
- this.title = $localize `Confirm`;
12
- this.prompt = $localize `Confirm operation?`;
13
- this.ok = $localize `yes`;
14
- this.cancel = $localize `no`;
11
+ this.title = $localize `:auth-jwt-admin:Confirm`;
12
+ this.prompt = $localize `:auth-jwt-admin:Confirm operation?`;
13
+ this.ok = $localize `:auth-jwt-admin:yes`;
14
+ this.cancel = $localize `:auth-jwt-admin:no`;
15
15
  }
16
16
  ngOnInit() { }
17
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
18
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: ConfirmDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>{{ title }}</h1>\r\n<mat-dialog-content>\r\n {{ prompt }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n (click)=\"dialogRef.close(true)\"\r\n >\r\n {{ ok }}\r\n </button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">\r\n {{ cancel }}\r\n </button>\r\n</mat-dialog-actions>\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
17
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ConfirmDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
18
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: ConfirmDialogComponent, selector: "ng-component", ngImport: i0, template: "<h1 mat-dialog-title>{{ title }}</h1>\r\n<mat-dialog-content>\r\n {{ prompt }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n (click)=\"dialogRef.close(true)\"\r\n >\r\n {{ ok }}\r\n </button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">\r\n {{ cancel }}\r\n </button>\r\n</mat-dialog-actions>\r\n", styles: [""], dependencies: [{ kind: "component", type: i2.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", exportAs: ["matButton"] }, { kind: "directive", type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { kind: "directive", type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]", inputs: ["align"] }, { kind: "directive", type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }] }); }
19
19
  }
20
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
20
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: ConfirmDialogComponent, decorators: [{
21
21
  type: Component,
22
22
  args: [{ template: "<h1 mat-dialog-title>{{ title }}</h1>\r\n<mat-dialog-content>\r\n {{ prompt }}\r\n</mat-dialog-content>\r\n<mat-dialog-actions>\r\n <button\r\n type=\"button\"\r\n mat-raised-button\r\n color=\"warn\"\r\n (click)=\"dialogRef.close(true)\"\r\n >\r\n {{ ok }}\r\n </button>\r\n <button type=\"button\" mat-button (click)=\"dialogRef.close()\">\r\n {{ cancel }}\r\n </button>\r\n</mat-dialog-actions>\r\n" }]
23
23
  }], ctorParameters: () => [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
@@ -26,4 +26,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
26
26
  type: Inject,
27
27
  args: [MAT_DIALOG_DATA]
28
28
  }] }] });
29
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUV6RSx5RkFBeUY7QUFRekYsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUNTLFNBQStDLEVBQ1YsSUFBUztRQUQ5QyxjQUFTLEdBQVQsU0FBUyxDQUFzQztRQUNWLFNBQUksR0FBSixJQUFJLENBQUs7UUFFckQsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUEsU0FBUyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxNQUFNLEdBQUcsU0FBUyxDQUFBLG9CQUFvQixDQUFDO1FBQzVDLElBQUksQ0FBQyxFQUFFLEdBQUcsU0FBUyxDQUFBLEtBQUssQ0FBQztRQUN6QixJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQSxJQUFJLENBQUM7SUFDOUIsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDOzhHQWhCRixzQkFBc0IsOENBUVgsZUFBZTtrR0FSMUIsc0JBQXNCLG9EQ1huQywyYUFpQkE7OzJGRE5hLHNCQUFzQjtrQkFObEMsU0FBUzs7OzBCQWNMLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbi8vIGh0dHBzOi8vbWVkaXVtLmNvbS9AdGFyaWsubnpsL21ha2luZy11c2Utb2YtZGlhbG9ncy1pbi1tYXRlcmlhbC0yLW1kZGlhbG9nLTc1MzNkMjdkZjQxXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy83NzE4XHJcbiAgLy8gc2VsZWN0b3I6ICdjYWRtdXMtY29uZmlybS1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XHJcbiAgcHVibGljIHByb21wdDogc3RyaW5nO1xyXG4gIHB1YmxpYyBvazogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYW5jZWw6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29uZmlybURpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy50aXRsZSA9ICRsb2NhbGl6ZWBDb25maXJtYDtcclxuICAgIHRoaXMucHJvbXB0ID0gJGxvY2FsaXplYENvbmZpcm0gb3BlcmF0aW9uP2A7XHJcbiAgICB0aGlzLm9rID0gJGxvY2FsaXplYHllc2A7XHJcbiAgICB0aGlzLmNhbmNlbCA9ICRsb2NhbGl6ZWBub2A7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHt9XHJcbn1cclxuIiwiPGgxIG1hdC1kaWFsb2ctdGl0bGU+e3sgdGl0bGUgfX08L2gxPlxyXG48bWF0LWRpYWxvZy1jb250ZW50PlxyXG4gIHt7IHByb21wdCB9fVxyXG48L21hdC1kaWFsb2ctY29udGVudD5cclxuPG1hdC1kaWFsb2ctYWN0aW9ucz5cclxuICA8YnV0dG9uXHJcbiAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgIG1hdC1yYWlzZWQtYnV0dG9uXHJcbiAgICBjb2xvcj1cIndhcm5cIlxyXG4gICAgKGNsaWNrKT1cImRpYWxvZ1JlZi5jbG9zZSh0cnVlKVwiXHJcbiAgPlxyXG4gICAge3sgb2sgfX1cclxuICA8L2J1dHRvbj5cclxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UoKVwiPlxyXG4gICAge3sgY2FuY2VsIH19XHJcbiAgPC9idXR0b24+XHJcbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxyXG4iXX0=
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbXlybWlkb24vYXV0aC1qd3QtYWRtaW4vc3JjL2xpYi9jb21wb25lbnRzL2NvbmZpcm0tZGlhbG9nL2NvbmZpcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9jb25maXJtLWRpYWxvZy9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEUsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7OztBQUV6RSx5RkFBeUY7QUFRekYsTUFBTSxPQUFPLHNCQUFzQjtJQU1qQyxZQUNTLFNBQStDLEVBQ1YsSUFBUztRQUQ5QyxjQUFTLEdBQVQsU0FBUyxDQUFzQztRQUNWLFNBQUksR0FBSixJQUFJLENBQUs7UUFFckQsSUFBSSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUEseUJBQXlCLENBQUM7UUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUEsb0NBQW9DLENBQUM7UUFDNUQsSUFBSSxDQUFDLEVBQUUsR0FBRyxTQUFTLENBQUEscUJBQXFCLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUEsb0JBQW9CLENBQUM7SUFDOUMsQ0FBQztJQUVELFFBQVEsS0FBSSxDQUFDOzhHQWhCRixzQkFBc0IsOENBUVgsZUFBZTtrR0FSMUIsc0JBQXNCLG9EQ1huQywyYUFpQkE7OzJGRE5hLHNCQUFzQjtrQkFObEMsU0FBUzs7OzBCQWNMLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbmplY3QsIE9wdGlvbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcclxuXHJcbi8vIGh0dHBzOi8vbWVkaXVtLmNvbS9AdGFyaWsubnpsL21ha2luZy11c2Utb2YtZGlhbG9ncy1pbi1tYXRlcmlhbC0yLW1kZGlhbG9nLTc1MzNkMjdkZjQxXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9jb21wb25lbnRzL2lzc3Vlcy83NzE4XHJcbiAgLy8gc2VsZWN0b3I6ICdjYWRtdXMtY29uZmlybS1kaWFsb2cnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jb25maXJtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vY29uZmlybS1kaWFsb2cuY29tcG9uZW50LmNzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29uZmlybURpYWxvZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgcHVibGljIHRpdGxlOiBzdHJpbmc7XHJcbiAgcHVibGljIHByb21wdDogc3RyaW5nO1xyXG4gIHB1YmxpYyBvazogc3RyaW5nO1xyXG4gIHB1YmxpYyBjYW5jZWw6IHN0cmluZztcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8Q29uZmlybURpYWxvZ0NvbXBvbmVudD4sXHJcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KE1BVF9ESUFMT0dfREFUQSkgcHVibGljIGRhdGE6IGFueVxyXG4gICkge1xyXG4gICAgdGhpcy50aXRsZSA9ICRsb2NhbGl6ZWA6YXV0aC1qd3QtYWRtaW46Q29uZmlybWA7XHJcbiAgICB0aGlzLnByb21wdCA9ICRsb2NhbGl6ZWA6YXV0aC1qd3QtYWRtaW46Q29uZmlybSBvcGVyYXRpb24/YDtcclxuICAgIHRoaXMub2sgPSAkbG9jYWxpemVgOmF1dGgtand0LWFkbWluOnllc2A7XHJcbiAgICB0aGlzLmNhbmNlbCA9ICRsb2NhbGl6ZWA6YXV0aC1qd3QtYWRtaW46bm9gO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7fVxyXG59XHJcbiIsIjxoMSBtYXQtZGlhbG9nLXRpdGxlPnt7IHRpdGxlIH19PC9oMT5cclxuPG1hdC1kaWFsb2ctY29udGVudD5cclxuICB7eyBwcm9tcHQgfX1cclxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XHJcbjxtYXQtZGlhbG9nLWFjdGlvbnM+XHJcbiAgPGJ1dHRvblxyXG4gICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICBtYXQtcmFpc2VkLWJ1dHRvblxyXG4gICAgY29sb3I9XCJ3YXJuXCJcclxuICAgIChjbGljayk9XCJkaWFsb2dSZWYuY2xvc2UodHJ1ZSlcIlxyXG4gID5cclxuICAgIHt7IG9rIH19XHJcbiAgPC9idXR0b24+XHJcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiAoY2xpY2spPVwiZGlhbG9nUmVmLmNsb3NlKClcIj5cclxuICAgIHt7IGNhbmNlbCB9fVxyXG4gIDwvYnV0dG9uPlxyXG48L21hdC1kaWFsb2ctYWN0aW9ucz5cclxuIl19
@@ -66,10 +66,10 @@ export class PasswordStrengthBarComponent {
66
66
  this.bars[n] = col;
67
67
  }
68
68
  }
69
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: PasswordStrengthBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: { passwordToCheck: "passwordToCheck" }, outputs: { strengthChange: "strengthChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"strength\">\n <small>strength:</small>\n <ul id=\"strengthBar\">\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\n </ul>\n</div>\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }); }
69
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: PasswordStrengthBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
70
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: PasswordStrengthBarComponent, selector: "auth-jwt-password-strength-bar", inputs: { passwordToCheck: "passwordToCheck" }, outputs: { strengthChange: "strengthChange" }, usesOnChanges: true, ngImport: i0, template: "<div id=\"strength\">\n <small>strength:</small>\n <ul id=\"strengthBar\">\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\n </ul>\n</div>\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }); }
71
71
  }
72
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: PasswordStrengthBarComponent, decorators: [{
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: PasswordStrengthBarComponent, decorators: [{
73
73
  type: Component,
74
74
  args: [{ selector: 'auth-jwt-password-strength-bar', template: "<div id=\"strength\">\n <small>strength:</small>\n <ul id=\"strengthBar\">\n <li class=\"point\" [style.background-color]=\"bars[0]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[1]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[2]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[3]\"></li>\n <li class=\"point\" [style.background-color]=\"bars[4]\"></li>\n </ul>\n</div>\n", styles: ["ul#strengthBar{display:inline;list-style:none;margin:0 0 0 15px;padding:0;vertical-align:2px}li.point:last{margin:0!important}li.point{background:#ddd;border-radius:2px;display:inline-block;height:5px;margin-right:1px;width:20px}\n"] }]
75
75
  }], ctorParameters: () => [], propDecorators: { passwordToCheck: [{
@@ -77,4 +77,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImpor
77
77
  }], strengthChange: [{
78
78
  type: Output
79
79
  }] } });
80
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aC1iYXIvcGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aC1iYXIvcGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7O0FBT3ZCLE1BQU0sT0FBTyw0QkFBNEI7SUFTdkM7UUFSUSxZQUFPLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFJakQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS3BELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sZUFBZSxDQUFDLENBQVM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxJQUFJO1FBRTNDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8s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QyxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVPLFlBQVksQ0FBQyxLQUFhLEVBQUUsR0FBVztRQUM3QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQzs4R0E5RVUsNEJBQTRCO2tHQUE1Qiw0QkFBNEIsMExDZHpDLHFiQVVBOzsyRkRJYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsZ0NBQWdDO3dEQU9qQyxlQUFlO3NCQUF2QixLQUFLO2dCQUVJLGNBQWM7c0JBQXZCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIE9uQ2hhbmdlcyxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2UsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdXRoLWp3dC1wYXNzd29yZC1zdHJlbmd0aC1iYXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC5jc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgUGFzc3dvcmRTdHJlbmd0aEJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgX2NvbG9ycyA9IFsnI0YwMCcsICcjRjkwJywgJyNGRjAnLCAnIzlGMCcsICcjMEYwJ107XG5cbiAgQElucHV0KCkgcGFzc3dvcmRUb0NoZWNrOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgQE91dHB1dCgpIHN0cmVuZ3RoQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxudW1iZXI+KCk7XG5cbiAgcHVibGljIGJhcnM6IHN0cmluZ1tdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuc3RyZW5ndGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICB0aGlzLmJhcnMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgbWVhc3VyZVN0cmVuZ3RoKHA6IHN0cmluZyk6IG51bWJlciB7XG4gICAgbGV0IGZvcmNlID0gMDtcbiAgICBjb25zdCByZWdleCA9IC9bJC0vOi0/ey1+IVwiXl9gXFxbXFxdXS9nOyAvLyBcIlxuXG4gICAgY29uc3QgbG93ZXJMZXR0ZXJzID0gL1thLXpdKy8udGVzdChwKTtcbiAgICBjb25zdCB1cHBlckxldHRlcnMgPSAvW0EtWl0rLy50ZXN0KHApO1xuICAgIGNvbnN0IG51bWJlcnMgPSAvWzAtOV0rLy50ZXN0KHApO1xuICAgIGNvbnN0IHN5bWJvbHMgPSByZWdleC50ZXN0KHApO1xuXG4gICAgY29uc3QgZmxhZ3MgPSBbbG93ZXJMZXR0ZXJzLCB1cHBlckxldHRlcnMsIG51bWJlcnMsIHN5bWJvbHNdO1xuXG4gICAgbGV0IHBhc3NlZE1hdGNoZXMgPSAwO1xuICAgIGZvciAoY29uc3QgZmxhZyBvZiBmbGFncykge1xuICAgICAgcGFzc2VkTWF0Y2hlcyArPSBmbGFnID09PSB0cnVlID8gMSA6IDA7XG4gICAgfVxuXG4gICAgZm9yY2UgKz0gMiAqIHAubGVuZ3RoICsgKHAubGVuZ3RoID49IDEwID8gMSA6IDApO1xuICAgIGZvcmNlICs9IHBhc3NlZE1hdGNoZXMgKiAxMDtcblxuICAgIC8vIHBlbmFsdHkgKHNob3J0IHBhc3N3b3JkKVxuICAgIGZvcmNlID0gcC5sZW5ndGggPD0gNiA/IE1hdGgubWluKGZvcmNlLCAxMCkgOiBmb3JjZTtcblxuICAgIC8vIHBlbmFsdHkgKHBvb3IgbGV0aWV0eSBvZiBjaGFyYWN0ZXJzKVxuICAgIGZvcmNlID0gcGFzc2VkTWF0Y2hlcyA9PT0gMSA/IE1hdGgubWluKGZvcmNlLCAxMCkgOiBmb3JjZTtcbiAgICBmb3JjZSA9IHBhc3NlZE1hdGNoZXMgPT09IDIgPyBNYXRoLm1pbihmb3JjZSwgMjApIDogZm9yY2U7XG4gICAgZm9yY2UgPSBwYXNzZWRNYXRjaGVzID09PSAzID8gTWF0aC5taW4oZm9yY2UsIDQwKSA6IGZvcmNlO1xuXG4gICAgcmV0dXJuIGZvcmNlO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb2xvcihzOiBudW1iZXIpIHtcbiAgICBsZXQgaWR4ID0gMDtcbiAgICBpZiAocyA8PSAxMCkge1xuICAgICAgaWR4ID0gMDtcbiAgICB9IGVsc2UgaWYgKHMgPD0gMjApIHtcbiAgICAgIGlkeCA9IDE7XG4gICAgfSBlbHNlIGlmIChzIDw9IDMwKSB7XG4gICAgICBpZHggPSAyO1xuICAgIH0gZWxzZSBpZiAocyA8PSA0MCkge1xuICAgICAgaWR4ID0gMztcbiAgICB9IGVsc2Uge1xuICAgICAgaWR4ID0gNDtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkeDogaWR4ICsgMSxcbiAgICAgIGNvbDogdGhpcy5fY29sb3JzW2lkeF0sXG4gICAgfTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiBTaW1wbGVDaGFuZ2UgfSk6IHZvaWQge1xuICAgIGNvbnN0IHBhc3N3b3JkID0gY2hhbmdlc1sncGFzc3dvcmRUb0NoZWNrJ10uY3VycmVudFZhbHVlO1xuICAgIHRoaXMuc2V0QmFyQ29sb3JzKDUsICcjREREJyk7XG4gICAgaWYgKHBhc3N3b3JkKSB7XG4gICAgICBjb25zdCBzdHJlbmd0aCA9IHRoaXMubWVhc3VyZVN0cmVuZ3RoKHBhc3N3b3JkKTtcbiAgICAgIGNvbnN0IGMgPSB0aGlzLmdldENvbG9yKHN0cmVuZ3RoKTtcbiAgICAgIHRoaXMuc2V0QmFyQ29sb3JzKGMuaWR4LCBjLmNvbCk7XG4gICAgICB0aGlzLnN0cmVuZ3RoQ2hhbmdlLmVtaXQoc3RyZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc2V0QmFyQ29sb3JzKGNvdW50OiBudW1iZXIsIGNvbDogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgbiA9IDA7IG4gPCBjb3VudDsgbisrKSB7XG4gICAgICB0aGlzLmJhcnNbbl0gPSBjb2w7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2IGlkPVwic3RyZW5ndGhcIj5cbiAgPHNtYWxsPnN0cmVuZ3RoOjwvc21hbGw+XG4gIDx1bCBpZD1cInN0cmVuZ3RoQmFyXCI+XG4gICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYXJzWzBdXCI+PC9saT5cbiAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhcnNbMV1cIj48L2xpPlxuICAgIDxsaSBjbGFzcz1cInBvaW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmFyc1syXVwiPjwvbGk+XG4gICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYXJzWzNdXCI+PC9saT5cbiAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhcnNbNF1cIj48L2xpPlxuICA8L3VsPlxuPC9kaXY+XG4iXX0=
80
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aC1iYXIvcGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL215cm1pZG9uL2F1dGgtand0LWFkbWluL3NyYy9saWIvY29tcG9uZW50cy9wYXNzd29yZC1zdHJlbmd0aC1iYXIvcGFzc3dvcmQtc3RyZW5ndGgtYmFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEdBRVAsTUFBTSxlQUFlLENBQUM7O0FBT3ZCLE1BQU0sT0FBTyw0QkFBNEI7SUFTdkM7UUFSUSxZQUFPLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFJakQsbUJBQWMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBS3BELElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNqRCxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUNqQixDQUFDO0lBRU8sZUFBZSxDQUFDLENBQVM7UUFDL0IsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsTUFBTSxLQUFLLEdBQUcsdUJBQXVCLENBQUMsQ0FBQyxJQUFJO1FBRTNDLE1BQU0sWUFBWSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEMsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN0QyxNQUFNLE9BQU8s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LENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFTyxZQUFZLENBQUMsS0FBYSxFQUFFLEdBQVc7UUFDN0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQy9CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1FBQ3JCLENBQUM7SUFDSCxDQUFDOzhHQTlFVSw0QkFBNEI7a0dBQTVCLDRCQUE0QiwwTENkekMscWJBVUE7OzJGRElhLDRCQUE0QjtrQkFMeEMsU0FBUzsrQkFDRSxnQ0FBZ0M7d0RBT2pDLGVBQWU7c0JBQXZCLEtBQUs7Z0JBRUksY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25DaGFuZ2VzLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZSxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F1dGgtand0LXBhc3N3b3JkLXN0cmVuZ3RoLWJhcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9wYXNzd29yZC1zdHJlbmd0aC1iYXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9wYXNzd29yZC1zdHJlbmd0aC1iYXIuY29tcG9uZW50LmNzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBQYXNzd29yZFN0cmVuZ3RoQmFyQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBfY29sb3JzID0gWycjRjAwJywgJyNGOTAnLCAnI0ZGMCcsICcjOUYwJywgJyMwRjAnXTtcblxuICBASW5wdXQoKSBwYXNzd29yZFRvQ2hlY2s6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBAT3V0cHV0KCkgc3RyZW5ndGhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICBwdWJsaWMgYmFyczogc3RyaW5nW107XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5zdHJlbmd0aENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuICAgIHRoaXMuYmFycyA9IFtdO1xuICB9XG5cbiAgcHJpdmF0ZSBtZWFzdXJlU3RyZW5ndGgocDogc3RyaW5nKTogbnVtYmVyIHtcbiAgICBsZXQgZm9yY2UgPSAwO1xuICAgIGNvbnN0IHJlZ2V4ID0gL1skLS86LT97LX4hXCJeX2BcXFtcXF1dL2c7IC8vIFwiXG5cbiAgICBjb25zdCBsb3dlckxldHRlcnMgPSAvW2Etel0rLy50ZXN0KHApO1xuICAgIGNvbnN0IHVwcGVyTGV0dGVycyA9IC9bQS1aXSsvLnRlc3QocCk7XG4gICAgY29uc3QgbnVtYmVycyA9IC9bMC05XSsvLnRlc3QocCk7XG4gICAgY29uc3Qgc3ltYm9scyA9IHJlZ2V4LnRlc3QocCk7XG5cbiAgICBjb25zdCBmbGFncyA9IFtsb3dlckxldHRlcnMsIHVwcGVyTGV0dGVycywgbnVtYmVycywgc3ltYm9sc107XG5cbiAgICBsZXQgcGFzc2VkTWF0Y2hlcyA9IDA7XG4gICAgZm9yIChjb25zdCBmbGFnIG9mIGZsYWdzKSB7XG4gICAgICBwYXNzZWRNYXRjaGVzICs9IGZsYWcgPT09IHRydWUgPyAxIDogMDtcbiAgICB9XG5cbiAgICBmb3JjZSArPSAyICogcC5sZW5ndGggKyAocC5sZW5ndGggPj0gMTAgPyAxIDogMCk7XG4gICAgZm9yY2UgKz0gcGFzc2VkTWF0Y2hlcyAqIDEwO1xuXG4gICAgLy8gcGVuYWx0eSAoc2hvcnQgcGFzc3dvcmQpXG4gICAgZm9yY2UgPSBwLmxlbmd0aCA8PSA2ID8gTWF0aC5taW4oZm9yY2UsIDEwKSA6IGZvcmNlO1xuXG4gICAgLy8gcGVuYWx0eSAocG9vciBsZXRpZXR5IG9mIGNoYXJhY3RlcnMpXG4gICAgZm9yY2UgPSBwYXNzZWRNYXRjaGVzID09PSAxID8gTWF0aC5taW4oZm9yY2UsIDEwKSA6IGZvcmNlO1xuICAgIGZvcmNlID0gcGFzc2VkTWF0Y2hlcyA9PT0gMiA/IE1hdGgubWluKGZvcmNlLCAyMCkgOiBmb3JjZTtcbiAgICBmb3JjZSA9IHBhc3NlZE1hdGNoZXMgPT09IDMgPyBNYXRoLm1pbihmb3JjZSwgNDApIDogZm9yY2U7XG5cbiAgICByZXR1cm4gZm9yY2U7XG4gIH1cblxuICBwcml2YXRlIGdldENvbG9yKHM6IG51bWJlcikge1xuICAgIGxldCBpZHggPSAwO1xuICAgIGlmIChzIDw9IDEwKSB7XG4gICAgICBpZHggPSAwO1xuICAgIH0gZWxzZSBpZiAocyA8PSAyMCkge1xuICAgICAgaWR4ID0gMTtcbiAgICB9IGVsc2UgaWYgKHMgPD0gMzApIHtcbiAgICAgIGlkeCA9IDI7XG4gICAgfSBlbHNlIGlmIChzIDw9IDQwKSB7XG4gICAgICBpZHggPSAzO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZHggPSA0O1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgaWR4OiBpZHggKyAxLFxuICAgICAgY29sOiB0aGlzLl9jb2xvcnNbaWR4XSxcbiAgICB9O1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogeyBbcHJvcE5hbWU6IHN0cmluZ106IFNpbXBsZUNoYW5nZSB9KTogdm9pZCB7XG4gICAgY29uc3QgcGFzc3dvcmQgPSBjaGFuZ2VzWydwYXNzd29yZFRvQ2hlY2snXS5jdXJyZW50VmFsdWU7XG4gICAgdGhpcy5zZXRCYXJDb2xvcnMoNSwgJyNEREQnKTtcbiAgICBpZiAocGFzc3dvcmQpIHtcbiAgICAgIGNvbnN0IHN0cmVuZ3RoID0gdGhpcy5tZWFzdXJlU3RyZW5ndGgocGFzc3dvcmQpO1xuICAgICAgY29uc3QgYyA9IHRoaXMuZ2V0Q29sb3Ioc3RyZW5ndGgpO1xuICAgICAgdGhpcy5zZXRCYXJDb2xvcnMoYy5pZHgsIGMuY29sKTtcbiAgICAgIHRoaXMuc3RyZW5ndGhDaGFuZ2UuZW1pdChzdHJlbmd0aCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRCYXJDb2xvcnMoY291bnQ6IG51bWJlciwgY29sOiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBuID0gMDsgbiA8IGNvdW50OyBuKyspIHtcbiAgICAgIHRoaXMuYmFyc1tuXSA9IGNvbDtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgaWQ9XCJzdHJlbmd0aFwiPlxuICA8c21hbGw+c3RyZW5ndGg6PC9zbWFsbD5cbiAgPHVsIGlkPVwic3RyZW5ndGhCYXJcIj5cbiAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhcnNbMF1cIj48L2xpPlxuICAgIDxsaSBjbGFzcz1cInBvaW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmFyc1sxXVwiPjwvbGk+XG4gICAgPGxpIGNsYXNzPVwicG9pbnRcIiBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJiYXJzWzJdXCI+PC9saT5cbiAgICA8bGkgY2xhc3M9XCJwb2ludFwiIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImJhcnNbM11cIj48L2xpPlxuICAgIDxsaSBjbGFzcz1cInBvaW50XCIgW3N0eWxlLmJhY2tncm91bmQtY29sb3JdPVwiYmFyc1s0XVwiPjwvbGk+XG4gIDwvdWw+XG48L2Rpdj5cbiJdfQ==
@@ -116,11 +116,11 @@ export class UserListRepository {
116
116
  });
117
117
  return promise;
118
118
  }
119
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserListRepository, deps: [{ token: i1.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Injectable }); }
120
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserListRepository, providedIn: 'root' }); }
119
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserListRepository, deps: [{ token: i1.AuthJwtAccountService }], target: i0.ɵɵFactoryTarget.Injectable }); }
120
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserListRepository, providedIn: 'root' }); }
121
121
  }
122
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: UserListRepository, decorators: [{
122
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: UserListRepository, decorators: [{
123
123
  type: Injectable,
124
124
  args: [{ providedIn: 'root' }]
125
125
  }], ctorParameters: () => [{ type: i1.AuthJwtAccountService }] });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9hdXRoLWp3dC1hZG1pbi9zcmMvbGliL2NvbXBvbmVudHMvc3RhdGUvdXNlci1saXN0LnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFvQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJOUQsT0FBTyxFQUNMLGNBQWMsR0FFZixNQUFNLCtCQUErQixDQUFDOzs7QUFRdkMsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBb0IsV0FBa0M7UUFBbEMsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQW1CLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQW1CLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxRQUFRLENBQ2IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBa0I7UUFFbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN0QyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDM0I7UUFBQyxPQUFPLEtBQUssRUFBRTtZQUNkLE1BQU0sS0FBSyxDQUFDO1NBQ2I7Z0JBQVM7WUFDUixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUM1QjtJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQWtCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ3JDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxNQUFNLEtBQUssQ0FBQztTQUNiO2dCQUFTO1lBQ1IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUk7WUFDRixNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztTQUNqRDtRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsTUFBTSxLQUFLLENBQUM7U0FDYjtnQkFBUztZQUNSLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQzVCO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFpQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVU7UUFDaEMsTUFBTSxPQUFPLEdBQXFCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FDWCx1QkFBdUIsSUFBSSxDQUFDLFFBQVEsSUFBSTt3QkFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQzlCLENBQUM7b0JBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsTUFBTSxPQUFPLEdBQXFCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBRTtnQkFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDbkM7WUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUV6QixJQUFJLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzFDLElBQUksRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO29CQUNWLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO29CQUNwQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hCLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLE9BQU8sQ0FBQyxLQUFLLENBQ1gsdUJBQXVCLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUM5RCxDQUFDO29CQUNGLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDaEIsQ0FBQzthQUNGLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs4R0F0SVUsa0JBQWtCO2tIQUFsQixrQkFBa0IsY0FETCxNQUFNOzsyRkFDbkIsa0JBQWtCO2tCQUQ5QixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlLCB0YWtlLCB0YXAgfSBmcm9tICdyeGpzJztcclxuXHJcbmltcG9ydCB7IFVzZXIgfSBmcm9tICdAbXlybWlkb24vYXV0aC1qd3QtbG9naW4nO1xyXG5pbXBvcnQgeyBEYXRhUGFnZSB9IGZyb20gJ0BteXJtaWRvbi9uZy10b29scyc7XHJcbmltcG9ydCB7XHJcbiAgUGFnZWRMaXN0U3RvcmUsXHJcbiAgUGFnZWRMaXN0U3RvcmVTZXJ2aWNlLFxyXG59IGZyb20gJ0BteXJtaWRvbi9wYWdlZC1kYXRhLWJyb3dzZXJzJztcclxuXHJcbmltcG9ydCB7XHJcbiAgQXV0aEp3dEFjY291bnRTZXJ2aWNlLFxyXG4gIFVzZXJGaWx0ZXIsXHJcbn0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aC1qd3QtYWNjb3VudC5zZXJ2aWNlJztcclxuXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBVc2VyTGlzdFJlcG9zaXRvcnlcclxuICBpbXBsZW1lbnRzIFBhZ2VkTGlzdFN0b3JlU2VydmljZTxVc2VyRmlsdGVyLCBVc2VyPlxyXG57XHJcbiAgcHJpdmF0ZSBfc3RvcmU6IFBhZ2VkTGlzdFN0b3JlPFVzZXJGaWx0ZXIsIFVzZXI+O1xyXG4gIHByaXZhdGUgX2FjdGl2ZVVzZXIkOiBCZWhhdmlvclN1YmplY3Q8VXNlciB8IHVuZGVmaW5lZD47XHJcbiAgcHJpdmF0ZSBfbG9hZGluZyQ6IEJlaGF2aW9yU3ViamVjdDxib29sZWFuPjtcclxuICBwcml2YXRlIF9zYXZpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcblxyXG4gIHB1YmxpYyBnZXQgYWN0aXZlVXNlciQoKTogT2JzZXJ2YWJsZTxVc2VyIHwgdW5kZWZpbmVkPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fYWN0aXZlVXNlciQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgZmlsdGVyJCgpOiBPYnNlcnZhYmxlPFVzZXJGaWx0ZXI+IHtcclxuICAgIHJldHVybiB0aGlzLl9zdG9yZS5maWx0ZXIkO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHBhZ2UkKCk6IE9ic2VydmFibGU8RGF0YVBhZ2U8VXNlcj4+IHtcclxuICAgIHJldHVybiB0aGlzLl9zdG9yZS5wYWdlJDtcclxuICB9XHJcbiAgcHVibGljIGdldCBsb2FkaW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9sb2FkaW5nJC5hc09ic2VydmFibGUoKTtcclxuICB9XHJcbiAgcHVibGljIGdldCBzYXZpbmckKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NhdmluZyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9hY2NTZXJ2aWNlOiBBdXRoSnd0QWNjb3VudFNlcnZpY2UpIHtcclxuICAgIHRoaXMuX3N0b3JlID0gbmV3IFBhZ2VkTGlzdFN0b3JlPFVzZXJGaWx0ZXIsIFVzZXI+KHRoaXMpO1xyXG4gICAgdGhpcy5fYWN0aXZlVXNlciQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVzZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcbiAgICB0aGlzLl9sb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgdGhpcy5fc2F2aW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpO1xyXG4gICAgdGhpcy5fc3RvcmUucmVzZXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBsb2FkUGFnZShcclxuICAgIHBhZ2VOdW1iZXI6IG51bWJlcixcclxuICAgIHBhZ2VTaXplOiBudW1iZXIsXHJcbiAgICBmaWx0ZXI6IFVzZXJGaWx0ZXJcclxuICApOiBPYnNlcnZhYmxlPERhdGFQYWdlPFVzZXI+PiB7XHJcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjY1NlcnZpY2UuZ2V0VXNlcnMoZmlsdGVyLCBwYWdlTnVtYmVyLCBwYWdlU2l6ZSkucGlwZShcclxuICAgICAgdGFwKHtcclxuICAgICAgICBuZXh0OiAoKSA9PiB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKSxcclxuICAgICAgICBlcnJvcjogKCkgPT4gdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSksXHJcbiAgICAgIH0pXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHJlc2V0KCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fbG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX3N0b3JlLnJlc2V0KCk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldEZpbHRlcihmaWx0ZXI6IFVzZXJGaWx0ZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9zdG9yZS5zZXRGaWx0ZXIoZmlsdGVyKTtcclxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XHJcbiAgICAgIHRocm93IGVycm9yO1xyXG4gICAgfSBmaW5hbGx5IHtcclxuICAgICAgdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RmlsdGVyKCk6IFVzZXJGaWx0ZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0b3JlLmdldEZpbHRlcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFzeW5jIHNldFBhZ2UocGFnZU51bWJlcjogbnVtYmVyLCBwYWdlU2l6ZTogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5fc3RvcmUuc2V0UGFnZShwYWdlTnVtYmVyLCBwYWdlU2l6ZSk7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldEFjdGl2ZVVzZXIodXNlcjogVXNlciB8IG51bGwpOiB2b2lkIHtcclxuICAgIHRoaXMuX2FjdGl2ZVVzZXIkLm5leHQodXNlciB8fCB1bmRlZmluZWQpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHVwZGF0ZUFjdGl2ZVVzZXIodXNlcjogVXNlcik6IFByb21pc2U8Ym9vbGVhbj4ge1xyXG4gICAgY29uc3QgcHJvbWlzZTogUHJvbWlzZTxib29sZWFuPiA9IG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgdGhpcy5fc2F2aW5nJC5uZXh0KHRydWUpO1xyXG5cclxuICAgICAgdGhpcy5fYWNjU2VydmljZS51cGRhdGVVc2VyKHVzZXIpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKF8pID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NhdmluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICB0aGlzLl9zdG9yZS5yZXNldCgpO1xyXG4gICAgICAgICAgcmVzb2x2ZSh0cnVlKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHtcclxuICAgICAgICAgIHRoaXMuX3NhdmluZyQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxyXG4gICAgICAgICAgICBgRXJyb3IgdXBkYXRpbmcgdXNlciAke3VzZXIudXNlck5hbWV9OiBgICtcclxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeShlcnJvciB8fCB7fSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXNvbHZlKGZhbHNlKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIHByb21pc2U7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZGVsZXRlVXNlcihuYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHByb21pc2U6IFByb21pc2U8Ym9vbGVhbj4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLl9hY3RpdmVVc2VyJC52YWx1ZT8udXNlck5hbWUgPT09IG5hbWUpIHtcclxuICAgICAgICB0aGlzLl9hY3RpdmVVc2VyJC5uZXh0KHVuZGVmaW5lZCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3NhdmluZyQubmV4dCh0cnVlKTtcclxuXHJcbiAgICAgIHRoaXMuX2FjY1NlcnZpY2UuZGVsZXRlVXNlcihuYW1lKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChfKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYXZpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5fc3RvcmUucmVzZXQoKTtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYXZpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgYEVycm9yIGRlbGV0aW5nIHVzZXIgJHtuYW1lfTogYCArIEpTT04uc3RyaW5naWZ5KGVycm9yIHx8IHt9KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJlamVjdChlcnJvcik7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH1cclxufVxyXG4iXX0=
126
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1saXN0LnJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9teXJtaWRvbi9hdXRoLWp3dC1hZG1pbi9zcmMvbGliL2NvbXBvbmVudHMvc3RhdGUvdXNlci1saXN0LnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZUFBZSxFQUFvQixHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJOUQsT0FBTyxFQUNMLGNBQWMsR0FFZixNQUFNLCtCQUErQixDQUFDOzs7QUFRdkMsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzFDLENBQUM7SUFDRCxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUM3QixDQUFDO0lBQ0QsSUFBVyxLQUFLO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QyxDQUFDO0lBRUQsWUFBb0IsV0FBa0M7UUFBbEMsZ0JBQVcsR0FBWCxXQUFXLENBQXVCO1FBQ3BELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxjQUFjLENBQW1CLElBQUksQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxlQUFlLENBQW1CLFNBQVMsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQVUsS0FBSyxDQUFDLENBQUM7UUFDckQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQztRQUNwRCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFTSxRQUFRLENBQ2IsVUFBa0IsRUFDbEIsUUFBZ0IsRUFDaEIsTUFBa0I7UUFFbEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FDakUsR0FBRyxDQUFDO1lBQ0YsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUN0QyxLQUFLLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO1NBQ3hDLENBQUMsQ0FDSCxDQUFDO0lBQ0osQ0FBQztJQUVNLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUM1QixDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE1BQU0sS0FBSyxDQUFDO1FBQ2QsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNILENBQUM7SUFFTSxLQUFLLENBQUMsU0FBUyxDQUFDLE1BQWtCO1FBQ3ZDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLEtBQUssQ0FBQztRQUNkLENBQUM7Z0JBQVMsQ0FBQztZQUNULElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU8sQ0FBQyxVQUFrQixFQUFFLFFBQWdCO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ2xELENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQztJQUVNLGFBQWEsQ0FBQyxJQUFpQjtRQUNwQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksU0FBUyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVNLGdCQUFnQixDQUFDLElBQVU7UUFDaEMsTUFBTSxPQUFPLEdBQXFCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBRXpCLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQztnQkFDMUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7b0JBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7b0JBQzFCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7b0JBQ3BCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxLQUFLLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRTtvQkFDZixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsT0FBTyxDQUFDLEtBQUssQ0FDWCx1QkFBdUIsSUFBSSxDQUFDLFFBQVEsSUFBSTt3QkFDdEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQzlCLENBQUM7b0JBQ0YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNqQixDQUFDO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsTUFBTSxPQUFPLEdBQXFCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hFLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxLQUFLLEVBQUUsUUFBUSxLQUFLLElBQUksRUFBRSxDQUFDO2dCQUMvQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7WUFFekIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUMxQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDVixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztvQkFDcEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNoQixDQUFDO2dCQUNELEtBQUssRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFO29CQUNmLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUMxQixPQUFPLENBQUMsS0FBSyxDQUNYLHVCQUF1QixJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FDOUQsQ0FBQztvQkFDRixNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ2hCLENBQUM7YUFDRixDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7OEdBdElVLGtCQUFrQjtrSEFBbEIsa0JBQWtCLGNBREwsTUFBTTs7MkZBQ25CLGtCQUFrQjtrQkFEOUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSwgdGFrZSwgdGFwIH0gZnJvbSAncnhqcyc7XHJcblxyXG5pbXBvcnQgeyBVc2VyIH0gZnJvbSAnQG15cm1pZG9uL2F1dGgtand0LWxvZ2luJztcclxuaW1wb3J0IHsgRGF0YVBhZ2UgfSBmcm9tICdAbXlybWlkb24vbmctdG9vbHMnO1xyXG5pbXBvcnQge1xyXG4gIFBhZ2VkTGlzdFN0b3JlLFxyXG4gIFBhZ2VkTGlzdFN0b3JlU2VydmljZSxcclxufSBmcm9tICdAbXlybWlkb24vcGFnZWQtZGF0YS1icm93c2Vycyc7XHJcblxyXG5pbXBvcnQge1xyXG4gIEF1dGhKd3RBY2NvdW50U2VydmljZSxcclxuICBVc2VyRmlsdGVyLFxyXG59IGZyb20gJy4uLy4uL3NlcnZpY2VzL2F1dGgtand0LWFjY291bnQuc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxyXG5leHBvcnQgY2xhc3MgVXNlckxpc3RSZXBvc2l0b3J5XHJcbiAgaW1wbGVtZW50cyBQYWdlZExpc3RTdG9yZVNlcnZpY2U8VXNlckZpbHRlciwgVXNlcj5cclxue1xyXG4gIHByaXZhdGUgX3N0b3JlOiBQYWdlZExpc3RTdG9yZTxVc2VyRmlsdGVyLCBVc2VyPjtcclxuICBwcml2YXRlIF9hY3RpdmVVc2VyJDogQmVoYXZpb3JTdWJqZWN0PFVzZXIgfCB1bmRlZmluZWQ+O1xyXG4gIHByaXZhdGUgX2xvYWRpbmckOiBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj47XHJcbiAgcHJpdmF0ZSBfc2F2aW5nJDogQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+O1xyXG5cclxuICBwdWJsaWMgZ2V0IGFjdGl2ZVVzZXIkKCk6IE9ic2VydmFibGU8VXNlciB8IHVuZGVmaW5lZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2FjdGl2ZVVzZXIkLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuICBwdWJsaWMgZ2V0IGZpbHRlciQoKTogT2JzZXJ2YWJsZTxVc2VyRmlsdGVyPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUuZmlsdGVyJDtcclxuICB9XHJcbiAgcHVibGljIGdldCBwYWdlJCgpOiBPYnNlcnZhYmxlPERhdGFQYWdlPFVzZXI+PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3RvcmUucGFnZSQ7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgbG9hZGluZyQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XHJcbiAgICByZXR1cm4gdGhpcy5fbG9hZGluZyQuYXNPYnNlcnZhYmxlKCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgc2F2aW5nJCgpOiBPYnNlcnZhYmxlPGJvb2xlYW4+IHtcclxuICAgIHJldHVybiB0aGlzLl9zYXZpbmckLmFzT2JzZXJ2YWJsZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfYWNjU2VydmljZTogQXV0aEp3dEFjY291bnRTZXJ2aWNlKSB7XHJcbiAgICB0aGlzLl9zdG9yZSA9IG5ldyBQYWdlZExpc3RTdG9yZTxVc2VyRmlsdGVyLCBVc2VyPih0aGlzKTtcclxuICAgIHRoaXMuX2FjdGl2ZVVzZXIkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVc2VyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xyXG4gICAgdGhpcy5fbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHRoaXMuX3NhdmluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTtcclxuICAgIHRoaXMuX3N0b3JlLnJlc2V0KCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9hZFBhZ2UoXHJcbiAgICBwYWdlTnVtYmVyOiBudW1iZXIsXHJcbiAgICBwYWdlU2l6ZTogbnVtYmVyLFxyXG4gICAgZmlsdGVyOiBVc2VyRmlsdGVyXHJcbiAgKTogT2JzZXJ2YWJsZTxEYXRhUGFnZTxVc2VyPj4ge1xyXG4gICAgdGhpcy5fbG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHJldHVybiB0aGlzLl9hY2NTZXJ2aWNlLmdldFVzZXJzKGZpbHRlciwgcGFnZU51bWJlciwgcGFnZVNpemUpLnBpcGUoXHJcbiAgICAgIHRhcCh7XHJcbiAgICAgICAgbmV4dDogKCkgPT4gdGhpcy5fbG9hZGluZyQubmV4dChmYWxzZSksXHJcbiAgICAgICAgZXJyb3I6ICgpID0+IHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpLFxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyByZXNldCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMuX2xvYWRpbmckLm5leHQodHJ1ZSk7XHJcbiAgICB0cnkge1xyXG4gICAgICBhd2FpdCB0aGlzLl9zdG9yZS5yZXNldCgpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRGaWx0ZXIoZmlsdGVyOiBVc2VyRmlsdGVyKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KHRydWUpO1xyXG4gICAgdHJ5IHtcclxuICAgICAgYXdhaXQgdGhpcy5fc3RvcmUuc2V0RmlsdGVyKGZpbHRlcik7XHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICB0aHJvdyBlcnJvcjtcclxuICAgIH0gZmluYWxseSB7XHJcbiAgICAgIHRoaXMuX2xvYWRpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldEZpbHRlcigpOiBVc2VyRmlsdGVyIHtcclxuICAgIHJldHVybiB0aGlzLl9zdG9yZS5nZXRGaWx0ZXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBzZXRQYWdlKHBhZ2VOdW1iZXI6IG51bWJlciwgcGFnZVNpemU6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdGhpcy5fbG9hZGluZyQubmV4dCh0cnVlKTtcclxuICAgIHRyeSB7XHJcbiAgICAgIGF3YWl0IHRoaXMuX3N0b3JlLnNldFBhZ2UocGFnZU51bWJlciwgcGFnZVNpemUpO1xyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgdGhyb3cgZXJyb3I7XHJcbiAgICB9IGZpbmFsbHkge1xyXG4gICAgICB0aGlzLl9sb2FkaW5nJC5uZXh0KGZhbHNlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRBY3RpdmVVc2VyKHVzZXI6IFVzZXIgfCBudWxsKTogdm9pZCB7XHJcbiAgICB0aGlzLl9hY3RpdmVVc2VyJC5uZXh0KHVzZXIgfHwgdW5kZWZpbmVkKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1cGRhdGVBY3RpdmVVc2VyKHVzZXI6IFVzZXIpOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGNvbnN0IHByb21pc2U6IFByb21pc2U8Ym9vbGVhbj4gPSBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIHRoaXMuX3NhdmluZyQubmV4dCh0cnVlKTtcclxuXHJcbiAgICAgIHRoaXMuX2FjY1NlcnZpY2UudXBkYXRlVXNlcih1c2VyKS5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChfKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYXZpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgdGhpcy5fc3RvcmUucmVzZXQoKTtcclxuICAgICAgICAgIHJlc29sdmUodHJ1ZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLl9zYXZpbmckLm5leHQoZmFsc2UpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcclxuICAgICAgICAgICAgYEVycm9yIHVwZGF0aW5nIHVzZXIgJHt1c2VyLnVzZXJOYW1lfTogYCArXHJcbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoZXJyb3IgfHwge30pXHJcbiAgICAgICAgICApO1xyXG4gICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBwcm9taXNlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGV0ZVVzZXIobmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBjb25zdCBwcm9taXNlOiBQcm9taXNlPGJvb2xlYW4+ID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5fYWN0aXZlVXNlciQudmFsdWU/LnVzZXJOYW1lID09PSBuYW1lKSB7XHJcbiAgICAgICAgdGhpcy5fYWN0aXZlVXNlciQubmV4dCh1bmRlZmluZWQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9zYXZpbmckLm5leHQodHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLl9hY2NTZXJ2aWNlLmRlbGV0ZVVzZXIobmFtZSkuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAoXykgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fc2F2aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIHRoaXMuX3N0b3JlLnJlc2V0KCk7XHJcbiAgICAgICAgICByZXNvbHZlKHRydWUpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy5fc2F2aW5nJC5uZXh0KGZhbHNlKTtcclxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXHJcbiAgICAgICAgICAgIGBFcnJvciBkZWxldGluZyB1c2VyICR7bmFtZX06IGAgKyBKU09OLnN0cmluZ2lmeShlcnJvciB8fCB7fSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gcHJvbWlzZTtcclxuICB9XHJcbn1cclxuIl19