@eo-sdk/client 11.7.0-rc.1 → 11.8.0-rc.1

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.
Files changed (40) hide show
  1. package/app/eo-client/about-state/about-state.component.d.ts.map +1 -1
  2. package/app/eo-client/dashboard/dashboard.component.d.ts +3 -2
  3. package/app/eo-client/dashboard/dashboard.component.d.ts.map +1 -1
  4. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.d.ts +30 -0
  5. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.d.ts.map +1 -0
  6. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.d.ts +23 -0
  7. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.d.ts.map +1 -0
  8. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics.interface.d.ts +20 -0
  9. package/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics.interface.d.ts.map +1 -0
  10. package/app/eo-client/eo-client.module.d.ts +32 -29
  11. package/app/eo-client/eo-client.module.d.ts.map +1 -1
  12. package/app/eo-client/settings/settings.component.d.ts +15 -16
  13. package/app/eo-client/settings/settings.component.d.ts.map +1 -1
  14. package/app/eo-client/settings/settings.interface.d.ts +25 -0
  15. package/app/eo-client/settings/settings.interface.d.ts.map +1 -0
  16. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts +0 -1
  17. package/app/eo-framework/app-shell/app-bar/app-search/app-search.component.d.ts.map +1 -1
  18. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts +51 -26
  19. package/app/eo-framework/upload-overlay/upload-overlay.component.d.ts.map +1 -1
  20. package/app/eo-framework-core/agent/agent.service.d.ts +7 -2
  21. package/app/eo-framework-core/agent/agent.service.d.ts.map +1 -1
  22. package/assets/_default/i18n/de.json +19 -2
  23. package/assets/_default/i18n/en.json +19 -2
  24. package/esm2022/app/eo-client/about-state/about-state.component.mjs +3 -3
  25. package/esm2022/app/eo-client/dashboard/dashboard.component.mjs +20 -6
  26. package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-setup/signature-statistics-setup.component.mjs +114 -0
  27. package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics-widget.component.mjs +79 -0
  28. package/esm2022/app/eo-client/dashboard/widgets/signature-statistics-widget/signature-statistics.interface.mjs +2 -0
  29. package/esm2022/app/eo-client/eo-client.module.mjs +11 -1
  30. package/esm2022/app/eo-client/settings/settings.component.mjs +42 -24
  31. package/esm2022/app/eo-client/settings/settings.interface.mjs +2 -0
  32. package/esm2022/app/eo-framework/actions/actions/open-document-action/open-document-action.mjs +2 -2
  33. package/esm2022/app/eo-framework/app-shell/app-bar/app-search/app-search.component.mjs +4 -7
  34. package/esm2022/app/eo-framework/object-details/object-history/object-history.component.mjs +2 -2
  35. package/esm2022/app/eo-framework/stored-query/stored-query-details/dynamic-property-switch/dynamic-property-switch.component.mjs +4 -3
  36. package/esm2022/app/eo-framework/upload-overlay/upload-overlay.component.mjs +163 -92
  37. package/esm2022/app/eo-framework-core/agent/agent.service.mjs +13 -2
  38. package/fesm2022/eo-sdk-client.mjs +532 -250
  39. package/fesm2022/eo-sdk-client.mjs.map +1 -1
  40. package/package.json +3 -2
@@ -40,6 +40,12 @@ let SettingsComponent = class SettingsComponent {
40
40
  this.translate = translate;
41
41
  this.elemRef = elemRef;
42
42
  this.notification = notification;
43
+ this.files = {};
44
+ this.user = {};
45
+ this.deputies = { data: [], dataMeta: [] };
46
+ this.showChangePasswordForm = false;
47
+ this.clientLocales = [];
48
+ this.schemaLocales = [];
43
49
  this.LockSettings = LockSettings;
44
50
  this.showAgentConfig = true;
45
51
  this.defaultLockSetting = false;
@@ -47,30 +53,34 @@ let SettingsComponent = class SettingsComponent {
47
53
  this.userId = '';
48
54
  this.showDeleteIconTrash = true;
49
55
  this.userImageUri = '';
56
+ this.preview = '';
57
+ this.file = null;
50
58
  this.hoverSelector = false;
51
59
  this.showPreviewDialog = false;
52
60
  this.showDeleteDialog = false;
53
61
  this.showErrorDialog = false;
54
62
  this.MAX_FILE_SIZE = 524288;
55
63
  this.viewMode = '';
56
- this.files = {};
64
+ this.fileName = '';
65
+ this.deleteConfigDashboard = false;
57
66
  this.titleService.setBaseTitle(this.translate.instant('eo.bar.button.settings.title'));
58
67
  this.clientLocales = config.getClientLocales();
59
68
  this.capabilities = this.capabilitiesService.getCapabilities();
60
69
  this.getSchemaLocales();
61
70
  this.getUserData();
62
- this.agentLockSettings = userService.getCurrentUser().userSettings.alwayslock;
63
- this.agentService.isConnected$.pipe(take(1), withLatestFrom(this.agentService.agentConfig$)).subscribe(([isConnected, config]) => {
71
+ this.agentLockSettings = userService.getCurrentUser()?.userSettings?.alwayslock;
72
+ this.agentService.isConnected$.pipe(take(1), withLatestFrom(this.agentService.agentConfig$)).subscribe(([isConnected, configuration]) => {
64
73
  this.useAgentControl = this.fb.control(isConnected);
65
- if (config.hasOwnProperty(agentConfigKeys.AUTOCONNECT)) {
66
- this.showAgentConfig = config[agentConfigKeys.AUTOCONNECT];
74
+ if (configuration.hasOwnProperty(agentConfigKeys.AUTOCONNECT)) {
75
+ this.showAgentConfig = configuration[agentConfigKeys.AUTOCONNECT] || false;
67
76
  this.useAgentControl.disable();
68
77
  }
69
- if (config.hasOwnProperty(agentConfigKeys.LOCKSETTINGS) && Object.values(LockSettings).includes(config[agentConfigKeys.LOCKSETTINGS])) {
78
+ const agentConfigLockSettings = configuration[agentConfigKeys.LOCKSETTINGS];
79
+ if (configuration.hasOwnProperty(agentConfigKeys.LOCKSETTINGS) && agentConfigLockSettings && Object.values(LockSettings).includes(agentConfigLockSettings)) {
70
80
  this.defaultLockSetting = true;
71
- this.agentLockSettings = config[agentConfigKeys.LOCKSETTINGS];
81
+ this.agentLockSettings = configuration[agentConfigKeys.LOCKSETTINGS] || LockSettings.ask;
72
82
  }
73
- this.useAgentControl.valueChanges.pipe(untilDestroyed(this)).subscribe(() => this.agentService.isConnected = this.useAgentControl.value);
83
+ this.useAgentControl?.valueChanges.pipe(untilDestroyed(this)).subscribe(() => this.agentService.isConnected = this.useAgentControl?.value);
74
84
  });
75
85
  }
76
86
  get agentStatus() {
@@ -87,7 +97,9 @@ let SettingsComponent = class SettingsComponent {
87
97
  }
88
98
  getSchemaLocales() {
89
99
  this.systemService.system$.subscribe((systemDefinition) => {
90
- this.schemaLocales = systemDefinition.locales.sort(Utils.sortValues('displayname'));
100
+ if (systemDefinition.locales.length > 0) {
101
+ this.schemaLocales = systemDefinition.locales?.sort(Utils.sortValues('displayname'));
102
+ }
91
103
  });
92
104
  }
93
105
  saveDeputies() {
@@ -121,11 +133,11 @@ let SettingsComponent = class SettingsComponent {
121
133
  }
122
134
  changeSchemaLocale(iso) {
123
135
  if (this.user.schemaLocale !== iso) {
124
- this.userService.changeSchemaLocale(iso).subscribe(_ => Utils.throw(null, this.translate.instant('eo.user.service.schema.locale.error.title'), this.translate.instant('eo.user.service.schema.locale.error.description')));
136
+ this.userService.changeSchemaLocale(iso).subscribe(() => { }, _ => Utils.throw(() => { }, this.translate.instant('eo.user.service.schema.locale.error.title'), this.translate.instant('eo.user.service.schema.locale.error.description')));
125
137
  }
126
138
  }
127
139
  ngAfterViewInit() {
128
- this.elemRef.nativeElement.querySelector('#presence').focus();
140
+ this.elemRef.nativeElement.querySelector('#presence')?.focus();
129
141
  this.user$.subscribe(user => {
130
142
  this.userId = user.id;
131
143
  this.userImageUri = this.userService.getUserImageUri(this.userId);
@@ -136,7 +148,7 @@ let SettingsComponent = class SettingsComponent {
136
148
  setPresence(b) {
137
149
  this.userService.setPresence(b)
138
150
  .subscribe(_ => {
139
- }, Utils.throw(null, this.translate.instant('eo.state.settings.presence.error.title'), this.translate.instant('eo.state.settings.presence.error.description')));
151
+ }, Utils.throw(() => { }, this.translate.instant('eo.state.settings.presence.error.title'), this.translate.instant('eo.state.settings.presence.error.description')));
140
152
  }
141
153
  closePreviewDialog() {
142
154
  this.showPreviewDialog = false;
@@ -144,7 +156,7 @@ let SettingsComponent = class SettingsComponent {
144
156
  }
145
157
  deleteUserImage() {
146
158
  this.userService
147
- .setUserImage(null).subscribe({
159
+ .setUserImage({}).subscribe({
148
160
  next: () => {
149
161
  this.refreshUserImageHeaderBackground(this.userImageUri);
150
162
  this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_IMAGE_CHANGE);
@@ -159,9 +171,10 @@ let SettingsComponent = class SettingsComponent {
159
171
  },
160
172
  });
161
173
  }
162
- selectImage(event) {
163
- this.file = event.files[0];
164
- if (this.file) {
174
+ selectImage(eventTarget) {
175
+ const event = eventTarget;
176
+ if (event.files && event.files.length > 0) {
177
+ this.file = event.files[0];
165
178
  this.fileName = this.file.name;
166
179
  switch (false) {
167
180
  case (this.file.type.includes('image/') && this.file.type.includes('jpeg') || this.file.type.includes('png')):
@@ -188,7 +201,7 @@ let SettingsComponent = class SettingsComponent {
188
201
  this.userService
189
202
  .setUserImage(this.file).subscribe({
190
203
  next: () => {
191
- this.profileImageOverlay.nativeElement.focus();
204
+ this.profileImageOverlay.nativeElement?.focus();
192
205
  this.refreshUserImageHeaderBackground(this.userImageUri);
193
206
  this.eventService.trigger(EnaioEvent.SYSTEM_STATUS_IMAGE_CHANGE);
194
207
  this.closePreviewDialog();
@@ -202,8 +215,9 @@ let SettingsComponent = class SettingsComponent {
202
215
  },
203
216
  });
204
217
  }
205
- tabAction(input) {
206
- input.blur();
218
+ tabAction(eventTarget) {
219
+ const element = eventTarget;
220
+ element.blur();
207
221
  this.hoverSelector = false;
208
222
  }
209
223
  mouseEnter() {
@@ -218,7 +232,7 @@ let SettingsComponent = class SettingsComponent {
218
232
  refreshUserImageHeaderBackground(imageUri) {
219
233
  if (imageUri) {
220
234
  const timestamp = new Date().getTime().toString();
221
- this.renderer.setStyle(this.headerBg.nativeElement, 'background-image', `url(${imageUri + '&t=' + timestamp})`);
235
+ this.renderer.setStyle(this.headerBg?.nativeElement, 'background-image', `url(${imageUri + '&t=' + timestamp})`);
222
236
  }
223
237
  }
224
238
  clearLocalSettings() {
@@ -244,13 +258,17 @@ let SettingsComponent = class SettingsComponent {
244
258
  });
245
259
  }
246
260
  defaultDashboard() {
247
- this.userService.saveChangeWorkspace(undefined).subscribe(() => {
261
+ this.userService.saveChangeWorkspace({}).subscribe(() => {
248
262
  this.notify.success(this.translate.instant('eo.state.settings.dashboard.clear.success'));
249
263
  this.saveLocalSettings().then();
250
264
  });
251
265
  }
266
+ resetImageTarget(event) {
267
+ const element = event.target;
268
+ element.value = null;
269
+ }
252
270
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsComponent, deps: [{ token: i0.Renderer2 }, { token: i1.UserService }, { token: i1.Config }, { token: i1.NotificationsService }, { token: i1.SystemService }, { token: i1.EventService }, { token: i1.CapabilitiesService }, { token: i2.PageTitleService }, { token: i3.AgentService }, { token: i4.UntypedFormBuilder }, { token: i1.AppCacheService }, { token: i1.LocalStorageService }, { token: i1.TranslateService }, { token: i0.ElementRef }, { token: i1.NotificationsService }], target: i0.ɵɵFactoryTarget.Component }); }
253
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i7.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i8.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i9.UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: i10.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: i14.PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: i15.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
271
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.0.4", type: SettingsComponent, selector: "eo-settings", viewQueries: [{ propertyName: "files", first: true, predicate: ["files"], descendants: true }, { propertyName: "headerBg", first: true, predicate: ["headerBg"], descendants: true }, { propertyName: "userAvatar", first: true, predicate: ["userAvatar"], descendants: true }, { propertyName: "confirmDeleteBtn", first: true, predicate: ["confirmDeleteBtn"], descendants: true }, { propertyName: "profileImageOverlay", first: true, predicate: ["profileImageOverlay"], descendants: true }, { propertyName: "deputiesForm", first: true, predicate: NgForm, descendants: true }], ngImport: i0, template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"resetImageTarget($event)\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i4.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.TranslateDirective, selector: "[translate],[ngx-translate]", inputs: ["translate", "translateParams"] }, { kind: "component", type: i7.EoIconComponent, selector: "eo-icon", inputs: ["objectType", "iconId", "iconSrc", "badge", "iconTitle"] }, { kind: "directive", type: i8.RtlAwareDirective, selector: "[eoRtlAware]", inputs: ["eoRtlAware"] }, { kind: "component", type: i9.UserAvatarComponent, selector: "eo-user-avatar", inputs: ["showPresence", "previewUri"] }, { kind: "component", type: i10.EoDialogComponent, selector: "eo-dialog", inputs: ["hasPreviewFile", "title", "subtitle", "styleClass", "dirtyCheck", "minWidth", "minHeight", "height", "width", "focusOnShow", "align", "isFormTable", "showPreview", "visible"], outputs: ["onTogglePreview", "visibleChange", "hide", "show"] }, { kind: "component", type: i11.OrganizationComponent, selector: "eo-organization", inputs: ["removeCurrentUser", "situation", "multiselect", "readonly", "dataMeta", "placeholder", "exceptions", "filterObject"], outputs: ["onValueResolved", "onDataMetaChanged"] }, { kind: "component", type: i12.CheckboxComponent, selector: "eo-checkbox", inputs: ["required", "tristate", "readonly"] }, { kind: "component", type: i13.ChangePasswordFormComponent, selector: "eo-change-password-form", inputs: ["userRegex"], outputs: ["onFormSumbit"] }, { kind: "component", type: i14.PermissionsComponent, selector: "eo-permissions", inputs: ["roles"] }, { kind: "component", type: i15.SimpleAccordionComponent, selector: "eo-simple-accordion", inputs: ["header", "item", "styles", "headerClass", "selected"], outputs: ["selectChange"] }, { kind: "pipe", type: i5.AsyncPipe, name: "async" }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }] }); }
254
272
  };
255
273
  SettingsComponent = __decorate([
256
274
  UntilDestroy()
@@ -258,7 +276,7 @@ SettingsComponent = __decorate([
258
276
  export { SettingsComponent };
259
277
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImport: i0, type: SettingsComponent, decorators: [{
260
278
  type: Component,
261
- args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"$event.target.value=null\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
279
+ args: [{ selector: 'eo-settings', template: "<div class=\"eo-settings\" *ngIf=\"user\" eoRtlAware>\n\n <div class=\"header\">\n\n <div #headerBg class=\"bg\"></div>\n <div class=\"fill\">\n <div class=\"meta username\">{{user.name}}</div>\n <h1>{{user.firstname}} {{user.lastname}}</h1>\n <div class=\"meta email\">{{user.email}}</div>\n\n <div class=\"presence\" *ngIf=\"capabilities.inbox\">\n <button class=\"toggle dark present\" id=\"presence\" (click)=\"setPresence(true)\" [ngClass]=\"{active: user.present}\"\n translate>eo.state.settings.presence.present</button>\n <button class=\"toggle dark absent\" (click)=\"setPresence(false)\" (keydown.tab)=\"tabAction($event.target)\" [ngClass]=\"{active: !user.present}\"\n translate>eo.state.settings.presence.absent</button>\n </div>\n </div>\n <div (mouseenter)=\"mouseEnter()\" (mouseleave)=\"mouseLeave()\" (keydown.tab)=\"mouseEnter()\">\n\n <eo-user-avatar #userAvatar class=\"userImage\" tabindex=\"-1\" eoRtlAware=\"full\">\n <input type=\"file\" accept=\".jpg, .png\" style=\"display:none;\" #files (change)=\"selectImage($event.target)\" (click)=\"resetImageTarget($event)\">\n </eo-user-avatar>\n <eo-dialog [styleClass]=\"'view'\" [minWidth]=\"'300px'\" [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\"\n [(visible)]=\"showPreviewDialog\" [focusOnShow]=\"false\">\n <ng-container>\n <div class=\"contain\">\n <div class=\"attachments\">\n <div class=\"atta\">\n <img loading=\"lazy\" [src]=\"preview\">\n </div>\n <div class=\"user-avatar\" *ngIf=\"preview\">\n <eo-user-avatar class=\"preview-round\" [previewUri]=\"preview\"></eo-user-avatar>\n </div>\n </div>\n </div>\n <div class=\"button-block\">\n <button type=\"button\" (click)=\"closePreviewDialog()\" class=\"button danger\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"uploadNewUserImage()\" class=\"button primary\"\n translate>eo.state.settings.details.dialog.save</button>\n </div>\n </ng-container>\n </eo-dialog>\n\n <div class=\"overlay\" #profileImageOverlay tabindex=\"0\" eoRtlAware=\"full\">\n <span class=\"updateMessage\" *ngIf=\"hoverSelector\">\n <eo-icon tabindex=\"0\" (keydown.enter)=\"files.click()\" [iconSrc]=\"'assets/_default/svg/ic_edit.svg'\"\n (click)=\"files.click()\"></eo-icon>\n <eo-icon tabindex=\"0\" (keydown.enter)=\"trashIconClick()\" *ngIf=\"showDeleteIconTrash\"\n [iconSrc]=\"'assets/_default/svg/ic_trash.svg'\" aria-disabled=\"true\" (click)=\"trashIconClick()\"></eo-icon>\n </span>\n </div>\n </div>\n\n </div>\n\n <div class=\"body\" (keydown.tab)=\"tabAction($event.target)\">\n\n <div class=\"body-wrap\">\n\n <div class=\"section section-deputies\" *ngIf=\"capabilities.bpm && hasPrivilege('MANAGE_DEPUTY_LIST')\">\n <h3 translate>eo.state.settings.deputies</h3>\n\n <!-- deputies -->\n <div class=\"entry deputies\">\n <div class=\"label\" translate>eo.state.settings.deputies.label</div>\n <div class=\"values\">\n <form #deputiesForm=\"ngForm\" [ngClass]=\"{dirty: deputiesForm.dirty}\">\n <eo-organization name=\"deputies\" [dataMeta]=\"deputies.dataMeta\" [filterObject]=\"{type: 'USER'}\"\n [exceptions]=\"[user.name]\" [multiselect]=\"true\" tabindex=\"0\" [(ngModel)]=\"deputies.data\"></eo-organization>\n <div class=\"actions\" *ngIf=\"deputiesForm.valid && deputiesForm.dirty\">\n <button class=\"secondary\" (click)=\"resetDeputies()\" translate>eo.cta.button.cancel</button>\n <button class=\"primary\" (click)=\"saveDeputies()\" translate>eo.state.settings.deputies.save</button>\n </div>\n </form>\n </div>\n </div>\n\n <!-- substitute of -->\n <div class=\"entry substitute\">\n <div class=\"label\" translate>eo.state.settings.deputies.subsituteof.label</div>\n <div class=\"values\">\n <span class=\"chip\" *ngFor=\"let sub of user.substitutesOf\" [ngClass]=\"{present: sub.present}\">\n <eo-icon class=\"chip substitute substitute--present\" *ngIf=\"sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_done.svg'\"></eo-icon>\n <eo-icon class=\"chip substitute substitute--away\" *ngIf=\"!sub.present\"\n [iconSrc]=\"'assets/_default/svg/ic_clear.svg'\"></eo-icon>\n <span>{{sub.title}} ({{sub.name}})</span>\n </span>\n </div>\n </div>\n </div>\n\n <!-- password -->\n <section class=\"section section-password\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.password.reset</div>\n <div class=\"values\">\n <eo-simple-accordion #simpleAcc [header]=\"('eo.password.reset' | translate)\"\n [styles]=\"'setting__change-password'\" [headerClass]=\"'setting__change-password-header'\">\n\n <eo-change-password-form (onFormSumbit)=\"simpleAcc.selected = false\"></eo-change-password-form>\n </eo-simple-accordion>\n </div>\n </div>\n </section>\n\n <!-- language -->\n <div class=\"section section-lang\">\n <h3 translate>eo.state.settings.language</h3>\n <div class=\"entry lang-app\">\n <div class=\"label\" translate>eo.state.settings.language.client</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeClientLocale(locale.iso)\"\n [ngClass]=\"{active: translate.currentLang === locale.iso}\"\n *ngFor=\"let locale of clientLocales\">{{locale.label}}\n </button>\n </div>\n </div>\n\n <div class=\"entry lang-def\">\n <div class=\"label\" translate>eo.state.settings.language.schema</div>\n <div class=\"values\">\n <button class=\"toggle\" (click)=\"changeSchemaLocale(locale.code)\"\n [ngClass]=\"{active: activeSchema === locale.code}\"\n *ngFor=\"let locale of schemaLocales\">{{locale.displayname}}</button>\n </div>\n </div>\n </div>\n\n <!-- permissions -->\n <div class=\"section section-perm\">\n <h3 translate>eo.state.settings.permission</h3>\n <div class=\"entry perm-roles\">\n <div class=\"label\" translate>eo.state.settings.roles</div>\n <div class=\"values roles\">\n <eo-simple-accordion [header]=\"('eo.state.settings.roles' | translate)\">\n <eo-permissions [roles]=\"user.roles\"></eo-permissions>\n </eo-simple-accordion>\n </div>\n </div>\n </div>\n\n <!-- agent -->\n <div class=\"section section-others\">\n <h3 translate>eo.state.settings.others</h3>\n <ng-container *ngIf=\"showAgentConfig\">\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.agent</div>\n <div class=\"values\">\n <div class=\"use-agent\">\n <eo-checkbox [formControl]=\"useAgentControl\" [readonly]=\"useAgentControl.disabled\"\n *ngIf=\"useAgentControl\"></eo-checkbox>\n <span class=\"use-agent-label\" translate>eo.state.settings.agent.use</span>\n <!-- <a href=\"https://help.optimal-systems.com/yuuvisRAD/v60/user/client/de/client/integration/cln_tsk_agent_global.htm?Highlight=agent\">\n <eo-icon class=\"info-icon\" [iconSrc]=\"'assets/_default/svg/ic_info.svg'\"></eo-icon>\n </a> -->\n </div>\n </div>\n </div>\n\n\n <div class=\"entry lock-settings\" [ngClass]=\"{'lock-settings--show': (agentStatus | async)}\">\n <div class=\"label\" translate>eo.state.settings.lock</div>\n <div class=\"values\">\n <button class=\"toggle button-enabled\" (click)=\"changeLockSettings(LockSettings.always)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.always}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.enable</button>\n <button class=\"toggle button-disabled\" (click)=\"changeLockSettings(LockSettings.never)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.never}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.disable</button>\n <button class=\"toggle button-ask\" (click)=\"changeLockSettings(LockSettings.ask)\"\n [ngClass]=\"{active: agentLockSettings === LockSettings.ask}\" [disabled]=\"defaultLockSetting\"\n translate>eo.state.settings.lock.ask</button>\n </div>\n </div>\n\n\n </ng-container>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.localSettings</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"saveLocalSettings()\">eo.state.settings.localSettings.save</button>\n <button translate (click)=\"loadLocalSettings()\">eo.state.settings.localSettings.load</button>\n <button translate (click)=\"clearLocalSettings()\">eo.state.settings.localSettings.clear</button>\n </div>\n </div>\n </div>\n <div class=\"entry\">\n <div class=\"label\" translate>eo.state.settings.dashboard.defaut</div>\n <div class=\"values\">\n <div class=\"flex-row\">\n <button translate (click)=\"deleteConfigDashboard = true\">eo.state.settings.dashboard.button.clear</button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <eo-dialog [title]=\"'eo.state.settings.dashboard.default.dialog.title' | translate\" [(visible)]=\"deleteConfigDashboard\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.dashboard.default.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"deleteConfigDashboard = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"defaultDashboard(); deleteConfigDashboard = false\" class=\"button primary\"\n translate>eo.state.settings.dashboard.button.reset</button>\n </div>\n</eo-dialog>\n <eo-dialog [title]=\"'eo.state.settings.details.delete.dialog.title' | translate\" [(visible)]=\"showDeleteDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n <div>{{'eo.state.settings.details.delete.dialog.message' | translate}}</div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\" >\n <button type=\"button\" class=\"button cancel\" (click)=\"showDeleteDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial #confirmDeleteBtn (click)=\"deleteUserImage()\" class=\"button primary\"\n translate>eo.cta.button.delete</button>\n </div>\n </eo-dialog>\n\n <eo-dialog [title]=\"'eo.state.settings.details.upload.dialog.title' | translate\" [(visible)]=\"showErrorDialog\"\n [focusOnShow]=\"false\" [minWidth]=\"400\" [styleClass]=\"'delete__dialog'\">\n\n <div>\n <p>{{fileName}}</p>\n <p *ngIf=\"viewMode ==='size'\" translate>eo.state.settings.details.upload.dialog.sizeError</p>\n <p *ngIf=\"viewMode ==='image'\" translate>eo.state.settings.details.upload.dialog.fileError </p>\n </div>\n\n <div class=\"action-buttons image-delete--action-buttons flex-row\">\n <button type=\"button\" class=\"button cancel\" (click)=\"showErrorDialog = false\"\n translate>eo.cta.button.cancel</button>\n <button type=\"button\" cdkFocusInitial (click)=\"files.click(); showErrorDialog = false\" class=\"button primary\"\n translate>eo.state.settings.details.upload.dialog.back</button>\n </div>\n </eo-dialog>\n</div>\n", styles: [":host{position:absolute;inset:0;display:flex;flex-flow:row;justify-content:center}:host .cache{display:flex;flex-flow:row;margin:0 var(--app-pane-padding)}.eo-settings{margin:var(--app-pane-padding);box-sizing:border-box;width:800px;background:var(--color-white);display:flex;flex-flow:column;box-shadow:0 2px 5px #0003}@media screen and (max-width: 832px){.eo-settings{margin:0;min-width:inherit;width:100%}}.eo-settings .header{min-height:200px;max-height:300px;position:relative;flex:1 1}@media screen and (max-width: 480px){.eo-settings .header{min-height:210px}}.eo-settings .header h1{margin:0;padding:0;font-size:var(--font-display);font-weight:var(--font-weight-light);line-height:1em}.eo-settings .header .meta{margin:calc(var(--app-pane-padding) / 2) 0}.eo-settings .header .presence{margin-top:calc(var(--app-pane-padding) * 2)}.eo-settings .header .bg{position:absolute;inset:0;background-size:cover;background-position:center center;filter:grayscale(1)}.eo-settings .header .fill{position:absolute;inset:0;background:rgba(var(--color-primary-rgb),.85);color:var(--color-white);padding:var(--app-pane-padding)}.eo-settings .header .userImage{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);background-size:cover;width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .userImage{width:105px;height:105px}}.eo-settings .header .userImage.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay{position:absolute;z-index:1;right:var(--app-pane-padding);bottom:calc(var(--app-pane-padding) * -1);width:150px;height:150px;border:4px solid var(--color-white);box-shadow:0 2px 5px rgba(var(--color-black-rgb),.26)}@media screen and (max-width: 480px){.eo-settings .header .overlay{width:105px;height:105px}}.eo-settings .header .overlay.rtl{left:var(--app-pane-padding);right:auto}.eo-settings .header .overlay:focus{border-color:var(--color-accent);opacity:2}.eo-settings .header .overlay:hover{border-color:var(--color-accent);opacity:100}.eo-settings .header .overlay .updateMessage{box-sizing:border-box;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:#c0bcbcf1;background-clip:border-box}.eo-settings .header .overlay .updateMessage eo-icon{color:var(--color-white);width:48px;height:48px;opacity:.5;transition:all var(--app-default-transition-duration) ease-in-out;-webkit-transition:all var(--app-default-transition-duration) ease-in-out;-moz-transition:all var(--app-default-transition-duration) ease-in-out;-o-transition:all var(--app-default-transition-duration) ease-in-out}.eo-settings .header .overlay .updateMessage eo-icon:focus,.eo-settings .header .overlay .updateMessage eo-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body{flex:1 1 auto;position:relative}.eo-settings .body .body-wrap{padding:var(--app-pane-padding);box-sizing:border-box;position:absolute;inset:0;overflow-y:auto;overflow-x:hidden}.eo-settings .body .section{margin-top:var(--app-pane-padding)}.eo-settings .body .section.section-deputies form{border-radius:2px}.eo-settings .body .section.section-deputies form .actions{display:flex;justify-content:flex-end;padding-top:calc(var(--app-pane-padding) / 4)}.eo-settings .body .section.section-deputies form .actions button{padding:calc(var(--app-pane-padding) / 4) calc(var(--app-pane-padding) / 2);border-radius:2px}.eo-settings .body .section.section-deputies form.dirty{padding:2px;background-color:rgba(var(--color-black-rgb),.06)}.eo-settings .body .section.section-deputies .entry.deputies .values{padding:0 2px;border:1px solid var(--eo-chips-border-color);border-radius:2px}.eo-settings .body .section.section-deputies .entry.substitute .values{display:flex;flex-flow:row wrap}.eo-settings .body .section.section-deputies .entry.substitute .values .chip{display:flex;align-items:center;font-size:.9em;padding:2px 4px}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute{width:calc(var(--app-pane-padding) * .75);height:calc(var(--app-pane-padding) * .6);border-radius:4px;border:0;color:var(--color-white)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--present{background-color:var(--color-success)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip .substitute--away{background-color:var(--color-error)}.eo-settings .body .section.section-deputies .entry.substitute .values .chip>span{margin:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-default{background-color:var(--color-white);border-color:rgba(var(--color-black-rgb),.1);border-radius:2px;padding:0 0 2px 2px;min-height:27px}.eo-settings .body .section.section-deputies ::ng-deep .values .ui-state-disabled{opacity:1;border-color:transparent}.eo-settings .body .section p{line-height:1.7em}.eo-settings .body .section h3{margin:0;padding:0 0 0 150px;color:var(--text-color-caption);font-weight:var(--font-weight-normal);font-size:var(--font-subhead)}@media screen and (max-width: 480px){.eo-settings .body .section h3{padding:0}}.eo-settings .body .section .entry{display:flex;flex-flow:row nowrap;padding:var(--app-pane-padding) 0 0 0}.eo-settings .body .section .entry.lock-settings{overflow:hidden;opacity:0;height:0;transition:all .5s ease-in-out}.eo-settings .body .section .entry.lock-settings--show{opacity:1;height:100%}@media screen and (max-width: 480px){.eo-settings .body .section .entry{flex-flow:column}}.eo-settings .body .section .entry .label{flex:0 0 150px;color:var(--text-color-caption)}@media screen and (max-width: 480px){.eo-settings .body .section .entry .label{margin-bottom:calc(var(--app-pane-padding) / 2);flex:0 0 auto}}.eo-settings .body .section .entry .values{flex:1 1 auto}.eo-settings .body .section .entry .values button{margin:0 4px 4px 0;cursor:pointer}.eo-settings .body .section .entry .values button.active{cursor:default}.eo-settings .body .section .entry .values button.toggle:disabled{cursor:default}.eo-settings .body .section .entry .use-agent{display:flex;align-items:center}.eo-settings .body .section .entry .use-agent .use-agent-label{margin:0 calc(var(--app-pane-padding) / 2);color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon{margin:0;padding:3px;box-sizing:border-box;border-radius:50%;color:var(--text-color-caption)}.eo-settings .body .section .entry .use-agent eo-icon.info-icon:hover{background-color:var(--color-primary);color:var(--color-white);cursor:pointer}.eo-settings .body .section .values.roles{display:flex;flex-flow:column;align-items:flex-start}.eo-settings .body .section .values.roles .role{display:flex;flex-flow:row nowrap;margin-bottom:calc(var(--app-pane-padding) / 2);word-break:break-all}.eo-settings .body .section .values.roles .role eo-icon{width:18px;height:18px;color:var(--text-color-hint)}.eo-settings .body .section .values.roles .role>div{padding:0 calc(var(--app-pane-padding) / 2)}.eo-settings .body .section .values.roles .role>div .description{font-size:var(--font-caption);color:var(--text-color-caption)}.eo-settings .body .toggle-btn{display:inline-block;padding:2px 5px;border-radius:2px;-webkit-border-radius:2px;background:rgba(var(--color-black-rgb),.1);color:var(--text-color-caption);cursor:pointer;margin-right:3px;text-decoration:none}.eo-settings.rtl .header .userImage{right:auto;left:var(--app-pane-padding)}.eo-settings.rtl .body .section h3{padding:0 150px 0 0}::ng-deep .view{width:100%;height:100%}::ng-deep .view .eo-dialog-content{overflow:hidden}::ng-deep .view .contain{display:flex;flex-flow:column}@media screen and (max-width: 480px){::ng-deep .view .contain{min-height:210px}}::ng-deep .view .contain .attachments{width:100%;height:100%;display:flex;align-items:center;justify-content:space-around;margin:5px 60px 0}::ng-deep .view .contain .attachments .atta{position:relative;display:block;padding:0;margin-inline:10px;margin-top:10px}::ng-deep .view .contain .attachments .atta img{max-width:200px;max-height:200px;min-width:80px;min-height:80px;border:2px solid #5c5959;box-sizing:border-box}::ng-deep .view .contain .attachments .user-avatar{display:flex;margin-right:109px;align-items:center}::ng-deep .view .contain .attachments .user-avatar .preview-round{width:90px;height:90px;border-radius:50%;border:2px solid #5c5959}::ng-deep .view .button-block{display:flex;margin:8px;justify-content:right}::ng-deep .delete__dialog{padding:8px;min-height:unset!important}::ng-deep .delete__dialog--header{font-size:1.17em!important;font-weight:400!important;color:rgba(var(--color-black-rgb),.54)!important;padding:0 0 1em!important;margin:0;background:#fff!important}\n"] }]
262
280
  }], ctorParameters: () => [{ type: i0.Renderer2 }, { type: i1.UserService }, { type: i1.Config }, { type: i1.NotificationsService }, { type: i1.SystemService }, { type: i1.EventService }, { type: i1.CapabilitiesService }, { type: i2.PageTitleService }, { type: i3.AgentService }, { type: i4.UntypedFormBuilder }, { type: i1.AppCacheService }, { type: i1.LocalStorageService }, { type: i1.TranslateService }, { type: i0.ElementRef }, { type: i1.NotificationsService }], propDecorators: { files: [{
263
281
  type: ViewChild,
264
282
  args: ['files']
@@ -278,4 +296,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.4", ngImpor
278
296
  type: ViewChild,
279
297
  args: [NgForm]
280
298
  }] } });
281
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUF5QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLE1BQU0sRUFBeUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBS0wsVUFBVSxFQVFWLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRzFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPakQsSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUF1QzVCLFlBQW9CLFFBQW1CLEVBQzlCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDYixNQUE0QixFQUM1QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsWUFBOEIsRUFDOUIsWUFBMEIsRUFDMUIsRUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FBbUMsRUFDcEMsU0FBMkIsRUFDMUIsT0FBbUIsRUFDbkIsWUFBa0M7UUFkeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUM5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QVM7dUJBQUMsT0FBTztnQkFDSyxRQUFRO3NCQUE5QixTQUFTO3VCQUFDLFVBQVU7Z0JBQ0ksVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUNRLGdCQUFnQjtzQkFBOUMsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBQ0ssbUJBQW1CO3NCQUFwRCxTQUFTO3VCQUFDLHFCQUFxQjtnQkFDYixZQUFZO3NCQUE5QixTQUFTO3VCQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0Zvcm0sIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBcHBDYWNoZVNlcnZpY2UsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBFbmFpb0V2ZW50LFxuICBFb1VzZXIsXG4gIEV2ZW50U2VydmljZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBVdGlsc1xufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBmb3JrSm9pbiwgZmlyc3RWYWx1ZUZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2UsIGFnZW50Q29uZmlnS2V5c30gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5pbXBvcnQge1VzZXJBdmF0YXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91aS91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2NrU2V0dGluZ3N9IGZyb20gJy4vYWdlbnQtbG9jay1zZXR0aW5ncy5lbnVtJztcbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZW8tc2V0dGluZ3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFNldHRpbmdzQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG5cbiAgdXNlcjogRW9Vc2VyO1xuICBjYXBhYmlsaXRpZXM6IENhcGFiaWxpdGllcztcbiAgZGVwdXRpZXM6IHtcbiAgICBkYXRhOiBzdHJpbmdbXSxcbiAgICBkYXRhTWV0YTogYW55W11cbiAgfTtcbiAgc2hvd0NoYW5nZVBhc3N3b3JkRm9ybTogYm9vbGVhbjtcbiAgY2xpZW50TG9jYWxlczogYW55O1xuICBzY2hlbWFMb2NhbGVzOiBhbnlbXTtcbiAgcHVibGljIExvY2tTZXR0aW5ncyA9IExvY2tTZXR0aW5ncztcbiAgYWdlbnRMb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncztcbiAgdXNlQWdlbnRDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2w7XG4gIHNob3dBZ2VudENvbmZpZyA9IHRydWU7XG4gIGRlZmF1bHRMb2NrU2V0dGluZyA9IGZhbHNlO1xuXG4gIHVzZXIkID0gdGhpcy51c2VyU2VydmljZS51c2VyJDtcbiAgdXNlcklkID0gJyc7XG4gIHNob3dEZWxldGVJY29uVHJhc2ggPSB0cnVlO1xuICB1c2VySW1hZ2VVcmkgPSAnJztcbiAgcHJldmlldzogc3RyaW5nO1xuICBmaWxlOiBhbnk7XG4gIGhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgc2hvd1ByZXZpZXdEaWFsb2cgPSBmYWxzZTtcbiAgc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBzaG93RXJyb3JEaWFsb2cgPSBmYWxzZTtcbiAgTUFYX0ZJTEVfU0laRSA9IDUyNDI4ODtcbiAgdmlld01vZGUgPSAnJztcbiAgZmlsZU5hbWU6IHN0cmluZztcbiAgZGVsZXRlQ29uZmlnRGFzaGJvYXJkOiBib29sZWFuO1xuXG4gIEBWaWV3Q2hpbGQoJ2ZpbGVzJykgZmlsZXM6IEVsZW1lbnRSZWYgPSB7fSBhcyBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdoZWFkZXJCZycpIGhlYWRlckJnO1xuICBAVmlld0NoaWxkKCd1c2VyQXZhdGFyJykgdXNlckF2YXRhcjogVXNlckF2YXRhckNvbXBvbmVudDtcbiAgQFZpZXdDaGlsZCgnY29uZmlybURlbGV0ZUJ0bicpIGNvbmZpcm1EZWxldGVCdG46IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3Byb2ZpbGVJbWFnZU92ZXJsYXknKSBwcm9maWxlSW1hZ2VPdmVybGF5OiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKE5nRm9ybSkgZGVwdXRpZXNGb3JtOiBOZ0Zvcm07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXG4gICAgcHVibGljIGNvbmZpZzogQ29uZmlnLFxuICAgIHByaXZhdGUgbm90aWZ5OiBOb3RpZmljYXRpb25zU2VydmljZSxcbiAgICBwcml2YXRlIHN5c3RlbVNlcnZpY2U6IFN5c3RlbVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBldmVudFNlcnZpY2U6IEV2ZW50U2VydmljZSxcbiAgICBwcml2YXRlIGNhcGFiaWxpdGllc1NlcnZpY2U6IENhcGFiaWxpdGllc1NlcnZpY2UsXG4gICAgcHJpdmF0ZSB0aXRsZVNlcnZpY2U6IFBhZ2VUaXRsZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZ2VudFNlcnZpY2U6IEFnZW50U2VydmljZSxcbiAgICBwcml2YXRlIGZiOiBVbnR5cGVkRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBjYWNoZVNlcnZpY2U6IEFwcENhY2hlU2VydmljZSxcbiAgICBwcml2YXRlIHN0b3JhZ2VTZXJ2aWNlOiBMb2NhbFN0b3JhZ2VTZXJ2aWNlLFxuICAgIHB1YmxpYyB0cmFuc2xhdGU6IFRyYW5zbGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbGVtUmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uOiBOb3RpZmljYXRpb25zU2VydmljZSkge1xuICAgIHRoaXMudGl0bGVTZXJ2aWNlLnNldEJhc2VUaXRsZSh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5iYXIuYnV0dG9uLnNldHRpbmdzLnRpdGxlJykpO1xuICAgIHRoaXMuY2xpZW50TG9jYWxlcyA9IGNvbmZpZy5nZXRDbGllbnRMb2NhbGVzKCk7XG4gICAgdGhpcy5jYXBhYmlsaXRpZXMgPSB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCk7XG4gICAgdGhpcy5nZXRTY2hlbWFMb2NhbGVzKCk7XG4gICAgdGhpcy5nZXRVc2VyRGF0YSgpO1xuICAgIHRoaXMuYWdlbnRMb2NrU2V0dGluZ3MgPSB1c2VyU2VydmljZS5nZXRDdXJyZW50VXNlcigpLnVzZXJTZXR0aW5ncy5hbHdheXNsb2NrO1xuICAgIHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkJC5waXBlKHRha2UoMSksIHdpdGhMYXRlc3RGcm9tKHRoaXMuYWdlbnRTZXJ2aWNlLmFnZW50Q29uZmlnJCkpLnN1YnNjcmliZSgoW2lzQ29ubmVjdGVkLCBjb25maWddKSA9PiB7XG4gICAgICB0aGlzLnVzZUFnZW50Q29udHJvbCA9IHRoaXMuZmIuY29udHJvbChpc0Nvbm5lY3RlZCk7XG4gICAgICBpZiAoY29uZmlnLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVCkpIHtcbiAgICAgICAgdGhpcy5zaG93QWdlbnRDb25maWcgPSBjb25maWdbYWdlbnRDb25maWdLZXlzLkFVVE9DT05ORUNUXTtcbiAgICAgICAgdGhpcy51c2VBZ2VudENvbnRyb2wuZGlzYWJsZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGNvbmZpZy5oYXNPd25Qcm9wZXJ0eShhZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTKSAmJiBPYmplY3QudmFsdWVzKExvY2tTZXR0aW5ncykuaW5jbHVkZXMoY29uZmlnW2FnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1NdKSkge1xuICAgICAgICB0aGlzLmRlZmF1bHRMb2NrU2V0dGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuYWdlbnRMb2NrU2V0dGluZ3MgPSBjb25maWdbYWdlbnRDb25maWdLZXlzLkxPQ0tTRVRUSU5HU107XG4gICAgICB9XG4gICAgICB0aGlzLnVzZUFnZW50Q29udHJvbC52YWx1ZUNoYW5nZXMucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCgpID0+IHRoaXMuYWdlbnRTZXJ2aWNlLmlzQ29ubmVjdGVkID0gdGhpcy51c2VBZ2VudENvbnRyb2wudmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGFnZW50U3RhdHVzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQ7XG4gIH1cblxuICBnZXQgYWN0aXZlU2NoZW1hKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuZ2V0U2NoZW1hTG9jYWxlKCk7XG4gIH1cblxuICBoYXNQcml2aWxlZ2UocHJpdmlsZWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5oYXNQcml2aWxlZ2UocHJpdmlsZWdlKTtcbiAgfVxuXG4gIGNoYW5nZUxvY2tTZXR0aW5ncyhsb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncykge1xuICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlTG9ja1NldHRpbmcobG9ja1NldHRpbmdzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IGxvY2tTZXR0aW5ncyk7XG4gIH1cblxuICBnZXRTY2hlbWFMb2NhbGVzKCkge1xuICAgIHRoaXMuc3lzdGVtU2VydmljZS5zeXN0ZW0kLnN1YnNjcmliZSgoc3lzdGVtRGVmaW5pdGlvbikgPT4ge1xuICAgICAgdGhpcy5zY2hlbWFMb2NhbGVzID0gc3lzdGVtRGVmaW5pdGlvbi5sb2NhbGVzLnNvcnQoVXRpbHMuc29ydFZhbHVlcygnZGlzcGxheW5hbWUnKSk7XG4gICAgfSk7XG4gIH1cblxuICBzYXZlRGVwdXRpZXMoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXREZXB1dGllcyh0aGlzLmRlcHV0aWVzLmRhdGEpXG4gICAgICAuc3Vic2NyaWJlKHJlcyA9PiB0aGlzLmRlcHV0aWVzRm9ybS5yZXNldEZvcm0oe2RlcHV0aWVzOiB0aGlzLmRlcHV0aWVzLmRhdGF9KSk7XG4gIH1cblxuICByZXNldERlcHV0aWVzKCkge1xuICAgIHRoaXMuZGVwdXRpZXNGb3JtLnJlc2V0Rm9ybSh7ZGVwdXRpZXM6IHRoaXMudXNlci5kZXB1dGllcy5tYXAoZCA9PiBkLm5hbWUpfSk7XG4gIH1cblxuICBnZXRVc2VyRGF0YSgpIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnVzZXIkLnN1YnNjcmliZSgodXNlcikgPT4ge1xuICAgICAgLy8gdGhpcy51c2VyID0gT2JqZWN0LmFzc2lnbih1c2VyLCB7Y2FwYWJpbGl0aWVzOiB0aGlzLmNhcGFiaWxpdGllc1NlcnZpY2UuZ2V0Q2FwYWJpbGl0aWVzKCl9KTtcbiAgICAgIHRoaXMudXNlciA9IHVzZXI7XG4gICAgICAvLyBkZXB1dGllc1xuICAgICAgdGhpcy5kZXB1dGllcyA9IHtcbiAgICAgICAgZGF0YTogdGhpcy51c2VyLmRlcHV0aWVzLm1hcChkID0+IGQubmFtZSksXG4gICAgICAgIGRhdGFNZXRhOiB0aGlzLnVzZXIuZGVwdXRpZXNcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBjYW5jZWwoKTogdm9pZCB7XG4gICAgdGhpcy5zaG93Q2hhbmdlUGFzc3dvcmRGb3JtID0gZmFsc2U7XG4gIH1cblxuICBjaGFuZ2VDbGllbnRMb2NhbGUoaXNvOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5jb25maWcuZ2V0U3VwcG9ydGVkQ2xpZW50TG9jYWxlcygpLmluY2x1ZGVzKGlzbykpIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlQ2xpZW50TG9jYWxlKGlzbyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubm90aWZ5LmVycm9yKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlLmVycm9yJykpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVNjaGVtYUxvY2FsZShpc286IHN0cmluZykge1xuICAgIGlmICh0aGlzLnVzZXIuc2NoZW1hTG9jYWxlICE9PSBpc28pIHtcbiAgICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlU2NoZW1hTG9jYWxlKGlzbykuc3Vic2NyaWJlKFxuICAgICAgICBfID0+IFV0aWxzLnRocm93KG51bGwsXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXNlci5zZXJ2aWNlLnNjaGVtYS5sb2NhbGUuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51c2VyLnNlcnZpY2Uuc2NoZW1hLmxvY2FsZS5lcnJvci5kZXNjcmlwdGlvbicpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5lbGVtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3ByZXNlbmNlJykuZm9jdXMoKTtcbiAgICB0aGlzLnVzZXIkLnN1YnNjcmliZSh1c2VyID0+IHtcbiAgICAgIHRoaXMudXNlcklkID0gdXNlci5pZDtcbiAgICAgIHRoaXMudXNlckltYWdlVXJpID0gdGhpcy51c2VyU2VydmljZS5nZXRVc2VySW1hZ2VVcmkodGhpcy51c2VySWQpO1xuICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSAhIXVzZXIuaW1hZ2VVcmk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRQcmVzZW5jZShiOiBib29sZWFuKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5zZXRQcmVzZW5jZShiKVxuICAgICAgLnN1YnNjcmliZShfID0+IHtcbiAgICAgIH0sIFV0aWxzLnRocm93KG51bGwsXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmVycm9yLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmVycm9yLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgICk7XG4gIH1cbiAgY2xvc2VQcmV2aWV3RGlhbG9nKCkge1xuICAgIHRoaXMuc2hvd1ByZXZpZXdEaWFsb2cgPSBmYWxzZTtcbiAgICB0aGlzLnByb2ZpbGVJbWFnZU92ZXJsYXkubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgZGVsZXRlVXNlckltYWdlKCkge1xuICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgIC5zZXRVc2VySW1hZ2UobnVsbCkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQodGhpcy51c2VySW1hZ2VVcmkpO1xuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX0lNQUdFX0NIQU5HRSk7XG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlRGlhbG9nID0gZmFsc2U7XG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlSWNvblRyYXNoID0gZmFsc2U7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5ub3RpZmljYXRpb24uZXJyb3IoJycsIGVyci5lcnJvci5jYXVzZS5tZXNzYWdlc1swXSk7XG4gICAgICAgICAgdGhpcy5maWxlID0gbnVsbDtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLnRpdGxlJyk7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci5kZXNjcmlwdGlvbicpO1xuICAgICAgICB9LFxuXG4gICAgICB9KTtcblxuICB9XG5cbiAgc2VsZWN0SW1hZ2UoZXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLmZpbGUgPSBldmVudC5maWxlc1swXTtcbiAgICBpZiAodGhpcy5maWxlKSB7XG4gICAgICB0aGlzLmZpbGVOYW1lID0gdGhpcy5maWxlLm5hbWU7XG4gICAgICBzd2l0Y2ggKGZhbHNlKSB7XG5cbiAgICAgICAgY2FzZSAodGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJ2ltYWdlLycpICYmIHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdqcGVnJykgfHwgdGhpcy5maWxlLnR5cGUuaW5jbHVkZXMoJ3BuZycpKTpcbiAgICAgICAgICB0aGlzLnZpZXdNb2RlID0gJ2ltYWdlJztcbiAgICAgICAgICB0aGlzLnNob3dFcnJvckRpYWxvZyA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAodGhpcy5maWxlLnNpemUgPD0gdGhpcy5NQVhfRklMRV9TSVpFKTpcbiAgICAgICAgICB0aGlzLnZpZXdNb2RlID0gJ3NpemUnO1xuICAgICAgICAgIHRoaXMuc2hvd0Vycm9yRGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBkZWZhdWx0OlxuXG4gICAgICAgICAgdGhpcy5wcmV2aWV3ID0gJyc7XG4gICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICAgICAgICByZWFkZXIub25sb2FkID0gKGU6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gZS50YXJnZXQucmVzdWx0O1xuICAgICAgICAgICAgdGhpcy5zaG93UHJldmlld0RpYWxvZyA9IHRydWU7XG4gICAgICAgICAgfTtcbiAgICAgICAgICByZWFkZXIucmVhZEFzRGF0YVVSTCh0aGlzLmZpbGUpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwbG9hZE5ld1VzZXJJbWFnZSgpIHtcblxuICAgIHRoaXMudXNlclNlcnZpY2VcbiAgICAgIC5zZXRVc2VySW1hZ2UodGhpcy5maWxlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5wcm9maWxlSW1hZ2VPdmVybGF5Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICB0aGlzLnJlZnJlc2hVc2VySW1hZ2VIZWFkZXJCYWNrZ3JvdW5kKHRoaXMudXNlckltYWdlVXJpKTtcbiAgICAgICAgICB0aGlzLmV2ZW50U2VydmljZS50cmlnZ2VyKEVuYWlvRXZlbnQuU1lTVEVNX1NUQVRVU19JTUFHRV9DSEFOR0UpO1xuICAgICAgICAgIHRoaXMuY2xvc2VQcmV2aWV3RGlhbG9nKCk7XG4gICAgICAgICAgdGhpcy5zaG93RGVsZXRlSWNvblRyYXNoID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcignJywgZXJyLmVycm9yLmNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKTtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJyk7XG4gICAgICAgIH0sXG4gIH0pO1xufVxuXG4gIHRhYkFjdGlvbihpbnB1dDogSFRNTElucHV0RWxlbWVudCkge1xuICAgIGlucHV0LmJsdXIoKTtcbiAgICB0aGlzLmhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuICBtb3VzZUVudGVyKCkge1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IHRydWU7XG4gIH1cbiAgbW91c2VMZWF2ZSgpIHtcbiAgICB0aGlzLmhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuICB0cmFzaEljb25DbGljaygpIHtcbiAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSB0cnVlO1xuICB9XG5cbiAgcmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQoaW1hZ2VVcmk6IHN0cmluZykge1xuICAgIGlmIChpbWFnZVVyaSkge1xuICAgICAgY29uc3QgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCkudG9TdHJpbmcoKTtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5oZWFkZXJCZy5uYXRpdmVFbGVtZW50LCAnYmFja2dyb3VuZC1pbWFnZScsIGB1cmwoJHtpbWFnZVVyaSArICcmdD0nICsgdGltZXN0YW1wfSlgKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckxvY2FsU2V0dGluZ3MoKSB7XG4gICAgY29uc3QgYWN0aW9ucyA9IFtcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLmNsZWFyKCksXG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmNsZWFyKCksXG4gICAgXS5maWx0ZXIoYSA9PiBhKTtcblxuICAgIHJldHVybiBhY3Rpb25zLmxlbmd0aCA/IGZvcmtKb2luKGFjdGlvbnMpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5ub3RpZnkuc3VjY2Vzcyh0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhci5zdWNjZXNzJykpO1xuICAgICAgICB0aGlzLnNhdmVMb2NhbFNldHRpbmdzKCk7XG4gICAgICB9LFxuICAgICAgKCkgPT4gdGhpcy5ub3RpZnkuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MuY2FjaGUuY2xlYXIuZXJyb3InKSlcbiAgICApICYmIHRydWUgOiBmYWxzZTtcbiAgfVxuXG4gIGFzeW5jIHNhdmVMb2NhbFNldHRpbmdzKCkge1xuICAgIGNvbnN0IGxvY2FsU2V0dGluZ3MgPSB0aGlzLnN0b3JhZ2VTZXJ2aWNlLmdldFN0b3JhZ2UoKTtcbiAgICBjb25zdCBjYWNoZVNldHRpbmdzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5jYWNoZVNlcnZpY2UuZ2V0U3RvcmFnZSgpKTtcbiAgICBkZWxldGUgY2FjaGVTZXR0aW5nc1snZW8uZnJhbWV3b3JrLmNhY2hlLnN5c3RlbWRlZmluaXRpb24nXTtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNhdmVMb2NhbFNldHRpbmdzKGxvY2FsU2V0dGluZ3MsIGNhY2hlU2V0dGluZ3MpLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgbG9hZExvY2FsU2V0dGluZ3MoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5sb2FkTG9jYWxTZXR0aW5ncygpLnN1YnNjcmliZShzZXR0aW5ncyA9PiB7XG4gICAgICB0aGlzLnN0b3JhZ2VTZXJ2aWNlLnNldFN0b3JhZ2Uoc2V0dGluZ3MubG9jYWxTZXR0aW5ncyk7XG4gICAgICB0aGlzLmNhY2hlU2VydmljZS5yZXBsYWNlU3RvcmFnZShzZXR0aW5ncy5jYWNoZVNldHRpbmdzKTtcbiAgICB9KTtcbiAgfVxuXG4gIGRlZmF1bHREYXNoYm9hcmQoKSB7XG4gICAgdGhpcy51c2VyU2VydmljZS5zYXZlQ2hhbmdlV29ya3NwYWNlKHVuZGVmaW5lZCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubm90aWZ5LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MuZGFzaGJvYXJkLmNsZWFyLnN1Y2Nlc3MnKSk7XG4gICAgICB0aGlzLnNhdmVMb2NhbFNldHRpbmdzKCkudGhlbigpO1xuICAgIH0pO1xuXG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1zZXR0aW5nc1wiICpuZ0lmPVwidXNlclwiIGVvUnRsQXdhcmU+XG5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuXG4gICAgPGRpdiAjaGVhZGVyQmcgY2xhc3M9XCJiZ1wiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmaWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YSB1c2VybmFtZVwiPnt7dXNlci5uYW1lfX08L2Rpdj5cbiAgICAgIDxoMT57e3VzZXIuZmlyc3RuYW1lfX0ge3t1c2VyLmxhc3RuYW1lfX08L2gxPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEgZW1haWxcIj57e3VzZXIuZW1haWx9fTwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicHJlc2VuY2VcIiAqbmdJZj1cImNhcGFiaWxpdGllcy5pbmJveFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGRhcmsgcHJlc2VudFwiIGlkPVwicHJlc2VuY2VcIiAoY2xpY2spPVwic2V0UHJlc2VuY2UodHJ1ZSlcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiB1c2VyLnByZXNlbnR9XCJcbiAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5wcmVzZW5jZS5wcmVzZW50PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgZGFyayBhYnNlbnRcIiAoY2xpY2spPVwic2V0UHJlc2VuY2UoZmFsc2UpXCIgKGtleWRvd24udGFiKT1cInRhYkFjdGlvbigkZXZlbnQudGFyZ2V0KVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6ICF1c2VyLnByZXNlbnR9XCJcbiAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuYWJzZW50PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoKVwiIChrZXlkb3duLnRhYik9XCJtb3VzZUVudGVyKClcIj5cblxuICAgICAgPGVvLXVzZXItYXZhdGFyICN1c2VyQXZhdGFyIGNsYXNzPVwidXNlckltYWdlXCIgdGFiaW5kZXg9XCItMVwiIGVvUnRsQXdhcmU9XCJmdWxsXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmpwZywgLnBuZ1wiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiICNmaWxlcyAoY2hhbmdlKT1cInNlbGVjdEltYWdlKCRldmVudC50YXJnZXQpXCIgKGNsaWNrKT1cIiRldmVudC50YXJnZXQudmFsdWU9bnVsbFwiPlxuICAgICAgPC9lby11c2VyLWF2YXRhcj5cbiAgICAgIDxlby1kaWFsb2cgIFtzdHlsZUNsYXNzXT1cIid2aWV3J1wiIFttaW5XaWR0aF09XCInMzAwcHgnXCIgW3RpdGxlXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgWyh2aXNpYmxlKV09XCJzaG93UHJldmlld0RpYWxvZ1wiIFtmb2N1c09uU2hvd109XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJwcmV2aWV3XCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1hdmF0YXJcIiAqbmdJZj1cInByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZW8tdXNlci1hdmF0YXIgY2xhc3M9XCJwcmV2aWV3LXJvdW5kXCIgW3ByZXZpZXdVcmldPVwicHJldmlld1wiPjwvZW8tdXNlci1hdmF0YXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ibG9ja1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUHJldmlld0RpYWxvZygpXCIgY2xhc3M9XCJidXR0b24gZGFuZ2VyXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cInVwbG9hZE5ld1VzZXJJbWFnZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRpYWxvZy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9lby1kaWFsb2c+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgI3Byb2ZpbGVJbWFnZU92ZXJsYXkgdGFiaW5kZXg9XCIwXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGRhdGVNZXNzYWdlXCIgKm5nSWY9XCJob3ZlclNlbGVjdG9yXCI+XG4gICAgICAgICAgPGVvLWljb24gdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwiZmlsZXMuY2xpY2soKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2VkaXQuc3ZnJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZmlsZXMuY2xpY2soKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJ0cmFzaEljb25DbGljaygpXCIgKm5nSWY9XCJzaG93RGVsZXRlSWNvblRyYXNoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIChjbGljayk9XCJ0cmFzaEljb25DbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJib2R5LXdyYXBcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1kZXB1dGllc1wiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLmJwbSAmJiBoYXNQcml2aWxlZ2UoJ01BTkFHRV9ERVBVVFlfTElTVCcpXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXM8L2gzPlxuXG4gICAgICAgIDwhLS0gZGVwdXRpZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBkZXB1dGllc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxmb3JtICNkZXB1dGllc0Zvcm09XCJuZ0Zvcm1cIiBbbmdDbGFzc109XCJ7ZGlydHk6IGRlcHV0aWVzRm9ybS5kaXJ0eX1cIj5cbiAgICAgICAgICAgICAgPGVvLW9yZ2FuaXphdGlvbiBuYW1lPVwiZGVwdXRpZXNcIiBbZGF0YU1ldGFdPVwiZGVwdXRpZXMuZGF0YU1ldGFcIiBbZmlsdGVyT2JqZWN0XT1cInt0eXBlOiAnVVNFUid9XCJcbiAgICAgICAgICAgICAgICBbZXhjZXB0aW9uc109XCJbdXNlci5uYW1lXVwiIFttdWx0aXNlbGVjdF09XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCIgWyhuZ01vZGVsKV09XCJkZXB1dGllcy5kYXRhXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCJkZXB1dGllc0Zvcm0udmFsaWQgJiYgZGVwdXRpZXNGb3JtLmRpcnR5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeVwiIChjbGljayk9XCJyZXNldERlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRGVwdXRpZXMoKVwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIHN1YnN0aXR1dGUgb2YgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBzdWJzdGl0dXRlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRlcHV0aWVzLnN1YnNpdHV0ZW9mLmxhYmVsPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHN1YiBvZiB1c2VyLnN1YnN0aXR1dGVzT2ZcIiBbbmdDbGFzc109XCJ7cHJlc2VudDogc3ViLnByZXNlbnR9XCI+XG4gICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiY2hpcCBzdWJzdGl0dXRlIHN1YnN0aXR1dGUtLXByZXNlbnRcIiAqbmdJZj1cInN1Yi5wcmVzZW50XCJcbiAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19kb25lLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiY2hpcCBzdWJzdGl0dXRlIHN1YnN0aXR1dGUtLWF3YXlcIiAqbmdJZj1cIiFzdWIucHJlc2VudFwiXG4gICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tzdWIudGl0bGV9fSAoe3tzdWIubmFtZX19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBwYXNzd29yZCAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLXBhc3N3b3JkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5wYXNzd29yZC5yZXNldDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uICNzaW1wbGVBY2MgW2hlYWRlcl09XCIoJ2VvLnBhc3N3b3JkLnJlc2V0JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGVzXT1cIidzZXR0aW5nX19jaGFuZ2UtcGFzc3dvcmQnXCIgW2hlYWRlckNsYXNzXT1cIidzZXR0aW5nX19jaGFuZ2UtcGFzc3dvcmQtaGVhZGVyJ1wiPlxuXG4gICAgICAgICAgICAgIDxlby1jaGFuZ2UtcGFzc3dvcmQtZm9ybSAob25Gb3JtU3VtYml0KT1cInNpbXBsZUFjYy5zZWxlY3RlZCA9IGZhbHNlXCI+PC9lby1jaGFuZ2UtcGFzc3dvcmQtZm9ybT5cbiAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gbGFuZ3VhZ2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLWxhbmdcIj5cbiAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZTwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsYW5nLWFwcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZS5jbGllbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlXCIgKGNsaWNrKT1cImNoYW5nZUNsaWVudExvY2FsZShsb2NhbGUuaXNvKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyA9PT0gbG9jYWxlLmlzb31cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbG9jYWxlIG9mIGNsaWVudExvY2FsZXNcIj57e2xvY2FsZS5sYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IGxhbmctZGVmXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlLnNjaGVtYTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGVcIiAoY2xpY2spPVwiY2hhbmdlU2NoZW1hTG9jYWxlKGxvY2FsZS5jb2RlKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFjdGl2ZVNjaGVtYSA9PT0gbG9jYWxlLmNvZGV9XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvY2FsZSBvZiBzY2hlbWFMb2NhbGVzXCI+e3tsb2NhbGUuZGlzcGxheW5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHBlcm1pc3Npb25zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1wZXJtXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucGVybWlzc2lvbjwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBwZXJtLXJvbGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnJvbGVzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlcyByb2xlc1wiPlxuICAgICAgICAgICAgPGVvLXNpbXBsZS1hY2NvcmRpb24gW2hlYWRlcl09XCIoJ2VvLnN0YXRlLnNldHRpbmdzLnJvbGVzJyB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgICAgICAgICAgPGVvLXBlcm1pc3Npb25zIFtyb2xlc109XCJ1c2VyLnJvbGVzXCI+PC9lby1wZXJtaXNzaW9ucz5cbiAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBhZ2VudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tb3RoZXJzXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3Mub3RoZXJzPC9oMz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBZ2VudENvbmZpZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmFnZW50PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2UtYWdlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZW8tY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cInVzZUFnZW50Q29udHJvbFwiIFtyZWFkb25seV09XCJ1c2VBZ2VudENvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VBZ2VudENvbnRyb2xcIj48L2VvLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlLWFnZW50LWxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmFnZW50LnVzZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJodHRwczovL2hlbHAub3B0aW1hbC1zeXN0ZW1zLmNvbS95dXV2aXNSQUQvdjYwL3VzZXIvY2xpZW50L2RlL2NsaWVudC9pbnRlZ3JhdGlvbi9jbG5fdHNrX2FnZW50X2dsb2JhbC5odG0/SGlnaGxpZ2h0PWFnZW50XCI+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJpbmZvLWljb25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19pbmZvLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgIDwvYT4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsb2NrLXNldHRpbmdzXCIgW25nQ2xhc3NdPVwieydsb2NrLXNldHRpbmdzLS1zaG93JzogKGFnZW50U3RhdHVzIHwgYXN5bmMpfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2s8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBidXR0b24tZW5hYmxlZFwiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLmFsd2F5cylcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MuYWx3YXlzfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmVuYWJsZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGJ1dHRvbi1kaXNhYmxlZFwiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLm5ldmVyKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogYWdlbnRMb2NrU2V0dGluZ3MgPT09IExvY2tTZXR0aW5ncy5uZXZlcn1cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5kaXNhYmxlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgYnV0dG9uLWFza1wiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLmFzaylcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MuYXNrfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmFzazwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2FsU2V0dGluZ3M8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cInNhdmVMb2NhbFNldHRpbmdzKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzLnNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cImxvYWRMb2NhbFNldHRpbmdzKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzLmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cImNsZWFyTG9jYWxTZXR0aW5ncygpXCI+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5ncy5jbGVhcjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGFzaGJvYXJkLmRlZmF1dDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRyYW5zbGF0ZSAoY2xpY2spPVwiZGVsZXRlQ29uZmlnRGFzaGJvYXJkID0gdHJ1ZVwiPmVvLnN0YXRlLnNldHRpbmdzLmRhc2hib2FyZC5idXR0b24uY2xlYXI8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRhc2hib2FyZC5kZWZhdWx0LmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cImRlbGV0ZUNvbmZpZ0Rhc2hib2FyZFwiXG4gIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZGVsZXRlX19kaWFsb2cnXCI+XG4gIDxkaXY+e3snZW8uc3RhdGUuc2V0dGluZ3MuZGFzaGJvYXJkLmRlZmF1bHQuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX08L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgaW1hZ2UtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiID5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwiZGVsZXRlQ29uZmlnRGFzaGJvYXJkID0gZmFsc2VcIlxuICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAjY29uZmlybURlbGV0ZUJ0biAoY2xpY2spPVwiZGVmYXVsdERhc2hib2FyZCgpOyBkZWxldGVDb25maWdEYXNoYm9hcmQgPSBmYWxzZVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRhc2hib2FyZC5idXR0b24ucmVzZXQ8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICAgIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZGVsZXRlX19kaWFsb2cnXCI+XG4gICAgPGRpdj57eydlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGltYWdlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIiA+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsICNjb25maXJtRGVsZXRlQnRuIChjbGljayk9XCJkZWxldGVVc2VySW1hZ2UoKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5kZWxldGU8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lby1kaWFsb2c+XG5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dFcnJvckRpYWxvZ1wiXG4gICAgW2ZvY3VzT25TaG93XT1cImZhbHNlXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidkZWxldGVfX2RpYWxvZydcIj5cblxuICAgIDxkaXY+XG4gICAgICA8cD57e2ZpbGVOYW1lfX08L3A+XG4gICAgICA8cCAqbmdJZj1cInZpZXdNb2RlID09PSdzaXplJ1wiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cuc2l6ZUVycm9yPC9wPlxuICAgICAgPHAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0naW1hZ2UnXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5maWxlRXJyb3IgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGltYWdlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RXJyb3JEaWFsb2cgPSBmYWxzZVwiXG4gICAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsIChjbGljayk9XCJmaWxlcy5jbGljaygpOyBzaG93RXJyb3JEaWFsb2cgPSBmYWxzZVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLmJhY2s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lby1kaWFsb2c+XG48L2Rpdj5cbiJdfQ==
299
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dGluZ3MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2FwcC9lby1jbGllbnQvc2V0dGluZ3Mvc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBZ0IsU0FBUyxFQUF5QixTQUFTLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFDLE1BQU0sRUFBeUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RSxPQUFPLEVBS0wsVUFBVSxFQVFWLEtBQUssRUFDTixNQUFNLGNBQWMsQ0FBQztBQUN0QixPQUFPLEVBQUMsWUFBWSxFQUFFLGNBQWMsRUFBQyxNQUFNLHVCQUF1QixDQUFDO0FBQ25FLE9BQU8sRUFBYSxRQUFRLEVBQUUsY0FBYyxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBQyxJQUFJLEVBQUUsY0FBYyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFlLGVBQWUsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBRzFGLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFTakQsSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFxQzVCLFlBQW9CLFFBQW1CLEVBQzlCLFdBQXdCLEVBQ3hCLE1BQWMsRUFDYixNQUE0QixFQUM1QixhQUE0QixFQUM1QixZQUEwQixFQUMxQixtQkFBd0MsRUFDeEMsWUFBOEIsRUFDOUIsWUFBMEIsRUFDMUIsRUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FBbUMsRUFDcEMsU0FBMkIsRUFDMUIsT0FBbUIsRUFDbkIsWUFBa0M7UUFkeEIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUM5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Y2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgUmVuZGVyZXIyLCBWaWV3Q2hpbGR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0Zvcm0sIFVudHlwZWRGb3JtQnVpbGRlciwgVW50eXBlZEZvcm1Db250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBBcHBDYWNoZVNlcnZpY2UsXG4gIENhcGFiaWxpdGllcyxcbiAgQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgQ29uZmlnLFxuICBFbmFpb0V2ZW50LFxuICBFb1VzZXIsXG4gIEV2ZW50U2VydmljZSxcbiAgTG9jYWxTdG9yYWdlU2VydmljZSxcbiAgTm90aWZpY2F0aW9uc1NlcnZpY2UsXG4gIFN5c3RlbVNlcnZpY2UsXG4gIFRyYW5zbGF0ZVNlcnZpY2UsXG4gIFVzZXJTZXJ2aWNlLFxuICBVdGlsc1xufSBmcm9tICdAZW8tc2RrL2NvcmUnO1xuaW1wb3J0IHtVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkfSBmcm9tICdAbmduZWF0L3VudGlsLWRlc3Ryb3knO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBmb3JrSm9pbiwgZmlyc3RWYWx1ZUZyb219IGZyb20gJ3J4anMnO1xuaW1wb3J0IHt0YWtlLCB3aXRoTGF0ZXN0RnJvbX0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtBZ2VudFNlcnZpY2UsIGFnZW50Q29uZmlnS2V5c30gZnJvbSAnLi4vLi4vZW8tZnJhbWV3b3JrLWNvcmUvYWdlbnQvYWdlbnQuc2VydmljZSc7XG5pbXBvcnQge1BhZ2VUaXRsZVNlcnZpY2V9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay1jb3JlL3RpdGxlL3BhZ2UtdGl0bGUuc2VydmljZSc7XG5pbXBvcnQge1VzZXJBdmF0YXJDb21wb25lbnR9IGZyb20gJy4uLy4uL2VvLWZyYW1ld29yay91aS91c2VyLWF2YXRhci91c2VyLWF2YXRhci5jb21wb25lbnQnO1xuaW1wb3J0IHtMb2NrU2V0dGluZ3N9IGZyb20gJy4vYWdlbnQtbG9jay1zZXR0aW5ncy5lbnVtJztcbmltcG9ydCB7RGVwdXRpZXMsIENsaWVudExvY2FsZSwgU2NoZW1hTG9jYWxlfSBmcm9tICcuL3NldHRpbmdzLmludGVyZmFjZSc7XG5pbXBvcnQge1dpZGdldEdyaWRXb3Jrc3BhY2VDb25maWd9IGZyb20gJ0B5dXV2aXMvd2lkZ2V0LWdyaWQnO1xuQFVudGlsRGVzdHJveSgpXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdlby1zZXR0aW5ncycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZXR0aW5ncy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3NldHRpbmdzLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0IHtcblxuICBAVmlld0NoaWxkKCdmaWxlcycpIGZpbGVzOiBFbGVtZW50UmVmID0ge30gYXMgRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaGVhZGVyQmcnKSBoZWFkZXJCZzogRWxlbWVudFJlZiB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZCgndXNlckF2YXRhcicpIHVzZXJBdmF0YXIhOiBVc2VyQXZhdGFyQ29tcG9uZW50O1xuICBAVmlld0NoaWxkKCdjb25maXJtRGVsZXRlQnRuJykgY29uZmlybURlbGV0ZUJ0biE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ3Byb2ZpbGVJbWFnZU92ZXJsYXknKSBwcm9maWxlSW1hZ2VPdmVybGF5ITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChOZ0Zvcm0pIGRlcHV0aWVzRm9ybSE6IE5nRm9ybTtcblxuICB1c2VyOiBFb1VzZXIgPSB7fSBhcyBFb1VzZXI7XG4gIGNhcGFiaWxpdGllczogQ2FwYWJpbGl0aWVzO1xuICBkZXB1dGllczogRGVwdXRpZXMgPSB7ZGF0YTogW10sIGRhdGFNZXRhOiBbXX07XG4gIHNob3dDaGFuZ2VQYXNzd29yZEZvcm0gPSBmYWxzZTtcbiAgY2xpZW50TG9jYWxlczogQ2xpZW50TG9jYWxlW10gPSBbXTtcbiAgc2NoZW1hTG9jYWxlczogU2NoZW1hTG9jYWxlW10gPSBbXTtcbiAgcHVibGljIExvY2tTZXR0aW5ncyA9IExvY2tTZXR0aW5ncztcbiAgYWdlbnRMb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncztcbiAgdXNlQWdlbnRDb250cm9sOiBVbnR5cGVkRm9ybUNvbnRyb2wgfCB1bmRlZmluZWQ7XG4gIHNob3dBZ2VudENvbmZpZyA9IHRydWU7XG4gIGRlZmF1bHRMb2NrU2V0dGluZyA9IGZhbHNlO1xuXG4gIHVzZXIkID0gdGhpcy51c2VyU2VydmljZS51c2VyJDtcbiAgdXNlcklkID0gJyc7XG4gIHNob3dEZWxldGVJY29uVHJhc2ggPSB0cnVlO1xuICB1c2VySW1hZ2VVcmkgPSAnJztcbiAgcHJldmlldyA9ICcnO1xuICBmaWxlOiBGaWxlIHwgbnVsbCA9IG51bGw7XG4gIGhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgc2hvd1ByZXZpZXdEaWFsb2cgPSBmYWxzZTtcbiAgc2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlO1xuICBzaG93RXJyb3JEaWFsb2cgPSBmYWxzZTtcbiAgTUFYX0ZJTEVfU0laRSA9IDUyNDI4ODtcbiAgdmlld01vZGUgPSAnJztcbiAgZmlsZU5hbWUgPSAnJztcbiAgZGVsZXRlQ29uZmlnRGFzaGJvYXJkID0gZmFsc2U7XG5cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgcHVibGljIHVzZXJTZXJ2aWNlOiBVc2VyU2VydmljZSxcbiAgICBwdWJsaWMgY29uZmlnOiBDb25maWcsXG4gICAgcHJpdmF0ZSBub3RpZnk6IE5vdGlmaWNhdGlvbnNTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3lzdGVtU2VydmljZTogU3lzdGVtU2VydmljZSxcbiAgICBwcml2YXRlIGV2ZW50U2VydmljZTogRXZlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgY2FwYWJpbGl0aWVzU2VydmljZTogQ2FwYWJpbGl0aWVzU2VydmljZSxcbiAgICBwcml2YXRlIHRpdGxlU2VydmljZTogUGFnZVRpdGxlU2VydmljZSxcbiAgICBwcml2YXRlIGFnZW50U2VydmljZTogQWdlbnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IFVudHlwZWRGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGNhY2hlU2VydmljZTogQXBwQ2FjaGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgc3RvcmFnZVNlcnZpY2U6IExvY2FsU3RvcmFnZVNlcnZpY2UsXG4gICAgcHVibGljIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcml2YXRlIGVsZW1SZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvbnNTZXJ2aWNlKSB7XG4gICAgdGhpcy50aXRsZVNlcnZpY2Uuc2V0QmFzZVRpdGxlKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLmJhci5idXR0b24uc2V0dGluZ3MudGl0bGUnKSk7XG4gICAgdGhpcy5jbGllbnRMb2NhbGVzID0gY29uZmlnLmdldENsaWVudExvY2FsZXMoKTtcbiAgICB0aGlzLmNhcGFiaWxpdGllcyA9IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKTtcbiAgICB0aGlzLmdldFNjaGVtYUxvY2FsZXMoKTtcbiAgICB0aGlzLmdldFVzZXJEYXRhKCk7XG4gICAgdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IHVzZXJTZXJ2aWNlLmdldEN1cnJlbnRVc2VyKCk/LnVzZXJTZXR0aW5ncz8uYWx3YXlzbG9jaztcbiAgICB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQucGlwZSh0YWtlKDEpLCB3aXRoTGF0ZXN0RnJvbSh0aGlzLmFnZW50U2VydmljZS5hZ2VudENvbmZpZyQpKS5zdWJzY3JpYmUoKFtpc0Nvbm5lY3RlZCwgY29uZmlndXJhdGlvbl0pID0+IHtcbiAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sID0gdGhpcy5mYi5jb250cm9sKGlzQ29ubmVjdGVkKTtcbiAgICAgIGlmIChjb25maWd1cmF0aW9uLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVCkpIHtcbiAgICAgICAgdGhpcy5zaG93QWdlbnRDb25maWcgPSBjb25maWd1cmF0aW9uW2FnZW50Q29uZmlnS2V5cy5BVVRPQ09OTkVDVF0gfHwgZmFsc2U7XG4gICAgICAgIHRoaXMudXNlQWdlbnRDb250cm9sLmRpc2FibGUoKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFnZW50Q29uZmlnTG9ja1NldHRpbmdzID0gY29uZmlndXJhdGlvblthZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTXTtcbiAgICAgIGlmIChjb25maWd1cmF0aW9uLmhhc093blByb3BlcnR5KGFnZW50Q29uZmlnS2V5cy5MT0NLU0VUVElOR1MpICYmIGFnZW50Q29uZmlnTG9ja1NldHRpbmdzICYmIE9iamVjdC52YWx1ZXMoTG9ja1NldHRpbmdzKS5pbmNsdWRlcyhhZ2VudENvbmZpZ0xvY2tTZXR0aW5ncykpIHtcbiAgICAgICAgdGhpcy5kZWZhdWx0TG9ja1NldHRpbmcgPSB0cnVlO1xuICAgICAgICB0aGlzLmFnZW50TG9ja1NldHRpbmdzID0gY29uZmlndXJhdGlvblthZ2VudENvbmZpZ0tleXMuTE9DS1NFVFRJTkdTXSB8fCBMb2NrU2V0dGluZ3MuYXNrO1xuICAgICAgfVxuICAgICAgdGhpcy51c2VBZ2VudENvbnRyb2w/LnZhbHVlQ2hhbmdlcy5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudFNlcnZpY2UuaXNDb25uZWN0ZWQgPSB0aGlzLnVzZUFnZW50Q29udHJvbD8udmFsdWUpO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IGFnZW50U3RhdHVzKCk6IE9ic2VydmFibGU8Ym9vbGVhbj4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50U2VydmljZS5pc0Nvbm5lY3RlZCQ7XG4gIH1cblxuICBnZXQgYWN0aXZlU2NoZW1hKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudXNlciAmJiB0aGlzLnVzZXIuZ2V0U2NoZW1hTG9jYWxlKCk7XG4gIH1cblxuICBoYXNQcml2aWxlZ2UocHJpdmlsZWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy51c2VyU2VydmljZS5oYXNQcml2aWxlZ2UocHJpdmlsZWdlKTtcbiAgfVxuXG4gIGNoYW5nZUxvY2tTZXR0aW5ncyhsb2NrU2V0dGluZ3M6IExvY2tTZXR0aW5ncyk6IHZvaWQge1xuICAgIHRoaXMudXNlclNlcnZpY2UuY2hhbmdlTG9ja1NldHRpbmcobG9ja1NldHRpbmdzKS5zdWJzY3JpYmUoKCkgPT4gdGhpcy5hZ2VudExvY2tTZXR0aW5ncyA9IGxvY2tTZXR0aW5ncyk7XG4gIH1cblxuICBnZXRTY2hlbWFMb2NhbGVzKCk6IHZvaWQge1xuICAgIHRoaXMuc3lzdGVtU2VydmljZS5zeXN0ZW0kLnN1YnNjcmliZSgoc3lzdGVtRGVmaW5pdGlvbikgPT4ge1xuICAgICAgaWYgKHN5c3RlbURlZmluaXRpb24ubG9jYWxlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2NoZW1hTG9jYWxlcyA9IHN5c3RlbURlZmluaXRpb24ubG9jYWxlcz8uc29ydChVdGlscy5zb3J0VmFsdWVzKCdkaXNwbGF5bmFtZScpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHNhdmVEZXB1dGllcygpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNldERlcHV0aWVzKHRoaXMuZGVwdXRpZXMuZGF0YSlcbiAgICAgIC5zdWJzY3JpYmUocmVzID0+IHRoaXMuZGVwdXRpZXNGb3JtLnJlc2V0Rm9ybSh7ZGVwdXRpZXM6IHRoaXMuZGVwdXRpZXMuZGF0YX0pKTtcbiAgfVxuXG4gIHJlc2V0RGVwdXRpZXMoKTogdm9pZCB7XG4gICAgdGhpcy5kZXB1dGllc0Zvcm0ucmVzZXRGb3JtKHtkZXB1dGllczogdGhpcy51c2VyLmRlcHV0aWVzLm1hcChkID0+IGQubmFtZSl9KTtcbiAgfVxuXG4gIGdldFVzZXJEYXRhKCk6IHZvaWQge1xuICAgIHRoaXMudXNlclNlcnZpY2UudXNlciQuc3Vic2NyaWJlKCh1c2VyKSA9PiB7XG4gICAgICAvLyB0aGlzLnVzZXIgPSBPYmplY3QuYXNzaWduKHVzZXIsIHtjYXBhYmlsaXRpZXM6IHRoaXMuY2FwYWJpbGl0aWVzU2VydmljZS5nZXRDYXBhYmlsaXRpZXMoKX0pO1xuICAgICAgdGhpcy51c2VyID0gdXNlcjtcbiAgICAgIC8vIGRlcHV0aWVzXG4gICAgICB0aGlzLmRlcHV0aWVzID0ge1xuICAgICAgICBkYXRhOiB0aGlzLnVzZXIuZGVwdXRpZXMubWFwKGQgPT4gZC5uYW1lKSxcbiAgICAgICAgZGF0YU1ldGE6IHRoaXMudXNlci5kZXB1dGllc1xuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGNhbmNlbCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dDaGFuZ2VQYXNzd29yZEZvcm0gPSBmYWxzZTtcbiAgfVxuXG4gIGNoYW5nZUNsaWVudExvY2FsZShpc286IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLmNvbmZpZy5nZXRTdXBwb3J0ZWRDbGllbnRMb2NhbGVzKCkuaW5jbHVkZXMoaXNvKSkge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VDbGllbnRMb2NhbGUoaXNvKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5ub3RpZnkuZXJyb3IodGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MubGFuZ3VhZ2UuZXJyb3InKSk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlU2NoZW1hTG9jYWxlKGlzbzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMudXNlci5zY2hlbWFMb2NhbGUgIT09IGlzbykge1xuICAgICAgdGhpcy51c2VyU2VydmljZS5jaGFuZ2VTY2hlbWFMb2NhbGUoaXNvKS5zdWJzY3JpYmUoXG4gICAgICAgICgpID0+IHsgfSxcbiAgICAgICAgXyA9PiBVdGlscy50aHJvdygoKSA9PiB7IH0sXG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXNlci5zZXJ2aWNlLnNjaGVtYS5sb2NhbGUuZXJyb3IudGl0bGUnKSxcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51c2VyLnNlcnZpY2Uuc2NoZW1hLmxvY2FsZS5lcnJvci5kZXNjcmlwdGlvbicpKVxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtUmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignI3ByZXNlbmNlJyk/LmZvY3VzKCk7XG4gICAgdGhpcy51c2VyJC5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICB0aGlzLnVzZXJJZCA9IHVzZXIuaWQ7XG4gICAgICB0aGlzLnVzZXJJbWFnZVVyaSA9IHRoaXMudXNlclNlcnZpY2UuZ2V0VXNlckltYWdlVXJpKHRoaXMudXNlcklkKTtcbiAgICAgIHRoaXMucmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQodGhpcy51c2VySW1hZ2VVcmkpO1xuICAgICAgdGhpcy5zaG93RGVsZXRlSWNvblRyYXNoID0gISF1c2VyLmltYWdlVXJpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0UHJlc2VuY2UoYjogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2V0UHJlc2VuY2UoYilcbiAgICAgIC5zdWJzY3JpYmUoXyA9PiB7XG4gICAgICB9LCBVdGlscy50aHJvdygoKSA9PiB7IH0sXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmVycm9yLnRpdGxlJyksXG4gICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLnByZXNlbmNlLmVycm9yLmRlc2NyaXB0aW9uJylcbiAgICAgIClcbiAgICAgICk7XG4gIH1cblxuICBjbG9zZVByZXZpZXdEaWFsb2coKTogdm9pZCB7XG4gICAgdGhpcy5zaG93UHJldmlld0RpYWxvZyA9IGZhbHNlO1xuICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gIH1cblxuICBkZWxldGVVc2VySW1hZ2UoKTogdm9pZCB7XG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZSh7fSBhcyBGaWxlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5yZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZCh0aGlzLnVzZXJJbWFnZVVyaSk7XG4gICAgICAgICAgdGhpcy5ldmVudFNlcnZpY2UudHJpZ2dlcihFbmFpb0V2ZW50LlNZU1RFTV9TVEFUVVNfSU1BR0VfQ0hBTkdFKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVEaWFsb2cgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnIpID0+IHtcbiAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbi5lcnJvcignJywgZXJyLmVycm9yLmNhdXNlLm1lc3NhZ2VzWzBdKTtcbiAgICAgICAgICB0aGlzLmZpbGUgPSBudWxsO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IudGl0bGUnKTtcbiAgICAgICAgICB0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby51cGxvYWQuZ2xvYmFsLmVycm9yLmRlc2NyaXB0aW9uJyk7XG4gICAgICAgIH0sXG5cbiAgICAgIH0pO1xuXG4gIH1cblxuICBzZWxlY3RJbWFnZShldmVudFRhcmdldDogRXZlbnRUYXJnZXQpOiB2b2lkIHtcbiAgICBjb25zdCBldmVudCA9IGV2ZW50VGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgaWYgKGV2ZW50LmZpbGVzICYmIGV2ZW50LmZpbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuZmlsZSA9IGV2ZW50LmZpbGVzWzBdO1xuICAgICAgdGhpcy5maWxlTmFtZSA9IHRoaXMuZmlsZS5uYW1lO1xuXG4gICAgICBzd2l0Y2ggKGZhbHNlKSB7XG4gICAgICAgIGNhc2UgKHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdpbWFnZS8nKSAmJiB0aGlzLmZpbGUudHlwZS5pbmNsdWRlcygnanBlZycpIHx8IHRoaXMuZmlsZS50eXBlLmluY2x1ZGVzKCdwbmcnKSk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9ICdpbWFnZSc7XG4gICAgICAgICAgdGhpcy5zaG93RXJyb3JEaWFsb2cgPSB0cnVlO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgKHRoaXMuZmlsZS5zaXplIDw9IHRoaXMuTUFYX0ZJTEVfU0laRSk6XG4gICAgICAgICAgdGhpcy52aWV3TW9kZSA9ICdzaXplJztcbiAgICAgICAgICB0aGlzLnNob3dFcnJvckRpYWxvZyA9IHRydWU7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aGlzLnByZXZpZXcgPSAnJztcbiAgICAgICAgICBjb25zdCByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpO1xuICAgICAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcmV2aWV3ID0gKGUudGFyZ2V0IGFzIEZpbGVSZWFkZXIpLnJlc3VsdCBhcyBzdHJpbmc7XG4gICAgICAgICAgICB0aGlzLnNob3dQcmV2aWV3RGlhbG9nID0gdHJ1ZTtcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlYWRlci5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBsb2FkTmV3VXNlckltYWdlKCk6IHZvaWQge1xuXG4gICAgdGhpcy51c2VyU2VydmljZVxuICAgICAgLnNldFVzZXJJbWFnZSh0aGlzLmZpbGUgYXMgRmlsZSkuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucHJvZmlsZUltYWdlT3ZlcmxheS5uYXRpdmVFbGVtZW50Py5mb2N1cygpO1xuICAgICAgICAgIHRoaXMucmVmcmVzaFVzZXJJbWFnZUhlYWRlckJhY2tncm91bmQodGhpcy51c2VySW1hZ2VVcmkpO1xuICAgICAgICAgIHRoaXMuZXZlbnRTZXJ2aWNlLnRyaWdnZXIoRW5haW9FdmVudC5TWVNURU1fU1RBVFVTX0lNQUdFX0NIQU5HRSk7XG4gICAgICAgICAgdGhpcy5jbG9zZVByZXZpZXdEaWFsb2coKTtcbiAgICAgICAgICB0aGlzLnNob3dEZWxldGVJY29uVHJhc2ggPSB0cnVlO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycikgPT4ge1xuICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uLmVycm9yKCcnLCBlcnIuZXJyb3IuY2F1c2UubWVzc2FnZXNbMF0pO1xuICAgICAgICAgIHRoaXMuZmlsZSA9IG51bGw7XG4gICAgICAgICAgdGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8udXBsb2FkLmdsb2JhbC5lcnJvci50aXRsZScpO1xuICAgICAgICAgIHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnVwbG9hZC5nbG9iYWwuZXJyb3IuZGVzY3JpcHRpb24nKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgdGFiQWN0aW9uKGV2ZW50VGFyZ2V0OiBFdmVudFRhcmdldCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBldmVudFRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBlbGVtZW50LmJsdXIoKTtcbiAgICB0aGlzLmhvdmVyU2VsZWN0b3IgPSBmYWxzZTtcbiAgfVxuXG4gIG1vdXNlRW50ZXIoKTogdm9pZCB7XG4gICAgdGhpcy5ob3ZlclNlbGVjdG9yID0gdHJ1ZTtcbiAgfVxuICBtb3VzZUxlYXZlKCk6IHZvaWQge1xuICAgIHRoaXMuaG92ZXJTZWxlY3RvciA9IGZhbHNlO1xuICB9XG4gIHRyYXNoSWNvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0RlbGV0ZURpYWxvZyA9IHRydWU7XG4gIH1cblxuICByZWZyZXNoVXNlckltYWdlSGVhZGVyQmFja2dyb3VuZChpbWFnZVVyaTogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGltYWdlVXJpKSB7XG4gICAgICBjb25zdCB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKS50b1N0cmluZygpO1xuICAgICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmhlYWRlckJnPy5uYXRpdmVFbGVtZW50LCAnYmFja2dyb3VuZC1pbWFnZScsIGB1cmwoJHtpbWFnZVVyaSArICcmdD0nICsgdGltZXN0YW1wfSlgKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckxvY2FsU2V0dGluZ3MoKTogYm9vbGVhbiB7XG5cbiAgICBjb25zdCBhY3Rpb25zID0gW1xuICAgICAgdGhpcy5jYWNoZVNlcnZpY2UuY2xlYXIoKSxcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2UuY2xlYXIoKSxcbiAgICBdLmZpbHRlcihhID0+IGEpO1xuXG4gICAgcmV0dXJuIGFjdGlvbnMubGVuZ3RoID8gZm9ya0pvaW4oYWN0aW9ucykuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICB0aGlzLm5vdGlmeS5zdWNjZXNzKHRoaXMudHJhbnNsYXRlLmluc3RhbnQoJ2VvLnN0YXRlLnNldHRpbmdzLmNhY2hlLmNsZWFyLnN1Y2Nlc3MnKSk7XG4gICAgICAgIHRoaXMuc2F2ZUxvY2FsU2V0dGluZ3MoKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLm5vdGlmeS5lcnJvcih0aGlzLnRyYW5zbGF0ZS5pbnN0YW50KCdlby5zdGF0ZS5zZXR0aW5ncy5jYWNoZS5jbGVhci5lcnJvcicpKVxuICAgICkgJiYgdHJ1ZSA6IGZhbHNlO1xuICB9XG5cbiAgYXN5bmMgc2F2ZUxvY2FsU2V0dGluZ3MoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgbG9jYWxTZXR0aW5ncyA9IHRoaXMuc3RvcmFnZVNlcnZpY2UuZ2V0U3RvcmFnZSgpO1xuICAgIGNvbnN0IGNhY2hlU2V0dGluZ3MgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbSh0aGlzLmNhY2hlU2VydmljZS5nZXRTdG9yYWdlKCkpO1xuICAgIGRlbGV0ZSBjYWNoZVNldHRpbmdzWydlby5mcmFtZXdvcmsuY2FjaGUuc3lzdGVtZGVmaW5pdGlvbiddO1xuICAgIHRoaXMudXNlclNlcnZpY2Uuc2F2ZUxvY2FsU2V0dGluZ3MobG9jYWxTZXR0aW5ncywgY2FjaGVTZXR0aW5ncykuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBsb2FkTG9jYWxTZXR0aW5ncygpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLmxvYWRMb2NhbFNldHRpbmdzKCkuc3Vic2NyaWJlKHNldHRpbmdzID0+IHtcbiAgICAgIHRoaXMuc3RvcmFnZVNlcnZpY2Uuc2V0U3RvcmFnZShzZXR0aW5ncy5sb2NhbFNldHRpbmdzKTtcbiAgICAgIHRoaXMuY2FjaGVTZXJ2aWNlLnJlcGxhY2VTdG9yYWdlKHNldHRpbmdzLmNhY2hlU2V0dGluZ3MpO1xuICAgIH0pO1xuICB9XG5cbiAgZGVmYXVsdERhc2hib2FyZCgpOiB2b2lkIHtcbiAgICB0aGlzLnVzZXJTZXJ2aWNlLnNhdmVDaGFuZ2VXb3Jrc3BhY2Uoe30gYXMgV2lkZ2V0R3JpZFdvcmtzcGFjZUNvbmZpZykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMubm90aWZ5LnN1Y2Nlc3ModGhpcy50cmFuc2xhdGUuaW5zdGFudCgnZW8uc3RhdGUuc2V0dGluZ3MuZGFzaGJvYXJkLmNsZWFyLnN1Y2Nlc3MnKSk7XG4gICAgICB0aGlzLnNhdmVMb2NhbFNldHRpbmdzKCkudGhlbigpO1xuICAgIH0pO1xuICB9XG5cbiAgcmVzZXRJbWFnZVRhcmdldChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgZWxlbWVudC52YWx1ZSA9IG51bGw7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJlby1zZXR0aW5nc1wiICpuZ0lmPVwidXNlclwiIGVvUnRsQXdhcmU+XG5cbiAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxuXG4gICAgPGRpdiAjaGVhZGVyQmcgY2xhc3M9XCJiZ1wiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmaWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwibWV0YSB1c2VybmFtZVwiPnt7dXNlci5uYW1lfX08L2Rpdj5cbiAgICAgIDxoMT57e3VzZXIuZmlyc3RuYW1lfX0ge3t1c2VyLmxhc3RuYW1lfX08L2gxPlxuICAgICAgPGRpdiBjbGFzcz1cIm1ldGEgZW1haWxcIj57e3VzZXIuZW1haWx9fTwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicHJlc2VuY2VcIiAqbmdJZj1cImNhcGFiaWxpdGllcy5pbmJveFwiPlxuICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGRhcmsgcHJlc2VudFwiIGlkPVwicHJlc2VuY2VcIiAoY2xpY2spPVwic2V0UHJlc2VuY2UodHJ1ZSlcIiBbbmdDbGFzc109XCJ7YWN0aXZlOiB1c2VyLnByZXNlbnR9XCJcbiAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5wcmVzZW5jZS5wcmVzZW50PC9idXR0b24+XG4gICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgZGFyayBhYnNlbnRcIiAoY2xpY2spPVwic2V0UHJlc2VuY2UoZmFsc2UpXCIgKGtleWRvd24udGFiKT1cInRhYkFjdGlvbigkZXZlbnQudGFyZ2V0KVwiIFtuZ0NsYXNzXT1cInthY3RpdmU6ICF1c2VyLnByZXNlbnR9XCJcbiAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucHJlc2VuY2UuYWJzZW50PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXIoKVwiIChtb3VzZWxlYXZlKT1cIm1vdXNlTGVhdmUoKVwiIChrZXlkb3duLnRhYik9XCJtb3VzZUVudGVyKClcIj5cblxuICAgICAgPGVvLXVzZXItYXZhdGFyICN1c2VyQXZhdGFyIGNsYXNzPVwidXNlckltYWdlXCIgdGFiaW5kZXg9XCItMVwiIGVvUnRsQXdhcmU9XCJmdWxsXCI+XG4gICAgICAgICAgPGlucHV0IHR5cGU9XCJmaWxlXCIgYWNjZXB0PVwiLmpwZywgLnBuZ1wiIHN0eWxlPVwiZGlzcGxheTpub25lO1wiICNmaWxlcyAoY2hhbmdlKT1cInNlbGVjdEltYWdlKCRldmVudC50YXJnZXQpXCIgKGNsaWNrKT1cInJlc2V0SW1hZ2VUYXJnZXQoJGV2ZW50KVwiPlxuICAgICAgPC9lby11c2VyLWF2YXRhcj5cbiAgICAgIDxlby1kaWFsb2cgIFtzdHlsZUNsYXNzXT1cIid2aWV3J1wiIFttaW5XaWR0aF09XCInMzAwcHgnXCIgW3RpdGxlXT1cIidlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cudGl0bGUnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgWyh2aXNpYmxlKV09XCJzaG93UHJldmlld0RpYWxvZ1wiIFtmb2N1c09uU2hvd109XCJmYWxzZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb250YWluXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXR0YWNobWVudHNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF0dGFcIj5cbiAgICAgICAgICAgICAgICA8aW1nIGxvYWRpbmc9XCJsYXp5XCIgW3NyY109XCJwcmV2aWV3XCI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidXNlci1hdmF0YXJcIiAqbmdJZj1cInByZXZpZXdcIj5cbiAgICAgICAgICAgICAgICA8ZW8tdXNlci1hdmF0YXIgY2xhc3M9XCJwcmV2aWV3LXJvdW5kXCIgW3ByZXZpZXdVcmldPVwicHJldmlld1wiPjwvZW8tdXNlci1hdmF0YXI+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1ibG9ja1wiPlxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlUHJldmlld0RpYWxvZygpXCIgY2xhc3M9XCJidXR0b24gZGFuZ2VyXCJcbiAgICAgICAgICAgICAgdHJhbnNsYXRlPmVvLmN0YS5idXR0b24uY2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjZGtGb2N1c0luaXRpYWwgKGNsaWNrKT1cInVwbG9hZE5ld1VzZXJJbWFnZSgpXCIgY2xhc3M9XCJidXR0b24gcHJpbWFyeVwiXG4gICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRpYWxvZy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9lby1kaWFsb2c+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJvdmVybGF5XCIgI3Byb2ZpbGVJbWFnZU92ZXJsYXkgdGFiaW5kZXg9XCIwXCIgZW9SdGxBd2FyZT1cImZ1bGxcIj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ1cGRhdGVNZXNzYWdlXCIgKm5nSWY9XCJob3ZlclNlbGVjdG9yXCI+XG4gICAgICAgICAgPGVvLWljb24gdGFiaW5kZXg9XCIwXCIgKGtleWRvd24uZW50ZXIpPVwiZmlsZXMuY2xpY2soKVwiIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX2VkaXQuc3ZnJ1wiXG4gICAgICAgICAgICAoY2xpY2spPVwiZmlsZXMuY2xpY2soKVwiPjwvZW8taWNvbj5cbiAgICAgICAgICA8ZW8taWNvbiB0YWJpbmRleD1cIjBcIiAoa2V5ZG93bi5lbnRlcik9XCJ0cmFzaEljb25DbGljaygpXCIgKm5nSWY9XCJzaG93RGVsZXRlSWNvblRyYXNoXCJcbiAgICAgICAgICAgIFtpY29uU3JjXT1cIidhc3NldHMvX2RlZmF1bHQvc3ZnL2ljX3RyYXNoLnN2ZydcIiBhcmlhLWRpc2FibGVkPVwidHJ1ZVwiIChjbGljayk9XCJ0cmFzaEljb25DbGljaygpXCI+PC9lby1pY29uPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYm9keVwiIChrZXlkb3duLnRhYik9XCJ0YWJBY3Rpb24oJGV2ZW50LnRhcmdldClcIj5cblxuICAgIDxkaXYgY2xhc3M9XCJib2R5LXdyYXBcIj5cblxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1kZXB1dGllc1wiICpuZ0lmPVwiY2FwYWJpbGl0aWVzLmJwbSAmJiBoYXNQcml2aWxlZ2UoJ01BTkFHRV9ERVBVVFlfTElTVCcpXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGVwdXRpZXM8L2gzPlxuXG4gICAgICAgIDwhLS0gZGVwdXRpZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBkZXB1dGllc1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5sYWJlbDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxmb3JtICNkZXB1dGllc0Zvcm09XCJuZ0Zvcm1cIiBbbmdDbGFzc109XCJ7ZGlydHk6IGRlcHV0aWVzRm9ybS5kaXJ0eX1cIj5cbiAgICAgICAgICAgICAgPGVvLW9yZ2FuaXphdGlvbiBuYW1lPVwiZGVwdXRpZXNcIiBbZGF0YU1ldGFdPVwiZGVwdXRpZXMuZGF0YU1ldGFcIiBbZmlsdGVyT2JqZWN0XT1cInt0eXBlOiAnVVNFUid9XCJcbiAgICAgICAgICAgICAgICBbZXhjZXB0aW9uc109XCJbdXNlci5uYW1lXVwiIFttdWx0aXNlbGVjdF09XCJ0cnVlXCIgdGFiaW5kZXg9XCIwXCIgWyhuZ01vZGVsKV09XCJkZXB1dGllcy5kYXRhXCI+PC9lby1vcmdhbml6YXRpb24+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb25zXCIgKm5nSWY9XCJkZXB1dGllc0Zvcm0udmFsaWQgJiYgZGVwdXRpZXNGb3JtLmRpcnR5XCI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInNlY29uZGFyeVwiIChjbGljayk9XCJyZXNldERlcHV0aWVzKClcIiB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5jYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwicHJpbWFyeVwiIChjbGljayk9XCJzYXZlRGVwdXRpZXMoKVwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXB1dGllcy5zYXZlPC9idXR0b24+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9mb3JtPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIHN1YnN0aXR1dGUgb2YgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBzdWJzdGl0dXRlXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRlcHV0aWVzLnN1YnNpdHV0ZW9mLmxhYmVsPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlc1wiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGlwXCIgKm5nRm9yPVwibGV0IHN1YiBvZiB1c2VyLnN1YnN0aXR1dGVzT2ZcIiBbbmdDbGFzc109XCJ7cHJlc2VudDogc3ViLnByZXNlbnR9XCI+XG4gICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiY2hpcCBzdWJzdGl0dXRlIHN1YnN0aXR1dGUtLXByZXNlbnRcIiAqbmdJZj1cInN1Yi5wcmVzZW50XCJcbiAgICAgICAgICAgICAgICBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19kb25lLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgICAgICAgIDxlby1pY29uIGNsYXNzPVwiY2hpcCBzdWJzdGl0dXRlIHN1YnN0aXR1dGUtLWF3YXlcIiAqbmdJZj1cIiFzdWIucHJlc2VudFwiXG4gICAgICAgICAgICAgICAgW2ljb25TcmNdPVwiJ2Fzc2V0cy9fZGVmYXVsdC9zdmcvaWNfY2xlYXIuc3ZnJ1wiPjwvZW8taWNvbj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tzdWIudGl0bGV9fSAoe3tzdWIubmFtZX19KTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBwYXNzd29yZCAtLT5cbiAgICAgIDxzZWN0aW9uIGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLXBhc3N3b3JkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5wYXNzd29yZC5yZXNldDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxlby1zaW1wbGUtYWNjb3JkaW9uICNzaW1wbGVBY2MgW2hlYWRlcl09XCIoJ2VvLnBhc3N3b3JkLnJlc2V0JyB8IHRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICBbc3R5bGVzXT1cIidzZXR0aW5nX19jaGFuZ2UtcGFzc3dvcmQnXCIgW2hlYWRlckNsYXNzXT1cIidzZXR0aW5nX19jaGFuZ2UtcGFzc3dvcmQtaGVhZGVyJ1wiPlxuXG4gICAgICAgICAgICAgIDxlby1jaGFuZ2UtcGFzc3dvcmQtZm9ybSAob25Gb3JtU3VtYml0KT1cInNpbXBsZUFjYy5zZWxlY3RlZCA9IGZhbHNlXCI+PC9lby1jaGFuZ2UtcGFzc3dvcmQtZm9ybT5cbiAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDwhLS0gbGFuZ3VhZ2UgLS0+XG4gICAgICA8ZGl2IGNsYXNzPVwic2VjdGlvbiBzZWN0aW9uLWxhbmdcIj5cbiAgICAgICAgPGgzIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZTwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsYW5nLWFwcFwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJsYWJlbFwiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sYW5ndWFnZS5jbGllbnQ8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlXCIgKGNsaWNrKT1cImNoYW5nZUNsaWVudExvY2FsZShsb2NhbGUuaXNvKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IHRyYW5zbGF0ZS5jdXJyZW50TGFuZyA9PT0gbG9jYWxlLmlzb31cIlxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbG9jYWxlIG9mIGNsaWVudExvY2FsZXNcIj57e2xvY2FsZS5sYWJlbH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5IGxhbmctZGVmXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxhbmd1YWdlLnNjaGVtYTwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGVcIiAoY2xpY2spPVwiY2hhbmdlU2NoZW1hTG9jYWxlKGxvY2FsZS5jb2RlKVwiXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFjdGl2ZVNjaGVtYSA9PT0gbG9jYWxlLmNvZGV9XCJcbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGxvY2FsZSBvZiBzY2hlbWFMb2NhbGVzXCI+e3tsb2NhbGUuZGlzcGxheW5hbWV9fTwvYnV0dG9uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIHBlcm1pc3Npb25zIC0tPlxuICAgICAgPGRpdiBjbGFzcz1cInNlY3Rpb24gc2VjdGlvbi1wZXJtXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MucGVybWlzc2lvbjwvaDM+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBwZXJtLXJvbGVzXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLnJvbGVzPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlcyByb2xlc1wiPlxuICAgICAgICAgICAgPGVvLXNpbXBsZS1hY2NvcmRpb24gW2hlYWRlcl09XCIoJ2VvLnN0YXRlLnNldHRpbmdzLnJvbGVzJyB8IHRyYW5zbGF0ZSlcIj5cbiAgICAgICAgICAgICAgPGVvLXBlcm1pc3Npb25zIFtyb2xlc109XCJ1c2VyLnJvbGVzXCI+PC9lby1wZXJtaXNzaW9ucz5cbiAgICAgICAgICAgIDwvZW8tc2ltcGxlLWFjY29yZGlvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBhZ2VudCAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWN0aW9uIHNlY3Rpb24tb3RoZXJzXCI+XG4gICAgICAgIDxoMyB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3Mub3RoZXJzPC9oMz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dBZ2VudENvbmZpZ1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmFnZW50PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1c2UtYWdlbnRcIj5cbiAgICAgICAgICAgICAgICA8ZW8tY2hlY2tib3ggW2Zvcm1Db250cm9sXT1cInVzZUFnZW50Q29udHJvbFwiIFtyZWFkb25seV09XCJ1c2VBZ2VudENvbnRyb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ1c2VBZ2VudENvbnRyb2xcIj48L2VvLWNoZWNrYm94PlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidXNlLWFnZW50LWxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmFnZW50LnVzZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8IS0tIDxhIGhyZWY9XCJodHRwczovL2hlbHAub3B0aW1hbC1zeXN0ZW1zLmNvbS95dXV2aXNSQUQvdjYwL3VzZXIvY2xpZW50L2RlL2NsaWVudC9pbnRlZ3JhdGlvbi9jbG5fdHNrX2FnZW50X2dsb2JhbC5odG0/SGlnaGxpZ2h0PWFnZW50XCI+XG4gICAgICAgICAgPGVvLWljb24gY2xhc3M9XCJpbmZvLWljb25cIiBbaWNvblNyY109XCInYXNzZXRzL19kZWZhdWx0L3N2Zy9pY19pbmZvLnN2ZydcIj48L2VvLWljb24+XG4gICAgICAgIDwvYT4gLS0+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbnRyeSBsb2NrLXNldHRpbmdzXCIgW25nQ2xhc3NdPVwieydsb2NrLXNldHRpbmdzLS1zaG93JzogKGFnZW50U3RhdHVzIHwgYXN5bmMpfVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2s8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cInRvZ2dsZSBidXR0b24tZW5hYmxlZFwiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLmFsd2F5cylcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MuYWx3YXlzfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmVuYWJsZTwvYnV0dG9uPlxuICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwidG9nZ2xlIGJ1dHRvbi1kaXNhYmxlZFwiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLm5ldmVyKVwiXG4gICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie2FjdGl2ZTogYWdlbnRMb2NrU2V0dGluZ3MgPT09IExvY2tTZXR0aW5ncy5uZXZlcn1cIiBbZGlzYWJsZWRdPVwiZGVmYXVsdExvY2tTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MubG9jay5kaXNhYmxlPC9idXR0b24+XG4gICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ0b2dnbGUgYnV0dG9uLWFza1wiIChjbGljayk9XCJjaGFuZ2VMb2NrU2V0dGluZ3MoTG9ja1NldHRpbmdzLmFzaylcIlxuICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInthY3RpdmU6IGFnZW50TG9ja1NldHRpbmdzID09PSBMb2NrU2V0dGluZ3MuYXNrfVwiIFtkaXNhYmxlZF09XCJkZWZhdWx0TG9ja1NldHRpbmdcIlxuICAgICAgICAgICAgICAgIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5sb2NrLmFzazwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImVudHJ5XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImxhYmVsXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmxvY2FsU2V0dGluZ3M8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwidmFsdWVzXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1yb3dcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cInNhdmVMb2NhbFNldHRpbmdzKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzLnNhdmU8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cImxvYWRMb2NhbFNldHRpbmdzKClcIj5lby5zdGF0ZS5zZXR0aW5ncy5sb2NhbFNldHRpbmdzLmxvYWQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgPGJ1dHRvbiB0cmFuc2xhdGUgKGNsaWNrKT1cImNsZWFyTG9jYWxTZXR0aW5ncygpXCI+ZW8uc3RhdGUuc2V0dGluZ3MubG9jYWxTZXR0aW5ncy5jbGVhcjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZW50cnlcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibGFiZWxcIiB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGFzaGJvYXJkLmRlZmF1dDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZXNcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LXJvd1wiPlxuICAgICAgICAgICAgICA8YnV0dG9uIHRyYW5zbGF0ZSAoY2xpY2spPVwiZGVsZXRlQ29uZmlnRGFzaGJvYXJkID0gdHJ1ZVwiPmVvLnN0YXRlLnNldHRpbmdzLmRhc2hib2FyZC5idXR0b24uY2xlYXI8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRhc2hib2FyZC5kZWZhdWx0LmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cImRlbGV0ZUNvbmZpZ0Rhc2hib2FyZFwiXG4gIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZGVsZXRlX19kaWFsb2cnXCI+XG4gIDxkaXY+e3snZW8uc3RhdGUuc2V0dGluZ3MuZGFzaGJvYXJkLmRlZmF1bHQuZGlhbG9nLm1lc3NhZ2UnIHwgdHJhbnNsYXRlfX08L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiYWN0aW9uLWJ1dHRvbnMgaW1hZ2UtZGVsZXRlLS1hY3Rpb24tYnV0dG9ucyBmbGV4LXJvd1wiID5cbiAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwiZGVsZXRlQ29uZmlnRGFzaGJvYXJkID0gZmFsc2VcIlxuICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNka0ZvY3VzSW5pdGlhbCAjY29uZmlybURlbGV0ZUJ0biAoY2xpY2spPVwiZGVmYXVsdERhc2hib2FyZCgpOyBkZWxldGVDb25maWdEYXNoYm9hcmQgPSBmYWxzZVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRhc2hib2FyZC5idXR0b24ucmVzZXQ8L2J1dHRvbj5cbiAgPC9kaXY+XG48L2VvLWRpYWxvZz5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMuZGVsZXRlLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dEZWxldGVEaWFsb2dcIlxuICAgIFtmb2N1c09uU2hvd109XCJmYWxzZVwiIFttaW5XaWR0aF09XCI0MDBcIiBbc3R5bGVDbGFzc109XCInZGVsZXRlX19kaWFsb2cnXCI+XG4gICAgPGRpdj57eydlby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLmRlbGV0ZS5kaWFsb2cubWVzc2FnZScgfCB0cmFuc2xhdGV9fTwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGltYWdlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIiA+XG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiBjYW5jZWxcIiAoY2xpY2spPVwic2hvd0RlbGV0ZURpYWxvZyA9IGZhbHNlXCJcbiAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsICNjb25maXJtRGVsZXRlQnRuIChjbGljayk9XCJkZWxldGVVc2VySW1hZ2UoKVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uY3RhLmJ1dHRvbi5kZWxldGU8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lby1kaWFsb2c+XG5cbiAgPGVvLWRpYWxvZyBbdGl0bGVdPVwiJ2VvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy50aXRsZScgfCB0cmFuc2xhdGVcIiBbKHZpc2libGUpXT1cInNob3dFcnJvckRpYWxvZ1wiXG4gICAgW2ZvY3VzT25TaG93XT1cImZhbHNlXCIgW21pbldpZHRoXT1cIjQwMFwiIFtzdHlsZUNsYXNzXT1cIidkZWxldGVfX2RpYWxvZydcIj5cblxuICAgIDxkaXY+XG4gICAgICA8cD57e2ZpbGVOYW1lfX08L3A+XG4gICAgICA8cCAqbmdJZj1cInZpZXdNb2RlID09PSdzaXplJ1wiIHRyYW5zbGF0ZT5lby5zdGF0ZS5zZXR0aW5ncy5kZXRhaWxzLnVwbG9hZC5kaWFsb2cuc2l6ZUVycm9yPC9wPlxuICAgICAgPHAgKm5nSWY9XCJ2aWV3TW9kZSA9PT0naW1hZ2UnXCIgdHJhbnNsYXRlPmVvLnN0YXRlLnNldHRpbmdzLmRldGFpbHMudXBsb2FkLmRpYWxvZy5maWxlRXJyb3IgPC9wPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImFjdGlvbi1idXR0b25zIGltYWdlLWRlbGV0ZS0tYWN0aW9uLWJ1dHRvbnMgZmxleC1yb3dcIj5cbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnV0dG9uIGNhbmNlbFwiIChjbGljayk9XCJzaG93RXJyb3JEaWFsb2cgPSBmYWxzZVwiXG4gICAgICAgIHRyYW5zbGF0ZT5lby5jdGEuYnV0dG9uLmNhbmNlbDwvYnV0dG9uPlxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2RrRm9jdXNJbml0aWFsIChjbGljayk9XCJmaWxlcy5jbGljaygpOyBzaG93RXJyb3JEaWFsb2cgPSBmYWxzZVwiIGNsYXNzPVwiYnV0dG9uIHByaW1hcnlcIlxuICAgICAgICB0cmFuc2xhdGU+ZW8uc3RhdGUuc2V0dGluZ3MuZGV0YWlscy51cGxvYWQuZGlhbG9nLmJhY2s8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgPC9lby1kaWFsb2c+XG48L2Rpdj5cbiJdfQ==