@ieeesa-npm/tenants 0.4.3 → 0.4.4

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 (144) hide show
  1. package/.eslintrc.json +31 -0
  2. package/ng-package.json +8 -0
  3. package/package.json +12 -25
  4. package/src/lib/assets/constants.json +454 -0
  5. package/src/lib/assets/tenant-validations.ts +18 -0
  6. package/src/lib/assets/tenants-mock.ts +1240 -0
  7. package/src/lib/components/create-modify-group-type/create-modify-group-type.component.html +15 -0
  8. package/src/lib/components/create-modify-group-type/create-modify-group-type.component.scss +44 -0
  9. package/src/lib/components/create-modify-group-type/create-modify-group-type.component.spec.ts +574 -0
  10. package/src/lib/components/create-modify-group-type/create-modify-group-type.component.ts +602 -0
  11. package/src/lib/components/create-modify-role/create-modify-role.component.html +15 -0
  12. package/src/lib/components/create-modify-role/create-modify-role.component.scss +83 -0
  13. package/src/lib/components/create-modify-role/create-modify-role.component.spec.ts +346 -0
  14. package/src/lib/components/create-modify-role/create-modify-role.component.ts +321 -0
  15. package/src/lib/components/create-tenant-application/create-tenant-application.component.html +18 -0
  16. package/src/lib/components/create-tenant-application/create-tenant-application.component.scss +73 -0
  17. package/src/lib/components/create-tenant-application/create-tenant-application.component.spec.ts +775 -0
  18. package/src/lib/components/create-tenant-application/create-tenant-application.component.ts +638 -0
  19. package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.html +22 -0
  20. package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.scss +79 -0
  21. package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.spec.ts +716 -0
  22. package/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.ts +504 -0
  23. package/src/lib/components/tenant-basic-details/tenant-basic-details.component.html +44 -0
  24. package/src/lib/components/tenant-basic-details/tenant-basic-details.component.scss +16 -0
  25. package/src/lib/components/tenant-basic-details/tenant-basic-details.component.spec.ts +115 -0
  26. package/src/lib/components/tenant-basic-details/tenant-basic-details.component.ts +109 -0
  27. package/src/lib/components/view-tenant-details/view-tenant-details.component.html +195 -0
  28. package/src/lib/components/view-tenant-details/view-tenant-details.component.scss +163 -0
  29. package/src/lib/components/view-tenant-details/view-tenant-details.component.spec.ts +1221 -0
  30. package/src/lib/components/view-tenant-details/view-tenant-details.component.ts +876 -0
  31. package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.html +10 -0
  32. package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.scss +44 -0
  33. package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.spec.ts +410 -0
  34. package/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.ts +219 -0
  35. package/src/lib/components/view-tenants-list/view-tenants-list.component.html +32 -0
  36. package/src/lib/components/view-tenants-list/view-tenants-list.component.scss +35 -0
  37. package/src/lib/components/view-tenants-list/view-tenants-list.component.spec.ts +464 -0
  38. package/src/lib/components/view-tenants-list/view-tenants-list.component.ts +388 -0
  39. package/src/lib/models/app-type-config.model.ts +14 -0
  40. package/src/lib/models/app-type.model.ts +5 -0
  41. package/src/lib/models/create-group-type-config.model.ts +18 -0
  42. package/src/lib/models/create-group-type.model.ts +46 -0
  43. package/src/lib/models/feature-permission-id.model.ts +6 -0
  44. package/src/lib/models/features.model.ts +15 -0
  45. package/src/lib/models/form-status.model.ts +5 -0
  46. package/src/lib/models/permission-type.model.ts +9 -0
  47. package/src/lib/models/role-menu-action.model.ts +5 -0
  48. package/src/lib/models/role-type.model.ts +34 -0
  49. package/src/lib/models/roles-and-permissions-table-type.model.ts +5 -0
  50. package/src/lib/models/roles-and-permissions.model.ts +113 -0
  51. package/src/lib/models/route-config.model.ts +4 -0
  52. package/src/lib/models/table-column-schema-view-tenant-list.model.ts +21 -0
  53. package/src/lib/models/tenant-function-type.model.ts +10 -0
  54. package/src/lib/models/tenant.model.ts +47 -0
  55. package/src/lib/models/tenants-permission.model.ts +9 -0
  56. package/src/lib/models/update-tenant-status.model.ts +12 -0
  57. package/src/lib/models/view-tenant-group-types.model.ts +34 -0
  58. package/src/lib/services/tenant-applications.service.spec.ts +1245 -0
  59. package/src/lib/services/tenant-applications.service.ts +798 -0
  60. package/src/lib/services/tenant-permissions-map.service.spec.ts +25 -0
  61. package/src/lib/services/tenant-permissions-map.service.ts +28 -0
  62. package/src/lib/services/tenant-permissions.service.spec.ts +62 -0
  63. package/src/lib/services/tenant-permissions.service.ts +49 -0
  64. package/src/lib/tenant-applications.component.html +0 -0
  65. package/src/lib/tenant-applications.component.scss +0 -0
  66. package/src/lib/tenant-applications.component.spec.ts +28 -0
  67. package/src/lib/tenant-applications.component.ts +12 -0
  68. package/src/lib/tenant-applications.module.ts +8 -0
  69. package/{public-api.d.ts → src/public-api.ts} +40 -33
  70. package/tsconfig.lib.json +14 -0
  71. package/tsconfig.lib.prod.json +10 -0
  72. package/tsconfig.spec.json +14 -0
  73. package/esm2022/ieeesa-npm-tenants.mjs +0 -5
  74. package/esm2022/lib/assets/constants.json +0 -454
  75. package/esm2022/lib/assets/tenant-validations.mjs +0 -17
  76. package/esm2022/lib/components/create-modify-group-type/create-modify-group-type.component.mjs +0 -477
  77. package/esm2022/lib/components/create-modify-role/create-modify-role.component.mjs +0 -280
  78. package/esm2022/lib/components/create-tenant-application/create-tenant-application.component.mjs +0 -512
  79. package/esm2022/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.mjs +0 -391
  80. package/esm2022/lib/components/tenant-basic-details/tenant-basic-details.component.mjs +0 -95
  81. package/esm2022/lib/components/view-tenant-details/view-tenant-details.component.mjs +0 -732
  82. package/esm2022/lib/components/view-tenant-group-types/view-tenant-group-types.component.mjs +0 -194
  83. package/esm2022/lib/components/view-tenants-list/view-tenants-list.component.mjs +0 -334
  84. package/esm2022/lib/models/app-type-config.model.mjs +0 -2
  85. package/esm2022/lib/models/app-type.model.mjs +0 -7
  86. package/esm2022/lib/models/create-group-type-config.model.mjs +0 -22
  87. package/esm2022/lib/models/create-group-type.model.mjs +0 -2
  88. package/esm2022/lib/models/feature-permission-id.model.mjs +0 -8
  89. package/esm2022/lib/models/features.model.mjs +0 -2
  90. package/esm2022/lib/models/form-status.model.mjs +0 -7
  91. package/esm2022/lib/models/permission-type.model.mjs +0 -12
  92. package/esm2022/lib/models/role-menu-action.model.mjs +0 -7
  93. package/esm2022/lib/models/role-type.model.mjs +0 -2
  94. package/esm2022/lib/models/roles-and-permissions-table-type.model.mjs +0 -7
  95. package/esm2022/lib/models/roles-and-permissions.model.mjs +0 -2
  96. package/esm2022/lib/models/route-config.model.mjs +0 -2
  97. package/esm2022/lib/models/table-column-schema-view-tenant-list.model.mjs +0 -16
  98. package/esm2022/lib/models/tenant-function-type.model.mjs +0 -12
  99. package/esm2022/lib/models/tenant.model.mjs +0 -2
  100. package/esm2022/lib/models/tenants-permission.model.mjs +0 -2
  101. package/esm2022/lib/models/update-tenant-status.model.mjs +0 -2
  102. package/esm2022/lib/models/view-tenant-group-types.model.mjs +0 -11
  103. package/esm2022/lib/services/tenant-applications.service.mjs +0 -618
  104. package/esm2022/lib/services/tenant-permissions-map.service.mjs +0 -36
  105. package/esm2022/lib/services/tenant-permissions.service.mjs +0 -38
  106. package/esm2022/lib/tenant-applications.component.mjs +0 -14
  107. package/esm2022/lib/tenant-applications.module.mjs +0 -16
  108. package/esm2022/public-api.mjs +0 -37
  109. package/fesm2022/ieeesa-npm-tenants.mjs +0 -4241
  110. package/fesm2022/ieeesa-npm-tenants.mjs.map +0 -1
  111. package/index.d.ts +0 -5
  112. package/lib/assets/tenant-validations.d.ts +0 -15
  113. package/lib/components/create-modify-group-type/create-modify-group-type.component.d.ts +0 -129
  114. package/lib/components/create-modify-role/create-modify-role.component.d.ts +0 -103
  115. package/lib/components/create-tenant-application/create-tenant-application.component.d.ts +0 -128
  116. package/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.d.ts +0 -106
  117. package/lib/components/tenant-basic-details/tenant-basic-details.component.d.ts +0 -472
  118. package/lib/components/view-tenant-details/view-tenant-details.component.d.ts +0 -223
  119. package/lib/components/view-tenant-group-types/view-tenant-group-types.component.d.ts +0 -63
  120. package/lib/components/view-tenants-list/view-tenants-list.component.d.ts +0 -134
  121. package/lib/models/app-type-config.model.d.ts +0 -14
  122. package/lib/models/app-type.model.d.ts +0 -4
  123. package/lib/models/create-group-type-config.model.d.ts +0 -16
  124. package/lib/models/create-group-type.model.d.ts +0 -49
  125. package/lib/models/feature-permission-id.model.d.ts +0 -4
  126. package/lib/models/features.model.d.ts +0 -15
  127. package/lib/models/form-status.model.d.ts +0 -4
  128. package/lib/models/permission-type.model.d.ts +0 -8
  129. package/lib/models/role-menu-action.model.d.ts +0 -4
  130. package/lib/models/role-type.model.d.ts +0 -27
  131. package/lib/models/roles-and-permissions-table-type.model.d.ts +0 -4
  132. package/lib/models/roles-and-permissions.model.d.ts +0 -119
  133. package/lib/models/route-config.model.d.ts +0 -4
  134. package/lib/models/table-column-schema-view-tenant-list.model.d.ts +0 -20
  135. package/lib/models/tenant-function-type.model.d.ts +0 -9
  136. package/lib/models/tenant.model.d.ts +0 -51
  137. package/lib/models/tenants-permission.model.d.ts +0 -9
  138. package/lib/models/update-tenant-status.model.d.ts +0 -14
  139. package/lib/models/view-tenant-group-types.model.d.ts +0 -29
  140. package/lib/services/tenant-applications.service.d.ts +0 -398
  141. package/lib/services/tenant-permissions-map.service.d.ts +0 -13
  142. package/lib/services/tenant-permissions.service.d.ts +0 -22
  143. package/lib/tenant-applications.component.d.ts +0 -5
  144. package/lib/tenant-applications.module.d.ts +0 -6
@@ -1,194 +0,0 @@
1
- import { Component, ViewEncapsulation } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { DataTableComponent, TableColumnType, } from '@ieeesa-npm/presentation';
4
- import { Subject, takeUntil } from 'rxjs';
5
- import * as screenText from '../../assets/constants.json';
6
- import { GroupTypeSettings, } from '../../models/view-tenant-group-types.model';
7
- import { GroupRosterType } from '@ieeesa-npm/groups';
8
- import * as i0 from "@angular/core";
9
- import * as i1 from "../../services/tenant-applications.service";
10
- import * as i2 from "@ieeesa-npm/shared";
11
- import * as i3 from "@angular/common";
12
- /**
13
- * Component for viewing and managing tenant group types. Fetches the configured group types associated to the selected tenant and displays in tabular view.
14
- * @export
15
- * @class ViewTenantGroupTypesComponent
16
- * @implements {OnInit}
17
- */
18
- export class ViewTenantGroupTypesComponent {
19
- constructor(
20
- // eslint-disable-next-line no-unused-vars
21
- tenantAppService,
22
- // eslint-disable-next-line no-unused-vars
23
- sharedService // eslint-disable-next-line no-empty-function
24
- ) {
25
- this.tenantAppService = tenantAppService;
26
- this.sharedService = sharedService;
27
- this.destroy$ = new Subject();
28
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
29
- this.constants = screenText;
30
- this.columnHeading = this.constants?.viewGroupTypes?.tableColumns?.heading;
31
- this.settings = this.constants?.viewGroupTypes?.settings;
32
- this.tableRowActions = this.constants?.viewGroupTypes?.actionMenuItems;
33
- this.columnSchema = [];
34
- this.groupTypes = [];
35
- this.appId = '';
36
- this.headerElementClassName = '.ieeesa-header';
37
- }
38
- /**
39
- * Fetches group types data from the server and initializes column schema.
40
- * @memberof ViewTenantGroupTypesComponent
41
- */
42
- ngOnInit() {
43
- this.appId = this.tenantAppService.getSelectedTenantInformation()
44
- ?.appId;
45
- this.getGroupTypes();
46
- this.tenantAppService.isGroupTypeAddedOrModified
47
- .pipe(takeUntil(this.destroy$))
48
- .subscribe((value) => {
49
- if (value) {
50
- this.getGroupTypes();
51
- this.tenantAppService.isGroupTypeAddedOrModified.next(false);
52
- }
53
- });
54
- }
55
- /**
56
- * Get group types from tenant application service.
57
- * @memberof ViewTenantGroupTypesComponent
58
- */
59
- getGroupTypes() {
60
- this.tenantAppService
61
- .getGroupTypes(this.appId)
62
- .pipe(takeUntil(this.destroy$))
63
- .subscribe({
64
- next: (response) => {
65
- this.initializeColumnSchema();
66
- this.groupTypes = this.formatGroupTypesTableData(response);
67
- this.tenantAppService.setGroupTypeDetails(response);
68
- },
69
- error: (error) => {
70
- this.sharedService.handleErrors(error, this.constants?.viewGroupTypes?.errors);
71
- },
72
- });
73
- }
74
- /**
75
- * Formats raw group types data into a required format for display.
76
- * @param {ViewGroupTypeResponse} groupTypeRes
77
- * @return {GroupTypeDetails[]}
78
- * @memberof ViewTenantGroupTypesComponent
79
- */
80
- formatGroupTypesTableData(groupTypeRes) {
81
- const formattedData = [];
82
- groupTypeRes?.body?.forEach((item) => {
83
- if (item?.configFieldValue?.businessRule?.rosterType !==
84
- GroupRosterType?.SYSTEM_USER) {
85
- const { configFieldValue, roles, hasGroup } = item;
86
- const { name, description, businessRule } = configFieldValue;
87
- const { rosterType, ...restBusinessRule } = businessRule;
88
- const businessRuleString = this.transformBusinessRule(restBusinessRule);
89
- const roleNames = roles
90
- ? roles?.map((role) => role?.roleName).join(', ')
91
- : '';
92
- const menuAction = JSON.parse(JSON.stringify(this.tableRowActions));
93
- menuAction[1].isDisabled = hasGroup;
94
- formattedData.push({
95
- name,
96
- description,
97
- rosterType,
98
- businessRule: businessRuleString,
99
- roles: roleNames,
100
- hasGroup: item.hasGroup,
101
- menuAction,
102
- });
103
- }
104
- });
105
- return formattedData;
106
- }
107
- /**
108
- * Transforms business rule to required format in string.
109
- * @param {*} rule
110
- * @return {string}
111
- * @memberof ViewTenantGroupTypesComponent
112
- */
113
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
114
- transformBusinessRule(rule) {
115
- const ruleStringArray = [];
116
- for (const setting of Object.values(GroupTypeSettings)) {
117
- if (rule[setting] === true) {
118
- ruleStringArray.push(this.settings[setting]);
119
- }
120
- }
121
- return ruleStringArray.join(', ');
122
- }
123
- /**
124
- * Initializes table column schema to display group types in tabular view.
125
- * @memberof ViewTenantGroupTypesComponent
126
- */
127
- initializeColumnSchema() {
128
- this.columnSchema = [
129
- {
130
- id: 1,
131
- columnDef: 'groupType',
132
- heading: this.columnHeading?.groupType,
133
- columnType: TableColumnType.TEXT,
134
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
- cellData: (element) => `${element.name}`,
136
- },
137
- {
138
- id: 2,
139
- columnDef: 'rosterType',
140
- heading: this.columnHeading?.rosterType,
141
- columnType: TableColumnType.TEXT,
142
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
143
- cellData: (element) => `${element.rosterType}`,
144
- },
145
- {
146
- id: 3,
147
- columnDef: 'description',
148
- heading: this.columnHeading?.description,
149
- columnType: TableColumnType.TEXT,
150
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
151
- cellData: (element) => `${element.description}`,
152
- },
153
- {
154
- id: 4,
155
- columnDef: 'applicableRoles',
156
- heading: this.columnHeading?.applicableRoles,
157
- columnType: TableColumnType.TEXT,
158
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
159
- cellData: (element) => `${element.roles}`,
160
- },
161
- {
162
- id: 5,
163
- columnDef: 'settings',
164
- heading: this.columnHeading?.settings,
165
- columnType: TableColumnType.TEXT,
166
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
167
- cellData: (element) => `${element.businessRule}`,
168
- },
169
- {
170
- id: 6,
171
- columnDef: 'action',
172
- heading: this.columnHeading?.action,
173
- columnType: TableColumnType.ACTIONS,
174
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
175
- cellData: (element) => `${element.menuAction}`,
176
- },
177
- ];
178
- }
179
- /**
180
- * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.
181
- * @memberof ViewTenantGroupTypesComponent
182
- */
183
- ngOnDestroy() {
184
- this.destroy$?.next(true);
185
- this.destroy$?.unsubscribe();
186
- }
187
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewTenantGroupTypesComponent, deps: [{ token: i1.TenantApplicationsService }, { token: i2.SharedService }], target: i0.ɵɵFactoryTarget.Component }); }
188
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ViewTenantGroupTypesComponent, isStandalone: true, selector: "ieeesa-view-tenant-group-types", ngImport: i0, template: "<div class=\"ieeesa-view-tenant-group-types\">\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableDataInfo]=\"groupTypes\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n ></ieeesa-data-table>\r\n</div>", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-view-tenant-group-types .ieeesa-data-table{padding-top:2.5em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content{margin-top:0!important}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .mdc-data-table__header-cell{padding:14px 12px;box-shadow:0 1px #9ba0a6 inset!important}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .mdc-data-table__cell{padding:4px 14px}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-groupType{min-width:10em;max-width:10em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-description{min-width:12em;max-width:12em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-rosterType{min-width:6em;max-width:6em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-applicableRoles,.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-settings{min-width:10em;max-width:10em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .mat-mdc-icon-button{color:#00629b}@media (max-width: 767px){.ieeesa-view-tenant-group-types .ieeesa-data-table{padding-top:1em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DataTableComponent, selector: "ieeesa-data-table", inputs: ["tableDataInfo", "nestedTableDataInfo", "columnSchemaInfo", "nestedTableColumnSchemaInfo", "tableActions", "hasNestedTable", "tableColumnActions", "tableColumnActionMenuSize", "tableRowActions", "nestedTableRowActions", "caption", "viewAll", "paginatorConfig", "nestedPaginatorConfig", "legends", "searchPlaceHolderText", "rowEditButton", "rowDeleteButton", "tableEditButton", "tableDeleteButton", "rowExpandButton", "rowCollapseButton", "isNestedTableHeaderNeeded", "addButton", "defaultColumnSortDirection", "defaultSortedColumn", "isClearSortNeeded", "filters", "selectedFilterOptions", "appliedFilterOptions", "searchType", "className", "searchSupportMessage", "inbuiltSortingNeeded", "isCellTextOverflowEllipsis", "isTableHeaderNeeded", "tableColumnsHeaderText", "verticalColumnHeaderNumber", "scrollbarSupportMessage", "isScrollSupportMessageNeeded", "isStickyHeaderNeeded", "customStickyHeaderNeeded", "headerElementClassName", "searchResultMessage", "rowMenuActionIcon", "canDisableCheckbox", "isEllipsisRequiredForLink"], outputs: ["rowSelected", "selectedRowToEdit", "selectedRowToDelete", "selectedRowsToDelete", "rowLink", "addRow", "columnDataOnRowLinkClick", "menuActionClick", "selectActionMenu", "paginationChange", "selectedFilter", "removeFilteredOption", "filteredOptions", "searchedValue", "sortChange", "selectedRowsInfo", "rowExpansionClick", "tableColumnMenuActionClick", "tableColumnMenuToggleButton", "rowSlideToggle"] }], encapsulation: i0.ViewEncapsulation.None }); }
189
- }
190
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ViewTenantGroupTypesComponent, decorators: [{
191
- type: Component,
192
- args: [{ selector: 'ieeesa-view-tenant-group-types', standalone: true, imports: [CommonModule, DataTableComponent], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-view-tenant-group-types\">\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableDataInfo]=\"groupTypes\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n ></ieeesa-data-table>\r\n</div>", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-12{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.75rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:focus{background:#1f75a7}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:focus{background:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:focus{background-color:#f0f5f9}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-cancel-modal-confirm-dialog{width:25vw!important}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation{padding:1.5em 1.5em 1em}.ieeesa-cancel-modal-confirm-dialog .ieeesa-confirmation .mat-mdc-dialog-content{text-align:center;padding:0 0 1em!important}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: unset}@media (max-width: 768px){.ieeesa-cancel-modal-confirm-dialog{width:90vw!important}}.ieeesa-view-tenant-group-types .ieeesa-data-table{padding-top:2.5em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content{margin-top:0!important}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .mdc-data-table__header-cell{padding:14px 12px;box-shadow:0 1px #9ba0a6 inset!important}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .mdc-data-table__cell{padding:4px 14px}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-groupType{min-width:10em;max-width:10em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-description{min-width:12em;max-width:12em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-rosterType{min-width:6em;max-width:6em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-applicableRoles,.ieeesa-view-tenant-group-types .ieeesa-data-table__content .cdk-column-settings{min-width:10em;max-width:10em}.ieeesa-view-tenant-group-types .ieeesa-data-table__content .mat-mdc-icon-button{color:#00629b}@media (max-width: 767px){.ieeesa-view-tenant-group-types .ieeesa-data-table{padding-top:1em}}\n"] }]
193
- }], ctorParameters: function () { return [{ type: i1.TenantApplicationsService }, { type: i2.SharedService }]; } });
194
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMvdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdGVuYW50cy9zcmMvbGliL2NvbXBvbmVudHMvdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMvdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxrQkFBa0IsRUFHbEIsZUFBZSxHQUNoQixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFDLE9BQU8sS0FBSyxVQUFVLE1BQU0sNkJBQTZCLENBQUM7QUFHMUQsT0FBTyxFQUVMLGlCQUFpQixHQUdsQixNQUFNLDRDQUE0QyxDQUFDO0FBRXBELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7QUFFckQ7Ozs7O0dBS0c7QUFTSCxNQUFNLE9BQU8sNkJBQTZCO0lBV3hDO0lBQ0UsMENBQTBDO0lBQ2xDLGdCQUEyQztJQUNuRCwwQ0FBMEM7SUFDbEMsYUFBNEIsQ0FBQyw2Q0FBNkM7O1FBRjFFLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBMkI7UUFFM0Msa0JBQWEsR0FBYixhQUFhLENBQWU7UUFkdEMsYUFBUSxHQUFxQixJQUFJLE9BQU8sRUFBVyxDQUFDO1FBQ3BELDhEQUE4RDtRQUM5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LENBQUMsR0FBRyxPQUFPLENBQUMsWUFBWSxFQUFFO2FBQ3REO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLENBQUM7Z0JBQ0wsU0FBUyxFQUFFLFFBQVE7Z0JBQ25CLE9BQU8sRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLE1BQU07Z0JBQ25DLFVBQVUsRUFBRSxlQUFlLENBQUMsT0FBTztnQkFDbkMsOERBQThEO2dCQUM5RCxRQUFRLEVBQUUsQ0FBQyxPQUFZLEVBQUUsRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDLFVBQVUsRUFBRTthQUNwRDtTQUNGLENBQUM7SUFDSixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsV0FBVztRQUNULElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDL0IsQ0FBQzsrR0F0TFUsNkJBQTZCO21HQUE3Qiw2QkFBNkIsMEZDbkMxQyxzWEFTTSwweVREcUJNLFlBQVksbUlBQUUsa0JBQWtCOzs0RkFLL0IsNkJBQTZCO2tCQVJ6QyxTQUFTOytCQUNFLGdDQUFnQyxjQUM5QixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsaUJBRzVCLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQge1xyXG4gIERhdGFUYWJsZUNvbXBvbmVudCxcclxuICBNZW51LFxyXG4gIFRhYmxlQ29sdW1uU2NoZW1hLFxyXG4gIFRhYmxlQ29sdW1uVHlwZSxcclxufSBmcm9tICdAaWVlZXNhLW5wbS9wcmVzZW50YXRpb24nO1xyXG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0ICogYXMgc2NyZWVuVGV4dCBmcm9tICcuLi8uLi9hc3NldHMvY29uc3RhbnRzLmpzb24nO1xyXG5pbXBvcnQgeyBUZW5hbnRBcHBsaWNhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdGVuYW50LWFwcGxpY2F0aW9ucy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJ0BpZWVlc2EtbnBtL3NoYXJlZCc7XHJcbmltcG9ydCB7XHJcbiAgR3JvdXBUeXBlRGV0YWlscyxcclxuICBHcm91cFR5cGVTZXR0aW5ncyxcclxuICBWaWV3R3JvdXBUeXBlUmVzcG9uc2UsXHJcbiAgVmlld0dyb3VwVHlwZXNDb25maWd1cmF0aW9uLFxyXG59IGZyb20gJy4uLy4uL21vZGVscy92aWV3LXRlbmFudC1ncm91cC10eXBlcy5tb2RlbCc7XHJcbmltcG9ydCB7IFJvbGUgfSBmcm9tICcuLi8uLi9tb2RlbHMvcm9sZXMtYW5kLXBlcm1pc3Npb25zLm1vZGVsJztcclxuaW1wb3J0IHsgR3JvdXBSb3N0ZXJUeXBlIH0gZnJvbSAnQGllZWVzYS1ucG0vZ3JvdXBzJztcclxuXHJcbi8qKlxyXG4gKiBDb21wb25lbnQgZm9yIHZpZXdpbmcgYW5kIG1hbmFnaW5nIHRlbmFudCBncm91cCB0eXBlcy4gRmV0Y2hlcyB0aGUgY29uZmlndXJlZCBncm91cCB0eXBlcyBhc3NvY2lhdGVkIHRvIHRoZSBzZWxlY3RlZCB0ZW5hbnQgYW5kIGRpc3BsYXlzIGluIHRhYnVsYXIgdmlldy5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgVmlld1RlbmFudEdyb3VwVHlwZXNDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLXZpZXctdGVuYW50LWdyb3VwLXR5cGVzJyxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIERhdGFUYWJsZUNvbXBvbmVudF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3ZpZXctdGVuYW50LWdyb3VwLXR5cGVzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi92aWV3LXRlbmFudC1ncm91cC10eXBlcy5jb21wb25lbnQuc2NzcyddLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBWaWV3VGVuYW50R3JvdXBUeXBlc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IHNjcmVlblRleHQ7XHJcbiAgY29sdW1uSGVhZGluZyA9IHRoaXMuY29uc3RhbnRzPy52aWV3R3JvdXBUeXBlcz8udGFibGVDb2x1bW5zPy5oZWFkaW5nO1xyXG4gIHNldHRpbmdzID0gdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cFR5cGVzPy5zZXR0aW5ncztcclxuICB0YWJsZVJvd0FjdGlvbnM6IE1lbnVbXSA9IHRoaXMuY29uc3RhbnRzPy52aWV3R3JvdXBUeXBlcz8uYWN0aW9uTWVudUl0ZW1zO1xyXG4gIGNvbHVtblNjaGVtYTogVGFibGVDb2x1bW5TY2hlbWFbXSA9IFtdO1xyXG4gIGdyb3VwVHlwZXM6IEdyb3VwVHlwZURldGFpbHNbXSA9IFtdO1xyXG4gIGFwcElkID0gJyc7XHJcbiAgaGVhZGVyRWxlbWVudENsYXNzTmFtZSA9ICcuaWVlZXNhLWhlYWRlcic7XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHByaXZhdGUgdGVuYW50QXBwU2VydmljZTogVGVuYW50QXBwbGljYXRpb25zU2VydmljZSxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBzaGFyZWRTZXJ2aWNlOiBTaGFyZWRTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogRmV0Y2hlcyBncm91cCB0eXBlcyBkYXRhIGZyb20gdGhlIHNlcnZlciBhbmQgaW5pdGlhbGl6ZXMgY29sdW1uIHNjaGVtYS5cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudEdyb3VwVHlwZXNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuYXBwSWQgPSB0aGlzLnRlbmFudEFwcFNlcnZpY2UuZ2V0U2VsZWN0ZWRUZW5hbnRJbmZvcm1hdGlvbigpXHJcbiAgICAgID8uYXBwSWQgYXMgc3RyaW5nO1xyXG4gICAgdGhpcy5nZXRHcm91cFR5cGVzKCk7XHJcbiAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2UuaXNHcm91cFR5cGVBZGRlZE9yTW9kaWZpZWRcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh2YWx1ZSkgPT4ge1xyXG4gICAgICAgIGlmICh2YWx1ZSkge1xyXG4gICAgICAgICAgdGhpcy5nZXRHcm91cFR5cGVzKCk7XHJcbiAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2UuaXNHcm91cFR5cGVBZGRlZE9yTW9kaWZpZWQubmV4dChmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogR2V0IGdyb3VwIHR5cGVzIGZyb20gdGVuYW50IGFwcGxpY2F0aW9uIHNlcnZpY2UuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnRHcm91cFR5cGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0R3JvdXBUeXBlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudGVuYW50QXBwU2VydmljZVxyXG4gICAgICAuZ2V0R3JvdXBUeXBlcyh0aGlzLmFwcElkKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZTogVmlld0dyb3VwVHlwZVJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmluaXRpYWxpemVDb2x1bW5TY2hlbWEoKTtcclxuICAgICAgICAgIHRoaXMuZ3JvdXBUeXBlcyA9IHRoaXMuZm9ybWF0R3JvdXBUeXBlc1RhYmxlRGF0YShyZXNwb25zZSk7XHJcbiAgICAgICAgICB0aGlzLnRlbmFudEFwcFNlcnZpY2Uuc2V0R3JvdXBUeXBlRGV0YWlscyhyZXNwb25zZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZFNlcnZpY2UuaGFuZGxlRXJyb3JzKFxyXG4gICAgICAgICAgICBlcnJvcixcclxuICAgICAgICAgICAgdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cFR5cGVzPy5lcnJvcnNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSxcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGb3JtYXRzIHJhdyBncm91cCB0eXBlcyBkYXRhIGludG8gYSByZXF1aXJlZCBmb3JtYXQgZm9yIGRpc3BsYXkuXHJcbiAgICogQHBhcmFtIHtWaWV3R3JvdXBUeXBlUmVzcG9uc2V9IGdyb3VwVHlwZVJlc1xyXG4gICAqIEByZXR1cm4ge0dyb3VwVHlwZURldGFpbHNbXX1cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudEdyb3VwVHlwZXNDb21wb25lbnRcclxuICAgKi9cclxuICBmb3JtYXRHcm91cFR5cGVzVGFibGVEYXRhKFxyXG4gICAgZ3JvdXBUeXBlUmVzOiBWaWV3R3JvdXBUeXBlUmVzcG9uc2VcclxuICApOiBHcm91cFR5cGVEZXRhaWxzW10ge1xyXG4gICAgY29uc3QgZm9ybWF0dGVkRGF0YTogR3JvdXBUeXBlRGV0YWlsc1tdID0gW107XHJcbiAgICBncm91cFR5cGVSZXM/LmJvZHk/LmZvckVhY2goKGl0ZW06IFZpZXdHcm91cFR5cGVzQ29uZmlndXJhdGlvbikgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgaXRlbT8uY29uZmlnRmllbGRWYWx1ZT8uYnVzaW5lc3NSdWxlPy5yb3N0ZXJUeXBlICE9PVxyXG4gICAgICAgIEdyb3VwUm9zdGVyVHlwZT8uU1lTVEVNX1VTRVJcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc3QgeyBjb25maWdGaWVsZFZhbHVlLCByb2xlcywgaGFzR3JvdXAgfSA9IGl0ZW07XHJcbiAgICAgICAgY29uc3QgeyBuYW1lLCBkZXNjcmlwdGlvbiwgYnVzaW5lc3NSdWxlIH0gPSBjb25maWdGaWVsZFZhbHVlO1xyXG4gICAgICAgIGNvbnN0IHsgcm9zdGVyVHlwZSwgLi4ucmVzdEJ1c2luZXNzUnVsZSB9ID0gYnVzaW5lc3NSdWxlIGFzIHtcclxuICAgICAgICAgIHJvc3RlclR5cGU6IHN0cmluZztcclxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBidXNpbmVzc1J1bGVTdHJpbmcgPSB0aGlzLnRyYW5zZm9ybUJ1c2luZXNzUnVsZShyZXN0QnVzaW5lc3NSdWxlKTtcclxuICAgICAgICBjb25zdCByb2xlTmFtZXMgPSByb2xlc1xyXG4gICAgICAgICAgPyByb2xlcz8ubWFwKChyb2xlOiBSb2xlKSA9PiByb2xlPy5yb2xlTmFtZSkuam9pbignLCAnKVxyXG4gICAgICAgICAgOiAnJztcclxuICAgICAgICBjb25zdCBtZW51QWN0aW9uID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLnRhYmxlUm93QWN0aW9ucykpO1xyXG4gICAgICAgIG1lbnVBY3Rpb25bMV0uaXNEaXNhYmxlZCA9IGhhc0dyb3VwO1xyXG5cclxuICAgICAgICBmb3JtYXR0ZWREYXRhLnB1c2goe1xyXG4gICAgICAgICAgbmFtZSxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgcm9zdGVyVHlwZSxcclxuICAgICAgICAgIGJ1c2luZXNzUnVsZTogYnVzaW5lc3NSdWxlU3RyaW5nLFxyXG4gICAgICAgICAgcm9sZXM6IHJvbGVOYW1lcyxcclxuICAgICAgICAgIGhhc0dyb3VwOiBpdGVtLmhhc0dyb3VwLFxyXG4gICAgICAgICAgbWVudUFjdGlvbixcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gZm9ybWF0dGVkRGF0YTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFRyYW5zZm9ybXMgYnVzaW5lc3MgcnVsZSB0byByZXF1aXJlZCBmb3JtYXQgaW4gc3RyaW5nLlxyXG4gICAqIEBwYXJhbSB7Kn0gcnVsZVxyXG4gICAqIEByZXR1cm4ge3N0cmluZ31cclxuICAgKiBAbWVtYmVyb2YgVmlld1RlbmFudEdyb3VwVHlwZXNDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIHRyYW5zZm9ybUJ1c2luZXNzUnVsZShydWxlOiBhbnkpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgcnVsZVN0cmluZ0FycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZm9yIChjb25zdCBzZXR0aW5nIG9mIE9iamVjdC52YWx1ZXMoR3JvdXBUeXBlU2V0dGluZ3MpKSB7XHJcbiAgICAgIGlmIChydWxlW3NldHRpbmddID09PSB0cnVlKSB7XHJcbiAgICAgICAgcnVsZVN0cmluZ0FycmF5LnB1c2godGhpcy5zZXR0aW5nc1tzZXR0aW5nXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBydWxlU3RyaW5nQXJyYXkuam9pbignLCAnKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEluaXRpYWxpemVzIHRhYmxlIGNvbHVtbiBzY2hlbWEgdG8gZGlzcGxheSBncm91cCB0eXBlcyBpbiB0YWJ1bGFyIHZpZXcuXHJcbiAgICogQG1lbWJlcm9mIFZpZXdUZW5hbnRHcm91cFR5cGVzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgaW5pdGlhbGl6ZUNvbHVtblNjaGVtYSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1uU2NoZW1hID0gW1xyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDEsXHJcbiAgICAgICAgY29sdW1uRGVmOiAnZ3JvdXBUeXBlJyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/Lmdyb3VwVHlwZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50Lm5hbWV9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAyLFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ3Jvc3RlclR5cGUnLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8ucm9zdGVyVHlwZSxcclxuICAgICAgICBjb2x1bW5UeXBlOiBUYWJsZUNvbHVtblR5cGUuVEVYVCxcclxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIGNlbGxEYXRhOiAoZWxlbWVudDogYW55KSA9PiBgJHtlbGVtZW50LnJvc3RlclR5cGV9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiAzLFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ2Rlc2NyaXB0aW9uJyxcclxuICAgICAgICBoZWFkaW5nOiB0aGlzLmNvbHVtbkhlYWRpbmc/LmRlc2NyaXB0aW9uLFxyXG4gICAgICAgIGNvbHVtblR5cGU6IFRhYmxlQ29sdW1uVHlwZS5URVhULFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgY2VsbERhdGE6IChlbGVtZW50OiBhbnkpID0+IGAke2VsZW1lbnQuZGVzY3JpcHRpb259YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA0LFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ2FwcGxpY2FibGVSb2xlcycsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5hcHBsaWNhYmxlUm9sZXMsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5yb2xlc31gLFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaWQ6IDUsXHJcbiAgICAgICAgY29sdW1uRGVmOiAnc2V0dGluZ3MnLFxyXG4gICAgICAgIGhlYWRpbmc6IHRoaXMuY29sdW1uSGVhZGluZz8uc2V0dGluZ3MsXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLlRFWFQsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5idXNpbmVzc1J1bGV9YCxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGlkOiA2LFxyXG4gICAgICAgIGNvbHVtbkRlZjogJ2FjdGlvbicsXHJcbiAgICAgICAgaGVhZGluZzogdGhpcy5jb2x1bW5IZWFkaW5nPy5hY3Rpb24sXHJcbiAgICAgICAgY29sdW1uVHlwZTogVGFibGVDb2x1bW5UeXBlLkFDVElPTlMsXHJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICAgICAgICBjZWxsRGF0YTogKGVsZW1lbnQ6IGFueSkgPT4gYCR7ZWxlbWVudC5tZW51QWN0aW9ufWAsXHJcbiAgICAgIH0sXHJcbiAgICBdO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBWaWV3VGVuYW50R3JvdXBUeXBlc0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5kZXN0cm95JD8ubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQ/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2Etdmlldy10ZW5hbnQtZ3JvdXAtdHlwZXNcIj5cclxuICA8aWVlZXNhLWRhdGEtdGFibGVcclxuICAgICpuZ0lmPVwiY29sdW1uU2NoZW1hLmxlbmd0aFwiXHJcbiAgICBbaGVhZGVyRWxlbWVudENsYXNzTmFtZV09XCJoZWFkZXJFbGVtZW50Q2xhc3NOYW1lXCJcclxuICAgIFtjdXN0b21TdGlja3lIZWFkZXJOZWVkZWRdPVwidHJ1ZVwiXHJcbiAgICBbaXNDZWxsVGV4dE92ZXJmbG93RWxsaXBzaXNdPVwidHJ1ZVwiXHJcbiAgICBbdGFibGVEYXRhSW5mb109XCJncm91cFR5cGVzXCJcclxuICAgIFtjb2x1bW5TY2hlbWFJbmZvXT1cImNvbHVtblNjaGVtYVwiXHJcbiAgPjwvaWVlZXNhLWRhdGEtdGFibGU+XHJcbjwvZGl2PiJdfQ==