@tuki-io/tuki-widgets 0.0.219-dev.5 → 0.0.219-dev.51

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 (193) hide show
  1. package/di2mt/api/api.endpoints.d.ts +3 -0
  2. package/esm2020/di2mt/api/api.endpoints.mjs +4 -1
  3. package/esm2020/locations/public-api.mjs +8 -0
  4. package/esm2020/locations/src/app.constants.mjs +14 -0
  5. package/esm2020/locations/src/location-confirm-dialog/location-confirm-dialog.component.mjs +23 -0
  6. package/esm2020/locations/src/locations.component.mjs +351 -0
  7. package/esm2020/locations/src/locations.module.mjs +42 -0
  8. package/esm2020/locations/src/material.module.mjs +55 -0
  9. package/esm2020/locations/src/services/api.service.mjs +67 -0
  10. package/esm2020/locations/src/services/locations.service.mjs +65 -0
  11. package/esm2020/locations/src/types/location.mjs +2 -0
  12. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +14 -0
  13. package/esm2020/locations/tuki-io-tuki-widgets-locations.mjs +5 -0
  14. package/esm2020/meetings/public-api.mjs +8 -0
  15. package/esm2020/meetings/src/app.constants.mjs +9 -0
  16. package/esm2020/meetings/src/components/live-meetings/live-meeting/live-meeting.component.mjs +107 -0
  17. package/esm2020/meetings/src/components/live-meetings/live-meetings.component.mjs +98 -0
  18. package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +110 -0
  19. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +65 -0
  20. package/esm2020/meetings/src/material.module.mjs +76 -0
  21. package/esm2020/meetings/src/meetings.component.mjs +65 -0
  22. package/esm2020/meetings/src/meetings.module.mjs +51 -0
  23. package/esm2020/meetings/src/services/api.service.mjs +67 -0
  24. package/esm2020/meetings/src/services/live-meetings.service.mjs +178 -0
  25. package/esm2020/meetings/src/services/meeting-spaces.service.mjs +102 -0
  26. package/esm2020/meetings/src/types/live-meeting.mjs +2 -0
  27. package/esm2020/meetings/src/types/meeting-space.mjs +2 -0
  28. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +14 -0
  29. package/esm2020/meetings/tuki-io-tuki-widgets-meetings.mjs +5 -0
  30. package/esm2020/shared/public-api.mjs +4 -0
  31. package/esm2020/shared/src/ui/material.module.mjs +188 -0
  32. package/esm2020/shared/src/ui/shared.module.mjs +36 -0
  33. package/esm2020/shared/src/ui/tk-page-section/tk-page-section.component.mjs +13 -0
  34. package/esm2020/shared/src/ui/tk-page-section-row/tk-page-section-row.component.mjs +13 -0
  35. package/esm2020/shared/src/ui/ui.module.mjs +37 -0
  36. package/esm2020/shared/tuki-io-tuki-widgets-shared.mjs +5 -0
  37. package/esm2020/user-creation/src/utils/device-default-prefix.mjs +19 -2
  38. package/esm2020/user-creation/src/utils/device-name-dynamic-tokens.mjs +4 -0
  39. package/esm2020/user-creation/src/utils/parse-device-name-rule.mjs +6 -3
  40. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +60 -13
  41. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +2 -1
  42. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +8 -6
  43. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.service.mjs +13 -9
  44. package/esm2020/user-device-manage/src/classes/simplified-user.mjs +1 -1
  45. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +1 -4
  46. package/esm2020/user-manage/src/app.constants.mjs +7 -1
  47. package/esm2020/user-manage/src/classes/simplified-user.mjs +5 -3
  48. package/esm2020/user-manage/src/device-list/device-list.component.mjs +7 -4
  49. package/esm2020/user-manage/src/device-list/device-row/device-row.component.mjs +6 -3
  50. package/esm2020/user-manage/src/material.module.mjs +14 -7
  51. package/esm2020/user-manage/src/services/dcp-api.service.mjs +79 -0
  52. package/esm2020/user-manage/src/services/user.service.mjs +65 -19
  53. package/esm2020/user-manage/src/user-calling/user-calling.component.mjs +12 -7
  54. package/esm2020/user-manage/src/user-manage-widget.component.mjs +64 -23
  55. package/esm2020/user-manage/src/user-manage.module.mjs +10 -3
  56. package/esm2020/users-list/src/app.constants.mjs +2 -1
  57. package/esm2020/users-list/src/classes/simlified-user.mjs +1 -1
  58. package/esm2020/users-list/src/classes/user-list.mjs +2 -1
  59. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +3 -3
  60. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +14 -3
  61. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -3
  62. package/esm2020/users-list/src/users-list.component.mjs +100 -17
  63. package/esm2020/workspaces/public-api.mjs +8 -0
  64. package/esm2020/workspaces/src/app.constants.mjs +27 -0
  65. package/esm2020/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.mjs +32 -0
  66. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +61 -0
  67. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +56 -0
  68. package/esm2020/workspaces/src/components/workspaces-table/workspaces-table.component.mjs +127 -0
  69. package/esm2020/workspaces/src/material.module.mjs +83 -0
  70. package/esm2020/workspaces/src/services/api-webex.service.mjs +14 -0
  71. package/esm2020/workspaces/src/services/api.service.mjs +67 -0
  72. package/esm2020/workspaces/src/services/workspace-detail.service.mjs +122 -0
  73. package/esm2020/workspaces/src/services/workspaces-migration.service.mjs +59 -0
  74. package/esm2020/workspaces/src/services/workspaces.service.mjs +105 -0
  75. package/esm2020/workspaces/src/types/workspace.mjs +4 -0
  76. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +14 -0
  77. package/esm2020/workspaces/src/utils/device-icon.mjs +13 -0
  78. package/esm2020/workspaces/src/utils/workspace-name.mjs +8 -0
  79. package/esm2020/workspaces/src/workspaces.component.mjs +306 -0
  80. package/esm2020/workspaces/src/workspaces.module.mjs +51 -0
  81. package/esm2020/workspaces/tuki-io-tuki-widgets-workspaces.mjs +5 -0
  82. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +3 -0
  83. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  84. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +623 -0
  85. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -0
  86. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +894 -0
  87. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -0
  88. package/fesm2015/tuki-io-tuki-widgets-shared.mjs +280 -0
  89. package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -0
  90. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +111 -32
  91. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  92. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +0 -13
  93. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  94. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +253 -60
  95. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  96. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +121 -22
  97. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  98. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +1082 -0
  99. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -0
  100. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +3 -0
  101. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  102. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +617 -0
  103. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -0
  104. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +902 -0
  105. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -0
  106. package/fesm2020/tuki-io-tuki-widgets-shared.mjs +280 -0
  107. package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -0
  108. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +104 -28
  109. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  110. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +0 -13
  111. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  112. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +248 -58
  113. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  114. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +120 -22
  115. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  116. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +1089 -0
  117. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -0
  118. package/locations/index.d.ts +5 -0
  119. package/locations/public-api.d.ts +2 -0
  120. package/locations/src/app.constants.d.ts +9 -0
  121. package/locations/src/location-confirm-dialog/location-confirm-dialog.component.d.ts +15 -0
  122. package/locations/src/locations.component.d.ts +86 -0
  123. package/locations/src/locations.module.d.ts +13 -0
  124. package/locations/src/material.module.d.ts +12 -0
  125. package/locations/src/services/api.service.d.ts +18 -0
  126. package/locations/src/services/locations.service.d.ts +19 -0
  127. package/locations/src/types/location.d.ts +28 -0
  128. package/locations/src/utils/app-loader/app-loader.d.ts +6 -0
  129. package/meetings/index.d.ts +5 -0
  130. package/meetings/public-api.d.ts +2 -0
  131. package/meetings/src/app.constants.d.ts +8 -0
  132. package/meetings/src/components/live-meetings/live-meeting/live-meeting.component.d.ts +34 -0
  133. package/meetings/src/components/live-meetings/live-meetings.component.d.ts +43 -0
  134. package/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.d.ts +39 -0
  135. package/meetings/src/components/meeting-spaces/meeting-spaces.component.d.ts +27 -0
  136. package/meetings/src/material.module.d.ts +15 -0
  137. package/meetings/src/meetings.component.d.ts +29 -0
  138. package/meetings/src/meetings.module.d.ts +16 -0
  139. package/meetings/src/services/api.service.d.ts +18 -0
  140. package/meetings/src/services/live-meetings.service.d.ts +9 -0
  141. package/meetings/src/services/meeting-spaces.service.d.ts +16 -0
  142. package/meetings/src/types/live-meeting.d.ts +71 -0
  143. package/meetings/src/types/meeting-space.d.ts +52 -0
  144. package/meetings/src/utils/app-loader/app-loader.d.ts +6 -0
  145. package/package.json +33 -1
  146. package/shared/index.d.ts +5 -0
  147. package/shared/public-api.d.ts +3 -0
  148. package/shared/src/ui/material.module.d.ts +28 -0
  149. package/shared/src/ui/shared.module.d.ts +10 -0
  150. package/{user-device-manage/src/shared/tk-page-section/page-section.component.d.ts → shared/src/ui/tk-page-section/tk-page-section.component.d.ts} +1 -1
  151. package/shared/src/ui/tk-page-section-row/tk-page-section-row.component.d.ts +6 -0
  152. package/shared/src/ui/ui.module.d.ts +11 -0
  153. package/user-creation/src/utils/device-default-prefix.d.ts +7 -2
  154. package/user-creation/src/utils/device-name-dynamic-tokens.d.ts +1 -0
  155. package/user-creation/src/utils/parse-device-name-rule.d.ts +1 -0
  156. package/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.d.ts +2 -0
  157. package/user-device-manage/src/classes/simplified-user.d.ts +1 -1
  158. package/user-device-manage/src/user-device-manage.module.d.ts +9 -10
  159. package/user-manage/src/app.constants.d.ts +6 -0
  160. package/user-manage/src/classes/simplified-user.d.ts +11 -1
  161. package/user-manage/src/device-list/device-list.component.d.ts +2 -0
  162. package/user-manage/src/material.module.d.ts +2 -1
  163. package/user-manage/src/services/dcp-api.service.d.ts +21 -0
  164. package/user-manage/src/services/user.service.d.ts +8 -1
  165. package/user-manage/src/user-calling/user-calling.component.d.ts +3 -2
  166. package/user-manage/src/user-manage-widget.component.d.ts +10 -2
  167. package/user-manage/src/user-manage.module.d.ts +2 -1
  168. package/users-list/src/app.constants.d.ts +1 -0
  169. package/users-list/src/classes/simlified-user.d.ts +1 -1
  170. package/users-list/src/classes/user-list.d.ts +4 -0
  171. package/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.d.ts +3 -1
  172. package/users-list/src/move-user-wizard/move-user-wizard.component.d.ts +2 -1
  173. package/users-list/src/users-list.component.d.ts +6 -1
  174. package/workspaces/index.d.ts +5 -0
  175. package/workspaces/public-api.d.ts +2 -0
  176. package/workspaces/src/app.constants.d.ts +25 -0
  177. package/workspaces/src/components/workspace-confirm-dialog/workspace-confirm-dialog.component.d.ts +20 -0
  178. package/workspaces/src/components/workspace-detail/workspace-detail.component.d.ts +25 -0
  179. package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +20 -0
  180. package/workspaces/src/components/workspaces-table/workspaces-table.component.d.ts +42 -0
  181. package/workspaces/src/material.module.d.ts +16 -0
  182. package/workspaces/src/services/api-webex.service.d.ts +6 -0
  183. package/workspaces/src/services/api.service.d.ts +18 -0
  184. package/workspaces/src/services/workspace-detail.service.d.ts +20 -0
  185. package/workspaces/src/services/workspaces-migration.service.d.ts +18 -0
  186. package/workspaces/src/services/workspaces.service.d.ts +11 -0
  187. package/workspaces/src/types/workspace.d.ts +416 -0
  188. package/workspaces/src/utils/app-loader/app-loader.d.ts +6 -0
  189. package/workspaces/src/utils/device-icon.d.ts +1 -0
  190. package/workspaces/src/utils/workspace-name.d.ts +1 -0
  191. package/workspaces/src/workspaces.component.d.ts +74 -0
  192. package/workspaces/src/workspaces.module.d.ts +16 -0
  193. package/esm2020/user-device-manage/src/shared/tk-page-section/page-section.component.mjs +0 -13
@@ -0,0 +1,306 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import { map, switchMap, takeWhile, timer } from 'rxjs';
3
+ import { WorkspaceConfirmDialogComponent } from './components/workspace-confirm-dialog/workspace-confirm-dialog.component';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "./services/api.service";
6
+ import * as i2 from "./services/api-webex.service";
7
+ import * as i3 from "./services/workspaces.service";
8
+ import * as i4 from "./services/workspaces-migration.service";
9
+ import * as i5 from "@angular/material/dialog";
10
+ import * as i6 from "@angular/common";
11
+ import * as i7 from "./components/workspaces-filters/workspaces-filters.component";
12
+ import * as i8 from "./components/workspaces-table/workspaces-table.component";
13
+ import * as i9 from "./components/workspace-detail/workspace-detail.component";
14
+ import * as i10 from "./utils/app-loader/app-loader";
15
+ export class WorkspacesComponent {
16
+ constructor(apiService, apiWebexService, workspacesService, migrationService, dialog, location) {
17
+ this.apiService = apiService;
18
+ this.apiWebexService = apiWebexService;
19
+ this.workspacesService = workspacesService;
20
+ this.migrationService = migrationService;
21
+ this.dialog = dialog;
22
+ this.location = location;
23
+ this.addWorkspace = new EventEmitter();
24
+ this.openWorkspace = new EventEmitter();
25
+ this.addDevice = new EventEmitter();
26
+ this.tabs = [
27
+ { id: 'workspaces', label: 'Workspaces', icon: 'assets/icons/device-in-room-regular.svg' },
28
+ { id: 'insights', label: 'Insights', icon: 'assets/icons/analysis-regular.svg' },
29
+ { id: 'integrations', label: 'Integrations', icon: 'assets/icons/integrations-regular.svg' },
30
+ { id: 'settings', label: 'Settings', icon: 'assets/icons/tools-regular.svg' },
31
+ ];
32
+ this.activeTab = 'workspaces';
33
+ this.view = 'list';
34
+ this.selectedWorkspace = null;
35
+ this.selectedConnectionType = 'di';
36
+ this.workspaces = [];
37
+ this.isLoading = false;
38
+ this.pageIndex = 0;
39
+ this.pageSize = 10;
40
+ this.total = 0;
41
+ this.searchTerm = '';
42
+ this.typeFilter = '';
43
+ this.locationFilter = '';
44
+ this.pendingWorkspaceIds = new Set();
45
+ this.subscriptions = [];
46
+ }
47
+ ngOnInit() {
48
+ this.apiService.token = this.token;
49
+ this.apiService.apiUrl = this.host + '/dcp';
50
+ this.apiWebexService.token = this.token;
51
+ this.apiWebexService.apiUrl = this.host + '/webex';
52
+ this.fetchWorkspaces();
53
+ }
54
+ ngOnDestroy() {
55
+ this.subscriptions.forEach(subscription => subscription.unsubscribe());
56
+ }
57
+ get typeOptions() {
58
+ return [...new Set(this.workspaces.map(workspace => workspace.typeLabel).filter(Boolean))];
59
+ }
60
+ get locationOptions() {
61
+ return [...new Set(this.workspaces.map(workspace => workspace.location).filter(Boolean))];
62
+ }
63
+ get filteredWorkspacesAll() {
64
+ const term = this.searchTerm.trim().toLowerCase();
65
+ return this.workspaces.filter(workspace => (!term || workspace.displayName.toLowerCase().includes(term) || workspace.location.toLowerCase().includes(term)) &&
66
+ (!this.typeFilter || workspace.typeLabel === this.typeFilter) &&
67
+ (!this.locationFilter || workspace.location === this.locationFilter));
68
+ }
69
+ get filteredWorkspaces() {
70
+ const start = this.pageIndex * this.pageSize;
71
+ return this.filteredWorkspacesAll.slice(start, start + this.pageSize);
72
+ }
73
+ get filteredTotal() {
74
+ return this.filteredWorkspacesAll.length;
75
+ }
76
+ selectTab(tab) {
77
+ this.activeTab = tab;
78
+ }
79
+ onOpenWorkspace({ id, connectionType }) {
80
+ const workspace = this.workspaces.find(item => item.id === id) ?? null;
81
+ this.openWorkspace.emit(id);
82
+ if (!workspace) {
83
+ return;
84
+ }
85
+ this.selectedWorkspace = workspace;
86
+ this.selectedConnectionType = connectionType;
87
+ this.view = 'detail';
88
+ }
89
+ onBackToList() {
90
+ this.view = 'list';
91
+ this.selectedWorkspace = null;
92
+ this.location.replaceState('/workspaces');
93
+ }
94
+ onSearchChange(term) {
95
+ this.searchTerm = term;
96
+ this.pageIndex = 0;
97
+ }
98
+ onTypeFilterChange(type) {
99
+ this.typeFilter = type;
100
+ this.pageIndex = 0;
101
+ }
102
+ onLocationFilterChange(location) {
103
+ this.locationFilter = location;
104
+ this.pageIndex = 0;
105
+ }
106
+ onPageChange({ pageIndex, pageSize }) {
107
+ this.pageIndex = pageIndex;
108
+ this.pageSize = pageSize;
109
+ }
110
+ onMoveToMT(workspace) {
111
+ const dialogRef = this.dialog.open(WorkspaceConfirmDialogComponent, {
112
+ data: {
113
+ title: `Upgrade workspace ${workspace.displayName} to Multi Tenant?`,
114
+ message: `<p>Upgrading this workspace will prepare it for migration to Multi Tenant.</p>
115
+ <p>During this process, the workspace configuration will be copied to the Multi Tenant environment.
116
+ The workspace will remain active on the current system until the Activate step is completed.</p>
117
+ <p>Do you want to continue?</p>`,
118
+ confirmButtonText: 'Yes, upgrade',
119
+ },
120
+ });
121
+ dialogRef.beforeClosed().subscribe((result) => {
122
+ if (!result) {
123
+ return;
124
+ }
125
+ this.pendingWorkspaceIds.add(workspace.id);
126
+ const subscription = this.migrationService.moveToMT(this.customerId, workspace.device).subscribe({
127
+ next: (formId) => {
128
+ if (formId) {
129
+ this.pollMigrationFormStatus(Number(formId), workspace.id);
130
+ }
131
+ else {
132
+ this.pendingWorkspaceIds.delete(workspace.id);
133
+ this.fetchWorkspaces();
134
+ }
135
+ },
136
+ error: () => {
137
+ this.pendingWorkspaceIds.delete(workspace.id);
138
+ this.fetchWorkspaces();
139
+ },
140
+ });
141
+ this.subscriptions.push(subscription);
142
+ });
143
+ }
144
+ onEnableWebexCalling(workspace) {
145
+ const device = workspace.device;
146
+ if (!device.webexUUID || workspace.status !== 'inactive') {
147
+ return;
148
+ }
149
+ const dialogRef = this.dialog.open(WorkspaceConfirmDialogComponent, {
150
+ data: {
151
+ title: `Activate workspace ${workspace.displayName} on Multi Tenant?`,
152
+ message: `<p>Activating this workspace will perform the cutover to Multi Tenant and complete the migration process.</p>
153
+ <p>After activation, the workspace will become active on Multi Tenant and the original workspace will become inactive.</p>
154
+ <p>Do you want to continue?</p>`,
155
+ confirmButtonText: 'Activate',
156
+ },
157
+ });
158
+ dialogRef.beforeClosed().subscribe((result) => {
159
+ if (!result) {
160
+ return;
161
+ }
162
+ this.pendingWorkspaceIds.add(workspace.id);
163
+ const subscription = this.migrationService
164
+ .getMigratedMigrationFormEntities(this.customerId, device.webexUUID, 'ORPHANED_DEVICE')
165
+ .pipe(map((entities) => (Array.isArray(entities) ? entities[0] : entities || null)))
166
+ .subscribe({
167
+ next: (entity) => {
168
+ const formId = entity?.migrationFormId ?? entity?.id ?? null;
169
+ if (!formId) {
170
+ this.pendingWorkspaceIds.delete(workspace.id);
171
+ return;
172
+ }
173
+ const deviceMap = this.buildFirmwareDeviceMap(entity, device);
174
+ const upgradeSubscription = this.migrationService
175
+ .triggerFirmwareUpgrade(this.customerId, Number(formId), deviceMap)
176
+ .subscribe({
177
+ next: () => {
178
+ window.setTimeout(() => {
179
+ this.pollMigrationFormStatus(Number(formId), workspace.id, () => {
180
+ this.migrationService.removeUcmLicense(this.customerId, Number(formId)).subscribe();
181
+ });
182
+ }, 10000);
183
+ },
184
+ error: () => {
185
+ this.pendingWorkspaceIds.delete(workspace.id);
186
+ this.fetchWorkspaces();
187
+ },
188
+ });
189
+ this.subscriptions.push(upgradeSubscription);
190
+ },
191
+ error: () => {
192
+ this.pendingWorkspaceIds.delete(workspace.id);
193
+ },
194
+ });
195
+ this.subscriptions.push(subscription);
196
+ });
197
+ }
198
+ onMigrateToUCM(workspace) {
199
+ const device = workspace.device;
200
+ if (!device.webexUUID || workspace.status !== 'active') {
201
+ return;
202
+ }
203
+ this.pendingWorkspaceIds.add(workspace.id);
204
+ const subscription = this.migrationService
205
+ .revertMigration(this.customerId, device.webexUUID)
206
+ .pipe(switchMap(() => timer(2000)))
207
+ .subscribe({
208
+ next: () => {
209
+ this.pendingWorkspaceIds.delete(workspace.id);
210
+ this.fetchWorkspaces();
211
+ },
212
+ error: () => {
213
+ this.pendingWorkspaceIds.delete(workspace.id);
214
+ this.fetchWorkspaces();
215
+ },
216
+ });
217
+ this.subscriptions.push(subscription);
218
+ }
219
+ pollMigrationFormStatus(formId, workspaceId, onCompleted) {
220
+ const subscription = timer(0, 10000)
221
+ .pipe(switchMap(() => this.migrationService.getMigrationFormStatus(this.customerId, formId)), takeWhile((response) => !this.isTerminalMigrationStatus(response?.status), true))
222
+ .subscribe({
223
+ next: (response) => {
224
+ const status = this.normalizeMigrationStatus(response?.status);
225
+ if (!this.isTerminalMigrationStatus(status)) {
226
+ return;
227
+ }
228
+ this.pendingWorkspaceIds.delete(workspaceId);
229
+ this.fetchWorkspaces();
230
+ if (status === 'COMPLETED') {
231
+ onCompleted?.();
232
+ }
233
+ },
234
+ error: () => {
235
+ this.pendingWorkspaceIds.delete(workspaceId);
236
+ this.fetchWorkspaces();
237
+ },
238
+ });
239
+ this.subscriptions.push(subscription);
240
+ }
241
+ buildFirmwareDeviceMap(entity, device) {
242
+ const deviceMap = {};
243
+ const entityDevices = [
244
+ ...(Array.isArray(entity?.devices) ? entity.devices : []),
245
+ ...(Array.isArray(entity?.webexMigrationDevices) ? entity.webexMigrationDevices : []),
246
+ ];
247
+ const sourceDevices = entityDevices.length ? entityDevices : [device];
248
+ const cucmId = Number(device.cucmId) || 0;
249
+ sourceDevices.forEach((rawDevice) => {
250
+ const name = rawDevice?.name || device.name || '';
251
+ if (!name) {
252
+ return;
253
+ }
254
+ const deviceName = name.includes('SEP') ? name : `SEP${name}`;
255
+ if (!deviceMap[cucmId]) {
256
+ deviceMap[cucmId] = {};
257
+ }
258
+ if (!deviceMap[cucmId]['ORPHANED_DEVICE']) {
259
+ deviceMap[cucmId]['ORPHANED_DEVICE'] = [];
260
+ }
261
+ deviceMap[cucmId]['ORPHANED_DEVICE'].push(deviceName);
262
+ });
263
+ return deviceMap;
264
+ }
265
+ normalizeMigrationStatus(status) {
266
+ return (status || '').toUpperCase();
267
+ }
268
+ isTerminalMigrationStatus(status) {
269
+ const normalized = this.normalizeMigrationStatus(status);
270
+ return normalized === 'COMPLETED' || normalized === 'FAILED' || normalized === 'ERROR' || normalized === 'COMPLETED_WITH_ERRORS';
271
+ }
272
+ fetchWorkspaces() {
273
+ this.isLoading = true;
274
+ this.workspacesService.fetchWorkspaces(this.customerId).subscribe({
275
+ next: ({ workspaces, total }) => {
276
+ this.workspaces = workspaces;
277
+ this.total = total;
278
+ this.isLoading = false;
279
+ },
280
+ error: () => {
281
+ this.workspaces = [];
282
+ this.total = 0;
283
+ this.isLoading = false;
284
+ },
285
+ });
286
+ }
287
+ }
288
+ WorkspacesComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, deps: [{ token: i1.APIService }, { token: i2.ApiWebexService }, { token: i3.WorkspacesService }, { token: i4.WorkspacesMigrationService }, { token: i5.MatDialog }, { token: i6.Location }], target: i0.ɵɵFactoryTarget.Component });
289
+ WorkspacesComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: WorkspacesComponent, selector: "tk-workspaces", inputs: { host: "host", token: "token", customerId: "customerId" }, outputs: { addWorkspace: "addWorkspace", openWorkspace: "openWorkspace", addDevice: "addDevice" }, ngImport: i0, template: "<div class=\"tk-workspaces\">\n <ng-container *ngIf=\"view === 'list'; else detailView\">\n <header class=\"tk-workspaces__header\">\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\n </header>\n\n <nav class=\"tk-workspaces__tabs\">\n <button\n type=\"button\"\n *ngFor=\"let tab of tabs\"\n class=\"tk-workspaces__tab\"\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\n (click)=\"selectTab(tab.id)\">\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\n {{ tab.label }}\n </button>\n </nav>\n\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\n <app-loader *ngIf=\"isLoading\"></app-loader>\n\n <tk-workspaces-filters\n [resultCount]=\"total\"\n [typeOptions]=\"typeOptions\"\n [locationOptions]=\"locationOptions\"\n (searchChange)=\"onSearchChange($event)\"\n (typeChange)=\"onTypeFilterChange($event)\"\n (locationChange)=\"onLocationFilterChange($event)\"\n (addWorkspace)=\"addWorkspace.emit()\">\n </tk-workspaces-filters>\n\n <tk-workspaces-table\n [workspaces]=\"filteredWorkspaces\"\n [total]=\"filteredTotal\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\n (openWorkspace)=\"onOpenWorkspace($event)\"\n (licenseWithHybrid)=\"onMoveToMT($event)\"\n (migrateToMT)=\"onMoveToMT($event)\"\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\n (migrateToUCM)=\"onMigrateToUCM($event)\"\n (addDevice)=\"addDevice.emit($event)\"\n (pageChange)=\"onPageChange($event)\">\n </tk-workspaces-table>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\n </ng-template>\n </ng-container>\n\n <ng-template #detailView>\n <tk-workspace-detail\n *ngIf=\"selectedWorkspace\"\n [workspace]=\"selectedWorkspace\"\n [connectionType]=\"selectedConnectionType\"\n [customerId]=\"customerId\"\n (back)=\"onBackToList()\">\n </tk-workspace-detail>\n </ng-template>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7.WorkspacesFiltersComponent, selector: "tk-workspaces-filters", inputs: ["resultCount", "typeOptions", "locationOptions"], outputs: ["searchChange", "typeChange", "locationChange", "addWorkspace"] }, { kind: "component", type: i8.WorkspacesTableComponent, selector: "tk-workspaces-table", inputs: ["workspaces", "total", "pageIndex", "pageSize", "pageSizeOptions", "pendingWorkspaceIds"], outputs: ["openWorkspace", "licenseWithHybrid", "migrateToMT", "enableWebexCalling", "migrateToUCM", "addDevice", "pageChange"] }, { kind: "component", type: i9.WorkspaceDetailComponent, selector: "tk-workspace-detail", inputs: ["workspace", "connectionType", "customerId"], outputs: ["back"] }, { kind: "component", type: i10.AppLoaderComponent, selector: "app-loader" }] });
290
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesComponent, decorators: [{
291
+ type: Component,
292
+ args: [{ selector: 'tk-workspaces', template: "<div class=\"tk-workspaces\">\n <ng-container *ngIf=\"view === 'list'; else detailView\">\n <header class=\"tk-workspaces__header\">\n <h1 class=\"tk-workspaces__title\">Workspaces</h1>\n </header>\n\n <nav class=\"tk-workspaces__tabs\">\n <button\n type=\"button\"\n *ngFor=\"let tab of tabs\"\n class=\"tk-workspaces__tab\"\n [class.tk-workspaces__tab--active]=\"activeTab === tab.id\"\n (click)=\"selectTab(tab.id)\">\n <img class=\"tk-workspaces__tab-icon\" [src]=\"tab.icon\" alt=\"\" />\n {{ tab.label }}\n </button>\n </nav>\n\n <ng-container *ngIf=\"activeTab === 'workspaces'; else placeholder\">\n <app-loader *ngIf=\"isLoading\"></app-loader>\n\n <tk-workspaces-filters\n [resultCount]=\"total\"\n [typeOptions]=\"typeOptions\"\n [locationOptions]=\"locationOptions\"\n (searchChange)=\"onSearchChange($event)\"\n (typeChange)=\"onTypeFilterChange($event)\"\n (locationChange)=\"onLocationFilterChange($event)\"\n (addWorkspace)=\"addWorkspace.emit()\">\n </tk-workspaces-filters>\n\n <tk-workspaces-table\n [workspaces]=\"filteredWorkspaces\"\n [total]=\"filteredTotal\"\n [pageIndex]=\"pageIndex\"\n [pageSize]=\"pageSize\"\n [pendingWorkspaceIds]=\"pendingWorkspaceIds\"\n (openWorkspace)=\"onOpenWorkspace($event)\"\n (licenseWithHybrid)=\"onMoveToMT($event)\"\n (migrateToMT)=\"onMoveToMT($event)\"\n (enableWebexCalling)=\"onEnableWebexCalling($event)\"\n (migrateToUCM)=\"onMigrateToUCM($event)\"\n (addDevice)=\"addDevice.emit($event)\"\n (pageChange)=\"onPageChange($event)\">\n </tk-workspaces-table>\n </ng-container>\n\n <ng-template #placeholder>\n <div class=\"tk-workspaces__placeholder\">This section isn't available in this widget yet.</div>\n </ng-template>\n </ng-container>\n\n <ng-template #detailView>\n <tk-workspace-detail\n *ngIf=\"selectedWorkspace\"\n [workspace]=\"selectedWorkspace\"\n [connectionType]=\"selectedConnectionType\"\n [customerId]=\"customerId\"\n (back)=\"onBackToList()\">\n </tk-workspace-detail>\n </ng-template>\n</div>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Inter:wght@300;400&display=swap\";.tk-workspaces{font-family:Inter,Helvetica Neue,Helvetica,Arial,sans-serif;color:#000000f2;padding:1.5rem}.tk-workspaces__header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:1rem}.tk-workspaces__title{margin:0;font-size:1.5rem;font-weight:600}.tk-workspaces__tabs{display:flex;align-items:center;gap:.25rem;margin-bottom:1rem}.tk-workspaces__tab{display:inline-flex;align-items:center;gap:.375rem;padding:.5rem .875rem;background:none;border:none;border-radius:6.25rem;font-family:inherit;font-size:1rem;font-weight:500;color:#000000b3;cursor:pointer}.tk-workspaces__tab:hover{background:rgba(0,0,0,.0705882353)}.tk-workspaces__tab--active{background:#C1C1C1;color:#000000f2}.tk-workspaces__tab--active:hover{background:rgba(0,0,0,.3019607843)}.tk-workspaces__tab-icon{height:1.125rem;width:1.125rem;opacity:.6}.tk-workspaces__tab--active .tk-workspaces__tab-icon{opacity:1}.tk-workspaces__placeholder{padding:3rem 1rem;text-align:center;color:#0009}::ng-deep input.blue-input{border:solid .0625rem rgba(0,0,0,.5019607843)!important}::ng-deep input.blue-input:focus{display:flex;align-items:center;color:#000000b3;background-color:#ededed;border:solid .0625rem rgba(0,0,0,.5019607843);font-weight:500;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;background-color:#fff!important}::ng-deep input.blue-input:focus:focus-visible{outline:none}::ng-deep input.blue-input:hover{background-color:#00000012!important}.data-loader{position:absolute;top:calc(50% - 25px);left:calc(50% - 25px)}\n"] }]
293
+ }], ctorParameters: function () { return [{ type: i1.APIService }, { type: i2.ApiWebexService }, { type: i3.WorkspacesService }, { type: i4.WorkspacesMigrationService }, { type: i5.MatDialog }, { type: i6.Location }]; }, propDecorators: { host: [{
294
+ type: Input
295
+ }], token: [{
296
+ type: Input
297
+ }], customerId: [{
298
+ type: Input
299
+ }], addWorkspace: [{
300
+ type: Output
301
+ }], openWorkspace: [{
302
+ type: Output
303
+ }], addDevice: [{
304
+ type: Output
305
+ }] } });
306
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRixPQUFPLEVBQUUsR0FBRyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQztBQU10RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQzs7Ozs7Ozs7Ozs7O0FBaUIzSCxNQUFNLE9BQU8sbUJBQW1CO0lBcUM5QixZQUNVLFVBQXNCLEVBQ3RCLGVBQWdDLEVBQ2hDLGlCQUFvQyxFQUNwQyxnQkFBNEMsRUFDNUMsTUFBaUIsRUFDakIsUUFBa0I7UUFMbEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7UUFDaEMsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFtQjtRQUNwQyxxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQTRCO1FBQzVDLFdBQU0sR0FBTixNQUFNLENBQVc7UUFDakIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQXRDbEIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBUSxDQUFDO1FBQ3hDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUMzQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUV4QyxTQUFJLEdBQThCO1lBQ3pDLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxLQUFLLEVB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ZUFBZTtRQUNyQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUN0QixJQUFJLENBQUMsaUJBQWlCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDaEUsSUFBSSxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRTtnQkFDOUIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7Z0JBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2dCQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN6QixDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsVUFBVSxHQUFHLEVBQUUsQ0FBQztnQkFDckIsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7Z0JBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7O2lIQTlUVSxtQkFBbUI7cUdBQW5CLG1CQUFtQiw0TkMxQmhDLDR0RUE4REE7NEZEcENhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDRSxlQUFlO3VQQUtoQixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUksWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBMb2NhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBtYXAsIFN1YnNjcmlwdGlvbiwgc3dpdGNoTWFwLCB0YWtlV2hpbGUsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBUElTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBBcGlXZWJleFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL2FwaS13ZWJleC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpcm13YXJlRGV2aWNlTWFwLCBXb3Jrc3BhY2VzTWlncmF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy1taWdyYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VzU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvd29ya3NwYWNlcy5zZXJ2aWNlJztcbmltcG9ydCB7IFdvcmtzcGFjZSwgV29ya3NwYWNlQ29ubmVjdGlvblR5cGUsIFdvcmtzcGFjZURldmljZVJlY29yZCwgV29ya3NwYWNlT3BlbkV2ZW50IH0gZnJvbSAnLi90eXBlcy93b3Jrc3BhY2UnO1xuaW1wb3J0IHsgV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy93b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5cbnR5cGUgV29ya3NwYWNlc1ZpZXcgPSAnbGlzdCcgfCAnZGV0YWlsJztcblxudHlwZSBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnIHwgJ2luc2lnaHRzJyB8ICdpbnRlZ3JhdGlvbnMnIHwgJ3NldHRpbmdzJztcblxuaW50ZXJmYWNlIFdvcmtzcGFjZXNUYWJEZWZpbml0aW9uIHtcbiAgaWQ6IFdvcmtzcGFjZXNUYWI7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGljb246IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndGstd29ya3NwYWNlcycsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3Jrc3BhY2VzLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vd29ya3NwYWNlcy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBXb3Jrc3BhY2VzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcbiAgQElucHV0KCkgY3VzdG9tZXJJZCE6IHN0cmluZztcblxuICBAT3V0cHV0KCkgYWRkV29ya3NwYWNlID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuICBAT3V0cHV0KCkgb3BlbldvcmtzcGFjZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgYWRkRGV2aWNlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgcmVhZG9ubHkgdGFiczogV29ya3NwYWNlc1RhYkRlZmluaXRpb25bXSA9IFtcbiAgICB7IGlkOiAnd29ya3NwYWNlcycsIGxhYmVsOiAnV29ya3NwYWNlcycsIGljb246ICdhc3NldHMvaWNvbnMvZGV2aWNlLWluLXJvb20tcmVndWxhci5zdmcnIH0sXG4gICAgeyBpZDogJ2luc2lnaHRzJywgbGFiZWw6ICdJbnNpZ2h0cycsIGljb246ICdhc3NldHMvaWNvbnMvYW5hbHlzaXMtcmVndWxhci5zdmcnIH0sXG4gICAgeyBpZDogJ2ludGVncmF0aW9ucycsIGxhYmVsOiAnSW50ZWdyYXRpb25zJywgaWNvbjogJ2Fzc2V0cy9pY29ucy9pbnRlZ3JhdGlvbnMtcmVndWxhci5zdmcnIH0sXG4gICAgeyBpZDogJ3NldHRpbmdzJywgbGFiZWw6ICdTZXR0aW5ncycsIGljb246ICdhc3NldHMvaWNvbnMvdG9vbHMtcmVndWxhci5zdmcnIH0sXG4gIF07XG5cbiAgYWN0aXZlVGFiOiBXb3Jrc3BhY2VzVGFiID0gJ3dvcmtzcGFjZXMnO1xuXG4gIHZpZXc6IFdvcmtzcGFjZXNWaWV3ID0gJ2xpc3QnO1xuICBzZWxlY3RlZFdvcmtzcGFjZTogV29ya3NwYWNlIHwgbnVsbCA9IG51bGw7XG4gIHNlbGVjdGVkQ29ubmVjdGlvblR5cGU6IFdvcmtzcGFjZUNvbm5lY3Rpb25UeXBlID0gJ2RpJztcblxuICB3b3Jrc3BhY2VzOiBXb3Jrc3BhY2VbXSA9IFtdO1xuICBpc0xvYWRpbmcgPSBmYWxzZTtcblxuICBwYWdlSW5kZXggPSAwO1xuICBwYWdlU2l6ZSA9IDEwO1xuICB0b3RhbCA9IDA7XG5cbiAgc2VhcmNoVGVybSA9ICcnO1xuICB0eXBlRmlsdGVyID0gJyc7XG4gIGxvY2F0aW9uRmlsdGVyID0gJyc7XG5cbiAgcGVuZGluZ1dvcmtzcGFjZUlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhcGlXZWJleFNlcnZpY2U6IEFwaVdlYmV4U2VydmljZSxcbiAgICBwcml2YXRlIHdvcmtzcGFjZXNTZXJ2aWNlOiBXb3Jrc3BhY2VzU2VydmljZSxcbiAgICBwcml2YXRlIG1pZ3JhdGlvblNlcnZpY2U6IFdvcmtzcGFjZXNNaWdyYXRpb25TZXJ2aWNlLFxuICAgIHByaXZhdGUgZGlhbG9nOiBNYXREaWFsb2csXG4gICAgcHJpdmF0ZSBsb2NhdGlvbjogTG9jYXRpb24sXG4gICkgeyB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hcGlTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICB0aGlzLmFwaVNlcnZpY2UuYXBpVXJsID0gdGhpcy5ob3N0ICsgJy9kY3AnO1xuICAgIHRoaXMuYXBpV2ViZXhTZXJ2aWNlLnRva2VuID0gdGhpcy50b2tlbjtcbiAgICB0aGlzLmFwaVdlYmV4U2VydmljZS5hcGlVcmwgPSB0aGlzLmhvc3QgKyAnL3dlYmV4JztcbiAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLmZvckVhY2goc3Vic2NyaXB0aW9uID0+IHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpKTtcbiAgfVxuXG4gIGdldCB0eXBlT3B0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMud29ya3NwYWNlcy5tYXAod29ya3NwYWNlID0+IHdvcmtzcGFjZS50eXBlTGFiZWwpLmZpbHRlcihCb29sZWFuKSldO1xuICB9XG5cbiAgZ2V0IGxvY2F0aW9uT3B0aW9ucygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFsuLi5uZXcgU2V0KHRoaXMud29ya3NwYWNlcy5tYXAod29ya3NwYWNlID0+IHdvcmtzcGFjZS5sb2NhdGlvbikuZmlsdGVyKEJvb2xlYW4pKV07XG4gIH1cblxuICBwcml2YXRlIGdldCBmaWx0ZXJlZFdvcmtzcGFjZXNBbGwoKTogV29ya3NwYWNlW10ge1xuICAgIGNvbnN0IHRlcm0gPSB0aGlzLnNlYXJjaFRlcm0udHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIHRoaXMud29ya3NwYWNlcy5maWx0ZXIod29ya3NwYWNlID0+XG4gICAgICAoIXRlcm0gfHwgd29ya3NwYWNlLmRpc3BsYXlOYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkgfHwgd29ya3NwYWNlLmxvY2F0aW9uLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModGVybSkpICYmXG4gICAgICAoIXRoaXMudHlwZUZpbHRlciB8fCB3b3Jrc3BhY2UudHlwZUxhYmVsID09PSB0aGlzLnR5cGVGaWx0ZXIpICYmXG4gICAgICAoIXRoaXMubG9jYXRpb25GaWx0ZXIgfHwgd29ya3NwYWNlLmxvY2F0aW9uID09PSB0aGlzLmxvY2F0aW9uRmlsdGVyKVxuICAgICk7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRXb3Jrc3BhY2VzKCk6IFdvcmtzcGFjZVtdIHtcbiAgICBjb25zdCBzdGFydCA9IHRoaXMucGFnZUluZGV4ICogdGhpcy5wYWdlU2l6ZTtcbiAgICByZXR1cm4gdGhpcy5maWx0ZXJlZFdvcmtzcGFjZXNBbGwuc2xpY2Uoc3RhcnQsIHN0YXJ0ICsgdGhpcy5wYWdlU2l6ZSk7XG4gIH1cblxuICBnZXQgZmlsdGVyZWRUb3RhbCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmZpbHRlcmVkV29ya3NwYWNlc0FsbC5sZW5ndGg7XG4gIH1cblxuICBzZWxlY3RUYWIodGFiOiBXb3Jrc3BhY2VzVGFiKTogdm9pZCB7XG4gICAgdGhpcy5hY3RpdmVUYWIgPSB0YWI7XG4gIH1cblxuICBvbk9wZW5Xb3Jrc3BhY2UoeyBpZCwgY29ubmVjdGlvblR5cGUgfTogV29ya3NwYWNlT3BlbkV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qgd29ya3NwYWNlID0gdGhpcy53b3Jrc3BhY2VzLmZpbmQoaXRlbSA9PiBpdGVtLmlkID09PSBpZCkgPz8gbnVsbDtcbiAgICB0aGlzLm9wZW5Xb3Jrc3BhY2UuZW1pdChpZCk7XG5cbiAgICBpZiAoIXdvcmtzcGFjZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0ZWRXb3Jrc3BhY2UgPSB3b3Jrc3BhY2U7XG4gICAgdGhpcy5zZWxlY3RlZENvbm5lY3Rpb25UeXBlID0gY29ubmVjdGlvblR5cGU7XG4gICAgdGhpcy52aWV3ID0gJ2RldGFpbCc7XG4gIH1cblxuICBvbkJhY2tUb0xpc3QoKTogdm9pZCB7XG4gICAgdGhpcy52aWV3ID0gJ2xpc3QnO1xuICAgIHRoaXMuc2VsZWN0ZWRXb3Jrc3BhY2UgPSBudWxsO1xuICAgIHRoaXMubG9jYXRpb24ucmVwbGFjZVN0YXRlKCcvd29ya3NwYWNlcycpO1xuICB9XG5cbiAgb25TZWFyY2hDaGFuZ2UodGVybTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5zZWFyY2hUZXJtID0gdGVybTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gIH1cblxuICBvblR5cGVGaWx0ZXJDaGFuZ2UodHlwZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy50eXBlRmlsdGVyID0gdHlwZTtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IDA7XG4gIH1cblxuICBvbkxvY2F0aW9uRmlsdGVyQ2hhbmdlKGxvY2F0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmxvY2F0aW9uRmlsdGVyID0gbG9jYXRpb247XG4gICAgdGhpcy5wYWdlSW5kZXggPSAwO1xuICB9XG5cbiAgb25QYWdlQ2hhbmdlKHsgcGFnZUluZGV4LCBwYWdlU2l6ZSB9OiB7IHBhZ2VJbmRleDogbnVtYmVyOyBwYWdlU2l6ZTogbnVtYmVyIH0pOiB2b2lkIHtcbiAgICB0aGlzLnBhZ2VJbmRleCA9IHBhZ2VJbmRleDtcbiAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemU7XG4gIH1cblxuICBvbk1vdmVUb01UKHdvcmtzcGFjZTogV29ya3NwYWNlKTogdm9pZCB7XG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRpdGxlOiBgVXBncmFkZSB3b3Jrc3BhY2UgJHt3b3Jrc3BhY2UuZGlzcGxheU5hbWV9IHRvIE11bHRpIFRlbmFudD9gLFxuICAgICAgICBtZXNzYWdlOiBgPHA+VXBncmFkaW5nIHRoaXMgd29ya3NwYWNlIHdpbGwgcHJlcGFyZSBpdCBmb3IgbWlncmF0aW9uIHRvIE11bHRpIFRlbmFudC48L3A+XG4gICAgICAgICAgPHA+RHVyaW5nIHRoaXMgcHJvY2VzcywgdGhlIHdvcmtzcGFjZSBjb25maWd1cmF0aW9uIHdpbGwgYmUgY29waWVkIHRvIHRoZSBNdWx0aSBUZW5hbnQgZW52aXJvbm1lbnQuXG4gICAgICAgICAgVGhlIHdvcmtzcGFjZSB3aWxsIHJlbWFpbiBhY3RpdmUgb24gdGhlIGN1cnJlbnQgc3lzdGVtIHVudGlsIHRoZSBBY3RpdmF0ZSBzdGVwIGlzIGNvbXBsZXRlZC48L3A+XG4gICAgICAgICAgPHA+RG8geW91IHdhbnQgdG8gY29udGludWU/PC9wPmAsXG4gICAgICAgIGNvbmZpcm1CdXR0b25UZXh0OiAnWWVzLCB1cGdyYWRlJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZS5tb3ZlVG9NVCh0aGlzLmN1c3RvbWVySWQsIHdvcmtzcGFjZS5kZXZpY2UpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChmb3JtSWQ6IG51bWJlcikgPT4ge1xuICAgICAgICAgIGlmIChmb3JtSWQpIHtcbiAgICAgICAgICAgIHRoaXMucG9sbE1pZ3JhdGlvbkZvcm1TdGF0dXMoTnVtYmVyKGZvcm1JZCksIHdvcmtzcGFjZS5pZCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcbiAgICAgICAgICAgIHRoaXMuZmV0Y2hXb3Jrc3BhY2VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICB0aGlzLnN1YnNjcmlwdGlvbnMucHVzaChzdWJzY3JpcHRpb24pO1xuICAgIH0pO1xuICB9XG5cbiAgb25FbmFibGVXZWJleENhbGxpbmcod29ya3NwYWNlOiBXb3Jrc3BhY2UpOiB2b2lkIHtcbiAgICBjb25zdCBkZXZpY2UgPSB3b3Jrc3BhY2UuZGV2aWNlO1xuICAgIGlmICghZGV2aWNlLndlYmV4VVVJRCB8fCB3b3Jrc3BhY2Uuc3RhdHVzICE9PSAnaW5hY3RpdmUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRpdGxlOiBgQWN0aXZhdGUgd29ya3NwYWNlICR7d29ya3NwYWNlLmRpc3BsYXlOYW1lfSBvbiBNdWx0aSBUZW5hbnQ/YCxcbiAgICAgICAgbWVzc2FnZTogYDxwPkFjdGl2YXRpbmcgdGhpcyB3b3Jrc3BhY2Ugd2lsbCBwZXJmb3JtIHRoZSBjdXRvdmVyIHRvIE11bHRpIFRlbmFudCBhbmQgY29tcGxldGUgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLjwvcD5cbiAgICAgICAgICA8cD5BZnRlciBhY3RpdmF0aW9uLCB0aGUgd29ya3NwYWNlIHdpbGwgYmVjb21lIGFjdGl2ZSBvbiBNdWx0aSBUZW5hbnQgYW5kIHRoZSBvcmlnaW5hbCB3b3Jrc3BhY2Ugd2lsbCBiZWNvbWUgaW5hY3RpdmUuPC9wPlxuICAgICAgICAgIDxwPkRvIHlvdSB3YW50IHRvIGNvbnRpbnVlPzwvcD5gLFxuICAgICAgICBjb25maXJtQnV0dG9uVGV4dDogJ0FjdGl2YXRlJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBkaWFsb2dSZWYuYmVmb3JlQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQ6IGJvb2xlYW4pID0+IHtcbiAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5hZGQod29ya3NwYWNlLmlkKTtcbiAgICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZVxuICAgICAgICAuZ2V0TWlncmF0ZWRNaWdyYXRpb25Gb3JtRW50aXRpZXModGhpcy5jdXN0b21lcklkLCBkZXZpY2Uud2ViZXhVVUlEIGFzIHN0cmluZywgJ09SUEhBTkVEX0RFVklDRScpXG4gICAgICAgIC5waXBlKG1hcCgoZW50aXRpZXM6IGFueVtdKSA9PiAoQXJyYXkuaXNBcnJheShlbnRpdGllcykgPyBlbnRpdGllc1swXSA6IGVudGl0aWVzIHx8IG51bGwpKSlcbiAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgbmV4dDogKGVudGl0eTogYW55KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtSWQgPSBlbnRpdHk/Lm1pZ3JhdGlvbkZvcm1JZCA/PyBlbnRpdHk/LmlkID8/IG51bGw7XG4gICAgICAgICAgICBpZiAoIWZvcm1JZCkge1xuICAgICAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRldmljZU1hcCA9IHRoaXMuYnVpbGRGaXJtd2FyZURldmljZU1hcChlbnRpdHksIGRldmljZSk7XG4gICAgICAgICAgICBjb25zdCB1cGdyYWRlU3Vic2NyaXB0aW9uID0gdGhpcy5taWdyYXRpb25TZXJ2aWNlXG4gICAgICAgICAgICAgIC50cmlnZ2VyRmlybXdhcmVVcGdyYWRlKHRoaXMuY3VzdG9tZXJJZCwgTnVtYmVyKGZvcm1JZCksIGRldmljZU1hcClcbiAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgICAgICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKE51bWJlcihmb3JtSWQpLCB3b3Jrc3BhY2UuaWQsICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLm1pZ3JhdGlvblNlcnZpY2UucmVtb3ZlVWNtTGljZW5zZSh0aGlzLmN1c3RvbWVySWQsIE51bWJlcihmb3JtSWQpKS5zdWJzY3JpYmUoKTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB9LCAxMDAwMCk7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2UuaWQpO1xuICAgICAgICAgICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHVwZ3JhZGVTdWJzY3JpcHRpb24pO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMucGVuZGluZ1dvcmtzcGFjZUlkcy5kZWxldGUod29ya3NwYWNlLmlkKTtcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gICAgfSk7XG4gIH1cblxuICBvbk1pZ3JhdGVUb1VDTSh3b3Jrc3BhY2U6IFdvcmtzcGFjZSk6IHZvaWQge1xuICAgIGNvbnN0IGRldmljZSA9IHdvcmtzcGFjZS5kZXZpY2U7XG4gICAgaWYgKCFkZXZpY2Uud2ViZXhVVUlEIHx8IHdvcmtzcGFjZS5zdGF0dXMgIT09ICdhY3RpdmUnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmFkZCh3b3Jrc3BhY2UuaWQpO1xuICAgIGNvbnN0IHN1YnNjcmlwdGlvbiA9IHRoaXMubWlncmF0aW9uU2VydmljZVxuICAgICAgLnJldmVydE1pZ3JhdGlvbih0aGlzLmN1c3RvbWVySWQsIGRldmljZS53ZWJleFVVSUQpXG4gICAgICAucGlwZShzd2l0Y2hNYXAoKCkgPT4gdGltZXIoMjAwMCkpKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZS5pZCk7XG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1YnNjcmlwdGlvbik7XG4gIH1cblxuICBwcml2YXRlIHBvbGxNaWdyYXRpb25Gb3JtU3RhdHVzKGZvcm1JZDogbnVtYmVyLCB3b3Jrc3BhY2VJZDogc3RyaW5nLCBvbkNvbXBsZXRlZD86ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICBjb25zdCBzdWJzY3JpcHRpb24gPSB0aW1lcigwLCAxMDAwMClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy5taWdyYXRpb25TZXJ2aWNlLmdldE1pZ3JhdGlvbkZvcm1TdGF0dXModGhpcy5jdXN0b21lcklkLCBmb3JtSWQpKSxcbiAgICAgICAgdGFrZVdoaWxlKChyZXNwb25zZTogYW55KSA9PiAhdGhpcy5pc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHJlc3BvbnNlPy5zdGF0dXMpLCB0cnVlKSxcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHN0YXR1cyA9IHRoaXMubm9ybWFsaXplTWlncmF0aW9uU3RhdHVzKHJlc3BvbnNlPy5zdGF0dXMpO1xuICAgICAgICAgIGlmICghdGhpcy5pc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHN0YXR1cykpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5wZW5kaW5nV29ya3NwYWNlSWRzLmRlbGV0ZSh3b3Jrc3BhY2VJZCk7XG4gICAgICAgICAgdGhpcy5mZXRjaFdvcmtzcGFjZXMoKTtcbiAgICAgICAgICBpZiAoc3RhdHVzID09PSAnQ09NUExFVEVEJykge1xuICAgICAgICAgICAgb25Db21wbGV0ZWQ/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgICB0aGlzLnBlbmRpbmdXb3Jrc3BhY2VJZHMuZGVsZXRlKHdvcmtzcGFjZUlkKTtcbiAgICAgICAgICB0aGlzLmZldGNoV29ya3NwYWNlcygpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgdGhpcy5zdWJzY3JpcHRpb25zLnB1c2goc3Vic2NyaXB0aW9uKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRGaXJtd2FyZURldmljZU1hcChlbnRpdHk6IGFueSwgZGV2aWNlOiBXb3Jrc3BhY2VEZXZpY2VSZWNvcmQpOiBGaXJtd2FyZURldmljZU1hcCB7XG4gICAgY29uc3QgZGV2aWNlTWFwOiBGaXJtd2FyZURldmljZU1hcCA9IHt9O1xuICAgIGNvbnN0IGVudGl0eURldmljZXM6IGFueVtdID0gW1xuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZW50aXR5Py5kZXZpY2VzKSA/IGVudGl0eS5kZXZpY2VzIDogW10pLFxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkoZW50aXR5Py53ZWJleE1pZ3JhdGlvbkRldmljZXMpID8gZW50aXR5LndlYmV4TWlncmF0aW9uRGV2aWNlcyA6IFtdKSxcbiAgICBdO1xuICAgIGNvbnN0IHNvdXJjZURldmljZXMgPSBlbnRpdHlEZXZpY2VzLmxlbmd0aCA/IGVudGl0eURldmljZXMgOiBbZGV2aWNlXTtcbiAgICBjb25zdCBjdWNtSWQgPSBOdW1iZXIoZGV2aWNlLmN1Y21JZCkgfHwgMDtcblxuICAgIHNvdXJjZURldmljZXMuZm9yRWFjaCgocmF3RGV2aWNlOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IG5hbWU6IHN0cmluZyA9IHJhd0RldmljZT8ubmFtZSB8fCBkZXZpY2UubmFtZSB8fCAnJztcbiAgICAgIGlmICghbmFtZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBkZXZpY2VOYW1lID0gbmFtZS5pbmNsdWRlcygnU0VQJykgPyBuYW1lIDogYFNFUCR7bmFtZX1gO1xuICAgICAgaWYgKCFkZXZpY2VNYXBbY3VjbUlkXSkge1xuICAgICAgICBkZXZpY2VNYXBbY3VjbUlkXSA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKCFkZXZpY2VNYXBbY3VjbUlkXVsnT1JQSEFORURfREVWSUNFJ10pIHtcbiAgICAgICAgZGV2aWNlTWFwW2N1Y21JZF1bJ09SUEhBTkVEX0RFVklDRSddID0gW107XG4gICAgICB9XG4gICAgICBkZXZpY2VNYXBbY3VjbUlkXVsnT1JQSEFORURfREVWSUNFJ10ucHVzaChkZXZpY2VOYW1lKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkZXZpY2VNYXA7XG4gIH1cblxuICBwcml2YXRlIG5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhzdGF0dXM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIHJldHVybiAoc3RhdHVzIHx8ICcnKS50b1VwcGVyQ2FzZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1Rlcm1pbmFsTWlncmF0aW9uU3RhdHVzKHN0YXR1czogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZU1pZ3JhdGlvblN0YXR1cyhzdGF0dXMpO1xuICAgIHJldHVybiBub3JtYWxpemVkID09PSAnQ09NUExFVEVEJyB8fCBub3JtYWxpemVkID09PSAnRkFJTEVEJyB8fCBub3JtYWxpemVkID09PSAnRVJST1InIHx8IG5vcm1hbGl6ZWQgPT09ICdDT01QTEVURURfV0lUSF9FUlJPUlMnO1xuICB9XG5cbiAgcHJpdmF0ZSBmZXRjaFdvcmtzcGFjZXMoKTogdm9pZCB7XG4gICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgIHRoaXMud29ya3NwYWNlc1NlcnZpY2UuZmV0Y2hXb3Jrc3BhY2VzKHRoaXMuY3VzdG9tZXJJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6ICh7IHdvcmtzcGFjZXMsIHRvdGFsIH0pID0+IHtcbiAgICAgICAgdGhpcy53b3Jrc3BhY2VzID0gd29ya3NwYWNlcztcbiAgICAgICAgdGhpcy50b3RhbCA9IHRvdGFsO1xuICAgICAgICB0aGlzLmlzTG9hZGluZyA9IGZhbHNlO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIHRoaXMud29ya3NwYWNlcyA9IFtdO1xuICAgICAgICB0aGlzLnRvdGFsID0gMDtcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzXCI+XG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3ID09PSAnbGlzdCc7IGVsc2UgZGV0YWlsVmlld1wiPlxuICAgIDxoZWFkZXIgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX19oZWFkZXJcIj5cbiAgICAgIDxoMSBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RpdGxlXCI+V29ya3NwYWNlczwvaDE+XG4gICAgPC9oZWFkZXI+XG5cbiAgICA8bmF2IGNsYXNzPVwidGstd29ya3NwYWNlc19fdGFic1wiPlxuICAgICAgPGJ1dHRvblxuICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgKm5nRm9yPVwibGV0IHRhYiBvZiB0YWJzXCJcbiAgICAgICAgY2xhc3M9XCJ0ay13b3Jrc3BhY2VzX190YWJcIlxuICAgICAgICBbY2xhc3MudGstd29ya3NwYWNlc19fdGFiLS1hY3RpdmVdPVwiYWN0aXZlVGFiID09PSB0YWIuaWRcIlxuICAgICAgICAoY2xpY2spPVwic2VsZWN0VGFiKHRhYi5pZClcIj5cbiAgICAgICAgPGltZyBjbGFzcz1cInRrLXdvcmtzcGFjZXNfX3RhYi1pY29uXCIgW3NyY109XCJ0YWIuaWNvblwiIGFsdD1cIlwiIC8+XG4gICAgICAgIHt7IHRhYi5sYWJlbCB9fVxuICAgICAgPC9idXR0b24+XG4gICAgPC9uYXY+XG5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWN0aXZlVGFiID09PSAnd29ya3NwYWNlcyc7IGVsc2UgcGxhY2Vob2xkZXJcIj5cbiAgICAgIDxhcHAtbG9hZGVyICpuZ0lmPVwiaXNMb2FkaW5nXCI+PC9hcHAtbG9hZGVyPlxuXG4gICAgICA8dGstd29ya3NwYWNlcy1maWx0ZXJzXG4gICAgICAgIFtyZXN1bHRDb3VudF09XCJ0b3RhbFwiXG4gICAgICAgIFt0eXBlT3B0aW9uc109XCJ0eXBlT3B0aW9uc1wiXG4gICAgICAgIFtsb2NhdGlvbk9wdGlvbnNdPVwibG9jYXRpb25PcHRpb25zXCJcbiAgICAgICAgKHNlYXJjaENoYW5nZSk9XCJvblNlYXJjaENoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKHR5cGVDaGFuZ2UpPVwib25UeXBlRmlsdGVyQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAobG9jYXRpb25DaGFuZ2UpPVwib25Mb2NhdGlvbkZpbHRlckNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgKGFkZFdvcmtzcGFjZSk9XCJhZGRXb3Jrc3BhY2UuZW1pdCgpXCI+XG4gICAgICA8L3RrLXdvcmtzcGFjZXMtZmlsdGVycz5cblxuICAgICAgPHRrLXdvcmtzcGFjZXMtdGFibGVcbiAgICAgICAgW3dvcmtzcGFjZXNdPVwiZmlsdGVyZWRXb3Jrc3BhY2VzXCJcbiAgICAgICAgW3RvdGFsXT1cImZpbHRlcmVkVG90YWxcIlxuICAgICAgICBbcGFnZUluZGV4XT1cInBhZ2VJbmRleFwiXG4gICAgICAgIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgIFtwZW5kaW5nV29ya3NwYWNlSWRzXT1cInBlbmRpbmdXb3Jrc3BhY2VJZHNcIlxuICAgICAgICAob3BlbldvcmtzcGFjZSk9XCJvbk9wZW5Xb3Jrc3BhY2UoJGV2ZW50KVwiXG4gICAgICAgIChsaWNlbnNlV2l0aEh5YnJpZCk9XCJvbk1vdmVUb01UKCRldmVudClcIlxuICAgICAgICAobWlncmF0ZVRvTVQpPVwib25Nb3ZlVG9NVCgkZXZlbnQpXCJcbiAgICAgICAgKGVuYWJsZVdlYmV4Q2FsbGluZyk9XCJvbkVuYWJsZVdlYmV4Q2FsbGluZygkZXZlbnQpXCJcbiAgICAgICAgKG1pZ3JhdGVUb1VDTSk9XCJvbk1pZ3JhdGVUb1VDTSgkZXZlbnQpXCJcbiAgICAgICAgKGFkZERldmljZSk9XCJhZGREZXZpY2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIj5cbiAgICAgIDwvdGstd29ya3NwYWNlcy10YWJsZT5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgIDxuZy10ZW1wbGF0ZSAjcGxhY2Vob2xkZXI+XG4gICAgICA8ZGl2IGNsYXNzPVwidGstd29ya3NwYWNlc19fcGxhY2Vob2xkZXJcIj5UaGlzIHNlY3Rpb24gaXNuJ3QgYXZhaWxhYmxlIGluIHRoaXMgd2lkZ2V0IHlldC48L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8bmctdGVtcGxhdGUgI2RldGFpbFZpZXc+XG4gICAgPHRrLXdvcmtzcGFjZS1kZXRhaWxcbiAgICAgICpuZ0lmPVwic2VsZWN0ZWRXb3Jrc3BhY2VcIlxuICAgICAgW3dvcmtzcGFjZV09XCJzZWxlY3RlZFdvcmtzcGFjZVwiXG4gICAgICBbY29ubmVjdGlvblR5cGVdPVwic2VsZWN0ZWRDb25uZWN0aW9uVHlwZVwiXG4gICAgICBbY3VzdG9tZXJJZF09XCJjdXN0b21lcklkXCJcbiAgICAgIChiYWNrKT1cIm9uQmFja1RvTGlzdCgpXCI+XG4gICAgPC90ay13b3Jrc3BhY2UtZGV0YWlsPlxuICA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=
@@ -0,0 +1,51 @@
1
+ import { CommonModule } from '@angular/common';
2
+ import { NgModule } from '@angular/core';
3
+ import { HttpClientModule } from '@angular/common/http';
4
+ import { FormsModule } from '@angular/forms';
5
+ import { MaterialModule } from './material.module';
6
+ import { WorkspacesComponent } from './workspaces.component';
7
+ import { WorkspacesFiltersComponent } from './components/workspaces-filters/workspaces-filters.component';
8
+ import { WorkspacesTableComponent } from './components/workspaces-table/workspaces-table.component';
9
+ import { WorkspaceDetailComponent } from './components/workspace-detail/workspace-detail.component';
10
+ import { WorkspaceConfirmDialogComponent } from './components/workspace-confirm-dialog/workspace-confirm-dialog.component';
11
+ import { AppLoaderComponent } from './utils/app-loader/app-loader';
12
+ import * as i0 from "@angular/core";
13
+ export class WorkspacesModule {
14
+ }
15
+ WorkspacesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
+ WorkspacesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, declarations: [WorkspacesComponent,
17
+ WorkspacesFiltersComponent,
18
+ WorkspacesTableComponent,
19
+ WorkspaceDetailComponent,
20
+ WorkspaceConfirmDialogComponent,
21
+ AppLoaderComponent], imports: [CommonModule,
22
+ HttpClientModule,
23
+ FormsModule,
24
+ MaterialModule], exports: [WorkspacesComponent] });
25
+ WorkspacesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, imports: [CommonModule,
26
+ HttpClientModule,
27
+ FormsModule,
28
+ MaterialModule] });
29
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: WorkspacesModule, decorators: [{
30
+ type: NgModule,
31
+ args: [{
32
+ declarations: [
33
+ WorkspacesComponent,
34
+ WorkspacesFiltersComponent,
35
+ WorkspacesTableComponent,
36
+ WorkspaceDetailComponent,
37
+ WorkspaceConfirmDialogComponent,
38
+ AppLoaderComponent,
39
+ ],
40
+ imports: [
41
+ CommonModule,
42
+ HttpClientModule,
43
+ FormsModule,
44
+ MaterialModule,
45
+ ],
46
+ exports: [
47
+ WorkspacesComponent,
48
+ ],
49
+ }]
50
+ }] });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya3NwYWNlcy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90dWtpL3dpZGdldHMvd29ya3NwYWNlcy9zcmMvd29ya3NwYWNlcy5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDeEQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM3RCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSw4REFBOEQsQ0FBQztBQUMxRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUNwRyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSwwRUFBMEUsQ0FBQztBQUMzSCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFxQm5FLE1BQU0sT0FBTyxnQkFBZ0I7OzhHQUFoQixnQkFBZ0I7K0dBQWhCLGdCQUFnQixpQkFqQnpCLG1CQUFtQjtRQUNuQiwwQkFBMEI7UUFDMUIsd0JBQXdCO1FBQ3hCLHdCQUF3QjtRQUN4QiwrQkFBK0I7UUFDL0Isa0JBQWtCLGFBR2xCLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLGNBQWMsYUFHZCxtQkFBbUI7K0dBR1YsZ0JBQWdCLFlBVHpCLFlBQVk7UUFDWixnQkFBZ0I7UUFDaEIsV0FBVztRQUNYLGNBQWM7NEZBTUwsZ0JBQWdCO2tCQW5CNUIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUU7d0JBQ1osbUJBQW1CO3dCQUNuQiwwQkFBMEI7d0JBQzFCLHdCQUF3Qjt3QkFDeEIsd0JBQXdCO3dCQUN4QiwrQkFBK0I7d0JBQy9CLGtCQUFrQjtxQkFDbkI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLFlBQVk7d0JBQ1osZ0JBQWdCO3dCQUNoQixXQUFXO3dCQUNYLGNBQWM7cUJBQ2Y7b0JBQ0QsT0FBTyxFQUFFO3dCQUNQLG1CQUFtQjtxQkFDcEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEh0dHBDbGllbnRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hdGVyaWFsTW9kdWxlIH0gZnJvbSAnLi9tYXRlcmlhbC5tb2R1bGUnO1xuaW1wb3J0IHsgV29ya3NwYWNlc0NvbXBvbmVudCB9IGZyb20gJy4vd29ya3NwYWNlcy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya3NwYWNlc0ZpbHRlcnNDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvd29ya3NwYWNlcy1maWx0ZXJzL3dvcmtzcGFjZXMtZmlsdGVycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya3NwYWNlc1RhYmxlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3dvcmtzcGFjZXMtdGFibGUvd29ya3NwYWNlcy10YWJsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya3NwYWNlRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL3dvcmtzcGFjZS1kZXRhaWwvd29ya3NwYWNlLWRldGFpbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgV29ya3NwYWNlQ29uZmlybURpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy93b3Jrc3BhY2UtY29uZmlybS1kaWFsb2cvd29ya3NwYWNlLWNvbmZpcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBcHBMb2FkZXJDb21wb25lbnQgfSBmcm9tICcuL3V0aWxzL2FwcC1sb2FkZXIvYXBwLWxvYWRlcic7XG5cbkBOZ01vZHVsZSh7XG4gIGRlY2xhcmF0aW9uczogW1xuICAgIFdvcmtzcGFjZXNDb21wb25lbnQsXG4gICAgV29ya3NwYWNlc0ZpbHRlcnNDb21wb25lbnQsXG4gICAgV29ya3NwYWNlc1RhYmxlQ29tcG9uZW50LFxuICAgIFdvcmtzcGFjZURldGFpbENvbXBvbmVudCxcbiAgICBXb3Jrc3BhY2VDb25maXJtRGlhbG9nQ29tcG9uZW50LFxuICAgIEFwcExvYWRlckNvbXBvbmVudCxcbiAgXSxcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBIdHRwQ2xpZW50TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIE1hdGVyaWFsTW9kdWxlLFxuICBdLFxuICBleHBvcnRzOiBbXG4gICAgV29ya3NwYWNlc0NvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV29ya3NwYWNlc01vZHVsZSB7IH1cbiJdfQ==
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHVraS1pby10dWtpLXdpZGdldHMtd29ya3NwYWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy93b3Jrc3BhY2VzL3R1a2ktaW8tdHVraS13aWRnZXRzLXdvcmtzcGFjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
@@ -65,6 +65,9 @@ const API$1 = {
65
65
  WEBEX_CACHE_COLLECTION_SITE_LIST: "/api/migration/webex/customers/:customerId/sitelistforcollectbuildwebexcache",
66
66
  WEBEX_CACHE_COLLECTION_CUCM_LIST: "/api/migration/webex/customers/:customerId/cucmlistforcollectbuildwebexcache",
67
67
  MIGRATION_STATUS: "/api/migration/state/webex/customers/:customerId/migrationstatus"
68
+ },
69
+ MEETINGS: {
70
+ GET_MEETINGS_SPACES: "api/cms/get_cospaces",
68
71
  }
69
72
  };
70
73