@tuki-io/tuki-widgets 0.0.219-dev.54 → 0.0.219-dev.56

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 (86) hide show
  1. package/contact-center/cc-import/cc-import.module.d.ts +13 -0
  2. package/contact-center/cc-import/cc-import.service.d.ts +85 -0
  3. package/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.d.ts +56 -0
  4. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.d.ts +77 -0
  5. package/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.d.ts +3 -0
  6. package/contact-center/cc-import/constants/cc-import.constants.d.ts +37 -0
  7. package/contact-center/cc-import/mock/cc-import.mock.d.ts +4 -0
  8. package/contact-center/cc-import/types/cc-import.d.ts +73 -0
  9. package/contact-center/cc-import/types/uccx.d.ts +109 -0
  10. package/contact-center/cc-readiness/cc-readiness.module.d.ts +3 -3
  11. package/contact-center/public-api.d.ts +8 -0
  12. package/contact-center/shared/api.endpoints.d.ts +25 -0
  13. package/contact-center/shared/api.service.d.ts +3 -1
  14. package/contact-center/shared/components/card/card.component.d.ts +13 -0
  15. package/contact-center/shared/dcp-api.service.d.ts +15 -0
  16. package/contact-center/shared/shared.module.d.ts +11 -5
  17. package/esm2020/contact-center/cc-import/cc-import.module.mjs +45 -0
  18. package/esm2020/contact-center/cc-import/cc-import.service.mjs +228 -0
  19. package/esm2020/contact-center/cc-import/components/import-contact-center-panel/import-contact-center-panel.component.mjs +144 -0
  20. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.component.mjs +243 -0
  21. package/esm2020/contact-center/cc-import/components/import-contact-center-wizard/import-contact-center-wizard.types.mjs +3 -0
  22. package/esm2020/contact-center/cc-import/constants/cc-import.constants.mjs +62 -0
  23. package/esm2020/contact-center/cc-import/mock/cc-import.mock.mjs +78 -0
  24. package/esm2020/contact-center/cc-import/types/cc-import.mjs +2 -0
  25. package/esm2020/contact-center/cc-import/types/uccx.mjs +24 -0
  26. package/esm2020/contact-center/cc-readiness/cc-readiness.module.mjs +7 -6
  27. package/esm2020/contact-center/cc-readiness/widgets/licences-requirement/licences-requirement.component.mjs +5 -5
  28. package/esm2020/contact-center/cc-readiness/widgets/summary-grid/summary-grid.component.mjs +2 -2
  29. package/esm2020/contact-center/public-api.mjs +9 -1
  30. package/esm2020/contact-center/shared/api.endpoints.mjs +26 -1
  31. package/esm2020/contact-center/shared/api.service.mjs +8 -3
  32. package/esm2020/contact-center/shared/components/card/card.component.mjs +24 -0
  33. package/esm2020/contact-center/shared/dcp-api.service.mjs +26 -0
  34. package/esm2020/contact-center/shared/shared.module.mjs +15 -5
  35. package/esm2020/user-device-manage/public-api.mjs +4 -1
  36. package/esm2020/user-device-manage/src/app.constants.mjs +9 -3
  37. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +311 -0
  38. package/esm2020/user-device-manage/src/classes/device.mjs +1 -1
  39. package/esm2020/user-device-manage/src/classes/deviceProfile.mjs +1 -1
  40. package/esm2020/user-device-manage/src/confirm-dialog/info-dialog.component.mjs +2 -2
  41. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +34 -17
  42. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +207 -0
  43. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +401 -0
  44. package/esm2020/user-device-manage/src/services/device.service.mjs +32 -2
  45. package/esm2020/user-device-manage/src/services/user.service.mjs +34 -6
  46. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +19 -4
  47. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +17 -4
  48. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +66 -0
  49. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +6 -3
  50. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +43 -1
  51. package/esm2020/workspaces/src/services/workspaces.service.mjs +2 -1
  52. package/esm2020/workspaces/src/types/workspace.mjs +1 -1
  53. package/esm2020/workspaces/src/workspaces.module.mjs +4 -1
  54. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs +998 -127
  55. package/fesm2015/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  56. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +1018 -40
  57. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  58. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +142 -16
  59. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  60. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs +989 -127
  61. package/fesm2020/tuki-io-tuki-widgets-contact-center.mjs.map +1 -1
  62. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +1001 -39
  63. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  64. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +133 -16
  65. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  66. package/package.json +1 -1
  67. package/user-device-manage/public-api.d.ts +3 -0
  68. package/user-device-manage/src/app.constants.d.ts +6 -0
  69. package/user-device-manage/src/associate-lines/associate-lines.component.d.ts +95 -0
  70. package/user-device-manage/src/classes/device.d.ts +15 -0
  71. package/user-device-manage/src/classes/deviceProfile.d.ts +5 -0
  72. package/user-device-manage/src/device-associated-line/device-associated-line.component.d.ts +1 -0
  73. package/user-device-manage/src/device-manage-widget.component.d.ts +6 -1
  74. package/user-device-manage/src/device-settings/device-settings.component.d.ts +53 -0
  75. package/user-device-manage/src/line-key-config/line-key-config.component.d.ts +84 -0
  76. package/user-device-manage/src/services/device.service.d.ts +6 -1
  77. package/user-device-manage/src/services/user.service.d.ts +2 -1
  78. package/user-device-manage/src/user-device-manage.module.d.ts +10 -7
  79. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +6 -1
  80. package/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.d.ts +25 -0
  81. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +1 -0
  82. package/workspaces/src/services/workspace-detail.service.d.ts +2 -0
  83. package/workspaces/src/types/workspace.d.ts +19 -0
  84. package/workspaces/src/workspaces.module.d.ts +8 -7
  85. package/contact-center/cc-readiness/components/card/card.component.d.ts +0 -6
  86. package/esm2020/contact-center/cc-readiness/components/card/card.component.mjs +0 -13
@@ -0,0 +1,243 @@
1
+ import { Component, EventEmitter, Input, Output, ViewEncapsulation, inject } from '@angular/core';
2
+ import { Subscription, catchError, finalize, of } from 'rxjs';
3
+ import { CcImportService } from '../../cc-import.service';
4
+ import { CUSTOMER_ASSIST_MARKER_TOOLTIP, CUSTOMER_ASSIST_NOTICE, IMPORT_WIZARD_TITLE } from '../../constants/cc-import.constants';
5
+ import { IMPORT_WIZARD_STEPS } from './import-contact-center-wizard.types';
6
+ import * as i0 from "@angular/core";
7
+ import * as i1 from "@angular/common";
8
+ import * as i2 from "@angular/material/stepper";
9
+ import * as i3 from "@angular/material/tooltip";
10
+ import * as i4 from "@angular/material/button";
11
+ import * as i5 from "@angular/material/form-field";
12
+ import * as i6 from "@angular/material/select";
13
+ import * as i7 from "@angular/material/core";
14
+ /**
15
+ * Full-page "Import contact center" wizard: pick a UCCX contact center, review the
16
+ * entities Tuki will create for it, then start the import.
17
+ *
18
+ * Rendered as a page by the host app (like `tk-user-creation-wizard`), not as a dialog -
19
+ * the host swaps it in when the panel's Import button is pressed and swaps it back out
20
+ * on `cancel` / `imported`.
21
+ */
22
+ export class ImportContactCenterWizardComponent {
23
+ constructor() {
24
+ this.title = IMPORT_WIZARD_TITLE;
25
+ /** Serve mock data instead of calling the UCCX migration API. */
26
+ this.useMockData = true;
27
+ /**
28
+ * Contact centers the caller has already loaded (the panel has them), so the wizard
29
+ * opens without a second round trip. Left unset, the wizard fetches them itself.
30
+ */
31
+ this.contactCenters = null;
32
+ this.cancel = new EventEmitter();
33
+ this.imported = new EventEmitter();
34
+ this.ccImportService = inject(CcImportService);
35
+ this.subscriptions = new Subscription();
36
+ this.customerAssistNotice = CUSTOMER_ASSIST_NOTICE;
37
+ this.customerAssistMarkerTooltip = CUSTOMER_ASSIST_MARKER_TOOLTIP;
38
+ this.selectedIndex = 0;
39
+ /** Contact centers awaiting review - the ones there is something to import. */
40
+ this.options = [];
41
+ /** `options` narrowed by the picker's search box. */
42
+ this.filteredOptions = [];
43
+ this.searchTerm = '';
44
+ this.selected = null;
45
+ this.noticeDismissed = false;
46
+ this.loading = false;
47
+ this.error = false;
48
+ this.entityGroups = [];
49
+ /** Which entity group the Overview step's tab bar is showing. */
50
+ this.activeGroupIndex = 0;
51
+ this.entitiesLoading = false;
52
+ this.entitiesError = false;
53
+ this.importing = false;
54
+ this.importError = false;
55
+ }
56
+ ngOnInit() {
57
+ this.load();
58
+ }
59
+ ngOnChanges(changes) {
60
+ const reloadTriggers = ['customerId', 'host', 'dcpHost', 'token', 'useMockData', 'contactCenters'];
61
+ if (reloadTriggers.some(input => changes[input] && !changes[input].firstChange)) {
62
+ this.load();
63
+ }
64
+ }
65
+ ngOnDestroy() {
66
+ this.subscriptions.unsubscribe();
67
+ }
68
+ get canGoNext() {
69
+ return !!this.selected;
70
+ }
71
+ /** The Customer Assist advisory, until the user dismisses it or picks something else. */
72
+ get showCustomerAssistNotice() {
73
+ return !!this.selected?.customerAssistCapable && !this.noticeDismissed;
74
+ }
75
+ get canImport() {
76
+ return !!this.selected && !this.importing && !this.entitiesLoading && !this.entitiesError;
77
+ }
78
+ onCancel() {
79
+ this.cancel.emit();
80
+ }
81
+ onSelect(applicationId) {
82
+ const selected = this.options.find(option => option.applicationId === applicationId) ?? null;
83
+ if (selected === this.selected) {
84
+ return;
85
+ }
86
+ this.selected = selected;
87
+ this.noticeDismissed = false;
88
+ // Entities belong to the previously selected contact center - drop them so the
89
+ // overview step refetches for the new one.
90
+ this.entityGroups = [];
91
+ this.activeGroupIndex = 0;
92
+ this.entitiesError = false;
93
+ }
94
+ get activeGroup() {
95
+ return this.entityGroups[this.activeGroupIndex];
96
+ }
97
+ selectGroup(index) {
98
+ this.activeGroupIndex = index;
99
+ }
100
+ dismissNotice() {
101
+ this.noticeDismissed = true;
102
+ }
103
+ onSearch(event) {
104
+ this.searchTerm = event.target.value;
105
+ this.filter();
106
+ }
107
+ /** Resets the search box each time the picker's panel is closed. */
108
+ onPanelToggle(opened) {
109
+ if (!opened && this.searchTerm) {
110
+ this.searchTerm = '';
111
+ this.filter();
112
+ }
113
+ }
114
+ onStepSelectionChange(event) {
115
+ this.selectedIndex = event.selectedIndex;
116
+ if (this.stepIdAt(event.selectedIndex) === 'overview') {
117
+ this.loadEntities();
118
+ }
119
+ }
120
+ onNext(stepper) {
121
+ if (this.canGoNext) {
122
+ stepper.next();
123
+ }
124
+ }
125
+ onPrevious(stepper) {
126
+ stepper.previous();
127
+ }
128
+ runImport() {
129
+ if (!this.selected || this.importing) {
130
+ return;
131
+ }
132
+ this.importing = true;
133
+ this.importError = false;
134
+ this.subscriptions.add(this.ccImportService.importContactCenter(Number(this.customerId), this.selected.applicationId)
135
+ .pipe(catchError(error => {
136
+ console.error('Unable to start the contact-center import', error);
137
+ this.importError = true;
138
+ return of(null);
139
+ }), finalize(() => this.importing = false))
140
+ .subscribe(result => {
141
+ if (result) {
142
+ this.imported.emit(result);
143
+ }
144
+ }));
145
+ }
146
+ stepIdAt(index) {
147
+ return IMPORT_WIZARD_STEPS[index];
148
+ }
149
+ load() {
150
+ this.ccImportService.useMockData = this.useMockData;
151
+ if (this.host) {
152
+ this.ccImportService.setHost(this.host);
153
+ }
154
+ if (this.dcpHost) {
155
+ this.ccImportService.setDcpHost(this.dcpHost);
156
+ }
157
+ if (this.token) {
158
+ this.ccImportService.setToken(this.token);
159
+ }
160
+ if (this.contactCenters) {
161
+ this.setOptions(this.contactCenters);
162
+ return;
163
+ }
164
+ const customerId = Number(this.customerId);
165
+ if (!this.useMockData && (!customerId || !this.token)) {
166
+ return;
167
+ }
168
+ this.loading = true;
169
+ this.error = false;
170
+ this.subscriptions.add(this.ccImportService.fetchContactCenters(customerId)
171
+ .pipe(catchError(error => {
172
+ console.error('Unable to load the contact centers', error);
173
+ this.error = true;
174
+ return of([]);
175
+ }), finalize(() => this.loading = false))
176
+ .subscribe(contactCenters => this.setOptions(contactCenters)));
177
+ }
178
+ setOptions(contactCenters) {
179
+ // Left in source order on purpose - the picker shows them the way the backend
180
+ // (and the mock) hands them over, not alphabetically.
181
+ //
182
+ // Eligible for a Webex Contact Center import: not imported yet, and either
183
+ // unsupported on Customer Assist or reviewable for full feature coverage.
184
+ this.options = contactCenters.filter(contactCenter => contactCenter.migrationState !== 'migrated'
185
+ && (contactCenter.compatibilityStatus === 'unsupported'
186
+ || contactCenter.compatibilityStatus === 'requires-review'));
187
+ // A contact center selected before a reload may no longer be importable.
188
+ if (this.selected && !this.options.some(option => option.applicationId === this.selected?.applicationId)) {
189
+ this.selected = null;
190
+ this.entityGroups = [];
191
+ this.activeGroupIndex = 0;
192
+ }
193
+ this.filter();
194
+ }
195
+ filter() {
196
+ const needle = this.searchTerm.trim().toLowerCase();
197
+ this.filteredOptions = needle
198
+ ? this.options.filter(option => option.applicationName.toLowerCase().includes(needle))
199
+ : this.options;
200
+ }
201
+ loadEntities() {
202
+ if (!this.selected || this.entityGroups.length || this.entitiesLoading) {
203
+ return;
204
+ }
205
+ this.entitiesLoading = true;
206
+ this.entitiesError = false;
207
+ this.subscriptions.add(this.ccImportService.fetchContactCenterEntities(Number(this.customerId), this.selected)
208
+ .pipe(catchError(error => {
209
+ console.error('Unable to load the contact-center entities', error);
210
+ this.entitiesError = true;
211
+ return of(null);
212
+ }), finalize(() => this.entitiesLoading = false))
213
+ .subscribe(entities => {
214
+ this.entityGroups = entities ? entities.groups : [];
215
+ this.activeGroupIndex = 0;
216
+ }));
217
+ }
218
+ }
219
+ ImportContactCenterWizardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImportContactCenterWizardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
220
+ ImportContactCenterWizardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: ImportContactCenterWizardComponent, selector: "cc-import-contact-center-wizard", inputs: { title: "title", customerId: "customerId", host: "host", dcpHost: "dcpHost", token: "token", useMockData: "useMockData", contactCenters: "contactCenters" }, outputs: { cancel: "cancel", imported: "imported" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"move-user-stepper-container\" [attr.aria-busy]=\"importing\">\n <header class=\"move-user-header\">\n <div class=\"move-user-header__title\">{{ title }}</div>\n <div class=\"move-user-header__close\">\n <span class=\"app-icon cc-import-close-icon\" (click)=\"onCancel()\" role=\"button\" aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" />\n </svg>\n </span>\n </div>\n </header>\n\n <div id=\"cc-import-stepper\">\n <mat-stepper\n #stepper\n [linear]=\"true\"\n labelPosition=\"bottom\"\n [selectedIndex]=\"selectedIndex\"\n (selectionChange)=\"onStepSelectionChange($event)\"\n >\n\n <!-- Step 1: pick the UCCX contact center -->\n <mat-step [completed]=\"canGoNext\">\n <ng-template matStepLabel>Select</ng-template>\n\n <div class=\"cc-import-notice\" *ngIf=\"showCustomerAssistNotice\" role=\"status\">\n <span class=\"cc-import-notice__icon\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"currentColor\" />\n <path d=\"M8 7.1v4.2\" stroke=\"#fff\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n <circle cx=\"8\" cy=\"4.8\" r=\"0.9\" fill=\"#fff\" />\n </svg>\n </span>\n <span class=\"cc-import-notice__text\">{{ customerAssistNotice }}</span>\n <button type=\"button\" class=\"cc-import-notice__close\" aria-label=\"Dismiss\" (click)=\"dismissNotice()\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </button>\n </div>\n\n <div class=\"step-title\">Step 1: Select contact center</div>\n\n <div class=\"move-user-tab-content-box\">\n <div class=\"cc-import-state\" *ngIf=\"loading\">Loading contact centers&hellip;</div>\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"!loading && error\">\n Unable to load contact centers.\n </div>\n\n <section class=\"cc-import-step-content\" *ngIf=\"!loading && !error\">\n <div class=\"cc-import-field\">\n <label class=\"cc-import-label\" for=\"cc-import-contact-center\">Contact center</label>\n\n <mat-form-field class=\"cc-import-select\" appearance=\"outline\">\n <mat-select\n id=\"cc-import-contact-center\"\n panelClass=\"cc-import-select-panel\"\n placeholder=\"Select contact center\"\n [disableOptionCentering]=\"true\"\n [value]=\"selected?.applicationId ?? null\"\n (selectionChange)=\"onSelect($event.value)\"\n (openedChange)=\"onPanelToggle($event)\"\n >\n <mat-select-trigger>{{ selected?.applicationName }}</mat-select-trigger>\n\n <!-- Search box pinned above the options. Keystrokes are stopped here so\n mat-select's own typeahead does not steal them. -->\n <div class=\"cc-import-select-search\" (click)=\"$event.stopPropagation()\">\n <span class=\"cc-import-select-search__icon\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"7\" cy=\"7\" r=\"4.6\" stroke=\"currentColor\" stroke-width=\"1.4\" />\n <path d=\"M10.6 10.6L14 14\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\n </svg>\n </span>\n <input\n class=\"cc-import-select-search__input\"\n type=\"text\"\n autocomplete=\"off\"\n placeholder=\"Search\"\n aria-label=\"Search contact centers\"\n [value]=\"searchTerm\"\n (input)=\"onSearch($event)\"\n (keydown)=\"$event.stopPropagation()\"\n />\n </div>\n\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.applicationId\">\n <div class=\"option-row\">\n <span class=\"name\">{{ option.applicationName }}</span>\n <span\n class=\"cc-import-option-marker\"\n *ngIf=\"option.customerAssistCapable\"\n [matTooltip]=\"customerAssistMarkerTooltip\"\n aria-hidden=\"true\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M8 2.2 14.6 13.4H1.4L8 2.2Z\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linejoin=\"round\" />\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" />\n <circle cx=\"8\" cy=\"11.3\" r=\"0.7\" fill=\"currentColor\" />\n </svg>\n </span>\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <p class=\"cc-import-empty\" *ngIf=\"!options.length\">\n Every detected contact center has already been imported.\n </p>\n </div>\n </section>\n </div>\n </mat-step>\n\n <!-- Step 2: the entities Tuki will create for it -->\n <mat-step>\n <ng-template matStepLabel>Overview</ng-template>\n\n <div class=\"step-title\">Overview</div>\n\n <div class=\"move-user-tab-content-box\">\n <h3 class=\"cc-import-card-title\">Review Contact Center Settings</h3>\n <p class=\"cc-import-card-text\">\n Review the settings for your new Contact center to make sure everything is correct.<br />\n You can make changes at any time by clicking on the name of the contact center on the dedicated page.\n </p>\n\n <div class=\"cc-import-state\" *ngIf=\"entitiesLoading\">Loading entities&hellip;</div>\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"entitiesError\">\n Unable to load the related entities.\n </div>\n\n <ng-container *ngIf=\"!entitiesLoading && !entitiesError && entityGroups.length\">\n <div class=\"cc-import-tabs\" role=\"tablist\">\n <button\n type=\"button\"\n class=\"cc-import-tab\"\n *ngFor=\"let group of entityGroups; index as i\"\n role=\"tab\"\n [attr.aria-selected]=\"i === activeGroupIndex\"\n [class.cc-import-tab--active]=\"i === activeGroupIndex\"\n (click)=\"selectGroup(i)\"\n >\n {{ group.label }}\n </button>\n </div>\n\n <ul class=\"cc-import-items\" role=\"tabpanel\">\n <li class=\"cc-import-item\" *ngFor=\"let item of activeGroup?.items\">{{ item }}</li>\n <li class=\"cc-import-item cc-import-item--empty\" *ngIf=\"!activeGroup?.items?.length\">\n Nothing to create for {{ activeGroup?.label }}.\n </li>\n </ul>\n </ng-container>\n\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"importError\">\n Unable to start the import. Please try again.\n </div>\n </div>\n </mat-step>\n </mat-stepper>\n\n <div class=\"wizard-actions\">\n <ng-container [ngSwitch]=\"stepper.selectedIndex\">\n <ng-container *ngSwitchCase=\"0\">\n <button\n mat-button\n class=\"uc-btn uc-btn-primary\"\n type=\"button\"\n [disabled]=\"!canGoNext\"\n (click)=\"onNext(stepper)\"\n >\n Next\n </button>\n <button mat-button class=\"uc-btn uc-btn-secondary\" type=\"button\" (click)=\"onCancel()\">\n Cancel\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"1\">\n <button\n mat-button\n class=\"uc-btn uc-btn-primary\"\n type=\"button\"\n [disabled]=\"!canImport\"\n (click)=\"runImport()\"\n >\n <span class=\"uc-btn__inline-content\">\n <span class=\"uc-btn__spinner\" *ngIf=\"importing\" aria-hidden=\"true\"></span>\n <span>{{ importing ? 'Importing...' : 'Import' }}</span>\n </span>\n </button>\n <button\n mat-button\n class=\"uc-btn uc-btn-secondary\"\n type=\"button\"\n [disabled]=\"importing\"\n (click)=\"onPrevious(stepper)\"\n >\n Previous\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"wizard-loading-overlay\" [class.wizard-loading-overlay--visible]=\"importing\" aria-hidden=\"true\"></div>\n</div>\n", styles: ["cc-import-contact-center-wizard{display:block;width:100%;min-height:100vh}.move-user-stepper-container{background-color:#f3f3f3;padding:0 0 16px;position:relative;overflow:hidden;box-sizing:border-box;min-height:100vh;display:flex;flex-direction:column}.move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:0}.app-icon{height:20px;width:20px;display:block;cursor:pointer}.cc-import-close-icon{color:#fffffff2}#cc-import-stepper{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-stepper-horizontal{margin:0 auto;width:100%;background-color:transparent;display:flex;flex-direction:column;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}#cc-import-stepper .mat-step-icon{width:28px;height:28px;border:3px solid hsl(0,0%,50.2%)}#cc-import-stepper .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}#cc-import-stepper .mat-step-icon-state-number{background-color:#fff}#cc-import-stepper .mat-step-icon-state-edit,#cc-import-stepper .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}#cc-import-stepper .mat-step-icon-content{display:none}#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}#cc-import-stepper .mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header:after,#cc-import-stepper .mat-stepper-horizontal-line{border-top-color:#1170cf!important;border-top-width:3px!important;border-top-style:solid!important}#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-stepper-horizontal-line,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:after{border-top-width:3px!important;background-color:#7b7b7b!important;border-top-color:#7b7b7b!important}#cc-import-stepper .mat-horizontal-content-container{padding:0!important;margin-top:3rem}#cc-import-stepper .mat-horizontal-stepper-content[aria-expanded=true]{padding-bottom:0}.step-title{font-size:26px;font-weight:500;width:70%;margin:0 auto 1rem;min-height:32px;display:flex;align-items:center}.wizard-actions{display:flex;flex-flow:row-reverse;justify-content:flex-start;align-items:center;margin:16px 16px 0 0;align-self:flex-end;gap:1rem;position:relative;z-index:30}.uc-btn{border-radius:50px!important;padding:8px 16px!important;min-width:80px!important;line-height:normal!important;cursor:pointer}.uc-btn__inline-content{display:inline-flex;align-items:center;gap:8px}.uc-btn__spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:uc-btn-spin .7s linear infinite}@keyframes uc-btn-spin{to{transform:rotate(360deg)}}.uc-btn-primary{background-color:#000!important;color:#fff!important;border:1px solid black!important}.uc-btn-secondary{background-color:#fff!important;color:#000!important;border:1px solid black!important}.wizard-actions .uc-btn-primary.mat-button-disabled{background-color:#bbb;color:#fff;border:1px solid grey;cursor:default!important;opacity:.3}.move-user-tab-content-box{width:70%;margin:0 auto;background-color:#fff;min-height:350px;border:1px solid #c3c1c1;border-radius:8px;box-sizing:border-box;padding:25px}.wizard-loading-overlay{position:absolute;inset:0;background:rgba(243,243,243,.72);backdrop-filter:blur(1px);opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:20}.wizard-loading-overlay--visible{opacity:1;pointer-events:auto}.cc-import-notice{width:70%;margin:0 auto 1rem;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:4px;background-color:#e8f2fc;color:#2a2f3b;font-size:13px;line-height:1.4}.cc-import-notice__icon{display:flex;color:#1170cf;line-height:0}.cc-import-notice__text{flex:1}.cc-import-notice__close{background:none;border:none;padding:0;cursor:pointer;display:flex;color:#5a6172;line-height:0}.cc-import-step-content{display:flex;flex-direction:column;gap:20px;max-width:420px}.cc-import-field{display:flex;flex-direction:column;gap:10px}.cc-import-label{font-size:14px;font-weight:400;line-height:100%;letter-spacing:.1px;color:#2a2f3b}.cc-import-select{width:100%;max-width:333px}.cc-import-empty{margin:0;font-size:13px;color:#5a6172}.cc-import-state{font-size:14px;color:#5a6172}.cc-import-state--error{color:#c0392b}.cc-import-card-title{margin:0 0 8px;font-size:15px;font-weight:700;color:#2a2f3b}.cc-import-card-text{margin:0 0 22px;font-size:14px;line-height:1.6;color:#2a2f3b}.cc-import-tabs{display:flex;flex-wrap:wrap;gap:20px}.cc-import-tab{background:none;border:none;border-bottom:2px solid transparent;padding:0 0 8px;font:inherit;font-size:14px;color:#5a6172;cursor:pointer}.cc-import-tab--active{color:#000;font-weight:600;border-bottom-color:#000}.cc-import-items{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.cc-import-item{font-size:14px;color:#2a2f3b}.cc-import-item--empty{color:#5a6172;font-style:italic}.cc-import-select .mat-form-field-wrapper{padding-bottom:0}.cc-import-select .mat-form-field-flex{align-items:center;height:32px;border:1px solid #767676;border-radius:6px;padding:0 12px}.cc-import-select .mat-form-field-outline,.cc-import-select .mat-form-field-outline-start,.cc-import-select .mat-form-field-outline-end,.cc-import-select .mat-form-field-outline-gap{display:none}.cc-import-select .mat-form-field-infix{width:100%;border-top:0;padding:0}.cc-import-select .mat-select-trigger{display:flex;align-items:center;justify-content:space-between;height:100%}.cc-import-select-panel .option-row{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.cc-import-select-panel .cc-import-option-marker{display:flex;color:#b26a00;line-height:0}.cc-import-select-search{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;margin:4px 8px 8px;padding:0 10px;height:30px;border:1px solid #c3c1c1;border-radius:50px;background-color:#fff}.cc-import-select-search__icon{display:flex;color:#5a6172;line-height:0}.cc-import-select-search__input{flex:1;border:none;outline:none;font:inherit;font-size:13px;color:#2a2f3b;background:transparent}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "component", type: i2.MatStep, selector: "mat-step", inputs: ["color"], exportAs: ["matStep"] }, { kind: "directive", type: i2.MatStepLabel, selector: "[matStepLabel]" }, { kind: "component", type: i2.MatStepper, selector: "mat-stepper, mat-vertical-stepper, mat-horizontal-stepper, [matStepper]", inputs: ["selectedIndex", "disableRipple", "color", "labelPosition", "headerPosition", "animationDuration"], outputs: ["animationDone"], exportAs: ["matStepper", "matVerticalStepper", "matHorizontalStepper"] }, { kind: "directive", type: i3.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i4.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "directive", type: i6.MatSelectTrigger, selector: "mat-select-trigger" }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }], encapsulation: i0.ViewEncapsulation.None });
221
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: ImportContactCenterWizardComponent, decorators: [{
222
+ type: Component,
223
+ args: [{ selector: 'cc-import-contact-center-wizard', encapsulation: ViewEncapsulation.None, template: "<div class=\"move-user-stepper-container\" [attr.aria-busy]=\"importing\">\n <header class=\"move-user-header\">\n <div class=\"move-user-header__title\">{{ title }}</div>\n <div class=\"move-user-header__close\">\n <span class=\"app-icon cc-import-close-icon\" (click)=\"onCancel()\" role=\"button\" aria-label=\"Close\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" />\n </svg>\n </span>\n </div>\n </header>\n\n <div id=\"cc-import-stepper\">\n <mat-stepper\n #stepper\n [linear]=\"true\"\n labelPosition=\"bottom\"\n [selectedIndex]=\"selectedIndex\"\n (selectionChange)=\"onStepSelectionChange($event)\"\n >\n\n <!-- Step 1: pick the UCCX contact center -->\n <mat-step [completed]=\"canGoNext\">\n <ng-template matStepLabel>Select</ng-template>\n\n <div class=\"cc-import-notice\" *ngIf=\"showCustomerAssistNotice\" role=\"status\">\n <span class=\"cc-import-notice__icon\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"8\" cy=\"8\" r=\"7\" fill=\"currentColor\" />\n <path d=\"M8 7.1v4.2\" stroke=\"#fff\" stroke-width=\"1.5\" stroke-linecap=\"round\" />\n <circle cx=\"8\" cy=\"4.8\" r=\"0.9\" fill=\"#fff\" />\n </svg>\n </span>\n <span class=\"cc-import-notice__text\">{{ customerAssistNotice }}</span>\n <button type=\"button\" class=\"cc-import-notice__close\" aria-label=\"Dismiss\" (click)=\"dismissNotice()\">\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n <path d=\"M5 5L19 19M19 5L5 19\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" />\n </svg>\n </button>\n </div>\n\n <div class=\"step-title\">Step 1: Select contact center</div>\n\n <div class=\"move-user-tab-content-box\">\n <div class=\"cc-import-state\" *ngIf=\"loading\">Loading contact centers&hellip;</div>\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"!loading && error\">\n Unable to load contact centers.\n </div>\n\n <section class=\"cc-import-step-content\" *ngIf=\"!loading && !error\">\n <div class=\"cc-import-field\">\n <label class=\"cc-import-label\" for=\"cc-import-contact-center\">Contact center</label>\n\n <mat-form-field class=\"cc-import-select\" appearance=\"outline\">\n <mat-select\n id=\"cc-import-contact-center\"\n panelClass=\"cc-import-select-panel\"\n placeholder=\"Select contact center\"\n [disableOptionCentering]=\"true\"\n [value]=\"selected?.applicationId ?? null\"\n (selectionChange)=\"onSelect($event.value)\"\n (openedChange)=\"onPanelToggle($event)\"\n >\n <mat-select-trigger>{{ selected?.applicationName }}</mat-select-trigger>\n\n <!-- Search box pinned above the options. Keystrokes are stopped here so\n mat-select's own typeahead does not steal them. -->\n <div class=\"cc-import-select-search\" (click)=\"$event.stopPropagation()\">\n <span class=\"cc-import-select-search__icon\" aria-hidden=\"true\">\n <svg width=\"14\" height=\"14\" viewBox=\"0 0 16 16\" fill=\"none\">\n <circle cx=\"7\" cy=\"7\" r=\"4.6\" stroke=\"currentColor\" stroke-width=\"1.4\" />\n <path d=\"M10.6 10.6L14 14\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" />\n </svg>\n </span>\n <input\n class=\"cc-import-select-search__input\"\n type=\"text\"\n autocomplete=\"off\"\n placeholder=\"Search\"\n aria-label=\"Search contact centers\"\n [value]=\"searchTerm\"\n (input)=\"onSearch($event)\"\n (keydown)=\"$event.stopPropagation()\"\n />\n </div>\n\n <mat-option *ngFor=\"let option of filteredOptions\" [value]=\"option.applicationId\">\n <div class=\"option-row\">\n <span class=\"name\">{{ option.applicationName }}</span>\n <span\n class=\"cc-import-option-marker\"\n *ngIf=\"option.customerAssistCapable\"\n [matTooltip]=\"customerAssistMarkerTooltip\"\n aria-hidden=\"true\"\n >\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 16 16\" fill=\"none\">\n <path d=\"M8 2.2 14.6 13.4H1.4L8 2.2Z\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linejoin=\"round\" />\n <path d=\"M8 6.5v3\" stroke=\"currentColor\" stroke-width=\"1.2\" stroke-linecap=\"round\" />\n <circle cx=\"8\" cy=\"11.3\" r=\"0.7\" fill=\"currentColor\" />\n </svg>\n </span>\n </div>\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <p class=\"cc-import-empty\" *ngIf=\"!options.length\">\n Every detected contact center has already been imported.\n </p>\n </div>\n </section>\n </div>\n </mat-step>\n\n <!-- Step 2: the entities Tuki will create for it -->\n <mat-step>\n <ng-template matStepLabel>Overview</ng-template>\n\n <div class=\"step-title\">Overview</div>\n\n <div class=\"move-user-tab-content-box\">\n <h3 class=\"cc-import-card-title\">Review Contact Center Settings</h3>\n <p class=\"cc-import-card-text\">\n Review the settings for your new Contact center to make sure everything is correct.<br />\n You can make changes at any time by clicking on the name of the contact center on the dedicated page.\n </p>\n\n <div class=\"cc-import-state\" *ngIf=\"entitiesLoading\">Loading entities&hellip;</div>\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"entitiesError\">\n Unable to load the related entities.\n </div>\n\n <ng-container *ngIf=\"!entitiesLoading && !entitiesError && entityGroups.length\">\n <div class=\"cc-import-tabs\" role=\"tablist\">\n <button\n type=\"button\"\n class=\"cc-import-tab\"\n *ngFor=\"let group of entityGroups; index as i\"\n role=\"tab\"\n [attr.aria-selected]=\"i === activeGroupIndex\"\n [class.cc-import-tab--active]=\"i === activeGroupIndex\"\n (click)=\"selectGroup(i)\"\n >\n {{ group.label }}\n </button>\n </div>\n\n <ul class=\"cc-import-items\" role=\"tabpanel\">\n <li class=\"cc-import-item\" *ngFor=\"let item of activeGroup?.items\">{{ item }}</li>\n <li class=\"cc-import-item cc-import-item--empty\" *ngIf=\"!activeGroup?.items?.length\">\n Nothing to create for {{ activeGroup?.label }}.\n </li>\n </ul>\n </ng-container>\n\n <div class=\"cc-import-state cc-import-state--error\" *ngIf=\"importError\">\n Unable to start the import. Please try again.\n </div>\n </div>\n </mat-step>\n </mat-stepper>\n\n <div class=\"wizard-actions\">\n <ng-container [ngSwitch]=\"stepper.selectedIndex\">\n <ng-container *ngSwitchCase=\"0\">\n <button\n mat-button\n class=\"uc-btn uc-btn-primary\"\n type=\"button\"\n [disabled]=\"!canGoNext\"\n (click)=\"onNext(stepper)\"\n >\n Next\n </button>\n <button mat-button class=\"uc-btn uc-btn-secondary\" type=\"button\" (click)=\"onCancel()\">\n Cancel\n </button>\n </ng-container>\n\n <ng-container *ngSwitchCase=\"1\">\n <button\n mat-button\n class=\"uc-btn uc-btn-primary\"\n type=\"button\"\n [disabled]=\"!canImport\"\n (click)=\"runImport()\"\n >\n <span class=\"uc-btn__inline-content\">\n <span class=\"uc-btn__spinner\" *ngIf=\"importing\" aria-hidden=\"true\"></span>\n <span>{{ importing ? 'Importing...' : 'Import' }}</span>\n </span>\n </button>\n <button\n mat-button\n class=\"uc-btn uc-btn-secondary\"\n type=\"button\"\n [disabled]=\"importing\"\n (click)=\"onPrevious(stepper)\"\n >\n Previous\n </button>\n </ng-container>\n </ng-container>\n </div>\n </div>\n\n <div class=\"wizard-loading-overlay\" [class.wizard-loading-overlay--visible]=\"importing\" aria-hidden=\"true\"></div>\n</div>\n", styles: ["cc-import-contact-center-wizard{display:block;width:100%;min-height:100vh}.move-user-stepper-container{background-color:#f3f3f3;padding:0 0 16px;position:relative;overflow:hidden;box-sizing:border-box;min-height:100vh;display:flex;flex-direction:column}.move-user-header{background-color:#1170cf;height:45px;padding:1rem 1.5rem;display:flex;align-items:center;justify-content:space-between;color:#fff;font-size:18px;font-weight:500}.move-user-header__close{cursor:pointer;display:flex;align-items:center;justify-content:center;line-height:0}.app-icon{height:20px;width:20px;display:block;cursor:pointer}.cc-import-close-icon{color:#fffffff2}#cc-import-stepper{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-stepper-horizontal{margin:0 auto;width:100%;background-color:transparent;display:flex;flex-direction:column;flex:1 1 auto;min-height:0}#cc-import-stepper .mat-horizontal-stepper-header-container{margin:0 auto;width:800px}#cc-import-stepper .mat-step-icon{width:28px;height:28px;border:3px solid hsl(0,0%,50.2%)}#cc-import-stepper .mat-step-icon-selected{background-color:#c6c6c6!important;border-color:#19487d}#cc-import-stepper .mat-step-icon-state-number{background-color:#fff}#cc-import-stepper .mat-step-icon-state-edit,#cc-import-stepper .mat-step-header .mat-step-icon-state-done{background-color:#1170cf;border-color:#1170cf}#cc-import-stepper .mat-step-icon-content{display:none}#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):before,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):before,#cc-import-stepper .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:last-child):after,#cc-import-stepper [dir=rtl] .mat-stepper-label-position-bottom .mat-horizontal-stepper-header:not(:first-child):after{border-top-width:3px!important}#cc-import-stepper .mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header:after,#cc-import-stepper .mat-stepper-horizontal-line{border-top-color:#1170cf!important;border-top-width:3px!important;border-top-style:solid!important}#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-stepper-horizontal-line,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:before,#cc-import-stepper .mat-horizontal-stepper-header[aria-selected=true]~.mat-horizontal-stepper-header:after{border-top-width:3px!important;background-color:#7b7b7b!important;border-top-color:#7b7b7b!important}#cc-import-stepper .mat-horizontal-content-container{padding:0!important;margin-top:3rem}#cc-import-stepper .mat-horizontal-stepper-content[aria-expanded=true]{padding-bottom:0}.step-title{font-size:26px;font-weight:500;width:70%;margin:0 auto 1rem;min-height:32px;display:flex;align-items:center}.wizard-actions{display:flex;flex-flow:row-reverse;justify-content:flex-start;align-items:center;margin:16px 16px 0 0;align-self:flex-end;gap:1rem;position:relative;z-index:30}.uc-btn{border-radius:50px!important;padding:8px 16px!important;min-width:80px!important;line-height:normal!important;cursor:pointer}.uc-btn__inline-content{display:inline-flex;align-items:center;gap:8px}.uc-btn__spinner{width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:uc-btn-spin .7s linear infinite}@keyframes uc-btn-spin{to{transform:rotate(360deg)}}.uc-btn-primary{background-color:#000!important;color:#fff!important;border:1px solid black!important}.uc-btn-secondary{background-color:#fff!important;color:#000!important;border:1px solid black!important}.wizard-actions .uc-btn-primary.mat-button-disabled{background-color:#bbb;color:#fff;border:1px solid grey;cursor:default!important;opacity:.3}.move-user-tab-content-box{width:70%;margin:0 auto;background-color:#fff;min-height:350px;border:1px solid #c3c1c1;border-radius:8px;box-sizing:border-box;padding:25px}.wizard-loading-overlay{position:absolute;inset:0;background:rgba(243,243,243,.72);backdrop-filter:blur(1px);opacity:0;pointer-events:none;transition:opacity .18s ease;z-index:20}.wizard-loading-overlay--visible{opacity:1;pointer-events:auto}.cc-import-notice{width:70%;margin:0 auto 1rem;box-sizing:border-box;display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:4px;background-color:#e8f2fc;color:#2a2f3b;font-size:13px;line-height:1.4}.cc-import-notice__icon{display:flex;color:#1170cf;line-height:0}.cc-import-notice__text{flex:1}.cc-import-notice__close{background:none;border:none;padding:0;cursor:pointer;display:flex;color:#5a6172;line-height:0}.cc-import-step-content{display:flex;flex-direction:column;gap:20px;max-width:420px}.cc-import-field{display:flex;flex-direction:column;gap:10px}.cc-import-label{font-size:14px;font-weight:400;line-height:100%;letter-spacing:.1px;color:#2a2f3b}.cc-import-select{width:100%;max-width:333px}.cc-import-empty{margin:0;font-size:13px;color:#5a6172}.cc-import-state{font-size:14px;color:#5a6172}.cc-import-state--error{color:#c0392b}.cc-import-card-title{margin:0 0 8px;font-size:15px;font-weight:700;color:#2a2f3b}.cc-import-card-text{margin:0 0 22px;font-size:14px;line-height:1.6;color:#2a2f3b}.cc-import-tabs{display:flex;flex-wrap:wrap;gap:20px}.cc-import-tab{background:none;border:none;border-bottom:2px solid transparent;padding:0 0 8px;font:inherit;font-size:14px;color:#5a6172;cursor:pointer}.cc-import-tab--active{color:#000;font-weight:600;border-bottom-color:#000}.cc-import-items{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:10px}.cc-import-item{font-size:14px;color:#2a2f3b}.cc-import-item--empty{color:#5a6172;font-style:italic}.cc-import-select .mat-form-field-wrapper{padding-bottom:0}.cc-import-select .mat-form-field-flex{align-items:center;height:32px;border:1px solid #767676;border-radius:6px;padding:0 12px}.cc-import-select .mat-form-field-outline,.cc-import-select .mat-form-field-outline-start,.cc-import-select .mat-form-field-outline-end,.cc-import-select .mat-form-field-outline-gap{display:none}.cc-import-select .mat-form-field-infix{width:100%;border-top:0;padding:0}.cc-import-select .mat-select-trigger{display:flex;align-items:center;justify-content:space-between;height:100%}.cc-import-select-panel .option-row{display:flex;justify-content:space-between;align-items:center;width:100%;gap:12px}.cc-import-select-panel .cc-import-option-marker{display:flex;color:#b26a00;line-height:0}.cc-import-select-search{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:8px;margin:4px 8px 8px;padding:0 10px;height:30px;border:1px solid #c3c1c1;border-radius:50px;background-color:#fff}.cc-import-select-search__icon{display:flex;color:#5a6172;line-height:0}.cc-import-select-search__input{flex:1;border:none;outline:none;font:inherit;font-size:13px;color:#2a2f3b;background:transparent}\n"] }]
224
+ }], propDecorators: { title: [{
225
+ type: Input
226
+ }], customerId: [{
227
+ type: Input
228
+ }], host: [{
229
+ type: Input
230
+ }], dcpHost: [{
231
+ type: Input
232
+ }], token: [{
233
+ type: Input
234
+ }], useMockData: [{
235
+ type: Input
236
+ }], contactCenters: [{
237
+ type: Input
238
+ }], cancel: [{
239
+ type: Output
240
+ }], imported: [{
241
+ type: Output
242
+ }] } });
243
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtaW1wb3J0L2NvbXBvbmVudHMvaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFnQyxNQUFNLEVBQWlCLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUcvSSxPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUMxRCxPQUFPLEVBQUUsOEJBQThCLEVBQUUsc0JBQXNCLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUVsSSxPQUFPLEVBQUUsbUJBQW1CLEVBQXNCLE1BQU0sc0NBQXNDLENBQUM7Ozs7Ozs7OztBQUUvRjs7Ozs7OztHQU9HO0FBT0gsTUFBTSxPQUFPLGtDQUFrQztJQU4vQztRQU9hLFVBQUssR0FBRyxtQkFBbUIsQ0FBQztRQU1yQyxpRUFBaUU7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDNUI7OztXQUdHO1FBQ00sbUJBQWMsR0FBMkIs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QU87c0JBQWYsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsV0FBVztzQkFBbkIsS0FBSztnQkFLRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMsIFZpZXdFbmNhcHN1bGF0aW9uLCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0ZXBwZXJTZWxlY3Rpb25FdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9zdGVwcGVyJztcbmltcG9ydCB7IE1hdFN0ZXBwZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zdGVwcGVyJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiwgY2F0Y2hFcnJvciwgZmluYWxpemUsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBDY0ltcG9ydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9jYy1pbXBvcnQuc2VydmljZSc7XG5pbXBvcnQgeyBDVVNUT01FUl9BU1NJU1RfTUFSS0VSX1RPT0xUSVAsIENVU1RPTUVSX0FTU0lTVF9OT1RJQ0UsIElNUE9SVF9XSVpBUkRfVElUTEUgfSBmcm9tICcuLi8uLi9jb25zdGFudHMvY2MtaW1wb3J0LmNvbnN0YW50cyc7XG5pbXBvcnQgeyBDb250YWN0Q2VudGVyLCBDb250YWN0Q2VudGVyRW50aXR5R3JvdXAsIEltcG9ydFJlc3VsdCB9IGZyb20gJy4uLy4uL3R5cGVzL2NjLWltcG9ydCc7XG5pbXBvcnQgeyBJTVBPUlRfV0laQVJEX1NURVBTLCBJbXBvcnRXaXphcmRTdGVwSWQgfSBmcm9tICcuL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQudHlwZXMnO1xuXG4vKipcbiAqIEZ1bGwtcGFnZSBcIkltcG9ydCBjb250YWN0IGNlbnRlclwiIHdpemFyZDogcGljayBhIFVDQ1ggY29udGFjdCBjZW50ZXIsIHJldmlldyB0aGVcbiAqIGVudGl0aWVzIFR1a2kgd2lsbCBjcmVhdGUgZm9yIGl0LCB0aGVuIHN0YXJ0IHRoZSBpbXBvcnQuXG4gKlxuICogUmVuZGVyZWQgYXMgYSBwYWdlIGJ5IHRoZSBob3N0IGFwcCAobGlrZSBgdGstdXNlci1jcmVhdGlvbi13aXphcmRgKSwgbm90IGFzIGEgZGlhbG9nIC1cbiAqIHRoZSBob3N0IHN3YXBzIGl0IGluIHdoZW4gdGhlIHBhbmVsJ3MgSW1wb3J0IGJ1dHRvbiBpcyBwcmVzc2VkIGFuZCBzd2FwcyBpdCBiYWNrIG91dFxuICogb24gYGNhbmNlbGAgLyBgaW1wb3J0ZWRgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NjLWltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBJbXBvcnRDb250YWN0Q2VudGVyV2l6YXJkQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMsIE9uRGVzdHJveSB7XG4gICAgQElucHV0KCkgdGl0bGUgPSBJTVBPUlRfV0laQVJEX1RJVExFO1xuICAgIEBJbnB1dCgpIGN1c3RvbWVySWQhOiBudW1iZXI7XG4gICAgQElucHV0KCkgaG9zdCE6IHN0cmluZztcbiAgICAvKiogQmFzZSBVUkwgb2YgdGhlIGRjcCBob3N0LCB3aGljaCBzZXJ2ZXMgdGhlIFVDQ1ggYXBwbGljYXRpb24gbGlzdC4gKi9cbiAgICBASW5wdXQoKSBkY3BIb3N0ITogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRva2VuITogc3RyaW5nO1xuICAgIC8qKiBTZXJ2ZSBtb2NrIGRhdGEgaW5zdGVhZCBvZiBjYWxsaW5nIHRoZSBVQ0NYIG1pZ3JhdGlvbiBBUEkuICovXG4gICAgQElucHV0KCkgdXNlTW9ja0RhdGEgPSB0cnVlO1xuICAgIC8qKlxuICAgICAqIENvbnRhY3QgY2VudGVycyB0aGUgY2FsbGVyIGhhcyBhbHJlYWR5IGxvYWRlZCAodGhlIHBhbmVsIGhhcyB0aGVtKSwgc28gdGhlIHdpemFyZFxuICAgICAqIG9wZW5zIHdpdGhvdXQgYSBzZWNvbmQgcm91bmQgdHJpcC4gTGVmdCB1bnNldCwgdGhlIHdpemFyZCBmZXRjaGVzIHRoZW0gaXRzZWxmLlxuICAgICAqL1xuICAgIEBJbnB1dCgpIGNvbnRhY3RDZW50ZXJzOiBDb250YWN0Q2VudGVyW10gfCBudWxsID0gbnVsbDtcblxuICAgIEBPdXRwdXQoKSBjYW5jZWwgPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XG4gICAgQE91dHB1dCgpIGltcG9ydGVkID0gbmV3IEV2ZW50RW1pdHRlcjxJbXBvcnRSZXN1bHQ+KCk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGNjSW1wb3J0U2VydmljZSA9IGluamVjdChDY0ltcG9ydFNlcnZpY2UpO1xuICAgIHByaXZhdGUgc3Vic2NyaXB0aW9ucyA9IG5ldyBTdWJzY3JpcHRpb24oKTtcblxuICAgIHJlYWRvbmx5IGN1c3RvbWVyQXNzaXN0Tm90aWNlID0gQ1VTVE9NRVJfQVNTSVNUX05PVElDRTtcbiAgICByZWFkb25seSBjdXN0b21lckFzc2lzdE1hcmtlclRvb2x0aXAgPSBDVVNUT01FUl9BU1NJU1RfTUFSS0VSX1RPT0xUSVA7XG5cbiAgICBzZWxlY3RlZEluZGV4ID0gMDtcblxuICAgIC8qKiBDb250YWN0IGNlbnRlcnMgYXdhaXRpbmcgcmV2aWV3IC0gdGhlIG9uZXMgdGhlcmUgaXMgc29tZXRoaW5nIHRvIGltcG9ydC4gKi9cbiAgICBvcHRpb25zOiBDb250YWN0Q2VudGVyW10gPSBbXTtcbiAgICAvKiogYG9wdGlvbnNgIG5hcnJvd2VkIGJ5IHRoZSBwaWNrZXIncyBzZWFyY2ggYm94LiAqL1xuICAgIGZpbHRlcmVkT3B0aW9uczogQ29udGFjdENlbnRlcltdID0gW107XG4gICAgc2VhcmNoVGVybSA9ICcnO1xuICAgIHNlbGVjdGVkOiBDb250YWN0Q2VudGVyIHwgbnVsbCA9IG51bGw7XG4gICAgbm90aWNlRGlzbWlzc2VkID0gZmFsc2U7XG4gICAgbG9hZGluZyA9IGZhbHNlO1xuICAgIGVycm9yID0gZmFsc2U7XG5cbiAgICBlbnRpdHlHcm91cHM6IENvbnRhY3RDZW50ZXJFbnRpdHlHcm91cFtdID0gW107XG4gICAgLyoqIFdoaWNoIGVudGl0eSBncm91cCB0aGUgT3ZlcnZpZXcgc3RlcCdzIHRhYiBiYXIgaXMgc2hvd2luZy4gKi9cbiAgICBhY3RpdmVHcm91cEluZGV4ID0gMDtcbiAgICBlbnRpdGllc0xvYWRpbmcgPSBmYWxzZTtcbiAgICBlbnRpdGllc0Vycm9yID0gZmFsc2U7XG5cbiAgICBpbXBvcnRpbmcgPSBmYWxzZTtcbiAgICBpbXBvcnRFcnJvciA9IGZhbHNlO1xuXG4gICAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcmVsb2FkVHJpZ2dlcnMgPSBbJ2N1c3RvbWVySWQnLCAnaG9zdCcsICdkY3BIb3N0JywgJ3Rva2VuJywgJ3VzZU1vY2tEYXRhJywgJ2NvbnRhY3RDZW50ZXJzJ107XG4gICAgICAgIGlmIChyZWxvYWRUcmlnZ2Vycy5zb21lKGlucHV0ID0+IGNoYW5nZXNbaW5wdXRdICYmICFjaGFuZ2VzW2lucHV0XS5maXJzdENoYW5nZSkpIHtcbiAgICAgICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGdldCBjYW5Hb05leHQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgLyoqIFRoZSBDdXN0b21lciBBc3Npc3QgYWR2aXNvcnksIHVudGlsIHRoZSB1c2VyIGRpc21pc3NlcyBpdCBvciBwaWNrcyBzb21ldGhpbmcgZWxzZS4gKi9cbiAgICBnZXQgc2hvd0N1c3RvbWVyQXNzaXN0Tm90aWNlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gISF0aGlzLnNlbGVjdGVkPy5jdXN0b21lckFzc2lzdENhcGFibGUgJiYgIXRoaXMubm90aWNlRGlzbWlzc2VkO1xuICAgIH1cblxuICAgIGdldCBjYW5JbXBvcnQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhIXRoaXMuc2VsZWN0ZWQgJiYgIXRoaXMuaW1wb3J0aW5nICYmICF0aGlzLmVudGl0aWVzTG9hZGluZyAmJiAhdGhpcy5lbnRpdGllc0Vycm9yO1xuICAgIH1cblxuICAgIG9uQ2FuY2VsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNhbmNlbC5lbWl0KCk7XG4gICAgfVxuXG4gICAgb25TZWxlY3QoYXBwbGljYXRpb25JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5vcHRpb25zLmZpbmQob3B0aW9uID0+IG9wdGlvbi5hcHBsaWNhdGlvbklkID09PSBhcHBsaWNhdGlvbklkKSA/PyBudWxsO1xuICAgICAgICBpZiAoc2VsZWN0ZWQgPT09IHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgdGhpcy5ub3RpY2VEaXNtaXNzZWQgPSBmYWxzZTtcbiAgICAgICAgLy8gRW50aXRpZXMgYmVsb25nIHRvIHRoZSBwcmV2aW91c2x5IHNlbGVjdGVkIGNvbnRhY3QgY2VudGVyIC0gZHJvcCB0aGVtIHNvIHRoZVxuICAgICAgICAvLyBvdmVydmlldyBzdGVwIHJlZmV0Y2hlcyBmb3IgdGhlIG5ldyBvbmUuXG4gICAgICAgIHRoaXMuZW50aXR5R3JvdXBzID0gW107XG4gICAgICAgIHRoaXMuYWN0aXZlR3JvdXBJbmRleCA9IDA7XG4gICAgICAgIHRoaXMuZW50aXRpZXNFcnJvciA9IGZhbHNlO1xuICAgIH1cblxuICAgIGdldCBhY3RpdmVHcm91cCgpOiBDb250YWN0Q2VudGVyRW50aXR5R3JvdXAgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbnRpdHlHcm91cHNbdGhpcy5hY3RpdmVHcm91cEluZGV4XTtcbiAgICB9XG5cbiAgICBzZWxlY3RHcm91cChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlR3JvdXBJbmRleCA9IGluZGV4O1xuICAgIH1cblxuICAgIGRpc21pc3NOb3RpY2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm90aWNlRGlzbWlzc2VkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBvblNlYXJjaChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS52YWx1ZTtcbiAgICAgICAgdGhpcy5maWx0ZXIoKTtcbiAgICB9XG5cbiAgICAvKiogUmVzZXRzIHRoZSBzZWFyY2ggYm94IGVhY2ggdGltZSB0aGUgcGlja2VyJ3MgcGFuZWwgaXMgY2xvc2VkLiAqL1xuICAgIG9uUGFuZWxUb2dnbGUob3BlbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICghb3BlbmVkICYmIHRoaXMuc2VhcmNoVGVybSkge1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hUZXJtID0gJyc7XG4gICAgICAgICAgICB0aGlzLmZpbHRlcigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25TdGVwU2VsZWN0aW9uQ2hhbmdlKGV2ZW50OiBTdGVwcGVyU2VsZWN0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gZXZlbnQuc2VsZWN0ZWRJbmRleDtcblxuICAgICAgICBpZiAodGhpcy5zdGVwSWRBdChldmVudC5zZWxlY3RlZEluZGV4KSA9PT0gJ292ZXJ2aWV3Jykge1xuICAgICAgICAgICAgdGhpcy5sb2FkRW50aXRpZXMoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV4dChzdGVwcGVyOiBNYXRTdGVwcGVyKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhbkdvTmV4dCkge1xuICAgICAgICAgICAgc3RlcHBlci5uZXh0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvblByZXZpb3VzKHN0ZXBwZXI6IE1hdFN0ZXBwZXIpOiB2b2lkIHtcbiAgICAgICAgc3RlcHBlci5wcmV2aW91cygpO1xuICAgIH1cblxuICAgIHJ1bkltcG9ydCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkIHx8IHRoaXMuaW1wb3J0aW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmltcG9ydGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuaW1wb3J0RXJyb3IgPSBmYWxzZTtcblxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbnMuYWRkKFxuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2UuaW1wb3J0Q29udGFjdENlbnRlcihOdW1iZXIodGhpcy5jdXN0b21lcklkKSwgdGhpcy5zZWxlY3RlZC5hcHBsaWNhdGlvbklkKVxuICAgICAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgICAgICBjYXRjaEVycm9yKGVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1VuYWJsZSB0byBzdGFydCB0aGUgY29udGFjdC1jZW50ZXIgaW1wb3J0JywgZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbXBvcnRFcnJvciA9IHRydWU7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2Y8SW1wb3J0UmVzdWx0IHwgbnVsbD4obnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmltcG9ydGluZyA9IGZhbHNlKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW1wb3J0ZWQuZW1pdChyZXN1bHQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHN0ZXBJZEF0KGluZGV4OiBudW1iZXIpOiBJbXBvcnRXaXphcmRTdGVwSWQgfCB1bmRlZmluZWQge1xuICAgICAgICByZXR1cm4gSU1QT1JUX1dJWkFSRF9TVEVQU1tpbmRleF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBsb2FkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS51c2VNb2NrRGF0YSA9IHRoaXMudXNlTW9ja0RhdGE7XG5cbiAgICAgICAgaWYgKHRoaXMuaG9zdCkge1xuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2Uuc2V0SG9zdCh0aGlzLmhvc3QpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRjcEhvc3QpIHtcbiAgICAgICAgICAgIHRoaXMuY2NJbXBvcnRTZXJ2aWNlLnNldERjcEhvc3QodGhpcy5kY3BIb3N0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy50b2tlbikge1xuICAgICAgICAgICAgdGhpcy5jY0ltcG9ydFNlcnZpY2Uuc2V0VG9rZW4odGhpcy50b2tlbik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5jb250YWN0Q2VudGVycykge1xuICAgICAgICAgICAgdGhpcy5zZXRPcHRpb25zKHRoaXMuY29udGFjdENlbnRlcnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY3VzdG9tZXJJZCA9IE51bWJlcih0aGlzLmN1c3RvbWVySWQpO1xuICAgICAgICBpZiAoIXRoaXMudXNlTW9ja0RhdGEgJiYgKCFjdXN0b21lcklkIHx8ICF0aGlzLnRva2VuKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5lcnJvciA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS5mZXRjaENvbnRhY3RDZW50ZXJzKGN1c3RvbWVySWQpXG4gICAgICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgIGNhdGNoRXJyb3IoZXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVW5hYmxlIHRvIGxvYWQgdGhlIGNvbnRhY3QgY2VudGVycycsIGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mPENvbnRhY3RDZW50ZXJbXT4oW10pO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5sb2FkaW5nID0gZmFsc2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoY29udGFjdENlbnRlcnMgPT4gdGhpcy5zZXRPcHRpb25zKGNvbnRhY3RDZW50ZXJzKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldE9wdGlvbnMoY29udGFjdENlbnRlcnM6IENvbnRhY3RDZW50ZXJbXSk6IHZvaWQge1xuICAgICAgICAvLyBMZWZ0IGluIHNvdXJjZSBvcmRlciBvbiBwdXJwb3NlIC0gdGhlIHBpY2tlciBzaG93cyB0aGVtIHRoZSB3YXkgdGhlIGJhY2tlbmRcbiAgICAgICAgLy8gKGFuZCB0aGUgbW9jaykgaGFuZHMgdGhlbSBvdmVyLCBub3QgYWxwaGFiZXRpY2FsbHkuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEVsaWdpYmxlIGZvciBhIFdlYmV4IENvbnRhY3QgQ2VudGVyIGltcG9ydDogbm90IGltcG9ydGVkIHlldCwgYW5kIGVpdGhlclxuICAgICAgICAvLyB1bnN1cHBvcnRlZCBvbiBDdXN0b21lciBBc3Npc3Qgb3IgcmV2aWV3YWJsZSBmb3IgZnVsbCBmZWF0dXJlIGNvdmVyYWdlLlxuICAgICAgICB0aGlzLm9wdGlvbnMgPSBjb250YWN0Q2VudGVycy5maWx0ZXIoY29udGFjdENlbnRlciA9PlxuICAgICAgICAgICAgY29udGFjdENlbnRlci5taWdyYXRpb25TdGF0ZSAhPT0gJ21pZ3JhdGVkJ1xuICAgICAgICAgICAgJiYgKGNvbnRhY3RDZW50ZXIuY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ3Vuc3VwcG9ydGVkJ1xuICAgICAgICAgICAgICAgIHx8IGNvbnRhY3RDZW50ZXIuY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ3JlcXVpcmVzLXJldmlldycpKTtcblxuICAgICAgICAvLyBBIGNvbnRhY3QgY2VudGVyIHNlbGVjdGVkIGJlZm9yZSBhIHJlbG9hZCBtYXkgbm8gbG9uZ2VyIGJlIGltcG9ydGFibGUuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkICYmICF0aGlzLm9wdGlvbnMuc29tZShvcHRpb24gPT4gb3B0aW9uLmFwcGxpY2F0aW9uSWQgPT09IHRoaXMuc2VsZWN0ZWQ/LmFwcGxpY2F0aW9uSWQpKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuZW50aXR5R3JvdXBzID0gW107XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUdyb3VwSW5kZXggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5maWx0ZXIoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZpbHRlcigpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgbmVlZGxlID0gdGhpcy5zZWFyY2hUZXJtLnRyaW0oKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IG5lZWRsZVxuICAgICAgICAgICAgPyB0aGlzLm9wdGlvbnMuZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24uYXBwbGljYXRpb25OYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMobmVlZGxlKSlcbiAgICAgICAgICAgIDogdGhpcy5vcHRpb25zO1xuICAgIH1cblxuICAgIHByaXZhdGUgbG9hZEVudGl0aWVzKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0ZWQgfHwgdGhpcy5lbnRpdHlHcm91cHMubGVuZ3RoIHx8IHRoaXMuZW50aXRpZXNMb2FkaW5nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmVudGl0aWVzTG9hZGluZyA9IHRydWU7XG4gICAgICAgIHRoaXMuZW50aXRpZXNFcnJvciA9IGZhbHNlO1xuXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5hZGQoXG4gICAgICAgICAgICB0aGlzLmNjSW1wb3J0U2VydmljZS5mZXRjaENvbnRhY3RDZW50ZXJFbnRpdGllcyhOdW1iZXIodGhpcy5jdXN0b21lcklkKSwgdGhpcy5zZWxlY3RlZClcbiAgICAgICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcihlcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKCdVbmFibGUgdG8gbG9hZCB0aGUgY29udGFjdC1jZW50ZXIgZW50aXRpZXMnLCBlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVudGl0aWVzRXJyb3IgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4gdGhpcy5lbnRpdGllc0xvYWRpbmcgPSBmYWxzZSlcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShlbnRpdGllcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW50aXR5R3JvdXBzID0gZW50aXRpZXMgPyBlbnRpdGllcy5ncm91cHMgOiBbXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEluZGV4ID0gMDtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJtb3ZlLXVzZXItc3RlcHBlci1jb250YWluZXJcIiBbYXR0ci5hcmlhLWJ1c3ldPVwiaW1wb3J0aW5nXCI+XG4gIDxoZWFkZXIgY2xhc3M9XCJtb3ZlLXVzZXItaGVhZGVyXCI+XG4gICAgPGRpdiBjbGFzcz1cIm1vdmUtdXNlci1oZWFkZXJfX3RpdGxlXCI+e3sgdGl0bGUgfX08L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibW92ZS11c2VyLWhlYWRlcl9fY2xvc2VcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLWljb24gY2MtaW1wb3J0LWNsb3NlLWljb25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiIHJvbGU9XCJidXR0b25cIiBhcmlhLWxhYmVsPVwiQ2xvc2VcIj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICA8cGF0aCBkPVwiTTUgNUwxOSAxOU0xOSA1TDUgMTlcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIxLjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIDwvaGVhZGVyPlxuXG4gIDxkaXYgaWQ9XCJjYy1pbXBvcnQtc3RlcHBlclwiPlxuICAgIDxtYXQtc3RlcHBlclxuICAgICAgI3N0ZXBwZXJcbiAgICAgIFtsaW5lYXJdPVwidHJ1ZVwiXG4gICAgICBsYWJlbFBvc2l0aW9uPVwiYm90dG9tXCJcbiAgICAgIFtzZWxlY3RlZEluZGV4XT1cInNlbGVjdGVkSW5kZXhcIlxuICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblN0ZXBTZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgPlxuXG4gICAgICA8IS0tIFN0ZXAgMTogcGljayB0aGUgVUNDWCBjb250YWN0IGNlbnRlciAtLT5cbiAgICAgIDxtYXQtc3RlcCBbY29tcGxldGVkXT1cImNhbkdvTmV4dFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPlNlbGVjdDwvbmctdGVtcGxhdGU+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC1ub3RpY2VcIiAqbmdJZj1cInNob3dDdXN0b21lckFzc2lzdE5vdGljZVwiIHJvbGU9XCJzdGF0dXNcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNjLWltcG9ydC1ub3RpY2VfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI4XCIgcj1cIjdcIiBmaWxsPVwiY3VycmVudENvbG9yXCIgLz5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDcuMXY0LjJcIiBzdHJva2U9XCIjZmZmXCIgc3Ryb2tlLXdpZHRoPVwiMS41XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCI0LjhcIiByPVwiMC45XCIgZmlsbD1cIiNmZmZcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2MtaW1wb3J0LW5vdGljZV9fdGV4dFwiPnt7IGN1c3RvbWVyQXNzaXN0Tm90aWNlIH19PC9zcGFuPlxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2MtaW1wb3J0LW5vdGljZV9fY2xvc2VcIiBhcmlhLWxhYmVsPVwiRGlzbWlzc1wiIChjbGljayk9XCJkaXNtaXNzTm90aWNlKClcIj5cbiAgICAgICAgICAgIDxzdmcgd2lkdGg9XCIxMlwiIGhlaWdodD1cIjEyXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+XG4gICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNSA1TDE5IDE5TTE5IDVMNSAxOVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPlN0ZXAgMTogU2VsZWN0IGNvbnRhY3QgY2VudGVyPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vdmUtdXNlci10YWItY29udGVudC1ib3hcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXN0YXRlXCIgKm5nSWY9XCJsb2FkaW5nXCI+TG9hZGluZyBjb250YWN0IGNlbnRlcnMmaGVsbGlwOzwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtc3RhdGUgY2MtaW1wb3J0LXN0YXRlLS1lcnJvclwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgZXJyb3JcIj5cbiAgICAgICAgICAgIFVuYWJsZSB0byBsb2FkIGNvbnRhY3QgY2VudGVycy5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDxzZWN0aW9uIGNsYXNzPVwiY2MtaW1wb3J0LXN0ZXAtY29udGVudFwiICpuZ0lmPVwiIWxvYWRpbmcgJiYgIWVycm9yXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LWZpZWxkXCI+XG4gICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNjLWltcG9ydC1sYWJlbFwiIGZvcj1cImNjLWltcG9ydC1jb250YWN0LWNlbnRlclwiPkNvbnRhY3QgY2VudGVyPC9sYWJlbD5cblxuICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgY2xhc3M9XCJjYy1pbXBvcnQtc2VsZWN0XCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cbiAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdFxuICAgICAgICAgICAgICAgICAgaWQ9XCJjYy1pbXBvcnQtY29udGFjdC1jZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgcGFuZWxDbGFzcz1cImNjLWltcG9ydC1zZWxlY3QtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3QgY29udGFjdCBjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgW2Rpc2FibGVPcHRpb25DZW50ZXJpbmddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBbdmFsdWVdPVwic2VsZWN0ZWQ/LmFwcGxpY2F0aW9uSWQgPz8gbnVsbFwiXG4gICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0KCRldmVudC52YWx1ZSlcIlxuICAgICAgICAgICAgICAgICAgKG9wZW5lZENoYW5nZSk9XCJvblBhbmVsVG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0LXRyaWdnZXI+e3sgc2VsZWN0ZWQ/LmFwcGxpY2F0aW9uTmFtZSB9fTwvbWF0LXNlbGVjdC10cmlnZ2VyPlxuXG4gICAgICAgICAgICAgICAgICA8IS0tIFNlYXJjaCBib3ggcGlubmVkIGFib3ZlIHRoZSBvcHRpb25zLiBLZXlzdHJva2VzIGFyZSBzdG9wcGVkIGhlcmUgc29cbiAgICAgICAgICAgICAgICAgICAgICAgbWF0LXNlbGVjdCdzIG93biB0eXBlYWhlYWQgZG9lcyBub3Qgc3RlYWwgdGhlbS4gLS0+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXNlbGVjdC1zZWFyY2hcIiAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2MtaW1wb3J0LXNlbGVjdC1zZWFyY2hfX2ljb25cIiBhcmlhLWhpZGRlbj1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjdcIiBjeT1cIjdcIiByPVwiNC42XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNMTAuNiAxMC42TDE0IDE0XCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS40XCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYy1pbXBvcnQtc2VsZWN0LXNlYXJjaF9faW5wdXRcIlxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJvZmZcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoXCJcbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIGNvbnRhY3QgY2VudGVyc1wiXG4gICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInNlYXJjaFRlcm1cIlxuICAgICAgICAgICAgICAgICAgICAgIChpbnB1dCk9XCJvblNlYXJjaCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZmlsdGVyZWRPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdGlvbi5hcHBsaWNhdGlvbklkXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvcHRpb24tcm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYW1lXCI+e3sgb3B0aW9uLmFwcGxpY2F0aW9uTmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjYy1pbXBvcnQtb3B0aW9uLW1hcmtlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIm9wdGlvbi5jdXN0b21lckFzc2lzdENhcGFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiY3VzdG9tZXJBc3Npc3RNYXJrZXJUb29sdGlwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIiB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDIuMiAxNC42IDEzLjRIMS40TDggMi4yWlwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk04IDYuNXYzXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4XCIgY3k9XCIxMS4zXCIgcj1cIjAuN1wiIGZpbGw9XCJjdXJyZW50Q29sb3JcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cbiAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICAgICAgICAgICAgPHAgY2xhc3M9XCJjYy1pbXBvcnQtZW1wdHlcIiAqbmdJZj1cIiFvcHRpb25zLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgIEV2ZXJ5IGRldGVjdGVkIGNvbnRhY3QgY2VudGVyIGhhcyBhbHJlYWR5IGJlZW4gaW1wb3J0ZWQuXG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc2VjdGlvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L21hdC1zdGVwPlxuXG4gICAgICA8IS0tIFN0ZXAgMjogdGhlIGVudGl0aWVzIFR1a2kgd2lsbCBjcmVhdGUgZm9yIGl0IC0tPlxuICAgICAgPG1hdC1zdGVwPlxuICAgICAgICA8bmctdGVtcGxhdGUgbWF0U3RlcExhYmVsPk92ZXJ2aWV3PC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwic3RlcC10aXRsZVwiPk92ZXJ2aWV3PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vdmUtdXNlci10YWItY29udGVudC1ib3hcIj5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJjYy1pbXBvcnQtY2FyZC10aXRsZVwiPlJldmlldyBDb250YWN0IENlbnRlciBTZXR0aW5nczwvaDM+XG4gICAgICAgICAgPHAgY2xhc3M9XCJjYy1pbXBvcnQtY2FyZC10ZXh0XCI+XG4gICAgICAgICAgICBSZXZpZXcgdGhlIHNldHRpbmdzIGZvciB5b3VyIG5ldyBDb250YWN0IGNlbnRlciB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyBpcyBjb3JyZWN0LjxiciAvPlxuICAgICAgICAgICAgWW91IGNhbiBtYWtlIGNoYW5nZXMgYXQgYW55IHRpbWUgYnkgY2xpY2tpbmcgb24gdGhlIG5hbWUgb2YgdGhlIGNvbnRhY3QgY2VudGVyIG9uIHRoZSBkZWRpY2F0ZWQgcGFnZS5cbiAgICAgICAgICA8L3A+XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXN0YXRlXCIgKm5nSWY9XCJlbnRpdGllc0xvYWRpbmdcIj5Mb2FkaW5nIGVudGl0aWVzJmhlbGxpcDs8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2MtaW1wb3J0LXN0YXRlIGNjLWltcG9ydC1zdGF0ZS0tZXJyb3JcIiAqbmdJZj1cImVudGl0aWVzRXJyb3JcIj5cbiAgICAgICAgICAgIFVuYWJsZSB0byBsb2FkIHRoZSByZWxhdGVkIGVudGl0aWVzLlxuICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFlbnRpdGllc0xvYWRpbmcgJiYgIWVudGl0aWVzRXJyb3IgJiYgZW50aXR5R3JvdXBzLmxlbmd0aFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNjLWltcG9ydC10YWJzXCIgcm9sZT1cInRhYmxpc3RcIj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiY2MtaW1wb3J0LXRhYlwiXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGVudGl0eUdyb3VwczsgaW5kZXggYXMgaVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cInRhYlwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1zZWxlY3RlZF09XCJpID09PSBhY3RpdmVHcm91cEluZGV4XCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY2MtaW1wb3J0LXRhYi0tYWN0aXZlXT1cImkgPT09IGFjdGl2ZUdyb3VwSW5kZXhcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RHcm91cChpKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7eyBncm91cC5sYWJlbCB9fVxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICA8dWwgY2xhc3M9XCJjYy1pbXBvcnQtaXRlbXNcIiByb2xlPVwidGFicGFuZWxcIj5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY2MtaW1wb3J0LWl0ZW1cIiAqbmdGb3I9XCJsZXQgaXRlbSBvZiBhY3RpdmVHcm91cD8uaXRlbXNcIj57eyBpdGVtIH19PC9saT5cbiAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiY2MtaW1wb3J0LWl0ZW0gY2MtaW1wb3J0LWl0ZW0tLWVtcHR5XCIgKm5nSWY9XCIhYWN0aXZlR3JvdXA/Lml0ZW1zPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICBOb3RoaW5nIHRvIGNyZWF0ZSBmb3Ige3sgYWN0aXZlR3JvdXA/LmxhYmVsIH19LlxuICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYy1pbXBvcnQtc3RhdGUgY2MtaW1wb3J0LXN0YXRlLS1lcnJvclwiICpuZ0lmPVwiaW1wb3J0RXJyb3JcIj5cbiAgICAgICAgICAgIFVuYWJsZSB0byBzdGFydCB0aGUgaW1wb3J0LiBQbGVhc2UgdHJ5IGFnYWluLlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvbWF0LXN0ZXA+XG4gICAgPC9tYXQtc3RlcHBlcj5cblxuICAgIDxkaXYgY2xhc3M9XCJ3aXphcmQtYWN0aW9uc1wiPlxuICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic3RlcHBlci5zZWxlY3RlZEluZGV4XCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjBcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInVjLWJ0biB1Yy1idG4tcHJpbWFyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuR29OZXh0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJvbk5leHQoc3RlcHBlcilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIE5leHRcbiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8YnV0dG9uIG1hdC1idXR0b24gY2xhc3M9XCJ1Yy1idG4gdWMtYnRuLXNlY29uZGFyeVwiIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPlxuICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIjFcIj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBtYXQtYnV0dG9uXG4gICAgICAgICAgICBjbGFzcz1cInVjLWJ0biB1Yy1idG4tcHJpbWFyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhY2FuSW1wb3J0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJydW5JbXBvcnQoKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ1Yy1idG5fX2lubGluZS1jb250ZW50XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidWMtYnRuX19zcGlubmVyXCIgKm5nSWY9XCJpbXBvcnRpbmdcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuPnt7IGltcG9ydGluZyA/ICdJbXBvcnRpbmcuLi4nIDogJ0ltcG9ydCcgfX08L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgY2xhc3M9XCJ1Yy1idG4gdWMtYnRuLXNlY29uZGFyeVwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpbXBvcnRpbmdcIlxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uUHJldmlvdXMoc3RlcHBlcilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIFByZXZpb3VzXG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJ3aXphcmQtbG9hZGluZy1vdmVybGF5XCIgW2NsYXNzLndpemFyZC1sb2FkaW5nLW92ZXJsYXktLXZpc2libGVdPVwiaW1wb3J0aW5nXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ /** The wizard's steps, in order. Index-aligned with the `mat-stepper` steps. */
2
+ export const IMPORT_WIZARD_STEPS = ['select', 'overview'];
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1wb3J0LWNvbnRhY3QtY2VudGVyLXdpemFyZC50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29tcG9uZW50cy9pbXBvcnQtY29udGFjdC1jZW50ZXItd2l6YXJkL2ltcG9ydC1jb250YWN0LWNlbnRlci13aXphcmQudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0ZBQWdGO0FBQ2hGLE1BQU0sQ0FBQyxNQUFNLG1CQUFtQixHQUFHLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBVSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqIFRoZSB3aXphcmQncyBzdGVwcywgaW4gb3JkZXIuIEluZGV4LWFsaWduZWQgd2l0aCB0aGUgYG1hdC1zdGVwcGVyYCBzdGVwcy4gKi9cbmV4cG9ydCBjb25zdCBJTVBPUlRfV0laQVJEX1NURVBTID0gWydzZWxlY3QnLCAnb3ZlcnZpZXcnXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgSW1wb3J0V2l6YXJkU3RlcElkID0gdHlwZW9mIElNUE9SVF9XSVpBUkRfU1RFUFNbbnVtYmVyXTtcbiJdfQ==
@@ -0,0 +1,62 @@
1
+ import { UCCX_ITEM_TYPE } from '../types/uccx';
2
+ export const CHART_COLORS = {
3
+ customerAssist: '#177A5C',
4
+ webexContactCenter: '#D0D0D0',
5
+ requiresReview: '#1268E3'
6
+ };
7
+ /** Compatibility score thresholds, per the ticket's scoring table. */
8
+ export const COMPATIBILITY_THRESHOLDS = {
9
+ /** 80-100 - migrates to Customer Assist with no functional loss. */
10
+ migratable: 80,
11
+ /** 60-79 - migrates to Customer Assist, minor unsupported steps dropped. */
12
+ requiresReview: 60
13
+ };
14
+ /**
15
+ * Slices of the panel's pie chart, in order: the recommended destination for every
16
+ * contact center detected in the connected UCCX environment.
17
+ *
18
+ * The panel is slice-driven, so re-cutting the chart when the design changes means
19
+ * editing this array - no component change.
20
+ */
21
+ export const IMPORT_PANEL_SLICES = [
22
+ {
23
+ label: 'To Customer Assist',
24
+ color: CHART_COLORS.customerAssist,
25
+ tooltip: 'Fully supported by Customer Assist.',
26
+ match: contactCenter => contactCenter.compatibilityStatus === 'migratable'
27
+ },
28
+ {
29
+ label: 'Requires Review',
30
+ color: CHART_COLORS.requiresReview,
31
+ tooltip: 'Supported by Customer Assist, but a few unsupported steps would change. '
32
+ + 'Can also go to Webex Contact Center for full feature coverage.',
33
+ match: contactCenter => contactCenter.compatibilityStatus === 'requires-review'
34
+ },
35
+ {
36
+ label: 'To Webex Contact Center',
37
+ color: CHART_COLORS.webexContactCenter,
38
+ tooltip: 'Not supported by Customer Assist - migrate to Webex Contact Center.',
39
+ match: contactCenter => contactCenter.compatibilityStatus === 'unsupported'
40
+ }
41
+ ];
42
+ /**
43
+ * How UCCX entity types roll up into the groups the Overview step shows, in display
44
+ * order. Types not listed here get a group of their own under their raw type name,
45
+ * so nothing the backend returns is silently dropped.
46
+ */
47
+ export const OVERVIEW_ENTITY_GROUPS = [
48
+ { label: 'Channel', types: [UCCX_ITEM_TYPE.TRIGGER] },
49
+ { label: 'Queues', types: [UCCX_ITEM_TYPE.CSQ] },
50
+ { label: 'Audio files', types: [UCCX_ITEM_TYPE.PROMPT, UCCX_ITEM_TYPE.DOCUMENT] },
51
+ { label: 'Flows', types: [UCCX_ITEM_TYPE.SCRIPT] },
52
+ { label: 'Skill', types: [UCCX_ITEM_TYPE.SKILL] },
53
+ { label: 'Contact center users', types: [UCCX_ITEM_TYPE.RESOURCE] }
54
+ ];
55
+ export const IMPORT_PANEL_TITLE = 'Import Contact center';
56
+ export const IMPORT_PANEL_TOOLTIP = 'Contact centers detected in the connected UCCX environment, and where each one can migrate to.';
57
+ export const IMPORT_WIZARD_TITLE = 'Contact Center';
58
+ /** Shown once a "requires review" contact center is picked. Dismissible. */
59
+ export const CUSTOMER_ASSIST_NOTICE = 'This contact center may also be supported by Customer Assist. Check compatibility before continuing.';
60
+ /** Tooltip on the marker the picker puts next to those same contact centers. */
61
+ export const CUSTOMER_ASSIST_MARKER_TOOLTIP = 'May also be supported by Customer Assist.';
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0LmNvbnN0YW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy9jb250YWN0LWNlbnRlci9jYy1pbXBvcnQvY29uc3RhbnRzL2NjLWltcG9ydC5jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUc7SUFDeEIsY0FBYyxFQUFFLFNBQVM7SUFDekIsa0JBQWtCLEVBQUUsU0FBUztJQUM3QixjQUFjLEVBQUUsU0FBUztDQUNuQixDQUFDO0FBRVgsc0VBQXNFO0FBQ3RFLE1BQU0sQ0FBQyxNQUFNLHdCQUF3QixHQUFHO0lBQ3BDLG9FQUFvRTtJQUNwRSxVQUFVLEVBQUUsRUFBRTtJQUNkLDRFQUE0RTtJQUM1RSxjQUFjLEVBQUUsRUFBRTtDQUNaLENBQUM7QUFFWDs7Ozs7O0dBTUc7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBdUI7SUFDbkQ7UUFDSSxLQUFLLEVBQUUsb0JBQW9CO1FBQzNCLEtBQUssRUFBRSxZQUFZLENBQUMsY0FBYztRQUNsQyxPQUFPLEVBQUUscUNBQXFDO1FBQzlDLEtBQUssRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsS0FBSyxZQUFZO0tBQzdFO0lBQ0Q7UUFDSSxLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLEtBQUssRUFBRSxZQUFZLENBQUMsY0FBYztRQUNsQyxPQUFPLEVBQUUsMEVBQTBFO2NBQzdFLGdFQUFnRTtRQUN0RSxLQUFLLEVBQUUsYUFBYSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLEtBQUssaUJBQWlCO0tBQ2xGO0lBQ0Q7UUFDSSxLQUFLLEVBQUUseUJBQXlCO1FBQ2hDLEtBQUssRUFBRSxZQUFZLENBQUMsa0JBQWtCO1FBQ3RDLE9BQU8sRUFBRSxxRUFBcUU7UUFDOUUsS0FBSyxFQUFFLGFBQWEsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLG1CQUFtQixLQUFLLGFBQWE7S0FDOUU7Q0FDSixDQUFDO0FBRUY7Ozs7R0FJRztBQUNILE1BQU0sQ0FBQyxNQUFNLHNCQUFzQixHQUF5QztJQUN4RSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0lBQ3JELEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDaEQsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0lBQ2pGLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUU7SUFDbEQsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUNqRCxFQUFFLEtBQUssRUFBRSxzQkFBc0IsRUFBRSxLQUFLLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLEVBQUU7Q0FDdEUsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDO0FBRTFELE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUM3QixnR0FBZ0csQ0FBQztBQUVyRyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxnQkFBZ0IsQ0FBQztBQUVwRCw0RUFBNEU7QUFDNUUsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQy9CLHNHQUFzRyxDQUFDO0FBRTNHLGdGQUFnRjtBQUNoRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRywyQ0FBMkMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEltcG9ydFBhbmVsU2xpY2UgfSBmcm9tICcuLi90eXBlcy9jYy1pbXBvcnQnO1xuaW1wb3J0IHsgVUNDWF9JVEVNX1RZUEUgfSBmcm9tICcuLi90eXBlcy91Y2N4JztcblxuZXhwb3J0IGNvbnN0IENIQVJUX0NPTE9SUyA9IHtcbiAgICBjdXN0b21lckFzc2lzdDogJyMxNzdBNUMnLFxuICAgIHdlYmV4Q29udGFjdENlbnRlcjogJyNEMEQwRDAnLFxuICAgIHJlcXVpcmVzUmV2aWV3OiAnIzEyNjhFMydcbn0gYXMgY29uc3Q7XG5cbi8qKiBDb21wYXRpYmlsaXR5IHNjb3JlIHRocmVzaG9sZHMsIHBlciB0aGUgdGlja2V0J3Mgc2NvcmluZyB0YWJsZS4gKi9cbmV4cG9ydCBjb25zdCBDT01QQVRJQklMSVRZX1RIUkVTSE9MRFMgPSB7XG4gICAgLyoqIDgwLTEwMCAtIG1pZ3JhdGVzIHRvIEN1c3RvbWVyIEFzc2lzdCB3aXRoIG5vIGZ1bmN0aW9uYWwgbG9zcy4gKi9cbiAgICBtaWdyYXRhYmxlOiA4MCxcbiAgICAvKiogNjAtNzkgLSBtaWdyYXRlcyB0byBDdXN0b21lciBBc3Npc3QsIG1pbm9yIHVuc3VwcG9ydGVkIHN0ZXBzIGRyb3BwZWQuICovXG4gICAgcmVxdWlyZXNSZXZpZXc6IDYwXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFNsaWNlcyBvZiB0aGUgcGFuZWwncyBwaWUgY2hhcnQsIGluIG9yZGVyOiB0aGUgcmVjb21tZW5kZWQgZGVzdGluYXRpb24gZm9yIGV2ZXJ5XG4gKiBjb250YWN0IGNlbnRlciBkZXRlY3RlZCBpbiB0aGUgY29ubmVjdGVkIFVDQ1ggZW52aXJvbm1lbnQuXG4gKlxuICogVGhlIHBhbmVsIGlzIHNsaWNlLWRyaXZlbiwgc28gcmUtY3V0dGluZyB0aGUgY2hhcnQgd2hlbiB0aGUgZGVzaWduIGNoYW5nZXMgbWVhbnNcbiAqIGVkaXRpbmcgdGhpcyBhcnJheSAtIG5vIGNvbXBvbmVudCBjaGFuZ2UuXG4gKi9cbmV4cG9ydCBjb25zdCBJTVBPUlRfUEFORUxfU0xJQ0VTOiBJbXBvcnRQYW5lbFNsaWNlW10gPSBbXG4gICAge1xuICAgICAgICBsYWJlbDogJ1RvIEN1c3RvbWVyIEFzc2lzdCcsXG4gICAgICAgIGNvbG9yOiBDSEFSVF9DT0xPUlMuY3VzdG9tZXJBc3Npc3QsXG4gICAgICAgIHRvb2x0aXA6ICdGdWxseSBzdXBwb3J0ZWQgYnkgQ3VzdG9tZXIgQXNzaXN0LicsXG4gICAgICAgIG1hdGNoOiBjb250YWN0Q2VudGVyID0+IGNvbnRhY3RDZW50ZXIuY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ21pZ3JhdGFibGUnXG4gICAgfSxcbiAgICB7XG4gICAgICAgIGxhYmVsOiAnUmVxdWlyZXMgUmV2aWV3JyxcbiAgICAgICAgY29sb3I6IENIQVJUX0NPTE9SUy5yZXF1aXJlc1JldmlldyxcbiAgICAgICAgdG9vbHRpcDogJ1N1cHBvcnRlZCBieSBDdXN0b21lciBBc3Npc3QsIGJ1dCBhIGZldyB1bnN1cHBvcnRlZCBzdGVwcyB3b3VsZCBjaGFuZ2UuICdcbiAgICAgICAgICAgICsgJ0NhbiBhbHNvIGdvIHRvIFdlYmV4IENvbnRhY3QgQ2VudGVyIGZvciBmdWxsIGZlYXR1cmUgY292ZXJhZ2UuJyxcbiAgICAgICAgbWF0Y2g6IGNvbnRhY3RDZW50ZXIgPT4gY29udGFjdENlbnRlci5jb21wYXRpYmlsaXR5U3RhdHVzID09PSAncmVxdWlyZXMtcmV2aWV3J1xuICAgIH0sXG4gICAge1xuICAgICAgICBsYWJlbDogJ1RvIFdlYmV4IENvbnRhY3QgQ2VudGVyJyxcbiAgICAgICAgY29sb3I6IENIQVJUX0NPTE9SUy53ZWJleENvbnRhY3RDZW50ZXIsXG4gICAgICAgIHRvb2x0aXA6ICdOb3Qgc3VwcG9ydGVkIGJ5IEN1c3RvbWVyIEFzc2lzdCAtIG1pZ3JhdGUgdG8gV2ViZXggQ29udGFjdCBDZW50ZXIuJyxcbiAgICAgICAgbWF0Y2g6IGNvbnRhY3RDZW50ZXIgPT4gY29udGFjdENlbnRlci5jb21wYXRpYmlsaXR5U3RhdHVzID09PSAndW5zdXBwb3J0ZWQnXG4gICAgfVxuXTtcblxuLyoqXG4gKiBIb3cgVUNDWCBlbnRpdHkgdHlwZXMgcm9sbCB1cCBpbnRvIHRoZSBncm91cHMgdGhlIE92ZXJ2aWV3IHN0ZXAgc2hvd3MsIGluIGRpc3BsYXlcbiAqIG9yZGVyLiBUeXBlcyBub3QgbGlzdGVkIGhlcmUgZ2V0IGEgZ3JvdXAgb2YgdGhlaXIgb3duIHVuZGVyIHRoZWlyIHJhdyB0eXBlIG5hbWUsXG4gKiBzbyBub3RoaW5nIHRoZSBiYWNrZW5kIHJldHVybnMgaXMgc2lsZW50bHkgZHJvcHBlZC5cbiAqL1xuZXhwb3J0IGNvbnN0IE9WRVJWSUVXX0VOVElUWV9HUk9VUFM6IHsgbGFiZWw6IHN0cmluZzsgdHlwZXM6IHN0cmluZ1tdIH1bXSA9IFtcbiAgICB7IGxhYmVsOiAnQ2hhbm5lbCcsIHR5cGVzOiBbVUNDWF9JVEVNX1RZUEUuVFJJR0dFUl0gfSxcbiAgICB7IGxhYmVsOiAnUXVldWVzJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5DU1FdIH0sXG4gICAgeyBsYWJlbDogJ0F1ZGlvIGZpbGVzJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5QUk9NUFQsIFVDQ1hfSVRFTV9UWVBFLkRPQ1VNRU5UXSB9LFxuICAgIHsgbGFiZWw6ICdGbG93cycsIHR5cGVzOiBbVUNDWF9JVEVNX1RZUEUuU0NSSVBUXSB9LFxuICAgIHsgbGFiZWw6ICdTa2lsbCcsIHR5cGVzOiBbVUNDWF9JVEVNX1RZUEUuU0tJTExdIH0sXG4gICAgeyBsYWJlbDogJ0NvbnRhY3QgY2VudGVyIHVzZXJzJywgdHlwZXM6IFtVQ0NYX0lURU1fVFlQRS5SRVNPVVJDRV0gfVxuXTtcblxuZXhwb3J0IGNvbnN0IElNUE9SVF9QQU5FTF9USVRMRSA9ICdJbXBvcnQgQ29udGFjdCBjZW50ZXInO1xuXG5leHBvcnQgY29uc3QgSU1QT1JUX1BBTkVMX1RPT0xUSVAgPVxuICAgICdDb250YWN0IGNlbnRlcnMgZGV0ZWN0ZWQgaW4gdGhlIGNvbm5lY3RlZCBVQ0NYIGVudmlyb25tZW50LCBhbmQgd2hlcmUgZWFjaCBvbmUgY2FuIG1pZ3JhdGUgdG8uJztcblxuZXhwb3J0IGNvbnN0IElNUE9SVF9XSVpBUkRfVElUTEUgPSAnQ29udGFjdCBDZW50ZXInO1xuXG4vKiogU2hvd24gb25jZSBhIFwicmVxdWlyZXMgcmV2aWV3XCIgY29udGFjdCBjZW50ZXIgaXMgcGlja2VkLiBEaXNtaXNzaWJsZS4gKi9cbmV4cG9ydCBjb25zdCBDVVNUT01FUl9BU1NJU1RfTk9USUNFID1cbiAgICAnVGhpcyBjb250YWN0IGNlbnRlciBtYXkgYWxzbyBiZSBzdXBwb3J0ZWQgYnkgQ3VzdG9tZXIgQXNzaXN0LiBDaGVjayBjb21wYXRpYmlsaXR5IGJlZm9yZSBjb250aW51aW5nLic7XG5cbi8qKiBUb29sdGlwIG9uIHRoZSBtYXJrZXIgdGhlIHBpY2tlciBwdXRzIG5leHQgdG8gdGhvc2Ugc2FtZSBjb250YWN0IGNlbnRlcnMuICovXG5leHBvcnQgY29uc3QgQ1VTVE9NRVJfQVNTSVNUX01BUktFUl9UT09MVElQID0gJ01heSBhbHNvIGJlIHN1cHBvcnRlZCBieSBDdXN0b21lciBBc3Npc3QuJztcbiJdfQ==
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Stand-in data used when `CcImportService.useMockData` is on.
3
+ *
4
+ * Shapes here mirror exactly what `CcImportService` produces from the real backend,
5
+ * so switching over is a matter of flipping `useMockData` to false.
6
+ */
7
+ const APPLICATION_NAMES = [
8
+ 'Operations', 'Sales', 'Support', 'Billing', 'Reception', 'Helpdesk', 'Retention',
9
+ 'Onboarding', 'Escalations', 'Emergency', 'Pharmacy', 'Appointments', 'Claims',
10
+ 'Collections', 'Dispatch', 'Front Desk', 'IT Service Desk', 'Loyalty', 'Orders', 'Returns'
11
+ ];
12
+ /** One tab per group on the wizard's Overview step, in the order they are shown. */
13
+ const ENTITY_GROUP_TEMPLATE = [
14
+ { label: 'Channel', suffixes: ['_CC'] },
15
+ { label: 'Queues', suffixes: ['_Queue'] },
16
+ { label: 'Audio files', suffixes: [' Welcome', ' Music On Hold', ' Closed Message'] },
17
+ { label: 'Flows', suffixes: ['_Flow'] },
18
+ { label: 'Skill', suffixes: ['_Skill'] },
19
+ { label: 'Contact center users', suffixes: [' Supervisor', ' Agent 1', ' Agent 2'] }
20
+ ];
21
+ /**
22
+ * The ten contact centers that still need a decision - the only ones the wizard
23
+ * offers, so these are exactly the rows the picker shows, in this order. The flagged
24
+ * three are "requires review" and carry the marker plus the advisory notice.
25
+ */
26
+ const REVIEW_CONTACT_CENTERS = [
27
+ { name: 'Operations', requiresReview: true },
28
+ { name: 'Sales_inquiry' },
29
+ { name: 'Tech Support' },
30
+ { name: 'Tech_Info' },
31
+ { name: 'Finance', requiresReview: true },
32
+ { name: 'Innovation', requiresReview: true },
33
+ { name: 'Marketing' },
34
+ { name: 'Gen_Support' },
35
+ { name: 'Legal' },
36
+ { name: 'Sales Support' }
37
+ ];
38
+ /** 100 contact centers: 70 migratable, 20 unsupported, 10 still to be imported. */
39
+ export function mockContactCenters() {
40
+ const contactCenters = [];
41
+ // 90 already-imported ones, split across the two destinations.
42
+ for (let i = 0; i < 90; i++) {
43
+ const name = `${APPLICATION_NAMES[i % APPLICATION_NAMES.length]}_${Math.floor(i / APPLICATION_NAMES.length) + 1}`;
44
+ const compatibilityStatus = i < 70 ? 'migratable' : 'unsupported';
45
+ contactCenters.push({
46
+ applicationId: `app-${i + 1}`,
47
+ applicationName: name,
48
+ scriptName: `${name}_AA_Queue.aef`,
49
+ compatibilityStatus,
50
+ compatibilityScore: compatibilityStatus === 'migratable' ? 92 : 41,
51
+ migrationState: 'migrated'
52
+ });
53
+ }
54
+ REVIEW_CONTACT_CENTERS.forEach((contactCenter, i) => {
55
+ const compatibilityStatus = contactCenter.requiresReview ? 'requires-review' : 'unsupported';
56
+ contactCenters.push({
57
+ applicationId: `app-${91 + i}`,
58
+ applicationName: contactCenter.name,
59
+ scriptName: `${contactCenter.name}_AA_Queue.aef`,
60
+ compatibilityStatus,
61
+ compatibilityScore: contactCenter.requiresReview ? 68 : 44,
62
+ migrationState: 'not-migrated',
63
+ customerAssistCapable: compatibilityStatus === 'requires-review'
64
+ });
65
+ });
66
+ return contactCenters;
67
+ }
68
+ export function mockContactCenterEntities(contactCenter) {
69
+ const base = contactCenter.applicationName;
70
+ return {
71
+ applicationId: contactCenter.applicationId,
72
+ groups: ENTITY_GROUP_TEMPLATE.map(group => ({
73
+ label: group.label,
74
+ items: group.suffixes.map(suffix => `${base}${suffix}`)
75
+ }))
76
+ };
77
+ }
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0Lm1vY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvY29udGFjdC1jZW50ZXIvY2MtaW1wb3J0L21vY2svY2MtaW1wb3J0Lm1vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUE7Ozs7O0dBS0c7QUFFSCxNQUFNLGlCQUFpQixHQUFHO0lBQ3RCLFlBQVksRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFdBQVc7SUFDakYsWUFBWSxFQUFFLGFBQWEsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxRQUFRO0lBQzlFLGFBQWEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUztDQUM3RixDQUFDO0FBRUYsb0ZBQW9GO0FBQ3BGLE1BQU0scUJBQXFCLEdBQTRDO0lBQ25FLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUMsRUFBRTtJQUN2QyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDekMsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFFLFFBQVEsRUFBRSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsQ0FBQyxFQUFFO0lBQ3JGLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUMsRUFBRTtJQUN2QyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7SUFDeEMsRUFBRSxLQUFLLEVBQUUsc0JBQXNCLEVBQUUsUUFBUSxFQUFFLENBQUMsYUFBYSxFQUFFLFVBQVUsRUFBRSxVQUFVLENBQUMsRUFBRTtDQUN2RixDQUFDO0FBRUY7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LEVBQUUsQ0FBQyxHQUFHLElBQUksR0FBRyxNQUFNLEVBQUUsQ0FBQztTQUMxRCxDQUFDLENBQUM7S0FDTixDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnRhY3RDZW50ZXIsIENvbnRhY3RDZW50ZXJDb21wYXRpYmlsaXR5U3RhdHVzLCBDb250YWN0Q2VudGVyRW50aXRpZXMgfSBmcm9tICcuLi90eXBlcy9jYy1pbXBvcnQnO1xuXG4vKipcbiAqIFN0YW5kLWluIGRhdGEgdXNlZCB3aGVuIGBDY0ltcG9ydFNlcnZpY2UudXNlTW9ja0RhdGFgIGlzIG9uLlxuICpcbiAqIFNoYXBlcyBoZXJlIG1pcnJvciBleGFjdGx5IHdoYXQgYENjSW1wb3J0U2VydmljZWAgcHJvZHVjZXMgZnJvbSB0aGUgcmVhbCBiYWNrZW5kLFxuICogc28gc3dpdGNoaW5nIG92ZXIgaXMgYSBtYXR0ZXIgb2YgZmxpcHBpbmcgYHVzZU1vY2tEYXRhYCB0byBmYWxzZS5cbiAqL1xuXG5jb25zdCBBUFBMSUNBVElPTl9OQU1FUyA9IFtcbiAgICAnT3BlcmF0aW9ucycsICdTYWxlcycsICdTdXBwb3J0JywgJ0JpbGxpbmcnLCAnUmVjZXB0aW9uJywgJ0hlbHBkZXNrJywgJ1JldGVudGlvbicsXG4gICAgJ09uYm9hcmRpbmcnLCAnRXNjYWxhdGlvbnMnLCAnRW1lcmdlbmN5JywgJ1BoYXJtYWN5JywgJ0FwcG9pbnRtZW50cycsICdDbGFpbXMnLFxuICAgICdDb2xsZWN0aW9ucycsICdEaXNwYXRjaCcsICdGcm9udCBEZXNrJywgJ0lUIFNlcnZpY2UgRGVzaycsICdMb3lhbHR5JywgJ09yZGVycycsICdSZXR1cm5zJ1xuXTtcblxuLyoqIE9uZSB0YWIgcGVyIGdyb3VwIG9uIHRoZSB3aXphcmQncyBPdmVydmlldyBzdGVwLCBpbiB0aGUgb3JkZXIgdGhleSBhcmUgc2hvd24uICovXG5jb25zdCBFTlRJVFlfR1JPVVBfVEVNUExBVEU6IHsgbGFiZWw6IHN0cmluZzsgc3VmZml4ZXM6IHN0cmluZ1tdIH1bXSA9IFtcbiAgICB7IGxhYmVsOiAnQ2hhbm5lbCcsIHN1ZmZpeGVzOiBbJ19DQyddIH0sXG4gICAgeyBsYWJlbDogJ1F1ZXVlcycsIHN1ZmZpeGVzOiBbJ19RdWV1ZSddIH0sXG4gICAgeyBsYWJlbDogJ0F1ZGlvIGZpbGVzJywgc3VmZml4ZXM6IFsnIFdlbGNvbWUnLCAnIE11c2ljIE9uIEhvbGQnLCAnIENsb3NlZCBNZXNzYWdlJ10gfSxcbiAgICB7IGxhYmVsOiAnRmxvd3MnLCBzdWZmaXhlczogWydfRmxvdyddIH0sXG4gICAgeyBsYWJlbDogJ1NraWxsJywgc3VmZml4ZXM6IFsnX1NraWxsJ10gfSxcbiAgICB7IGxhYmVsOiAnQ29udGFjdCBjZW50ZXIgdXNlcnMnLCBzdWZmaXhlczogWycgU3VwZXJ2aXNvcicsICcgQWdlbnQgMScsICcgQWdlbnQgMiddIH1cbl07XG5cbi8qKlxuICogVGhlIHRlbiBjb250YWN0IGNlbnRlcnMgdGhhdCBzdGlsbCBuZWVkIGEgZGVjaXNpb24gLSB0aGUgb25seSBvbmVzIHRoZSB3aXphcmRcbiAqIG9mZmVycywgc28gdGhlc2UgYXJlIGV4YWN0bHkgdGhlIHJvd3MgdGhlIHBpY2tlciBzaG93cywgaW4gdGhpcyBvcmRlci4gVGhlIGZsYWdnZWRcbiAqIHRocmVlIGFyZSBcInJlcXVpcmVzIHJldmlld1wiIGFuZCBjYXJyeSB0aGUgbWFya2VyIHBsdXMgdGhlIGFkdmlzb3J5IG5vdGljZS5cbiAqL1xuY29uc3QgUkVWSUVXX0NPTlRBQ1RfQ0VOVEVSUzogeyBuYW1lOiBzdHJpbmc7IHJlcXVpcmVzUmV2aWV3PzogYm9vbGVhbiB9W10gPSBbXG4gICAgeyBuYW1lOiAnT3BlcmF0aW9ucycsIHJlcXVpcmVzUmV2aWV3OiB0cnVlIH0sXG4gICAgeyBuYW1lOiAnU2FsZXNfaW5xdWlyeScgfSxcbiAgICB7IG5hbWU6ICdUZWNoIFN1cHBvcnQnIH0sXG4gICAgeyBuYW1lOiAnVGVjaF9JbmZvJyB9LFxuICAgIHsgbmFtZTogJ0ZpbmFuY2UnLCByZXF1aXJlc1JldmlldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogJ0lubm92YXRpb24nLCByZXF1aXJlc1JldmlldzogdHJ1ZSB9LFxuICAgIHsgbmFtZTogJ01hcmtldGluZycgfSxcbiAgICB7IG5hbWU6ICdHZW5fU3VwcG9ydCcgfSxcbiAgICB7IG5hbWU6ICdMZWdhbCcgfSxcbiAgICB7IG5hbWU6ICdTYWxlcyBTdXBwb3J0JyB9XG5dO1xuXG4vKiogMTAwIGNvbnRhY3QgY2VudGVyczogNzAgbWlncmF0YWJsZSwgMjAgdW5zdXBwb3J0ZWQsIDEwIHN0aWxsIHRvIGJlIGltcG9ydGVkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tDb250YWN0Q2VudGVycygpOiBDb250YWN0Q2VudGVyW10ge1xuICAgIGNvbnN0IGNvbnRhY3RDZW50ZXJzOiBDb250YWN0Q2VudGVyW10gPSBbXTtcblxuICAgIC8vIDkwIGFscmVhZHktaW1wb3J0ZWQgb25lcywgc3BsaXQgYWNyb3NzIHRoZSB0d28gZGVzdGluYXRpb25zLlxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgOTA7IGkrKykge1xuICAgICAgICBjb25zdCBuYW1lID0gYCR7QVBQTElDQVRJT05fTkFNRVNbaSAlIEFQUExJQ0FUSU9OX05BTUVTLmxlbmd0aF19XyR7TWF0aC5mbG9vcihpIC8gQVBQTElDQVRJT05fTkFNRVMubGVuZ3RoKSArIDF9YDtcbiAgICAgICAgY29uc3QgY29tcGF0aWJpbGl0eVN0YXR1czogQ29udGFjdENlbnRlckNvbXBhdGliaWxpdHlTdGF0dXMgPSBpIDwgNzAgPyAnbWlncmF0YWJsZScgOiAndW5zdXBwb3J0ZWQnO1xuXG4gICAgICAgIGNvbnRhY3RDZW50ZXJzLnB1c2goe1xuICAgICAgICAgICAgYXBwbGljYXRpb25JZDogYGFwcC0ke2kgKyAxfWAsXG4gICAgICAgICAgICBhcHBsaWNhdGlvbk5hbWU6IG5hbWUsXG4gICAgICAgICAgICBzY3JpcHROYW1lOiBgJHtuYW1lfV9BQV9RdWV1ZS5hZWZgLFxuICAgICAgICAgICAgY29tcGF0aWJpbGl0eVN0YXR1cyxcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHlTY29yZTogY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ21pZ3JhdGFibGUnID8gOTIgOiA0MSxcbiAgICAgICAgICAgIG1pZ3JhdGlvblN0YXRlOiAnbWlncmF0ZWQnXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIFJFVklFV19DT05UQUNUX0NFTlRFUlMuZm9yRWFjaCgoY29udGFjdENlbnRlciwgaSkgPT4ge1xuICAgICAgICBjb25zdCBjb21wYXRpYmlsaXR5U3RhdHVzOiBDb250YWN0Q2VudGVyQ29tcGF0aWJpbGl0eVN0YXR1cyA9XG4gICAgICAgICAgICBjb250YWN0Q2VudGVyLnJlcXVpcmVzUmV2aWV3ID8gJ3JlcXVpcmVzLXJldmlldycgOiAndW5zdXBwb3J0ZWQnO1xuXG4gICAgICAgIGNvbnRhY3RDZW50ZXJzLnB1c2goe1xuICAgICAgICAgICAgYXBwbGljYXRpb25JZDogYGFwcC0kezkxICsgaX1gLFxuICAgICAgICAgICAgYXBwbGljYXRpb25OYW1lOiBjb250YWN0Q2VudGVyLm5hbWUsXG4gICAgICAgICAgICBzY3JpcHROYW1lOiBgJHtjb250YWN0Q2VudGVyLm5hbWV9X0FBX1F1ZXVlLmFlZmAsXG4gICAgICAgICAgICBjb21wYXRpYmlsaXR5U3RhdHVzLFxuICAgICAgICAgICAgY29tcGF0aWJpbGl0eVNjb3JlOiBjb250YWN0Q2VudGVyLnJlcXVpcmVzUmV2aWV3ID8gNjggOiA0NCxcbiAgICAgICAgICAgIG1pZ3JhdGlvblN0YXRlOiAnbm90LW1pZ3JhdGVkJyxcbiAgICAgICAgICAgIGN1c3RvbWVyQXNzaXN0Q2FwYWJsZTogY29tcGF0aWJpbGl0eVN0YXR1cyA9PT0gJ3JlcXVpcmVzLXJldmlldydcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gY29udGFjdENlbnRlcnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2NrQ29udGFjdENlbnRlckVudGl0aWVzKGNvbnRhY3RDZW50ZXI6IENvbnRhY3RDZW50ZXIpOiBDb250YWN0Q2VudGVyRW50aXRpZXMge1xuICAgIGNvbnN0IGJhc2UgPSBjb250YWN0Q2VudGVyLmFwcGxpY2F0aW9uTmFtZTtcblxuICAgIHJldHVybiB7XG4gICAgICAgIGFwcGxpY2F0aW9uSWQ6IGNvbnRhY3RDZW50ZXIuYXBwbGljYXRpb25JZCxcbiAgICAgICAgZ3JvdXBzOiBFTlRJVFlfR1JPVVBfVEVNUExBVEUubWFwKGdyb3VwID0+ICh7XG4gICAgICAgICAgICBsYWJlbDogZ3JvdXAubGFiZWwsXG4gICAgICAgICAgICBpdGVtczogZ3JvdXAuc3VmZml4ZXMubWFwKHN1ZmZpeCA9PiBgJHtiYXNlfSR7c3VmZml4fWApXG4gICAgICAgIH0pKVxuICAgIH07XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2MtaW1wb3J0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL2NvbnRhY3QtY2VudGVyL2NjLWltcG9ydC90eXBlcy9jYy1pbXBvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSG93IHdlbGwgYSBjb250YWN0IGNlbnRlcidzIEFFRiBzY3JpcHQgbWFwcyBvbnRvIEN1c3RvbWVyIEFzc2lzdCwgZnJvbSB0aGVcbiAqIGNvbXBhdGliaWxpdHkgc2NvcmU6IDw2MCB1bnN1cHBvcnRlZCwgNjAtNzkgcmVxdWlyZXMgcmV2aWV3LCA4MC0xMDAgbWlncmF0YWJsZS5cbiAqXG4gKiBgbnVsbGAgbWVhbnMgdGhlIGJhY2tlbmQgZGlkIG5vdCBzdXBwbHkgYSBzY29yZS4gVGhlIEFFRiBzY29yaW5nIEFQSSBkb2VzIG5vdFxuICogZXhpc3QgeWV0ICh0aGUgc2NvcmluZyBtYXBwaW5nIGRvY3VtZW50IGlzIHN0aWxsIGEgcGVuZGluZyBpbnB1dCBvbiB0aGUgdGlja2V0KSxcbiAqIHNvIHRvZGF5IHRoaXMgaXMgYWx3YXlzIGZpbGxlZCBpbiBsb2NhbGx5IC0gc2VlIGBDY0ltcG9ydFNlcnZpY2VgLlxuICovXG5leHBvcnQgdHlwZSBDb250YWN0Q2VudGVyQ29tcGF0aWJpbGl0eVN0YXR1cyA9ICdtaWdyYXRhYmxlJyB8ICdyZXF1aXJlcy1yZXZpZXcnIHwgJ3Vuc3VwcG9ydGVkJztcblxuLyoqIFdoZXRoZXIgVHVraSBoYXMgYWxyZWFkeSBpbXBvcnRlZCB0aGlzIGNvbnRhY3QgY2VudGVyLiBEZXJpdmVkIGZyb20gcmVhbCBkYXRhLiAqL1xuZXhwb3J0IHR5cGUgQ29udGFjdENlbnRlck1pZ3JhdGlvblN0YXRlID0gJ21pZ3JhdGVkJyB8ICdub3QtbWlncmF0ZWQnO1xuXG4vKiogT25lIFVDQ1ggYXBwbGljYXRpb24gKGNvbnRhY3QgY2VudGVyKSB0aGF0IFR1a2kgY2FuIGltcG9ydC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENlbnRlciB7XG4gICAgLyoqXG4gICAgICogSWRlbnRpdHkgb2YgdGhlIGNvbnRhY3QgY2VudGVyLiBVQ0NYIGhhcyBubyBhcHBsaWNhdGlvbiBpZCBvZiBpdHMgb3duIC0gdGhlXG4gICAgICogYXBwbGljYXRpb24gKm5hbWUqIGlzIHRoZSBrZXkgZXZlcnkgYmFja2VuZCBlbmRwb2ludCBmaWx0ZXJzIG9uIC0gc28gdGhpc1xuICAgICAqIGNhcnJpZXMgdGhlIG5hbWUgZm9yIHJlYWwgZGF0YS5cbiAgICAgKi9cbiAgICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gICAgYXBwbGljYXRpb25OYW1lOiBzdHJpbmc7XG4gICAgLyoqIEFFRiBmaWxlIGJhY2tpbmcgdGhlIGFwcGxpY2F0aW9uLCBlLmcuIFwiT3BlcmF0aW9uc19BQV9RdWV1ZV9GaXhlZC5hZWZcIi4gKi9cbiAgICBzY3JpcHROYW1lOiBzdHJpbmc7XG4gICAgLyoqIFRoZSBVQ0NYIHNlcnZlciBpdCB3YXMgY29sbGVjdGVkIGZyb20sIG5lZWRlZCBieSB0aGUgcGVyLWFwcGxpY2F0aW9uIGVuZHBvaW50cy4gKi9cbiAgICB1Y2N4SXA/OiBzdHJpbmc7XG4gICAgY29tcGF0aWJpbGl0eVN0YXR1czogQ29udGFjdENlbnRlckNvbXBhdGliaWxpdHlTdGF0dXM7XG4gICAgLyoqIFRoZSAwLTEwMCBzY29yZSBiZWhpbmQgYGNvbXBhdGliaWxpdHlTdGF0dXNgLCB3aGVuIHRoZSBiYWNrZW5kIHN1cHBsaWVkIG9uZS4gKi9cbiAgICBjb21wYXRpYmlsaXR5U2NvcmU/OiBudW1iZXI7XG4gICAgbWlncmF0aW9uU3RhdGU6IENvbnRhY3RDZW50ZXJNaWdyYXRpb25TdGF0ZTtcbiAgICAvKipcbiAgICAgKiBBZHZpc29yeSBmbGFnOiBhIFwicmVxdWlyZXMgcmV2aWV3XCIgY29udGFjdCBjZW50ZXIgY2FuIGdvIHRvIEN1c3RvbWVyIEFzc2lzdCBhc1xuICAgICAqIHdlbGwgYXMgdG8gV2ViZXggQ29udGFjdCBDZW50ZXIuIFN1cmZhY2VkIGFzIGEgbWFya2VyIGluIHRoZSBwaWNrZXIgYW5kIGEgbm90aWNlXG4gICAgICogb25jZSBzZWxlY3RlZCAtIGl0IGRvZXMgbm90IGJsb2NrIHRoZSBpbXBvcnQuXG4gICAgICovXG4gICAgY3VzdG9tZXJBc3Npc3RDYXBhYmxlPzogYm9vbGVhbjtcbn1cblxuLyoqIE9uZSByb3cgb2YgdGhlIGltcG9ydCBcIk92ZXJ2aWV3XCIgc3RlcCwgZS5nLiB7IGxhYmVsOiAnUXVldWVzJywgaXRlbXM6IFsnU2FsZXNfUXVldWUnXSB9LiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWN0Q2VudGVyRW50aXR5R3JvdXAge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgaXRlbXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIEFwcGxpY2F0aW9uLWNlbnRyaWMgZW50aXR5IGJyZWFrZG93bjogZXZlcnl0aGluZyBUdWtpIHdpbGwgY3JlYXRlIGZvciB0aGlzXG4gKiBjb250YWN0IGNlbnRlciwgcGFja2FnZWQgYXMgYSBzaW5nbGUgbWlncmF0aW9uIHVuaXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFjdENlbnRlckVudGl0aWVzIHtcbiAgICBhcHBsaWNhdGlvbklkOiBzdHJpbmc7XG4gICAgZ3JvdXBzOiBDb250YWN0Q2VudGVyRW50aXR5R3JvdXBbXTtcbn1cblxuLyoqIERlY2xhcmF0aXZlIGRlc2NyaXB0aW9uIG9mIG9uZSBwaWUgc2xpY2UgLyBsZWdlbmQgcm93IG9mIHRoZSBwYW5lbC4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UGFuZWxTbGljZSB7XG4gICAgbGFiZWw6IHN0cmluZztcbiAgICBjb2xvcjogc3RyaW5nO1xuICAgIHRvb2x0aXA6IHN0cmluZztcbiAgICAvKiogV2hpY2ggY29udGFjdCBjZW50ZXJzIGZhbGwgaW50byB0aGlzIHNsaWNlLiAqL1xuICAgIG1hdGNoOiAoY29udGFjdENlbnRlcjogQ29udGFjdENlbnRlcikgPT4gYm9vbGVhbjtcbn1cblxuLyoqIEEgc2xpY2Ugb25jZSBpdCBoYXMgYmVlbiByZXNvbHZlZCBhZ2FpbnN0IHJlYWwgZGF0YS4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW1wb3J0UGFuZWxTZWdtZW50IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGNvbG9yOiBzdHJpbmc7XG4gICAgdG9vbHRpcDogc3RyaW5nO1xuICAgIGNvdW50OiBudW1iZXI7XG4gICAgcGVyY2VudGFnZTogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcG9ydFJlc3VsdCB7XG4gICAgYXBwbGljYXRpb25JZDogc3RyaW5nO1xuICAgIGFjY2VwdGVkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBYTFNYIG1pZ3JhdGlvbiB0cmFja2VyIHRoZSBiYWNrZW5kIGFuc3dlcnMgd2l0aC4gRXhlY3V0aW9uIGFuZCBwcm9ncmVzc1xuICAgICAqIHRyYWNraW5nIGFyZSBkZWZpbmVkIGluIGEgc2VwYXJhdGUgdGlja2V0OyB0aGlzIGlzIHNpbXBseSB3aGF0IGNhbWUgYmFjay5cbiAgICAgKi9cbiAgICByZXBvcnQ/OiBCbG9iO1xufVxuIl19