application-sidebar 1.0.40 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/app-details.mjs +1 -1
- package/esm2022/lib/application-sidebar.component.mjs +856 -102
- package/esm2022/lib/nav-menu-item.mjs +1 -1
- package/esm2022/lib/nav-menus/nav-menus.component.mjs +33 -9
- package/esm2022/lib/navmenu1.mjs +263 -216
- package/esm2022/lib/revised-navigation.mjs +2 -0
- package/esm2022/lib/services/application-sidebar.service.mjs +305 -8
- package/esm2022/lib/services/rest-api.services.mjs +39 -6
- package/esm2022/lib/sidebar-layout.local.mjs +86 -0
- package/esm2022/lib/translations/translations-en.mjs +57 -31
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/application-sidebar.mjs +3048 -149
- package/fesm2022/application-sidebar.mjs.map +1 -1
- package/lib/app-details.d.ts +2 -0
- package/lib/application-sidebar.component.d.ts +132 -1
- package/lib/nav-menu-item.d.ts +7 -0
- package/lib/navmenu1.d.ts +146 -77
- package/lib/revised-navigation.d.ts +83 -0
- package/lib/services/application-sidebar.service.d.ts +49 -1
- package/lib/services/rest-api.services.d.ts +12 -0
- package/lib/sidebar-layout.local.d.ts +19 -0
- package/lib/translations/translations-en.d.ts +53 -27
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectorRef } from '@angular/core';
|
|
2
|
-
import { Router, NavigationStart } from '@angular/router';
|
|
2
|
+
import { Router, NavigationStart, NavigationEnd } from '@angular/router';
|
|
3
3
|
import { Component, Input, ChangeDetectionStrategy, ViewChildren, QueryList, ViewChild } from '@angular/core';
|
|
4
4
|
import { ApplicationSidebarService } from './services/application-sidebar.service';
|
|
5
5
|
import { MatSidenav } from '@angular/material/sidenav';
|
|
@@ -10,6 +10,8 @@ import { CookieService } from 'ngx-cookie-service';
|
|
|
10
10
|
import { TranslationService } from './services/translation.service';
|
|
11
11
|
import { constants } from './constants';
|
|
12
12
|
import { MixpanelService } from './services/mixpanel.service';
|
|
13
|
+
import { DomSanitizer } from '@angular/platform-browser';
|
|
14
|
+
import { forkJoin, of } from 'rxjs';
|
|
13
15
|
import * as i0 from "@angular/core";
|
|
14
16
|
import * as i1 from "./services/application-sidebar.service";
|
|
15
17
|
import * as i2 from "@angular/router";
|
|
@@ -17,18 +19,19 @@ import * as i3 from "./services/rest-api.services";
|
|
|
17
19
|
import * as i4 from "ngx-cookie-service";
|
|
18
20
|
import * as i5 from "./services/translation.service";
|
|
19
21
|
import * as i6 from "./services/mixpanel.service";
|
|
20
|
-
import * as i7 from "@angular/
|
|
21
|
-
import * as i8 from "@angular/material/
|
|
22
|
-
import * as i9 from "@angular/material/
|
|
23
|
-
import * as i10 from "@angular/material/
|
|
24
|
-
import * as i11 from "@angular/material/
|
|
25
|
-
import * as i12 from "@angular/material/
|
|
26
|
-
import * as i13 from "@angular/material/
|
|
27
|
-
import * as i14 from "@angular/
|
|
28
|
-
import * as i15 from "@angular/
|
|
29
|
-
import * as i16 from "@angular/flex-layout/
|
|
30
|
-
import * as i17 from "
|
|
31
|
-
import * as i18 from "./nav-
|
|
22
|
+
import * as i7 from "@angular/platform-browser";
|
|
23
|
+
import * as i8 from "@angular/material/toolbar";
|
|
24
|
+
import * as i9 from "@angular/material/menu";
|
|
25
|
+
import * as i10 from "@angular/material/list";
|
|
26
|
+
import * as i11 from "@angular/material/expansion";
|
|
27
|
+
import * as i12 from "@angular/material/icon";
|
|
28
|
+
import * as i13 from "@angular/material/progress-bar";
|
|
29
|
+
import * as i14 from "@angular/material/tooltip";
|
|
30
|
+
import * as i15 from "@angular/common";
|
|
31
|
+
import * as i16 from "@angular/flex-layout/flex";
|
|
32
|
+
import * as i17 from "@angular/flex-layout/extended";
|
|
33
|
+
import * as i18 from "./nav-menus/nav-menus.component";
|
|
34
|
+
import * as i19 from "./nav-menu.directive";
|
|
32
35
|
export class ApplicationSidebarComponent {
|
|
33
36
|
navigation;
|
|
34
37
|
router;
|
|
@@ -37,6 +40,7 @@ export class ApplicationSidebarComponent {
|
|
|
37
40
|
cdref;
|
|
38
41
|
translation;
|
|
39
42
|
mixpanel;
|
|
43
|
+
sanitizer;
|
|
40
44
|
applicationDetails;
|
|
41
45
|
sidenav;
|
|
42
46
|
listItems;
|
|
@@ -50,13 +54,15 @@ export class ApplicationSidebarComponent {
|
|
|
50
54
|
adminRoles = ['SUPER_ADMIN', 'SUPER_ADMIN_READ_ONLY'];
|
|
51
55
|
currentApp;
|
|
52
56
|
sideNavStatusSubscription;
|
|
57
|
+
sideNavClosedStartSubscription;
|
|
53
58
|
myObserver;
|
|
54
59
|
expandGlobalSettings = false;
|
|
55
60
|
inContextInsightsWLApp;
|
|
56
61
|
themePoint; // Public variable for theme point
|
|
57
62
|
showTitle = false;
|
|
63
|
+
revisedSectionIconCache = {};
|
|
58
64
|
// isGlobalSettingsMenuActive:boolean = false
|
|
59
|
-
constructor(navigation, router, RestApiService, cookie, cdref, translation, mixpanel) {
|
|
65
|
+
constructor(navigation, router, RestApiService, cookie, cdref, translation, mixpanel, sanitizer) {
|
|
60
66
|
this.navigation = navigation;
|
|
61
67
|
this.router = router;
|
|
62
68
|
this.RestApiService = RestApiService;
|
|
@@ -64,10 +70,22 @@ export class ApplicationSidebarComponent {
|
|
|
64
70
|
this.cdref = cdref;
|
|
65
71
|
this.translation = translation;
|
|
66
72
|
this.mixpanel = mixpanel;
|
|
73
|
+
this.sanitizer = sanitizer;
|
|
67
74
|
this.myObserver = this.router.events.subscribe((event) => {
|
|
68
75
|
if (event instanceof NavigationStart) {
|
|
69
76
|
this.expandGlobalSettings = this.router.getCurrentNavigation().extras.state && this.router.getCurrentNavigation().extras.state.expandPanel;
|
|
70
77
|
}
|
|
78
|
+
if (event instanceof NavigationEnd) {
|
|
79
|
+
if (this.isRevisedNavigationEnabled() && this.revisedSections && this.revisedSections.length) {
|
|
80
|
+
this.expandCurrentMenuOnly(this.applicationDetails, false);
|
|
81
|
+
this.rebuildRevisedNavigationState();
|
|
82
|
+
this.logOptimizeDebugState();
|
|
83
|
+
this.scrollToActiveMenuIfVisible();
|
|
84
|
+
}
|
|
85
|
+
this.syncGlobalSettingsPanelOpenToActiveRoute();
|
|
86
|
+
// Legacy nav + nested panel expansion (`isChildMenuPanelExpanded`) depend on route; OnPush needs a tick after navigate.
|
|
87
|
+
this.cdref.markForCheck();
|
|
88
|
+
}
|
|
71
89
|
});
|
|
72
90
|
// Determine theme point based on domain
|
|
73
91
|
this.determineThemePoint();
|
|
@@ -148,6 +166,12 @@ export class ApplicationSidebarComponent {
|
|
|
148
166
|
toDisplayApplications = [];
|
|
149
167
|
toDisplayGlobalSettingsMenu;
|
|
150
168
|
toDisplayLinkMenu;
|
|
169
|
+
revisedNavigationState;
|
|
170
|
+
revisedSections = [];
|
|
171
|
+
revisedSectionState = {};
|
|
172
|
+
/** Group-level expansion (key: sectionId_groupId). Only for grouped-menus with a group title. */
|
|
173
|
+
revisedGroupExpandedState = {};
|
|
174
|
+
revisedSelectedAppBySection = {};
|
|
151
175
|
errorMsg;
|
|
152
176
|
ngOnInit() {
|
|
153
177
|
if (this.applicationDetails['userInfo']) {
|
|
@@ -173,11 +197,29 @@ export class ApplicationSidebarComponent {
|
|
|
173
197
|
this.sidenav.opened = status && status == 'false' ? false : true;
|
|
174
198
|
this.showTitle = this.navExpanded;
|
|
175
199
|
this.cdref.detectChanges();
|
|
200
|
+
if (this.isRevisedNavigationEnabled()) {
|
|
201
|
+
if (this.sidenav.closedStart) {
|
|
202
|
+
this.sideNavClosedStartSubscription = this.sidenav.closedStart.subscribe(() => {
|
|
203
|
+
// Do not clear revisedSectionState here: it becomes all `false`, then rebuild treats
|
|
204
|
+
// `prev === false` as "user collapsed" and keeps the active section closed after reopen.
|
|
205
|
+
this.navExpanded = false;
|
|
206
|
+
this.showTitle = false;
|
|
207
|
+
this.cdref.detectChanges();
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
}
|
|
176
211
|
this.sideNavStatusSubscription = this.sidenav.openedChange.subscribe((status) => {
|
|
177
212
|
sessionStorage.setItem('leftNavOpenStatus', JSON.stringify(status));
|
|
178
213
|
this.navExpanded = status;
|
|
179
214
|
this.sidenav.opened = status;
|
|
180
215
|
this.showTitle = status;
|
|
216
|
+
if (status) {
|
|
217
|
+
if (this.isRevisedNavigationEnabled()) {
|
|
218
|
+
this.expandRevisedSectionsContainingActiveRoute();
|
|
219
|
+
}
|
|
220
|
+
this.syncGlobalSettingsPanelOpenToActiveRoute();
|
|
221
|
+
this.scrollToActiveMenuIfVisible();
|
|
222
|
+
}
|
|
181
223
|
this.cdref.detectChanges();
|
|
182
224
|
});
|
|
183
225
|
}
|
|
@@ -195,19 +237,40 @@ export class ApplicationSidebarComponent {
|
|
|
195
237
|
// }
|
|
196
238
|
}
|
|
197
239
|
createNavigationSideBar(applicationDetails) {
|
|
198
|
-
this.
|
|
240
|
+
const consumerRevisedConfig = this.applicationDetails?.revisedNavigation;
|
|
241
|
+
const useLegacyNavigation = consumerRevisedConfig?.useLegacyNavigation === true;
|
|
242
|
+
const shouldLoadSectionLayout = !useLegacyNavigation;
|
|
243
|
+
forkJoin({
|
|
244
|
+
menulists: this.RestApiService.getjsonMenulists(applicationDetails),
|
|
245
|
+
/** Section structure: S3 `sidebar-layout.json` first, bundled `sidebar-layout.local` on error. */
|
|
246
|
+
revisedLayout: shouldLoadSectionLayout
|
|
247
|
+
? this.RestApiService.getSidebarLayoutConfig()
|
|
248
|
+
: of({ useLegacyNavigation: true, sections: [] })
|
|
249
|
+
}).subscribe(({ menulists, revisedLayout }) => {
|
|
250
|
+
const mergedApplicationDetails = {
|
|
251
|
+
...this.applicationDetails,
|
|
252
|
+
revisedNavigation: useLegacyNavigation
|
|
253
|
+
? { ...consumerRevisedConfig, useLegacyNavigation: true, sections: [] }
|
|
254
|
+
: { ...revisedLayout, useLegacyNavigation: false }
|
|
255
|
+
};
|
|
256
|
+
this.applicationDetails = mergedApplicationDetails;
|
|
199
257
|
// let menulists = GLOBAL_LIST
|
|
200
|
-
this.toDisplayApplications = this.navigation.getMenuList(
|
|
201
|
-
this.toDisplayGlobalSettingsMenu = this.navigation.getGlobalSettingsMenu(
|
|
258
|
+
this.toDisplayApplications = this.navigation.getMenuList(mergedApplicationDetails, menulists);
|
|
259
|
+
this.toDisplayGlobalSettingsMenu = this.navigation.getGlobalSettingsMenu(mergedApplicationDetails, menulists);
|
|
202
260
|
// Use proper filtering system for Join Intentwise Community link
|
|
203
261
|
const found = menulists.find(list => list.id === 'app_intentwise_community');
|
|
204
262
|
this.toDisplayLinkMenu = found ? this.navigation.getApplicationMenuItem(found) ? [found] : [] : [];
|
|
205
|
-
this.expandCurrentMenuOnly(
|
|
263
|
+
this.expandCurrentMenuOnly(mergedApplicationDetails, false);
|
|
206
264
|
this.expandChildMenuOnly(this.toDisplayGlobalSettingsMenu);
|
|
207
|
-
this.checkForRedirection(this.toDisplayApplications, this.toDisplayGlobalSettingsMenu,
|
|
265
|
+
this.checkForRedirection(this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, mergedApplicationDetails);
|
|
266
|
+
this.rebuildRevisedNavigationState();
|
|
267
|
+
if (this.navExpanded && this.isRevisedNavigationEnabled()) {
|
|
268
|
+
this.expandRevisedSectionsContainingActiveRoute();
|
|
269
|
+
}
|
|
270
|
+
this.syncGlobalSettingsPanelOpenToActiveRoute();
|
|
208
271
|
console.log(this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, this.toDisplayLinkMenu);
|
|
209
|
-
this.
|
|
210
|
-
this.setMenuList(
|
|
272
|
+
this.scrollToActiveMenuIfVisible();
|
|
273
|
+
this.setMenuList(mergedApplicationDetails.applicationId, this.toDisplayApplications);
|
|
211
274
|
this.inContextInsightsWLApp = this.hideMenuForWL();
|
|
212
275
|
this.cdref.detectChanges();
|
|
213
276
|
});
|
|
@@ -224,29 +287,35 @@ export class ApplicationSidebarComponent {
|
|
|
224
287
|
if (obj) {
|
|
225
288
|
this.activePanel = obj.activePanel;
|
|
226
289
|
}
|
|
290
|
+
if (this.isRevisedNavigationEnabled()) {
|
|
291
|
+
this.rebuildRevisedNavigationState();
|
|
292
|
+
}
|
|
293
|
+
this.scrollToActiveMenuIfVisible();
|
|
227
294
|
this.cdref.detectChanges();
|
|
228
295
|
}
|
|
229
296
|
expandChildMenuOnly(toDisplayGlobalSettingsMenu) {
|
|
230
297
|
setTimeout(() => {
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
let routeUrl = urlArray[urlArray.length - 1];
|
|
234
|
-
let currentRoute = routeUrl.split('?')[0];
|
|
235
|
-
if (toDisplayGlobalSettingsMenu && toDisplayGlobalSettingsMenu.length) {
|
|
236
|
-
toDisplayGlobalSettingsMenu[0].panelOpenState = false;
|
|
237
|
-
if (toDisplayGlobalSettingsMenu[0].children && toDisplayGlobalSettingsMenu[0].children.length) {
|
|
238
|
-
for (let menu of toDisplayGlobalSettingsMenu[0].children) {
|
|
239
|
-
if (menu.route == currentRoute) {
|
|
240
|
-
toDisplayGlobalSettingsMenu[0].panelOpenState = true;
|
|
241
|
-
// this.isGlobalSettingsMenuActive = true;
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
this.cdref.detectChanges(); // Trigger change detection after setTimeout operation
|
|
298
|
+
this.syncGlobalSettingsPanelOpenToActiveRoute(toDisplayGlobalSettingsMenu);
|
|
299
|
+
this.cdref.detectChanges();
|
|
248
300
|
}, 100);
|
|
249
301
|
}
|
|
302
|
+
/**
|
|
303
|
+
* Opens each Global Settings head panel when the current URL matches that panel’s menu tree
|
|
304
|
+
* (any depth). Used on sidenav open and after menu data refresh.
|
|
305
|
+
*/
|
|
306
|
+
syncGlobalSettingsPanelOpenToActiveRoute(menusList) {
|
|
307
|
+
const list = menusList ?? this.toDisplayGlobalSettingsMenu;
|
|
308
|
+
if (!list?.length) {
|
|
309
|
+
return;
|
|
310
|
+
}
|
|
311
|
+
list.forEach((settingsHeadMenu) => {
|
|
312
|
+
settingsHeadMenu.panelOpenState = false;
|
|
313
|
+
const children = settingsHeadMenu.children;
|
|
314
|
+
if (children?.length && this.hasActiveRouteInMenus(children)) {
|
|
315
|
+
settingsHeadMenu.panelOpenState = true;
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
}
|
|
250
319
|
expandCurrentMenuOnly(applicationDetails, onMenuClicked) {
|
|
251
320
|
for (let headMenu of this.toDisplayApplications) {
|
|
252
321
|
headMenu.panelOpenState = false;
|
|
@@ -321,6 +390,679 @@ export class ApplicationSidebarComponent {
|
|
|
321
390
|
selectedApplication(headmenu) {
|
|
322
391
|
return this.translation.selectedApplication(this.applicationDetails, headmenu);
|
|
323
392
|
}
|
|
393
|
+
isRevisedNavigationEnabled() {
|
|
394
|
+
return this.navigation.isRevisedNavigationEnabled(this.applicationDetails);
|
|
395
|
+
}
|
|
396
|
+
isLegacyNavigationEnabled() {
|
|
397
|
+
return this.navigation.isLegacyNavigationEnabled(this.applicationDetails);
|
|
398
|
+
}
|
|
399
|
+
onRevisedSectionHeaderClick(sectionId) {
|
|
400
|
+
const section = this.getRevisedSectionById(sectionId);
|
|
401
|
+
if (!section) {
|
|
402
|
+
return;
|
|
403
|
+
}
|
|
404
|
+
if (!this.navExpanded && this.sidenav) {
|
|
405
|
+
this.revisedSectionState[sectionId] = true;
|
|
406
|
+
this.sidenav.open();
|
|
407
|
+
return;
|
|
408
|
+
}
|
|
409
|
+
const isCurrentlyExpanded = this.isRevisedSectionExpanded(sectionId);
|
|
410
|
+
const routeInSection = this.sectionContainsActiveRoute(section);
|
|
411
|
+
if (routeInSection) {
|
|
412
|
+
this.revisedSectionState[sectionId] = !isCurrentlyExpanded;
|
|
413
|
+
this.cdref.markForCheck();
|
|
414
|
+
return;
|
|
415
|
+
}
|
|
416
|
+
if (isCurrentlyExpanded) {
|
|
417
|
+
this.revisedSectionState[sectionId] = false;
|
|
418
|
+
this.cdref.markForCheck();
|
|
419
|
+
return;
|
|
420
|
+
}
|
|
421
|
+
this.revisedSectionState[sectionId] = true;
|
|
422
|
+
this.cdref.markForCheck();
|
|
423
|
+
}
|
|
424
|
+
isRevisedSectionExpanded(sectionId) {
|
|
425
|
+
const section = this.getRevisedSectionById(sectionId);
|
|
426
|
+
if (this.revisedSectionState[sectionId] === false) {
|
|
427
|
+
return false;
|
|
428
|
+
}
|
|
429
|
+
if (sectionId === 'optimize' && this.isRevisedAppTabsSection(section)) {
|
|
430
|
+
if (this.getCurrentOptimizeApp(section)) {
|
|
431
|
+
return true;
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
return !!(this.revisedSectionState[sectionId] === true || (section && this.sectionContainsActiveRoute(section)));
|
|
435
|
+
}
|
|
436
|
+
/** True when any menu under this section matches the current route (e.g. collapsed rail active indicator). */
|
|
437
|
+
isRevisedSectionActive(section) {
|
|
438
|
+
return this.sectionContainsActiveRoute(section);
|
|
439
|
+
}
|
|
440
|
+
getRevisedSectionIcon(section) {
|
|
441
|
+
if (!section || !section.id) {
|
|
442
|
+
return '';
|
|
443
|
+
}
|
|
444
|
+
if (!this.revisedSectionIconCache[section.id]) {
|
|
445
|
+
this.revisedSectionIconCache[section.id] = section.iconSvg ? this.sanitizer.bypassSecurityTrustHtml(section.iconSvg) : '';
|
|
446
|
+
}
|
|
447
|
+
return this.revisedSectionIconCache[section.id];
|
|
448
|
+
}
|
|
449
|
+
isRevisedAppTabsSection(section) {
|
|
450
|
+
return !!section && section.type === 'app-tabs';
|
|
451
|
+
}
|
|
452
|
+
getRevisedSectionApps(section) {
|
|
453
|
+
return this.isRevisedAppTabsSection(section) ? section.apps : [];
|
|
454
|
+
}
|
|
455
|
+
getRevisedGroupedSectionGroups(section) {
|
|
456
|
+
return section && section.type === 'grouped-menus' ? section.groups : [];
|
|
457
|
+
}
|
|
458
|
+
/** JSON `groups[]` row: optional flat list with no group title */
|
|
459
|
+
isRevisedUntitledGroup(group) {
|
|
460
|
+
return !!group && !group.title;
|
|
461
|
+
}
|
|
462
|
+
/** JSON `groups[]` row: one menu item under a titled group (e.g. FOUNDATION rows) */
|
|
463
|
+
isRevisedSingleItemGroup(group) {
|
|
464
|
+
return !!group && !!group.title && group.items && group.items.length === 1;
|
|
465
|
+
}
|
|
466
|
+
/** JSON `groups[]` row: titled group with multiple menu roots (e.g. Commerce Insights) */
|
|
467
|
+
isRevisedMultiItemGroup(group) {
|
|
468
|
+
return !!group && !!group.title && group.items && group.items.length > 1;
|
|
469
|
+
}
|
|
470
|
+
hasExpandableMenusInSection(section) {
|
|
471
|
+
const menus = this.getRevisedSectionMenus(section);
|
|
472
|
+
return menus.some((m) => m && m.children && m.children.length > 0);
|
|
473
|
+
}
|
|
474
|
+
hasExpandableMenusInGroup(group) {
|
|
475
|
+
return !!(group && group.items && group.items.some((m) => m && m.children && m.children.length > 0));
|
|
476
|
+
}
|
|
477
|
+
getRevisedSectionSelectedApp(section) {
|
|
478
|
+
if (!this.isRevisedAppTabsSection(section)) {
|
|
479
|
+
return undefined;
|
|
480
|
+
}
|
|
481
|
+
if (section.id === 'optimize') {
|
|
482
|
+
const currentOptimizeApp = this.getCurrentOptimizeApp(section);
|
|
483
|
+
if (currentOptimizeApp) {
|
|
484
|
+
return currentOptimizeApp;
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
const selectedAppId = this.revisedSelectedAppBySection[section.id];
|
|
488
|
+
return section.apps.find((app) => app.id === selectedAppId) || section.apps[0];
|
|
489
|
+
}
|
|
490
|
+
isSelectedRevisedSectionApp(section, app) {
|
|
491
|
+
return !!(app && this.getRevisedSectionSelectedApp(section)?.id === app.id);
|
|
492
|
+
}
|
|
493
|
+
selectRevisedSectionApp(section, app, loadDefaultPage = true) {
|
|
494
|
+
if (!app) {
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
this.revisedSelectedAppBySection[section.id] = app.id;
|
|
498
|
+
this.currentApp = app;
|
|
499
|
+
if (loadDefaultPage) {
|
|
500
|
+
this.goToApplication(app);
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
getRevisedSectionMenus(section) {
|
|
504
|
+
const selectedApp = this.getRevisedSectionSelectedApp(section);
|
|
505
|
+
if (!selectedApp || !selectedApp.children) {
|
|
506
|
+
return [];
|
|
507
|
+
}
|
|
508
|
+
return selectedApp.children;
|
|
509
|
+
}
|
|
510
|
+
getRevisedSectionTabBadgeCount(app) {
|
|
511
|
+
return this.getRevisedOptimizeRecommendationCount(app);
|
|
512
|
+
}
|
|
513
|
+
trackByRevisedSection(index, section) {
|
|
514
|
+
return section?.id || index;
|
|
515
|
+
}
|
|
516
|
+
trackByRevisedGroup(index, group) {
|
|
517
|
+
return group?.id || index;
|
|
518
|
+
}
|
|
519
|
+
trackByRevisedMenu(index, menu) {
|
|
520
|
+
if (!menu) {
|
|
521
|
+
return index;
|
|
522
|
+
}
|
|
523
|
+
if (Array.isArray(menu.sourcePath) && menu.sourcePath.length > 0) {
|
|
524
|
+
return menu.sourcePath.join('>');
|
|
525
|
+
}
|
|
526
|
+
return menu.sourceMenuId || menu.id || index;
|
|
527
|
+
}
|
|
528
|
+
/** Plain-text app name for Optimize tab tooltips (`left-nav-tooltip`, same as collapsed rail). */
|
|
529
|
+
getRevisedOptimizeAppTabTooltip(app) {
|
|
530
|
+
if (!app) {
|
|
531
|
+
return null;
|
|
532
|
+
}
|
|
533
|
+
const label = this.selectedApplication(app);
|
|
534
|
+
const plain = label ? String(label).replace(/<[^>]*>/g, '').replace(/\s+/g, ' ').trim() : '';
|
|
535
|
+
return plain || null;
|
|
536
|
+
}
|
|
537
|
+
isRevisedMenuActive(menu) {
|
|
538
|
+
return this.isMenuRouteActive(menu);
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Nested submenu (legacy + revised): keep mat-expansion-panel open when the current URL matches
|
|
542
|
+
* any descendant leaf, not only when `activePanel` was set from a sidebar click.
|
|
543
|
+
* Still honors user-open state via `menu.panelOpenState` and click-driven `activePanel`.
|
|
544
|
+
*/
|
|
545
|
+
isChildMenuPanelExpanded(menu) {
|
|
546
|
+
if (!menu) {
|
|
547
|
+
return false;
|
|
548
|
+
}
|
|
549
|
+
const children = menu.children;
|
|
550
|
+
const descendantActive = children &&
|
|
551
|
+
children.length > 0 &&
|
|
552
|
+
this.hasActiveRouteInMenus(children);
|
|
553
|
+
if (menu.panelStateTouched) {
|
|
554
|
+
return !!menu.panelOpenState;
|
|
555
|
+
}
|
|
556
|
+
return !!descendantActive || menu.id === this.activePanel || !!menu.panelOpenState;
|
|
557
|
+
}
|
|
558
|
+
/** Highlight styling: active panel or any active descendant. */
|
|
559
|
+
isChildMenuPanelHighlighted(menu) {
|
|
560
|
+
if (!menu) {
|
|
561
|
+
return false;
|
|
562
|
+
}
|
|
563
|
+
const children = menu.children;
|
|
564
|
+
const descendantActive = children &&
|
|
565
|
+
children.length > 0 &&
|
|
566
|
+
this.hasActiveRouteInMenus(children);
|
|
567
|
+
return !!descendantActive || menu.id === this.activePanel;
|
|
568
|
+
}
|
|
569
|
+
onChildMenuPanelHeaderClick(menu) {
|
|
570
|
+
if (!menu) {
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
menu.panelStateTouched = true;
|
|
574
|
+
menu.panelOpenState = !this.isChildMenuPanelExpanded(menu);
|
|
575
|
+
this.cdref.markForCheck();
|
|
576
|
+
}
|
|
577
|
+
onChildMenuPanelOpened(menu) {
|
|
578
|
+
if (!menu) {
|
|
579
|
+
return;
|
|
580
|
+
}
|
|
581
|
+
menu.panelStateTouched = true;
|
|
582
|
+
menu.panelOpenState = true;
|
|
583
|
+
this.cdref.markForCheck();
|
|
584
|
+
}
|
|
585
|
+
onChildMenuPanelClosed(menu) {
|
|
586
|
+
if (!menu) {
|
|
587
|
+
return;
|
|
588
|
+
}
|
|
589
|
+
menu.panelStateTouched = true;
|
|
590
|
+
menu.panelOpenState = false;
|
|
591
|
+
this.cdref.markForCheck();
|
|
592
|
+
}
|
|
593
|
+
getRevisedParentMenuId(menu, fallbackParentId) {
|
|
594
|
+
return menu && menu.ownerAppId ? menu.ownerAppId : fallbackParentId;
|
|
595
|
+
}
|
|
596
|
+
getRevisedParentPanelId(menu) {
|
|
597
|
+
return menu && menu.sourceParentId && menu.sourceParentId !== menu.ownerAppId ? menu.sourceParentId : undefined;
|
|
598
|
+
}
|
|
599
|
+
/** Leaf row in `revisedGroupMenuItemShell`: OPTIMIZE (app-tabs) omits panel id; grouped-menus uses `getRevisedParentPanelId`. */
|
|
600
|
+
getRevisedShellLeafParentPanelId(menu, optimizeParentApp) {
|
|
601
|
+
return optimizeParentApp ? undefined : this.getRevisedParentPanelId(menu);
|
|
602
|
+
}
|
|
603
|
+
shouldShowRevisedIntelligenceGroupTitle(group) {
|
|
604
|
+
if (!group || !group.title) {
|
|
605
|
+
return false;
|
|
606
|
+
}
|
|
607
|
+
if (!group.items || group.items.length !== 1) {
|
|
608
|
+
return true;
|
|
609
|
+
}
|
|
610
|
+
const groupTitle = this.normalizeRevisedLabel(group.title);
|
|
611
|
+
const itemTitle = this.normalizeRevisedLabel(this.selectedApplication(group.items[0]));
|
|
612
|
+
if (!groupTitle || !itemTitle) {
|
|
613
|
+
return true;
|
|
614
|
+
}
|
|
615
|
+
return !(itemTitle === groupTitle || itemTitle.indexOf(groupTitle) > -1 || groupTitle.indexOf(itemTitle) > -1);
|
|
616
|
+
}
|
|
617
|
+
rebuildRevisedNavigationState() {
|
|
618
|
+
this.revisedNavigationState = this.navigation.buildRevisedNavigationState(this.applicationDetails, this.toDisplayApplications, this.toDisplayGlobalSettingsMenu, this.toDisplayLinkMenu);
|
|
619
|
+
this.revisedSectionIconCache = {};
|
|
620
|
+
this.revisedSections = this.revisedNavigationState ? this.revisedNavigationState.sections : [];
|
|
621
|
+
this.revisedSectionState = this.buildRevisedSectionState(this.revisedSections);
|
|
622
|
+
this.revisedGroupExpandedState = this.buildRevisedGroupExpandedState(this.revisedSections);
|
|
623
|
+
this.revisedSelectedAppBySection = this.buildRevisedSelectedAppState(this.revisedSections);
|
|
624
|
+
}
|
|
625
|
+
buildRevisedGroupExpandedState(sections) {
|
|
626
|
+
const nextState = {};
|
|
627
|
+
(sections || []).forEach((section) => {
|
|
628
|
+
if (section.type !== 'grouped-menus' || !section.groups) {
|
|
629
|
+
return;
|
|
630
|
+
}
|
|
631
|
+
section.groups.forEach((group) => {
|
|
632
|
+
const key = section.id + '_' + group.id;
|
|
633
|
+
const openByRoute = this.hasActiveRouteInMenus(group.items || []);
|
|
634
|
+
nextState[key] = Object.prototype.hasOwnProperty.call(this.revisedGroupExpandedState, key)
|
|
635
|
+
? this.revisedGroupExpandedState[key]
|
|
636
|
+
: openByRoute;
|
|
637
|
+
});
|
|
638
|
+
});
|
|
639
|
+
return nextState;
|
|
640
|
+
}
|
|
641
|
+
isRevisedGroupExpanded(sectionId, groupId) {
|
|
642
|
+
const key = sectionId + '_' + groupId;
|
|
643
|
+
const section = this.getRevisedSectionById(sectionId);
|
|
644
|
+
const group = this.getRevisedGroupedSectionGroups(section).find((g) => g.id === groupId);
|
|
645
|
+
const routeInGroup = !!group && this.hasActiveRouteInMenus(group.items || []);
|
|
646
|
+
return routeInGroup || this.revisedGroupExpandedState[key] !== false;
|
|
647
|
+
}
|
|
648
|
+
onRevisedGroupHeaderClick(sectionId, groupId) {
|
|
649
|
+
const key = sectionId + '_' + groupId;
|
|
650
|
+
this.revisedGroupExpandedState[key] = !this.isRevisedGroupExpanded(sectionId, groupId);
|
|
651
|
+
this.cdref.markForCheck();
|
|
652
|
+
}
|
|
653
|
+
onRevisedGroupPanelOpened(sectionId, groupId) {
|
|
654
|
+
const key = sectionId + '_' + groupId;
|
|
655
|
+
this.revisedGroupExpandedState[key] = true;
|
|
656
|
+
this.cdref.markForCheck();
|
|
657
|
+
}
|
|
658
|
+
onRevisedGroupPanelClosed(sectionId, groupId) {
|
|
659
|
+
const key = sectionId + '_' + groupId;
|
|
660
|
+
const section = this.getRevisedSectionById(sectionId);
|
|
661
|
+
const group = this.getRevisedGroupedSectionGroups(section).find((g) => g.id === groupId);
|
|
662
|
+
this.revisedGroupExpandedState[key] = !!group && this.hasActiveRouteInMenus(group.items || []);
|
|
663
|
+
this.cdref.markForCheck();
|
|
664
|
+
}
|
|
665
|
+
buildRevisedSectionState(sections) {
|
|
666
|
+
const nextState = {};
|
|
667
|
+
(sections || []).forEach((section) => {
|
|
668
|
+
const routeInSection = this.sectionContainsActiveRoute(section);
|
|
669
|
+
const prev = this.revisedSectionState && this.revisedSectionState[section.id];
|
|
670
|
+
// Preserve manual opens across navigations; active route also forces expansion.
|
|
671
|
+
nextState[section.id] = prev === true || routeInSection;
|
|
672
|
+
});
|
|
673
|
+
return nextState;
|
|
674
|
+
}
|
|
675
|
+
buildRevisedSelectedAppState(sections) {
|
|
676
|
+
const nextState = {};
|
|
677
|
+
(sections || []).forEach((section) => {
|
|
678
|
+
if (!this.isRevisedAppTabsSection(section) || !section.apps.length) {
|
|
679
|
+
return;
|
|
680
|
+
}
|
|
681
|
+
const previousSelection = this.revisedSelectedAppBySection[section.id];
|
|
682
|
+
const currentApp = this.getCurrentOptimizeApp(section);
|
|
683
|
+
const appsWithActiveRoute = (section.apps || []).filter((app) => app && app.id !== 'ads_amazon_advertising' && this.hasActiveRouteInMenus([app]));
|
|
684
|
+
let selectedApp;
|
|
685
|
+
if (currentApp) {
|
|
686
|
+
selectedApp = currentApp;
|
|
687
|
+
}
|
|
688
|
+
else if (appsWithActiveRoute.length === 1) {
|
|
689
|
+
selectedApp = appsWithActiveRoute[0];
|
|
690
|
+
}
|
|
691
|
+
else if (appsWithActiveRoute.length > 1) {
|
|
692
|
+
const prev = section.apps.find((app) => app.id === previousSelection);
|
|
693
|
+
selectedApp =
|
|
694
|
+
(prev && appsWithActiveRoute.some((a) => a.id === prev.id) ? prev : undefined) ||
|
|
695
|
+
appsWithActiveRoute[0];
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
698
|
+
selectedApp =
|
|
699
|
+
section.apps.find((app) => app.id === previousSelection) ||
|
|
700
|
+
section.apps.find((app) => app.id === section.defaultAppId) ||
|
|
701
|
+
section.apps[0];
|
|
702
|
+
}
|
|
703
|
+
if (selectedApp) {
|
|
704
|
+
nextState[section.id] = selectedApp.id;
|
|
705
|
+
}
|
|
706
|
+
});
|
|
707
|
+
return nextState;
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* Optimize/app-tabs should stay anchored to the current Angular host app.
|
|
711
|
+
* Sponsored Ads is an AngularJS app and should not drive app-tabs selection/expansion here.
|
|
712
|
+
*/
|
|
713
|
+
getCurrentOptimizeApp(section) {
|
|
714
|
+
if (!section?.apps?.length) {
|
|
715
|
+
return undefined;
|
|
716
|
+
}
|
|
717
|
+
const currentAppId = this.applicationDetails?.applicationId || this.currentApp?.id;
|
|
718
|
+
if (!currentAppId || currentAppId === 'ads_amazon_advertising') {
|
|
719
|
+
return undefined;
|
|
720
|
+
}
|
|
721
|
+
return section.apps.find((app) => app?.id === currentAppId);
|
|
722
|
+
}
|
|
723
|
+
logOptimizeDebugState() {
|
|
724
|
+
const optimizeSection = (this.revisedSections || []).find((section) => section?.id === 'optimize');
|
|
725
|
+
if (!optimizeSection) {
|
|
726
|
+
console.log('[sidebar][optimize-debug] no optimize section', {
|
|
727
|
+
route: this.router?.url,
|
|
728
|
+
applicationId: this.applicationDetails?.applicationId,
|
|
729
|
+
});
|
|
730
|
+
return;
|
|
731
|
+
}
|
|
732
|
+
const selectedAppId = this.revisedSelectedAppBySection['optimize'];
|
|
733
|
+
const activeApp = this.findActiveAppForSection(optimizeSection);
|
|
734
|
+
const selectedApp = this.getRevisedSectionSelectedApp(optimizeSection);
|
|
735
|
+
const expanded = this.isRevisedSectionExpanded('optimize');
|
|
736
|
+
const containsActiveRoute = this.sectionContainsActiveRoute(optimizeSection);
|
|
737
|
+
console.log('[sidebar][optimize-debug]', {
|
|
738
|
+
route: this.router?.url,
|
|
739
|
+
applicationId: this.applicationDetails?.applicationId,
|
|
740
|
+
currentAppId: this.currentApp?.id,
|
|
741
|
+
optimizeApps: (optimizeSection.apps || []).map((app) => app?.id),
|
|
742
|
+
selectedAppId,
|
|
743
|
+
selectedAppResolved: selectedApp?.id,
|
|
744
|
+
activeAppId: activeApp?.id,
|
|
745
|
+
containsActiveRoute,
|
|
746
|
+
expanded,
|
|
747
|
+
sectionState: this.revisedSectionState?.['optimize'],
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
collapseAllRevisedSections() {
|
|
751
|
+
Object.keys(this.revisedSectionState || {}).forEach((sectionId) => {
|
|
752
|
+
this.revisedSectionState[sectionId] = false;
|
|
753
|
+
});
|
|
754
|
+
}
|
|
755
|
+
/** When the sidenav opens, expand any revised section that owns the current route (and sync app-tabs selection). */
|
|
756
|
+
expandRevisedSectionsContainingActiveRoute() {
|
|
757
|
+
if (!this.isRevisedNavigationEnabled() || !this.revisedSections?.length) {
|
|
758
|
+
return;
|
|
759
|
+
}
|
|
760
|
+
this.revisedSections.forEach((section) => {
|
|
761
|
+
if (this.sectionContainsActiveRoute(section)) {
|
|
762
|
+
this.revisedSectionState[section.id] = true;
|
|
763
|
+
this.syncSectionSelectionToActiveRoute(section);
|
|
764
|
+
}
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
openOnlyRevisedSection(section) {
|
|
768
|
+
this.revisedSectionState[section.id] = true;
|
|
769
|
+
return this.syncSectionSelectionToActiveRoute(section);
|
|
770
|
+
}
|
|
771
|
+
/** Clears `panelOpenState` on expandable rows so reopening a section does not keep arbitrary panels open. */
|
|
772
|
+
clearRevisedExpandablePanelOpenStateInMenuTree(menus) {
|
|
773
|
+
(menus || []).forEach((menu) => {
|
|
774
|
+
if (menu?.children?.length) {
|
|
775
|
+
menu.panelOpenState = false;
|
|
776
|
+
this.clearRevisedExpandablePanelOpenStateInMenuTree(menu.children);
|
|
777
|
+
}
|
|
778
|
+
});
|
|
779
|
+
}
|
|
780
|
+
clearExpandablePanelOpenStateForRevisedSection(section) {
|
|
781
|
+
if (!section) {
|
|
782
|
+
return;
|
|
783
|
+
}
|
|
784
|
+
if (this.isRevisedAppTabsSection(section)) {
|
|
785
|
+
(section.apps || []).forEach((app) => {
|
|
786
|
+
this.clearRevisedExpandablePanelOpenStateInMenuTree(app.children || []);
|
|
787
|
+
});
|
|
788
|
+
return;
|
|
789
|
+
}
|
|
790
|
+
if (section.type === 'grouped-menus' && section.groups) {
|
|
791
|
+
section.groups.forEach((group) => {
|
|
792
|
+
this.clearRevisedExpandablePanelOpenStateInMenuTree(group.items || []);
|
|
793
|
+
});
|
|
794
|
+
}
|
|
795
|
+
}
|
|
796
|
+
/** Titled group panels: expanded only when a leaf under the group matches the current route (unless user toggled later). */
|
|
797
|
+
resetRevisedGroupExpandedStateForSection(section) {
|
|
798
|
+
if (!section || section.type !== 'grouped-menus' || !section.groups) {
|
|
799
|
+
return;
|
|
800
|
+
}
|
|
801
|
+
section.groups.forEach((group) => {
|
|
802
|
+
const key = section.id + '_' + group.id;
|
|
803
|
+
this.revisedGroupExpandedState[key] = this.hasActiveRouteInMenus(group.items || []);
|
|
804
|
+
});
|
|
805
|
+
}
|
|
806
|
+
getRevisedSectionById(sectionId) {
|
|
807
|
+
return (this.revisedSections || []).find((section) => section.id === sectionId);
|
|
808
|
+
}
|
|
809
|
+
scrollToActiveMenuIfVisible() {
|
|
810
|
+
// Revised layout keeps section headers + Optimize app tabs in the same scroll area as menu rows.
|
|
811
|
+
// `scrollTop = offsetTop` is wrong (offsetParent ≠ scroll container) and jumps the list, hiding that chrome.
|
|
812
|
+
if (this.isRevisedNavigationEnabled()) {
|
|
813
|
+
return;
|
|
814
|
+
}
|
|
815
|
+
this.scrollToActiveMenu();
|
|
816
|
+
}
|
|
817
|
+
syncSectionSelectionToActiveRoute(section) {
|
|
818
|
+
if (!section) {
|
|
819
|
+
return false;
|
|
820
|
+
}
|
|
821
|
+
if (this.isRevisedAppTabsSection(section)) {
|
|
822
|
+
const activeApp = this.findActiveAppForSection(section);
|
|
823
|
+
if (activeApp) {
|
|
824
|
+
this.revisedSelectedAppBySection[section.id] = activeApp.id;
|
|
825
|
+
return true;
|
|
826
|
+
}
|
|
827
|
+
return false;
|
|
828
|
+
}
|
|
829
|
+
return this.sectionContainsActiveRoute(section);
|
|
830
|
+
}
|
|
831
|
+
findActiveAppForSection(section) {
|
|
832
|
+
return this.getCurrentOptimizeApp(section);
|
|
833
|
+
}
|
|
834
|
+
sectionContainsActiveRoute(section) {
|
|
835
|
+
if (!section) {
|
|
836
|
+
return false;
|
|
837
|
+
}
|
|
838
|
+
if (this.isRevisedAppTabsSection(section)) {
|
|
839
|
+
return !!this.getCurrentOptimizeApp(section);
|
|
840
|
+
}
|
|
841
|
+
return this.hasActiveRouteInMenus(this.getRevisedGroupedSectionGroups(section).reduce((items, group) => items.concat(group.items || []), []));
|
|
842
|
+
}
|
|
843
|
+
hasActiveRouteInMenus(menus = []) {
|
|
844
|
+
return menus.some((menu) => {
|
|
845
|
+
if (!menu) {
|
|
846
|
+
return false;
|
|
847
|
+
}
|
|
848
|
+
if (this.isMenuRouteActive(menu)) {
|
|
849
|
+
return true;
|
|
850
|
+
}
|
|
851
|
+
if (menu.children && menu.children.length > 0) {
|
|
852
|
+
return this.hasActiveRouteInMenus(menu.children);
|
|
853
|
+
}
|
|
854
|
+
return false;
|
|
855
|
+
});
|
|
856
|
+
}
|
|
857
|
+
/**
|
|
858
|
+
* Normalizes a path for nav matching. Some shells differ: `router.url` vs `location.pathname` vs hash (`#/…`, `#!/…`).
|
|
859
|
+
*/
|
|
860
|
+
normalizeNavPathSegment(raw) {
|
|
861
|
+
if (!raw) {
|
|
862
|
+
return '';
|
|
863
|
+
}
|
|
864
|
+
let u = raw.split('?')[0].split('#')[0];
|
|
865
|
+
if (u.length > 1 && u.endsWith('/')) {
|
|
866
|
+
u = u.slice(0, -1);
|
|
867
|
+
}
|
|
868
|
+
return u;
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Strip `#!/` / `#/` from `menu.route` so it can match `collectCandidateNavPaths()` (hash → `/segment`).
|
|
872
|
+
* Used only for **exact** (and legacy keyword suffix) checks — no prefix wildcard, to avoid cross-menu false positives.
|
|
873
|
+
*/
|
|
874
|
+
normalizeMenuRouteForPathMatch(route) {
|
|
875
|
+
if (!route || typeof route !== 'string') {
|
|
876
|
+
return null;
|
|
877
|
+
}
|
|
878
|
+
let r = route.trim();
|
|
879
|
+
if (r.indexOf('#!/') === 0) {
|
|
880
|
+
r = r.slice(3);
|
|
881
|
+
}
|
|
882
|
+
else if (r.indexOf('#/') === 0) {
|
|
883
|
+
r = r.slice(2);
|
|
884
|
+
}
|
|
885
|
+
else if (r.indexOf('#') === 0) {
|
|
886
|
+
r = r.slice(1);
|
|
887
|
+
}
|
|
888
|
+
r = r.replace(/^\/+/, '');
|
|
889
|
+
if (!r) {
|
|
890
|
+
return null;
|
|
891
|
+
}
|
|
892
|
+
return '/' + r;
|
|
893
|
+
}
|
|
894
|
+
/** Collect all URL shapes that might represent the current page (fixes Criteo / ancillary when Router URL lags or omits base). */
|
|
895
|
+
collectCandidateNavPaths() {
|
|
896
|
+
const paths = new Set();
|
|
897
|
+
const add = (p) => {
|
|
898
|
+
const n = this.normalizeNavPathSegment(p);
|
|
899
|
+
if (n) {
|
|
900
|
+
paths.add(n);
|
|
901
|
+
}
|
|
902
|
+
};
|
|
903
|
+
add(this.router.url);
|
|
904
|
+
if (typeof window !== 'undefined' && window.location) {
|
|
905
|
+
add(window.location.pathname || '');
|
|
906
|
+
const hash = window.location.hash || '';
|
|
907
|
+
if (hash.indexOf('#/') === 0) {
|
|
908
|
+
add(hash.slice(1));
|
|
909
|
+
}
|
|
910
|
+
else if (hash.indexOf('#!/') === 0) {
|
|
911
|
+
add('/' + hash.slice(3).replace(/^\/+/, ''));
|
|
912
|
+
}
|
|
913
|
+
}
|
|
914
|
+
return Array.from(paths);
|
|
915
|
+
}
|
|
916
|
+
/**
|
|
917
|
+
* Menus whose `link` is a real path (`dsp/…`, `dp/…`, `content/…`, `criteo/…`, `walmart/…`, etc.).
|
|
918
|
+
* For these, never treat bare `menu.route` (e.g. `overview`) as active — it collides across apps (DSP vs SOV).
|
|
919
|
+
*/
|
|
920
|
+
menuUsesPathPrefixedLink(menu) {
|
|
921
|
+
const link = menu.link;
|
|
922
|
+
return typeof link === 'string' && link.indexOf('triangular.') !== 0 && link.indexOf('/') !== -1;
|
|
923
|
+
}
|
|
924
|
+
/** `link` like `criteo/criteo-overview` vs URL `/criteo/criteo-overview` or `.../criteo/criteo-overview` (base href). */
|
|
925
|
+
menuPathMatchesLinkPath(currentRoute, link) {
|
|
926
|
+
if (typeof link !== 'string' || link.indexOf('triangular.') === 0 || link.indexOf('/') === -1) {
|
|
927
|
+
return false;
|
|
928
|
+
}
|
|
929
|
+
let path = link.startsWith('/') ? link : '/' + link.replace(/^\/+/, '');
|
|
930
|
+
if (path.length > 1 && path.endsWith('/')) {
|
|
931
|
+
path = path.slice(0, -1);
|
|
932
|
+
}
|
|
933
|
+
if (currentRoute === path || currentRoute.indexOf(path + '/') === 0) {
|
|
934
|
+
return true;
|
|
935
|
+
}
|
|
936
|
+
const at = currentRoute.lastIndexOf(path);
|
|
937
|
+
if (at >= 0 && at === currentRoute.length - path.length && (at === 0 || currentRoute.charAt(at - 1) === '/')) {
|
|
938
|
+
return true;
|
|
939
|
+
}
|
|
940
|
+
return false;
|
|
941
|
+
}
|
|
942
|
+
/**
|
|
943
|
+
* `child_routes` entries are often host-relative segments (e.g. `walmart-keywords/keyword-report`) while
|
|
944
|
+
* the browser URL is `/walmart/walmart-keywords/keyword-report`.
|
|
945
|
+
*/
|
|
946
|
+
menuChildRouteMatchesPath(currentRoute, childRoute) {
|
|
947
|
+
if (!childRoute || typeof childRoute !== 'string') {
|
|
948
|
+
return false;
|
|
949
|
+
}
|
|
950
|
+
const normalized = childRoute.startsWith('/') ? childRoute : '/' + childRoute.replace(/^\/+/, '');
|
|
951
|
+
if (currentRoute === normalized || currentRoute === childRoute) {
|
|
952
|
+
return true;
|
|
953
|
+
}
|
|
954
|
+
if (currentRoute.length >= normalized.length &&
|
|
955
|
+
currentRoute.endsWith(normalized) &&
|
|
956
|
+
(currentRoute.length === normalized.length || currentRoute.charAt(currentRoute.length - normalized.length - 1) === '/')) {
|
|
957
|
+
return true;
|
|
958
|
+
}
|
|
959
|
+
return false;
|
|
960
|
+
}
|
|
961
|
+
/**
|
|
962
|
+
* Expandable apps use `defaulturl` like `criteo/` — treat any `/criteo` or `/criteo/...` as under that app for active detection.
|
|
963
|
+
* Skips `#!` / `#` values used by legacy Amazon ui-router entries.
|
|
964
|
+
*/
|
|
965
|
+
menuDefaultUrlMatchesPath(currentRoute, menu) {
|
|
966
|
+
const du = menu.defaulturl;
|
|
967
|
+
if (!du || typeof du !== 'string' || du.indexOf('#') >= 0 || du.indexOf('!') >= 0) {
|
|
968
|
+
return false;
|
|
969
|
+
}
|
|
970
|
+
const base = '/' + du.replace(/^\/+/, '').replace(/\/$/, '');
|
|
971
|
+
if (!base || base === '/') {
|
|
972
|
+
return false;
|
|
973
|
+
}
|
|
974
|
+
return currentRoute === base || currentRoute.startsWith(base + '/');
|
|
975
|
+
}
|
|
976
|
+
/** Public so route rules stay in one place (used by revised grouped menus + unified isCheckActiveRoute). */
|
|
977
|
+
isMenuRouteActive(menu) {
|
|
978
|
+
if (!menu) {
|
|
979
|
+
return false;
|
|
980
|
+
}
|
|
981
|
+
const candidates = this.collectCandidateNavPaths();
|
|
982
|
+
const childRoutes = menu?.child_routes || [];
|
|
983
|
+
const pathPrefixedLink = this.menuUsesPathPrefixedLink(menu);
|
|
984
|
+
for (const currentRoute of candidates) {
|
|
985
|
+
/* Path-prefixed ancillary links must match full path (link / defaulturl / child_routes), not `route` alone. */
|
|
986
|
+
if (!pathPrefixedLink && menu.route) {
|
|
987
|
+
const nr = this.normalizeMenuRouteForPathMatch(menu.route);
|
|
988
|
+
if (nr &&
|
|
989
|
+
(currentRoute === nr ||
|
|
990
|
+
currentRoute === nr + '/keyword-report' ||
|
|
991
|
+
currentRoute === nr + '/keyword-suggestions/auto' ||
|
|
992
|
+
currentRoute === nr + '/keyword-suggestions/manual')) {
|
|
993
|
+
return true;
|
|
994
|
+
}
|
|
995
|
+
const legacy = '/' + menu.route;
|
|
996
|
+
if (currentRoute === legacy ||
|
|
997
|
+
currentRoute === legacy + '/keyword-report' ||
|
|
998
|
+
currentRoute === legacy + '/keyword-suggestions/auto' ||
|
|
999
|
+
currentRoute === legacy + '/keyword-suggestions/manual') {
|
|
1000
|
+
return true;
|
|
1001
|
+
}
|
|
1002
|
+
}
|
|
1003
|
+
if (this.menuPathMatchesLinkPath(currentRoute, menu.link)) {
|
|
1004
|
+
return true;
|
|
1005
|
+
}
|
|
1006
|
+
if (this.menuDefaultUrlMatchesPath(currentRoute, menu)) {
|
|
1007
|
+
return true;
|
|
1008
|
+
}
|
|
1009
|
+
if (menu.matchRoutes && menu.matchRoutes.indexOf(currentRoute) > -1) {
|
|
1010
|
+
return true;
|
|
1011
|
+
}
|
|
1012
|
+
if (childRoutes.length > 0 &&
|
|
1013
|
+
childRoutes.some((childRoute) => this.menuChildRouteMatchesPath(currentRoute, childRoute))) {
|
|
1014
|
+
return true;
|
|
1015
|
+
}
|
|
1016
|
+
}
|
|
1017
|
+
return false;
|
|
1018
|
+
}
|
|
1019
|
+
normalizeRevisedLabel(label) {
|
|
1020
|
+
if (!label) {
|
|
1021
|
+
return '';
|
|
1022
|
+
}
|
|
1023
|
+
return label
|
|
1024
|
+
.replace(/<[^>]*>/g, '')
|
|
1025
|
+
.replace(/intentwise\s+/gi, '')
|
|
1026
|
+
.replace(/\s+/g, ' ')
|
|
1027
|
+
.trim()
|
|
1028
|
+
.toLowerCase();
|
|
1029
|
+
}
|
|
1030
|
+
getRevisedOptimizeRecommendationCount(app) {
|
|
1031
|
+
if (!app) {
|
|
1032
|
+
return null;
|
|
1033
|
+
}
|
|
1034
|
+
if (app.id === 'ads_amazon_advertising') {
|
|
1035
|
+
const recommendationMenu = this.findRevisedMenuById(app.children || [], 'ams_ads_recommendations');
|
|
1036
|
+
return recommendationMenu ? this.getMenuCountValue(recommendationMenu, 'activeRecommendation') : null;
|
|
1037
|
+
}
|
|
1038
|
+
return null;
|
|
1039
|
+
}
|
|
1040
|
+
getMenuCountValue(menu, fallbackCountKey) {
|
|
1041
|
+
const countKey = menu && menu.countKey ? menu.countKey : fallbackCountKey;
|
|
1042
|
+
if (!countKey) {
|
|
1043
|
+
return null;
|
|
1044
|
+
}
|
|
1045
|
+
const countValue = this.navigation.fetchKeyValue(countKey);
|
|
1046
|
+
return typeof countValue === 'number' && countValue > 0 ? countValue : null;
|
|
1047
|
+
}
|
|
1048
|
+
findRevisedMenuById(menus, menuId) {
|
|
1049
|
+
if (!menus || !menuId) {
|
|
1050
|
+
return null;
|
|
1051
|
+
}
|
|
1052
|
+
for (const menu of menus) {
|
|
1053
|
+
if (!menu) {
|
|
1054
|
+
continue;
|
|
1055
|
+
}
|
|
1056
|
+
if (menu.id === menuId || menu.sourceMenuId === menuId) {
|
|
1057
|
+
return menu;
|
|
1058
|
+
}
|
|
1059
|
+
const matchedChild = this.findRevisedMenuById(menu.children || [], menuId);
|
|
1060
|
+
if (matchedChild) {
|
|
1061
|
+
return matchedChild;
|
|
1062
|
+
}
|
|
1063
|
+
}
|
|
1064
|
+
return null;
|
|
1065
|
+
}
|
|
324
1066
|
get sideIdInfo() {
|
|
325
1067
|
if (this.applicationDetails && this.applicationDetails.sidebarInfo && this.applicationDetails.sidebarInfo.siteId) {
|
|
326
1068
|
return Number(this.applicationDetails.sidebarInfo.siteId);
|
|
@@ -348,21 +1090,24 @@ export class ApplicationSidebarComponent {
|
|
|
348
1090
|
}
|
|
349
1091
|
function findLink(menuArray) {
|
|
350
1092
|
return menuArray.some(function (menu) {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
return
|
|
363
|
-
|
|
1093
|
+
if (menu.level == "one" && menu.children && menu.children.length > 0) {
|
|
1094
|
+
// If the menu has children, search recursively
|
|
1095
|
+
if (menu.children) {
|
|
1096
|
+
return findLink(menu.children);
|
|
1097
|
+
}
|
|
1098
|
+
// Check if the current menu item has a matching link
|
|
1099
|
+
if (isMenuRouteMatch(menu.route)) {
|
|
1100
|
+
return true;
|
|
1101
|
+
}
|
|
1102
|
+
// If there are child routes, search within them
|
|
1103
|
+
if (menu.child_routes) {
|
|
1104
|
+
return menu.child_routes.some(function (childRoute) {
|
|
1105
|
+
return isMenuRouteMatch(childRoute);
|
|
1106
|
+
});
|
|
1107
|
+
}
|
|
1108
|
+
return false;
|
|
364
1109
|
}
|
|
365
|
-
return
|
|
1110
|
+
return true;
|
|
366
1111
|
});
|
|
367
1112
|
}
|
|
368
1113
|
}
|
|
@@ -530,14 +1275,16 @@ export class ApplicationSidebarComponent {
|
|
|
530
1275
|
// let splitedURL = route.split("/");
|
|
531
1276
|
// pageName = splitedURL.length >0 ? splitedURL[splitedURL.length - 1] : route;
|
|
532
1277
|
// }
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
1278
|
+
if (!menu) {
|
|
1279
|
+
return false;
|
|
1280
|
+
}
|
|
1281
|
+
if (!this.isMenuRouteActive(menu)) {
|
|
1282
|
+
return false;
|
|
1283
|
+
}
|
|
1284
|
+
if (parentMenu != null) {
|
|
1285
|
+
this.activePanel = parentMenu.id;
|
|
1286
|
+
}
|
|
1287
|
+
if (headmenu !== undefined && headmenu !== null) {
|
|
541
1288
|
if (this.prevActiveHeadMenu === undefined) {
|
|
542
1289
|
headmenu.isActive = true;
|
|
543
1290
|
this.prevActiveHeadMenu = headmenu;
|
|
@@ -547,27 +1294,8 @@ export class ApplicationSidebarComponent {
|
|
|
547
1294
|
headmenu.isActive = true;
|
|
548
1295
|
this.prevActiveHeadMenu = headmenu;
|
|
549
1296
|
}
|
|
550
|
-
if (parentMenu != null) {
|
|
551
|
-
this.activePanel = parentMenu.id;
|
|
552
|
-
}
|
|
553
|
-
return true;
|
|
554
|
-
}
|
|
555
|
-
else if (menu && menu.matchRoutes && this.router.url) {
|
|
556
|
-
if (menu.matchRoutes.indexOf(this.router.url.split('?')[0]) > -1) {
|
|
557
|
-
headmenu.isActive = true;
|
|
558
|
-
this.prevActiveHeadMenu = headmenu;
|
|
559
|
-
if (parentMenu != null) {
|
|
560
|
-
this.activePanel = parentMenu.id;
|
|
561
|
-
}
|
|
562
|
-
return true;
|
|
563
|
-
}
|
|
564
|
-
else {
|
|
565
|
-
return false;
|
|
566
|
-
}
|
|
567
|
-
}
|
|
568
|
-
else {
|
|
569
|
-
return false;
|
|
570
1297
|
}
|
|
1298
|
+
return true;
|
|
571
1299
|
}
|
|
572
1300
|
keepMenuExpanded(parentMenuId) {
|
|
573
1301
|
if (parentMenuId.indexOf(this.applicationDetails.applicationId) >= 0) {
|
|
@@ -600,22 +1328,8 @@ export class ApplicationSidebarComponent {
|
|
|
600
1328
|
}
|
|
601
1329
|
goToApplication(item) {
|
|
602
1330
|
window.localStorage.removeItem('selectedAppId');
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
}
|
|
606
|
-
else {
|
|
607
|
-
if (item.children && item.children.length > 0) {
|
|
608
|
-
if (item.children[0].children && item.children[0].children.length > 0) {
|
|
609
|
-
this.goToAppDefaultPage(item.children[0].children[0], item.id);
|
|
610
|
-
}
|
|
611
|
-
else {
|
|
612
|
-
this.goToAppDefaultPage(item.children[0], item.id);
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
else {
|
|
616
|
-
this.goToAppDefaultPage(item, item.id);
|
|
617
|
-
}
|
|
618
|
-
}
|
|
1331
|
+
const targetItem = this.getDefaultNavigationTarget(item);
|
|
1332
|
+
this.goToAppDefaultPage(targetItem, item?.id || targetItem?.id);
|
|
619
1333
|
}
|
|
620
1334
|
goToMenuLink(item) {
|
|
621
1335
|
if (item && item.link) {
|
|
@@ -629,12 +1343,52 @@ export class ApplicationSidebarComponent {
|
|
|
629
1343
|
}
|
|
630
1344
|
}
|
|
631
1345
|
ngOnDestroy() {
|
|
1346
|
+
if (this.myObserver) {
|
|
1347
|
+
this.myObserver.unsubscribe();
|
|
1348
|
+
}
|
|
632
1349
|
if (this.sideNavStatusSubscription) {
|
|
633
1350
|
this.sideNavStatusSubscription.unsubscribe();
|
|
634
1351
|
}
|
|
1352
|
+
if (this.sideNavClosedStartSubscription) {
|
|
1353
|
+
this.sideNavClosedStartSubscription.unsubscribe();
|
|
1354
|
+
}
|
|
635
1355
|
}
|
|
636
1356
|
goToAppDefaultPage(item, appId) {
|
|
637
|
-
|
|
1357
|
+
if (!item) {
|
|
1358
|
+
return;
|
|
1359
|
+
}
|
|
1360
|
+
const sameApp = !!(appId && this.applicationDetails?.applicationId && appId === this.applicationDetails.applicationId);
|
|
1361
|
+
if (item.defaulturl) {
|
|
1362
|
+
this.navigation.getHostOriginAndNavigate(item.defaulturl);
|
|
1363
|
+
return;
|
|
1364
|
+
}
|
|
1365
|
+
if (sameApp && typeof item.route === 'string' && item.route !== '' && item.route.indexOf('#') < 0) {
|
|
1366
|
+
this.router.navigate([item.route]);
|
|
1367
|
+
return;
|
|
1368
|
+
}
|
|
1369
|
+
const hasExplicitHashRoute = typeof item.route === 'string' && item.route.indexOf('#') >= 0;
|
|
1370
|
+
const targetUrl = hasExplicitHashRoute ? item.route : (item.link || item.route);
|
|
1371
|
+
if (!targetUrl) {
|
|
1372
|
+
return;
|
|
1373
|
+
}
|
|
1374
|
+
const hostNavExtras = hasExplicitHashRoute ? { appId } : undefined;
|
|
1375
|
+
this.navigation.getHostOriginAndNavigate(targetUrl, hostNavExtras);
|
|
1376
|
+
}
|
|
1377
|
+
getDefaultNavigationTarget(item) {
|
|
1378
|
+
if (!item) {
|
|
1379
|
+
return item;
|
|
1380
|
+
}
|
|
1381
|
+
if (item.defaulturl || item.route || item.link) {
|
|
1382
|
+
return item;
|
|
1383
|
+
}
|
|
1384
|
+
const children = item.children || [];
|
|
1385
|
+
for (const child of children) {
|
|
1386
|
+
const resolved = this.getDefaultNavigationTarget(child);
|
|
1387
|
+
if (resolved) {
|
|
1388
|
+
return resolved;
|
|
1389
|
+
}
|
|
1390
|
+
}
|
|
1391
|
+
return item;
|
|
638
1392
|
}
|
|
639
1393
|
hideMenuForWL() {
|
|
640
1394
|
let isOrgSetting;
|
|
@@ -653,13 +1407,13 @@ export class ApplicationSidebarComponent {
|
|
|
653
1407
|
return (isOrgSetting != null && (this.applicationDetails.sidebarInfo.siteId > 11 || this.applicationDetails['userInfo'].role === 'IAC_BRAND_READ_ONLY'));
|
|
654
1408
|
}
|
|
655
1409
|
}
|
|
656
|
-
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApplicationSidebarComponent, deps: [{ token: i1.ApplicationSidebarService }, { token: i2.Router }, { token: i3.RestApiService }, { token: i4.CookieService }, { token: i0.ChangeDetectorRef }, { token: i5.TranslationService }, { token: i6.MixpanelService }], target: i0.ɵɵFactoryTarget.Component });
|
|
657
|
-
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApplicationSidebarComponent, selector: "lnc-navigation-sidebar", inputs: { applicationDetails: "applicationDetails", sidenav: "sidenav" }, viewQueries: [{ propertyName: "list", first: true, predicate: ScrollableDirective, descendants: true }, { propertyName: "navMenusComponent", first: true, predicate: ["navMenusComponent"], descendants: true }, { propertyName: "listItems", predicate: OffsetTopDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"menu.id == activePanel\"\n [ngClass]=\"{'activePanel': menu.id == activePanel , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': menu.panelOpenState === true, 'header-border-none': menu.panelOpenState === false }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!menu.panelOpenState\">keyboard_arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"menu.panelOpenState\">keyboard_arrow_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;text-transform:uppercase}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom:1px solid gainsboro;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 10px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.mat-expansion-panel-header:hover{background-color:#fafafa!important}.mat-expansion-panel-header:hover .main-chevron-icon,.mat-expansion-panel-header:hover .sub-chevron-icon{color:#f3aaa2}.header-border{border-top:1px solid gainsboro;border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#202b37;font-size:13px;font-family:Source Sans Pro,sans-serif;text-transform:uppercase;font-weight:600;letter-spacing:1.67px;line-height:38px;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;font-weight:500!important;font-size:13.1px;font-family:roboto,sans-serif!important;color:#202b37;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;font-family:Roboto;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item:hover,.mat-list-base .mat-list-option:hover{background-color:#fdeeec;border-right:3px solid #ff273e}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:20px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px}.portal-global-setting-menu{border-top:none!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{border-radius:8px;border:1px solid #E5E7E8;padding-left:12px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 0 12px 12px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:400;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:24px;margin-right:8px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}\n", ""], dependencies: [{ kind: "component", type: i7.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i7.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: i8.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i8.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i8.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i9.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i9.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i10.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i10.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i10.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i10.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i11.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i12.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i13.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i14.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i14.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i14.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i15.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i15.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i15.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i16.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i17.NavMenusComponent, selector: "lnc-nav-menus", inputs: ["item", "applicationId", "parentMenuId", "parentPanelId", "isActiveItem"], outputs: ["menuClicked"] }, { kind: "directive", type: i18.ScrollableDirective, selector: "[appScrollable]" }, { kind: "directive", type: i18.OffsetTopDirective, selector: "[appOffsetTop]", inputs: ["isActiveItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1410
|
+
/** @nocollapse */ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApplicationSidebarComponent, deps: [{ token: i1.ApplicationSidebarService }, { token: i2.Router }, { token: i3.RestApiService }, { token: i4.CookieService }, { token: i0.ChangeDetectorRef }, { token: i5.TranslationService }, { token: i6.MixpanelService }, { token: i7.DomSanitizer }], target: i0.ɵɵFactoryTarget.Component });
|
|
1411
|
+
/** @nocollapse */ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ApplicationSidebarComponent, selector: "lnc-navigation-sidebar", inputs: { applicationDetails: "applicationDetails", sidenav: "sidenav" }, viewQueries: [{ propertyName: "list", first: true, predicate: ScrollableDirective, descendants: true }, { propertyName: "navMenusComponent", first: true, predicate: ["navMenusComponent"], descendants: true }, { propertyName: "listItems", predicate: OffsetTopDirective, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded, 'application-sidebar--revised-nav': isRevisedNavigationEnabled()}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"revised-section-app-logo portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp && isLegacyNavigationEnabled()\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <ng-container *ngIf=\"isRevisedNavigationEnabled(); else legacyNavigationTemplate\">\n <!--\n Revised nav maps to sidebar layout JSON (`sections[]`):\n - type `app-tabs` \u2192 Optimize: tab strip + `revisedGroupMenuItemShell` per menu row (same expand/leaf/active pattern as INTELLIGENCE).\n - type `grouped-menus` \u2192 `groups[]`: each group uses `items[]` of `{ menuId, title? }` (ids from `navmenu1`).\n Leaf vs expandable comes from nav data. Single- and multi-item groups share `revisedGroupMenuItemShell` (same layout as Product 360 / Foundation). Untitled flat groups still use `revisedGroupedMenuRows` + inner mat-list for deep nesting.\n Add more sections in JSON \u2014 they render here in order. Bottom sticky block is unchanged below.\n -->\n <!-- SVG chevrons (not mat-icon ligatures) so expand arrows work even when Material Icons font fails to load -->\n <ng-template #revisedChevronSvg let-expanded=\"expanded\">\n <svg *ngIf=\"!expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n <svg *ngIf=\"expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"/>\n </svg>\n </ng-template>\n\n <ng-template #revisedMatPanelChevrons let-expanded=\"expanded\" let-iconClass=\"iconClass\">\n <mat-panel-description class=\"children-description revised-nav-expansion-chevron\" *ngIf=\"navExpanded\">\n <span [ngClass]=\"iconClass || 'sub-chevron-icon revised-nav-chevron'\" class=\"revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: expanded }\"></ng-container>\n </span>\n </mat-panel-description>\n </ng-template>\n\n <!-- One resolved menu: grouped-menus (Foundation / INTELLIGENCE) or app-tabs OPTIMIZE when `optimizeParentApp` is set. No inner mat-list. -->\n <ng-template #revisedGroupMenuItemShell let-menu=\"menu\" let-optimizeParentApp=\"optimizeParentApp\">\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white revised-group__single-expandable\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\" (click)=\"onChildMenuPanelHeaderClick(menu)\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group__content\">\n <mat-nav-list class=\"sub-child-menu\">\n <lnc-nav-menus *ngFor=\"let childMenu of menu.children\" appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(childMenu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(childMenu, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </div>\n </mat-expansion-panel>\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group__single-link\">\n <lnc-nav-menus appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedShellLeafParentPanelId(menu, optimizeParentApp)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n\n <!-- Grouped-menus rows: leaf | mat-expansion (depth 0) | nested mat-expansion (depth 1). Max 2 expansion levels here; deeper leaves use lnc-nav-menus. -->\n <ng-template #revisedGroupedMenuRows let-group=\"group\">\n <ng-container *ngFor=\"let menu of group.items\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: menu, nestingDepth: 0 }\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #revisedGroupedMenuEntry let-menu=\"menu\" let-nestingDepth=\"nestingDepth\">\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group-menu-leaf\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedParentPanelId(menu)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white\"\n [class.revised-group-menu-panel--nested]=\"nestingDepth > 0\"\n [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header (click)=\"onChildMenuPanelHeaderClick(menu)\" [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu) }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group-menu-children\">\n <ng-container *ngFor=\"let child of menu.children\">\n <ng-container *ngIf=\"child.children?.length && (nestingDepth ?? 0) < 2\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: child, nestingDepth: (nestingDepth ?? 0) + 1 }\"></ng-container>\n </ng-container>\n <mat-nav-list *ngIf=\"!child.children?.length || (nestingDepth ?? 0) >= 2\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(child)\" [item]=\"child\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(child, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-container>\n </div>\n </mat-expansion-panel>\n </ng-template>\n\n <!-- Same section class as legacy so .portal-sidnav-menu .mat-expansion-panel .mat-mdc-list a[mat-list-item].active applies -->\n <div class=\"revised-nav\" translate=\"no\">\n <div class=\"revised-section mat-expansion-panel\" *ngFor=\"let section of revisedSections; trackBy: trackByRevisedSection\" [attr.id]=\"section.id + 'menu'\" [attr.data-section-type]=\"section.type\"\n [ngClass]=\"{'active': isRevisedSectionActive(section)}\">\n <button class=\"revised-section__header main-expansion-panel-header\" type=\"button\" (click)=\"onRevisedSectionHeaderClick(section.id)\"\n [matTooltip]=\"navExpanded ? null : section.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <span class=\"revised-section__header-main\">\n <span class=\"revised-section__header-icon-box\">\n <span class=\"revised-section__header-icon icon side-menu-icon side-menu-icon-color\" [innerHTML]=\"getRevisedSectionIcon(section)\"></span>\n <span class=\"revised-section__collapsed-active-dot\" *ngIf=\"!navExpanded && isRevisedSectionActive(section)\" aria-hidden=\"true\"></span>\n </span>\n <span class=\"revised-section__title sidemenu-heading applicationMenu\" *ngIf=\"navExpanded\">{{ section.title }}</span>\n </span>\n <span class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <span class=\"main-chevron-icon revised-nav-chevron revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: isRevisedSectionExpanded(section.id) }\"></ng-container>\n </span>\n </span>\n </button>\n <div *ngIf=\"navExpanded && isRevisedSectionExpanded(section.id)\"\n class=\"revised-section__content revised-section__content--visible padding-0px\"\n [ngClass]=\"{\n 'revised-section__content--grouped': section.type === 'grouped-menus'\n }\"\n [attr.id]=\"section.id\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- JSON: { type: \"app-tabs\", appIds, defaultAppId } -->\n <ng-container *ngSwitchCase=\"'app-tabs'\">\n <div class=\"revised-optimize-tabs\" *ngIf=\"getRevisedSectionApps(section).length > 0\">\n <button type=\"button\" class=\"revised-optimize-tab\" *ngFor=\"let app of getRevisedSectionApps(section); trackBy: trackByRevisedMenu\"\n [ngClass]=\"{'active': isSelectedRevisedSectionApp(section, app)}\"\n [matTooltip]=\"getRevisedOptimizeAppTabTooltip(app)\" matTooltipPosition=\"below\"\n [matTooltipClass]=\"['left-nav-tooltip', 'revised-optimize-app-tab-tooltip']\"\n (click)=\"selectRevisedSectionApp(section, app)\">\n <span class=\"revised-optimize-tab__badge\" *ngIf=\"getRevisedSectionTabBadgeCount(app) !== null\">\n {{ getRevisedSectionTabBadgeCount(app) }}\n </span>\n <span class=\"revised-optimize-tab__icon\">\n <img class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(app.icon || 'default-icon.svg')\" [alt]=\"selectedApplication(app)\" />\n </span>\n </button>\n </div>\n <div class=\"revised-optimize-menus\" *ngIf=\"getRevisedSectionSelectedApp(section) as selectedApp\">\n <div class=\"revised-optimize-app-title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(selectedApp)\"></div>\n <div class=\"revised-group__multi-stack revised-optimize-menu-stack\" [attr.id]=\"section.id + '_' + selectedApp.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInSection(section) }\">\n <ng-container *ngFor=\"let menu of getRevisedSectionMenus(section); trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu, optimizeParentApp: selectedApp }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- JSON: { type: \"grouped-menus\", groups: [ ... ] } -->\n <ng-container *ngSwitchCase=\"'grouped-menus'\">\n <ng-container *ngFor=\"let group of getRevisedGroupedSectionGroups(section); trackBy: trackByRevisedGroup\">\n\n <div *ngIf=\"isRevisedUntitledGroup(group)\" class=\"revised-group revised-group--flat\">\n <mat-list class=\"padding-0px revised-group__list\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuRows; context: { group: group }\"></ng-container>\n </mat-list>\n </div>\n\n <div *ngIf=\"isRevisedSingleItemGroup(group)\" class=\"revised-group revised-group--single\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"isRevisedMultiItemGroup(group)\" class=\"revised-group revised-group--multi\">\n <mat-expansion-panel class=\"div-background-color-white revised-group__multi-panel\"\n [expanded]=\"isRevisedGroupExpanded(section.id, group.id)\"\n hideToggle=\"true\"\n (opened)=\"onRevisedGroupPanelOpened(section.id, group.id)\"\n (closed)=\"onRevisedGroupPanelClosed(section.id, group.id)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\"\n [matTooltip]=\"navExpanded ? null : group.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" *ngIf=\"navExpanded\">{{ group.title }}</span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isRevisedGroupExpanded(section.id, group.id), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <!-- Per-item DOM matches revised-group--single (no inner mat-list) so global sidebar theme does not apply muted .mat-list .applicationSubmenus to Commerce-style rows. -->\n <div class=\"revised-group__panel-body\" *ngIf=\"navExpanded\">\n <div class=\"revised-group__multi-stack\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </mat-expansion-panel>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #legacyNavigationTemplate>\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!isChildMenuPanelExpanded(menu)\">arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"isChildMenuPanelExpanded(menu)\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </ng-template>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;gap: 5px;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title style=\"gap: 5px;\">\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.revised-section__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;cursor:pointer;text-align:left;overflow:hidden;height:40px;padding:0 5px}.revised-section__header .revised-chevron-icon-wrap{position:absolute;right:14px!important}.revised-section__header-main{display:inline-flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.revised-section__header-icon-box{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon{width:13px;height:13px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon ::ng-deep svg{display:block}.revised-nav{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}.revised-nav-chevron{flex-shrink:0}.revised-section__title{line-height:38px;white-space:nowrap;overflow:hidden;opacity:1;max-width:220px;transition:opacity 80ms ease,max-width 80ms ease}.revised-section__icon{color:#41586b}.revised-section__chevron{font-size:20px;width:20px;height:20px;line-height:20px;font-family:Material Icons!important;font-weight:400;font-style:normal;display:inline-flex;align-items:center;justify-content:center;text-transform:none;letter-spacing:normal}.revised-section__content{max-height:0;opacity:0;overflow:hidden;padding-bottom:0;visibility:hidden;transition:max-height .1s ease,opacity 80ms ease,padding-bottom .1s ease,visibility 0s linear .1s}.revised-section__content--visible{padding:0 8px 0 28px;max-height:1400px!important;opacity:1!important;visibility:visible!important;overflow:visible!important;transition:max-height .12s ease,opacity .1s ease,padding-bottom .12s ease,visibility 0s linear 0s}.revised-section__content--visible.revised-section__content--grouped{padding-left:32px}:host ::ng-deep .revised-section .mat-expansion-panel-content{padding-left:12px}.revised-group{margin-bottom:4px}.revised-group__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px;cursor:pointer;text-align:left;font:inherit;color:inherit}.revised-group__title{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.revised-group__chevron{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px}.revised-group__list{padding-left:4px!important}.revised-group__multi-panel{box-shadow:none!important;border-radius:0!important;background:transparent!important}.revised-group__multi-panel .mat-expansion-panel-header.revised-group__header--as-panel{padding:8px 10px 6px 12px!important}.revised-group__panel-body{padding-left:0}.revised-group-menu-panel--nested .mat-expansion-panel-header{padding-left:8px;min-height:40px}.revised-group-menu-leaf{padding:0}.revised-group--single .revised-group__header--as-panel{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--single .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--single .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px}.revised-group--single .revised-group__single-link{padding:0;min-height:0}.revised-group--single .revised-group__single-link .mat-mdc-list-item,.revised-group--single .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__list .mat-mdc-list-item,.revised-group--multi .revised-group__list a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable .mat-expansion-panel-header,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px 12px!important}.revised-group--multi .revised-group__multi-stack .revised-group__single-link,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link{padding:0;min-height:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-link .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-section mat-expansion-panel-header.mat-expansion-panel-header,.revised-section .mat-expansion-panel-header{align-items:center!important}.revised-section mat-panel-title,.revised-section .mat-expansion-panel-header-title{flex:1 1 auto!important;min-width:0}.revised-section mat-panel-title .menu-heading,.revised-section .mat-expansion-panel-header-title .menu-heading{font-size:15.5px}.revised-section mat-panel-description.children-description,.revised-section .mat-expansion-panel-header-description.children-description{margin-left:auto!important;margin-right:0!important;flex:0 0 auto!important;display:flex!important;align-items:center;justify-content:flex-end;padding-right:10px}.revised-section .sub-chevron-icon.revised-chevron-icon-wrap,.revised-section span.sub-chevron-icon{position:static!important;left:auto!important;top:auto!important;line-height:0;width:auto!important;min-width:28px;height:auto!important;color:#41586b}.revised-section .revised-group__chevron{color:#41586b}.revised-section .revised-chevron-icon-wrap{display:inline-flex;align-items:center;justify-content:center;overflow:visible;color:#41586b;position:absolute;right:5px}.revised-section .revised-chevron-svg{display:block;width:22px;height:22px;flex-shrink:0;pointer-events:none}.navmenu-expanded .revised-section{width:100%;margin-bottom:0;display:flex;flex-direction:column;align-items:center}.navmenu-expanded .revised-section__header{width:auto;max-width:100%;min-width:0;flex:0 0 auto;min-height:56px;padding:0 8px;justify-content:center;box-sizing:border-box}.navmenu-expanded .revised-section__header-main{width:auto;max-width:100%;justify-content:center;gap:0}.navmenu-expanded .revised-section__title,.navmenu-expanded .revised-section__icon{opacity:0;pointer-events:none}.navmenu-expanded .revised-section__title{max-width:0}.navmenu-expanded .revised-section.active .revised-section__header-icon-box{background:#ebecef;border-radius:10px;padding:8px;box-sizing:border-box}.navmenu-expanded .revised-section__header-icon{width:24px;height:24px}.navmenu-expanded .revised-section__header-icon ::ng-deep svg{width:20px;height:20px}.navmenu-expanded .revised-section__collapsed-active-dot{position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background-color:#ff273e;box-shadow:0 0 0 2px #ebecef;pointer-events:none}.navmenu-expanded .revised-section__content:not(.revised-section__content--visible){max-height:0!important;opacity:0!important;padding-bottom:0!important;visibility:hidden!important}.revised-optimize-tabs{display:flex;gap:10px;padding:6px 0 12px;align-items:center;flex-wrap:nowrap;justify-content:center}.revised-optimize-tab{width:40px;min-width:40px;height:40px;border-radius:8px;border:2px solid #e5e7e8;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;padding:0;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.revised-optimize-tab.active{background:#eef2ff;border-color:#4573d2}.revised-optimize-tab:hover{background:#eef2ff}.revised-optimize-tab img{margin-right:0!important;width:24px!important;height:24px!important;object-fit:contain}.revised-optimize-tab__icon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px}.revised-optimize-tab__badge{position:absolute;top:-6px;left:-6px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#ff4d4f;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;line-height:1;box-shadow:0 0 0 3px #fff}.revised-section-group{margin-bottom:12px;padding-left:45px}.revised-section-group__title{padding:4px 0 2px}.revised-optimize-app-title{color:#202b37;font-size:15px;font-weight:700!important;line-height:36px;text-transform:capitalize}::ng-deep .mat-mdc-tooltip-panel-below mat-tooltip-component .mdc-tooltip.revised-optimize-app-tab-tooltip{position:relative;inset-inline-start:12px}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3{color:#202b37!important}:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .main-chevron-icon,:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .sub-chevron-icon{color:#41586b!important}:host ::ng-deep .revised-section .mat-mdc-list-item,:host ::ng-deep .revised-section a[mat-list-item]{border-radius:8px;margin:4px 0;min-height:40px;padding-left:0;padding-right:0}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) rgba(255,255,255,.65)}.portal-sidnav-menu::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}.portal-sidnav-menu::-webkit-scrollbar-corner{display:none;height:0;width:0}.portal-sidnav-menu::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;font-size:14px}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel.revised-section:not(:last-child){border-bottom:1px solid #E5E7E8;padding-bottom:5px}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 0 0 25px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}::ng-deep .mdc-list-item:hover:before,::ng-deep .mdc-list-item:focus:before,::ng-deep .mdc-list-item.mdc-list-item--selected:before,::ng-deep .mdc-list-item.mdc-list-item--activated:before,::ng-deep .mdc-list-item__ripple:before{background-color:transparent!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.header-border{border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#1e1f21;font-size:16px;font-weight:600;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;color:#1e1f21!important;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.revised-section-app-logo{padding:0 10px}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content{padding-left:20px}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-expansion-panel-body .mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body a.mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body .mdc-list-item__content h3.sidemenu-text{font-size:15.25px!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px 0 23px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content{padding:0 8px 0 20px!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:0 12px!important;min-height:40px!important;height:auto!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#202b37!important;font-size:15.5px!important;font-weight:400!important;line-height:1.25!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important;text-decoration:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3.sidemenu-text{color:#202b37!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px;flex-grow:1}.portal-global-setting-menu{border-top:1px solid #E5E7E8!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{padding-left:5px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 5px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:700;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:18px;height:18px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}::ng-deep body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav{border-right:none!important;overflow:hidden!important;width:300px;min-width:300px;max-width:300px;background-color:#fdfdfd!important;padding-top:11px;padding-right:0!important;padding-left:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .portal-sidnav-menu{padding:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .mat-toolbar{margin-bottom:0!important}\n", ""], dependencies: [{ kind: "component", type: i8.MatToolbar, selector: "mat-toolbar", inputs: ["color"], exportAs: ["matToolbar"] }, { kind: "directive", type: i8.MatToolbarRow, selector: "mat-toolbar-row", exportAs: ["matToolbarRow"] }, { kind: "component", type: i9.MatMenu, selector: "mat-menu", exportAs: ["matMenu"] }, { kind: "component", type: i9.MatMenuItem, selector: "[mat-menu-item]", inputs: ["disabled", "disableRipple", "role"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i9.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", exportAs: ["matMenuTrigger"] }, { kind: "component", type: i10.MatList, selector: "mat-list", exportAs: ["matList"] }, { kind: "component", type: i10.MatNavList, selector: "mat-nav-list", exportAs: ["matNavList"] }, { kind: "component", type: i11.MatExpansionPanel, selector: "mat-expansion-panel", inputs: ["disabled", "expanded", "hideToggle", "togglePosition"], outputs: ["opened", "closed", "expandedChange", "afterExpand", "afterCollapse"], exportAs: ["matExpansionPanel"] }, { kind: "component", type: i11.MatExpansionPanelHeader, selector: "mat-expansion-panel-header", inputs: ["tabIndex", "expandedHeight", "collapsedHeight"] }, { kind: "directive", type: i11.MatExpansionPanelTitle, selector: "mat-panel-title" }, { kind: "directive", type: i11.MatExpansionPanelDescription, selector: "mat-panel-description" }, { kind: "component", type: i12.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i13.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }, { kind: "directive", type: i14.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: i15.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i15.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i15.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i15.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i15.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i15.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i16.DefaultLayoutDirective, selector: " [fxLayout], [fxLayout.xs], [fxLayout.sm], [fxLayout.md], [fxLayout.lg], [fxLayout.xl], [fxLayout.lt-sm], [fxLayout.lt-md], [fxLayout.lt-lg], [fxLayout.lt-xl], [fxLayout.gt-xs], [fxLayout.gt-sm], [fxLayout.gt-md], [fxLayout.gt-lg]", inputs: ["fxLayout", "fxLayout.xs", "fxLayout.sm", "fxLayout.md", "fxLayout.lg", "fxLayout.xl", "fxLayout.lt-sm", "fxLayout.lt-md", "fxLayout.lt-lg", "fxLayout.lt-xl", "fxLayout.gt-xs", "fxLayout.gt-sm", "fxLayout.gt-md", "fxLayout.gt-lg"] }, { kind: "directive", type: i16.FlexFillDirective, selector: "[fxFill], [fxFlexFill]" }, { kind: "directive", type: i16.DefaultFlexDirective, selector: " [fxFlex], [fxFlex.xs], [fxFlex.sm], [fxFlex.md], [fxFlex.lg], [fxFlex.xl], [fxFlex.lt-sm], [fxFlex.lt-md], [fxFlex.lt-lg], [fxFlex.lt-xl], [fxFlex.gt-xs], [fxFlex.gt-sm], [fxFlex.gt-md], [fxFlex.gt-lg]", inputs: ["fxFlex", "fxFlex.xs", "fxFlex.sm", "fxFlex.md", "fxFlex.lg", "fxFlex.xl", "fxFlex.lt-sm", "fxFlex.lt-md", "fxFlex.lt-lg", "fxFlex.lt-xl", "fxFlex.gt-xs", "fxFlex.gt-sm", "fxFlex.gt-md", "fxFlex.gt-lg"] }, { kind: "directive", type: i17.DefaultClassDirective, selector: " [ngClass], [ngClass.xs], [ngClass.sm], [ngClass.md], [ngClass.lg], [ngClass.xl], [ngClass.lt-sm], [ngClass.lt-md], [ngClass.lt-lg], [ngClass.lt-xl], [ngClass.gt-xs], [ngClass.gt-sm], [ngClass.gt-md], [ngClass.gt-lg]", inputs: ["ngClass", "ngClass.xs", "ngClass.sm", "ngClass.md", "ngClass.lg", "ngClass.xl", "ngClass.lt-sm", "ngClass.lt-md", "ngClass.lt-lg", "ngClass.lt-xl", "ngClass.gt-xs", "ngClass.gt-sm", "ngClass.gt-md", "ngClass.gt-lg"] }, { kind: "component", type: i18.NavMenusComponent, selector: "lnc-nav-menus", inputs: ["item", "applicationId", "parentMenuId", "parentPanelId", "isActiveItem"], outputs: ["menuClicked"] }, { kind: "directive", type: i19.ScrollableDirective, selector: "[appScrollable]" }, { kind: "directive", type: i19.OffsetTopDirective, selector: "[appOffsetTop]", inputs: ["isActiveItem"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
658
1412
|
}
|
|
659
1413
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ApplicationSidebarComponent, decorators: [{
|
|
660
1414
|
type: Component,
|
|
661
|
-
args: [{ selector: 'lnc-navigation-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"menu.id == activePanel\"\n [ngClass]=\"{'activePanel': menu.id == activePanel , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': menu.panelOpenState === true, 'header-border-none': menu.panelOpenState === false }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!menu.panelOpenState\">keyboard_arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"menu.panelOpenState\">keyboard_arrow_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->", styles: ["@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;text-transform:uppercase}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom:1px solid gainsboro;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 10px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.mat-expansion-panel-header:hover{background-color:#fafafa!important}.mat-expansion-panel-header:hover .main-chevron-icon,.mat-expansion-panel-header:hover .sub-chevron-icon{color:#f3aaa2}.header-border{border-top:1px solid gainsboro;border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#202b37;font-size:13px;font-family:Source Sans Pro,sans-serif;text-transform:uppercase;font-weight:600;letter-spacing:1.67px;line-height:38px;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;font-weight:500!important;font-size:13.1px;font-family:roboto,sans-serif!important;color:#202b37;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;font-family:Roboto;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item:hover,.mat-list-base .mat-list-option:hover{background-color:#fdeeec;border-right:3px solid #ff273e}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:20px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px}.portal-global-setting-menu{border-top:none!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{border-radius:8px;border:1px solid #E5E7E8;padding-left:12px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 0 12px 12px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:400;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:24px;margin-right:8px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}\n"] }]
|
|
662
|
-
}], ctorParameters: function () { return [{ type: i1.ApplicationSidebarService }, { type: i2.Router }, { type: i3.RestApiService }, { type: i4.CookieService }, { type: i0.ChangeDetectorRef }, { type: i5.TranslationService }, { type: i6.MixpanelService }]; }, propDecorators: { applicationDetails: [{
|
|
1415
|
+
args: [{ selector: 'lnc-navigation-sidebar', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div id=\"loader_sov\">\n <div id=\"loading_div\" *ngIf=\"applicationDetails?.sidebarInfo\">\n <div>\n <div id=\"loader\" *ngIf=\"sideIdInfo !== 1\"\n class=\"site_{{sideIdInfo}}\">\n <img src=\"{{applicationDetails?.sidebarInfo?.logo}}\">\n </div>\n <div id=\"loader_img\" *ngIf=\"sideIdInfo == 1\">\n <img src=\"/assets/images/happy_eyes_closed_small.svg\">\n </div>\n <mat-progress-bar class=\"loader_progress-bar-position\" mode=\"indeterminate\"></mat-progress-bar>\n </div>\n </div>\n</div>\n\n<div fxLayout=\"column\" fxFlexFill *ngIf=\"errorMsg.length == 0 else errorBlock\" translate=\"no\" id=\"angular-16-version\" [ngClass]=\"{'navmenu-expanded' : !navExpanded, 'application-sidebar--revised-nav': isRevisedNavigationEnabled()}\">\n <mat-toolbar class=\"portal-side-menu-top-toolbar\">\n <mat-toolbar-row fxLayout=\"row\">\n <div class=\"revised-section-app-logo portal-forget-heading-card\">\n <div class=\"sidemenu-logo-holder\">\n <span *ngIf=\"sideIdInfo !== 1\">\n <img [src]=\"applicationDetails?.sidebarInfo?.favicon\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension\" />\n <img [src]=\"applicationDetails?.sidebarInfo?.logo\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" class=\"logo-dimension\" />\n </span>\n <span *ngIf=\"sideIdInfo == 1\">\n <img src=\"assets/logos/intentwiselogo.svg\" style=\"width: 40px !important;display: flex !important;\" *ngIf=\"!navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"favicon-dimension intentwise-favicon\">\n <img src=\"assets/logos/Intentwise.svg\" style=\"display: flex !important;\" *ngIf=\"navExpanded\" [alt]=\"applicationDetails?.sidebarInfo?.firstName\" class=\"logo-dimension intentwise-logo\">\n </span>\n </div>\n </div>\n </mat-toolbar-row>\n </mat-toolbar>\n <!-- <div class=\"sidebar-collapse-icon\" *ngIf=\"isAdminRole\">\n <button mat-menu-item class=\"sidemenu-icon-top\" (click)=\"allMenuCollapse()\">\n <mat-icon *ngIf=\"sidenav && sidenav.opened\">keyboard_arrow_up</mat-icon>\n </button>\n </div> -->\n <div *ngIf=\"sidenav && sidenav.opened && !inContextInsightsWLApp && isLegacyNavigationEnabled()\" class=\"app-menu-container\">\n <button class=\"app-menu-button selected-app-button\" *ngIf=\"toDisplayApplications && toDisplayApplications.length == 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n </button>\n <button class=\"app-menu-button selected-app-button\" [mat-menu-trigger-for]=\"appMenu\" *ngIf=\"toDisplayApplications && toDisplayApplications.length > 1\">\n <span class=\"app-name selected-app-container\">\n <!-- <mat-icon *ngIf=\"currentApp?.name\" class=\"sideNavIcon {{currentApp?.name.split(' ').join('')}}\"></mat-icon> -->\n <img *ngIf=\"currentApp?.name\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(currentApp.icon || 'default-icon.svg')\"/>\n <label style=\"margin-left: -4px;\" [innerHTML]=\"selectedApplication(currentApp)\"></label>\n <span *ngIf=\"currentApp?.badge\" class=\"badge-text sov-beta-position\">{{currentApp.badge}}</span>\n </span>\n <span class=\"dropdown-icon\"></span>\n </button>\n <mat-menu #appMenu=\"matMenu\" class=\"app-menu\" [backdropClass]=\"'all-module-menus'\">\n <ng-container *ngFor=\"let headmenu of toDisplayApplications\">\n <button class=\"menu-option\" mat-menu-item (click)=\"goToApplication(headmenu)\" [ngClass]=\"{'active': headmenu.panelOpenState}\" class=\"{{headmenu.id}}_icon\" *ngIf=\"headmenu.name != 'Account Management'\" translate=\"no\">\n <!-- <mat-icon class=\"sideNavIcon children-icon\" [ngClass]=\"headmenu.name.split(' ').join('')\"></mat-icon> -->\n <img class=\"icon children-icon side-menu-icon\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </button>\n </ng-container>\n </mat-menu>\n </div>\n <div class=\"portal-sidnav-menu\" fxFlex=\"nogrow noshrink\" appScrollable [ngClass]=\"{'whiteLabelSidenav' : inContextInsightsWLApp}\">\n <ng-container *ngIf=\"isRevisedNavigationEnabled(); else legacyNavigationTemplate\">\n <!--\n Revised nav maps to sidebar layout JSON (`sections[]`):\n - type `app-tabs` \u2192 Optimize: tab strip + `revisedGroupMenuItemShell` per menu row (same expand/leaf/active pattern as INTELLIGENCE).\n - type `grouped-menus` \u2192 `groups[]`: each group uses `items[]` of `{ menuId, title? }` (ids from `navmenu1`).\n Leaf vs expandable comes from nav data. Single- and multi-item groups share `revisedGroupMenuItemShell` (same layout as Product 360 / Foundation). Untitled flat groups still use `revisedGroupedMenuRows` + inner mat-list for deep nesting.\n Add more sections in JSON \u2014 they render here in order. Bottom sticky block is unchanged below.\n -->\n <!-- SVG chevrons (not mat-icon ligatures) so expand arrows work even when Material Icons font fails to load -->\n <ng-template #revisedChevronSvg let-expanded=\"expanded\">\n <svg *ngIf=\"!expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/>\n </svg>\n <svg *ngIf=\"expanded\" class=\"revised-chevron-svg\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <path fill=\"currentColor\" d=\"M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z\"/>\n </svg>\n </ng-template>\n\n <ng-template #revisedMatPanelChevrons let-expanded=\"expanded\" let-iconClass=\"iconClass\">\n <mat-panel-description class=\"children-description revised-nav-expansion-chevron\" *ngIf=\"navExpanded\">\n <span [ngClass]=\"iconClass || 'sub-chevron-icon revised-nav-chevron'\" class=\"revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: expanded }\"></ng-container>\n </span>\n </mat-panel-description>\n </ng-template>\n\n <!-- One resolved menu: grouped-menus (Foundation / INTELLIGENCE) or app-tabs OPTIMIZE when `optimizeParentApp` is set. No inner mat-list. -->\n <ng-template #revisedGroupMenuItemShell let-menu=\"menu\" let-optimizeParentApp=\"optimizeParentApp\">\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white revised-group__single-expandable\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\" (click)=\"onChildMenuPanelHeaderClick(menu)\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group__content\">\n <mat-nav-list class=\"sub-child-menu\">\n <lnc-nav-menus *ngFor=\"let childMenu of menu.children\" appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(childMenu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(childMenu, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </div>\n </mat-expansion-panel>\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group__single-link\">\n <lnc-nav-menus appOffsetTop\n [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\"\n [parentMenuId]=\"optimizeParentApp ? optimizeParentApp.id : getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedShellLeafParentPanelId(menu, optimizeParentApp)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n\n <!-- Grouped-menus rows: leaf | mat-expansion (depth 0) | nested mat-expansion (depth 1). Max 2 expansion levels here; deeper leaves use lnc-nav-menus. -->\n <ng-template #revisedGroupedMenuRows let-group=\"group\">\n <ng-container *ngFor=\"let menu of group.items\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: menu, nestingDepth: 0 }\"></ng-container>\n </ng-container>\n </ng-template>\n\n <ng-template #revisedGroupedMenuEntry let-menu=\"menu\" let-nestingDepth=\"nestingDepth\">\n <mat-nav-list *ngIf=\"!menu.children?.length\" class=\"revised-group-menu-leaf\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(menu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(menu)\"\n [parentPanelId]=\"getRevisedParentPanelId(menu)\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n\n <mat-expansion-panel *ngIf=\"menu.children?.length\" class=\"div-background-color-white\"\n [class.revised-group-menu-panel--nested]=\"nestingDepth > 0\"\n [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [disabled]=\"true\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"onChildMenuPanelOpened(menu)\" (closed)=\"onChildMenuPanelClosed(menu)\">\n <mat-expansion-panel-header (click)=\"onChildMenuPanelHeaderClick(menu)\" [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\" [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isChildMenuPanelExpanded(menu) }\"></ng-container>\n </mat-expansion-panel-header>\n <div class=\"revised-group-menu-children\">\n <ng-container *ngFor=\"let child of menu.children\">\n <ng-container *ngIf=\"child.children?.length && (nestingDepth ?? 0) < 2\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuEntry; context: { menu: child, nestingDepth: (nestingDepth ?? 0) + 1 }\"></ng-container>\n </ng-container>\n <mat-nav-list *ngIf=\"!child.children?.length || (nestingDepth ?? 0) >= 2\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isRevisedMenuActive(child)\" [item]=\"child\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"getRevisedParentMenuId(child, menu.ownerAppId)\"\n [parentPanelId]=\"menu.id\" (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-container>\n </div>\n </mat-expansion-panel>\n </ng-template>\n\n <!-- Same section class as legacy so .portal-sidnav-menu .mat-expansion-panel .mat-mdc-list a[mat-list-item].active applies -->\n <div class=\"revised-nav\" translate=\"no\">\n <div class=\"revised-section mat-expansion-panel\" *ngFor=\"let section of revisedSections; trackBy: trackByRevisedSection\" [attr.id]=\"section.id + 'menu'\" [attr.data-section-type]=\"section.type\"\n [ngClass]=\"{'active': isRevisedSectionActive(section)}\">\n <button class=\"revised-section__header main-expansion-panel-header\" type=\"button\" (click)=\"onRevisedSectionHeaderClick(section.id)\"\n [matTooltip]=\"navExpanded ? null : section.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <span class=\"revised-section__header-main\">\n <span class=\"revised-section__header-icon-box\">\n <span class=\"revised-section__header-icon icon side-menu-icon side-menu-icon-color\" [innerHTML]=\"getRevisedSectionIcon(section)\"></span>\n <span class=\"revised-section__collapsed-active-dot\" *ngIf=\"!navExpanded && isRevisedSectionActive(section)\" aria-hidden=\"true\"></span>\n </span>\n <span class=\"revised-section__title sidemenu-heading applicationMenu\" *ngIf=\"navExpanded\">{{ section.title }}</span>\n </span>\n <span class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <span class=\"main-chevron-icon revised-nav-chevron revised-chevron-icon-wrap\">\n <ng-container *ngTemplateOutlet=\"revisedChevronSvg; context: { expanded: isRevisedSectionExpanded(section.id) }\"></ng-container>\n </span>\n </span>\n </button>\n <div *ngIf=\"navExpanded && isRevisedSectionExpanded(section.id)\"\n class=\"revised-section__content revised-section__content--visible padding-0px\"\n [ngClass]=\"{\n 'revised-section__content--grouped': section.type === 'grouped-menus'\n }\"\n [attr.id]=\"section.id\">\n <ng-container [ngSwitch]=\"section.type\">\n\n <!-- JSON: { type: \"app-tabs\", appIds, defaultAppId } -->\n <ng-container *ngSwitchCase=\"'app-tabs'\">\n <div class=\"revised-optimize-tabs\" *ngIf=\"getRevisedSectionApps(section).length > 0\">\n <button type=\"button\" class=\"revised-optimize-tab\" *ngFor=\"let app of getRevisedSectionApps(section); trackBy: trackByRevisedMenu\"\n [ngClass]=\"{'active': isSelectedRevisedSectionApp(section, app)}\"\n [matTooltip]=\"getRevisedOptimizeAppTabTooltip(app)\" matTooltipPosition=\"below\"\n [matTooltipClass]=\"['left-nav-tooltip', 'revised-optimize-app-tab-tooltip']\"\n (click)=\"selectRevisedSectionApp(section, app)\">\n <span class=\"revised-optimize-tab__badge\" *ngIf=\"getRevisedSectionTabBadgeCount(app) !== null\">\n {{ getRevisedSectionTabBadgeCount(app) }}\n </span>\n <span class=\"revised-optimize-tab__icon\">\n <img class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(app.icon || 'default-icon.svg')\" [alt]=\"selectedApplication(app)\" />\n </span>\n </button>\n </div>\n <div class=\"revised-optimize-menus\" *ngIf=\"getRevisedSectionSelectedApp(section) as selectedApp\">\n <div class=\"revised-optimize-app-title menu-heading applicationSubmenus\" [innerHTML]=\"selectedApplication(selectedApp)\"></div>\n <div class=\"revised-group__multi-stack revised-optimize-menu-stack\" [attr.id]=\"section.id + '_' + selectedApp.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInSection(section) }\">\n <ng-container *ngFor=\"let menu of getRevisedSectionMenus(section); trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu, optimizeParentApp: selectedApp }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </ng-container>\n\n <!-- JSON: { type: \"grouped-menus\", groups: [ ... ] } -->\n <ng-container *ngSwitchCase=\"'grouped-menus'\">\n <ng-container *ngFor=\"let group of getRevisedGroupedSectionGroups(section); trackBy: trackByRevisedGroup\">\n\n <div *ngIf=\"isRevisedUntitledGroup(group)\" class=\"revised-group revised-group--flat\">\n <mat-list class=\"padding-0px revised-group__list\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngTemplateOutlet=\"revisedGroupedMenuRows; context: { group: group }\"></ng-container>\n </mat-list>\n </div>\n\n <div *ngIf=\"isRevisedSingleItemGroup(group)\" class=\"revised-group revised-group--single\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n\n <div *ngIf=\"isRevisedMultiItemGroup(group)\" class=\"revised-group revised-group--multi\">\n <mat-expansion-panel class=\"div-background-color-white revised-group__multi-panel\"\n [expanded]=\"isRevisedGroupExpanded(section.id, group.id)\"\n hideToggle=\"true\"\n (opened)=\"onRevisedGroupPanelOpened(section.id, group.id)\"\n (closed)=\"onRevisedGroupPanelClosed(section.id, group.id)\">\n <mat-expansion-panel-header class=\"revised-group__header revised-group__header--as-panel\"\n [matTooltip]=\"navExpanded ? null : group.title\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\">\n <mat-panel-title>\n <span class=\"revised-group__title menu-heading applicationSubmenus\" *ngIf=\"navExpanded\">{{ group.title }}</span>\n </mat-panel-title>\n <ng-container *ngTemplateOutlet=\"revisedMatPanelChevrons; context: { expanded: isRevisedGroupExpanded(section.id, group.id), iconClass: 'revised-group__chevron revised-nav-expansion-chevron revised-nav-chevron' }\"></ng-container>\n </mat-expansion-panel-header>\n <!-- Per-item DOM matches revised-group--single (no inner mat-list) so global sidebar theme does not apply muted .mat-list .applicationSubmenus to Commerce-style rows. -->\n <div class=\"revised-group__panel-body\" *ngIf=\"navExpanded\">\n <div class=\"revised-group__multi-stack\" [attr.id]=\"section.id + '_' + group.id\" [ngClass]=\"{'group-nav-menu': hasExpandableMenusInGroup(group) }\">\n <ng-container *ngFor=\"let menu of group.items; trackBy: trackByRevisedMenu\">\n <ng-container *ngTemplateOutlet=\"revisedGroupMenuItemShell; context: { menu: menu }\"></ng-container>\n </ng-container>\n </div>\n </div>\n </mat-expansion-panel>\n </div>\n\n </ng-container>\n </ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n </ng-container>\n <ng-template #legacyNavigationTemplate>\n <mat-expansion-panel [expanded]=\"headmenu.panelOpenState == true\" hideToggle=\"true\"\n *ngFor=\"let headmenu of toDisplayApplications\" [ngClass]=\"{'active': currentApp.id === headmenu.id }\"\n (opened)=\"headmenu.panelOpenState = true\" (closed)=\"headmenu.panelOpenState = false\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n *ngIf=\"headmenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n (click)=\"goToApplication(headmenu)\">\n <mat-panel-title>\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(headmenu.icon || 'default-icon.svg')\"/>\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(headmenu)\"></label>\n <span *ngIf=\"headmenu.badge\" class=\"badge-text sov-beta-position\" [innerHTML]=\"headmenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"headmenu-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!headmenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"headmenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of headmenu.children\" [attr.id]=\"headmenu.id\" [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-expansion-panel *ngIf=\"menu.children else listMenu\" class=\"div-background-color-white\" [expanded]=\"isChildMenuPanelExpanded(menu)\"\n [ngClass]=\"{'activePanel': isChildMenuPanelHighlighted(menu) , 'whiteLabelActive' : inContextInsightsWLApp}\" hideToggle=\"true\"\n (opened)=\"menu.panelOpenState = true\" (closed)=\"menu.panelOpenState = false\">\n <mat-expansion-panel-header\n [ngClass]=\"{'header-border': isChildMenuPanelExpanded(menu), 'header-border-none': !isChildMenuPanelExpanded(menu) }\">\n <mat-panel-title>\n <img style=\"margin-right: 10px\" *ngIf=\"(menu.icon && menu.icon != '') else displayInitials\"\n class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(menu.icon)\" />\n <ng-template #displayInitials>\n <div class=\"sidemenu-symbol\">\n {{menu.symbol}}\n </div>\n </ng-template>\n <h3 class=\"menu-heading applicationSubmenus\"><span class=\"menu-name-expandable\" [innerHTML]=\"selectedApplication(menu)\"></span>\n <span *ngIf=\"menu.badge\" class=\"badge-text sov-beta-position level-two-badge\"\n [innerHTML]=\"menu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"children-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"!isChildMenuPanelExpanded(menu)\">arrow_right</mat-icon>\n <mat-icon class=\"sub-chevron-icon\" *ngIf=\"isChildMenuPanelExpanded(menu)\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <!-- <mat-divider></mat-divider> -->\n <mat-nav-list *ngFor=\"let childMenu of menu.children;\" class=\"sub-child-menu\">\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(childMenu,headmenu,menu)\" [item]=\"childMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\" [parentPanelId]=\"menu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-expansion-panel>\n <ng-template #listMenu>\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,headmenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </ng-template>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus id=\"{{headmenu.id}}\" appOffsetTop [isActiveItem]=\"isCheckActiveRoute(headmenu,headmenu)\"\n [item]=\"headmenu\" [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"headmenu.id\"\n matTooltip=\"{{getTooltipInfo(headmenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n </ng-template>\n </div>\n <div class=\"portal-global-setting-menu sticky_bottom_menu\" *ngIf=\"!inContextInsightsWLApp\">\n <div *ngIf=\"!inContextInsightsWLApp\" class=\"app-menu-container\">\n <button class=\"app-menu-Link-button\" *ngIf=\"toDisplayLinkMenu && toDisplayLinkMenu.length > 0\">\n <div *ngFor=\"let menuLink of toDisplayLinkMenu\" id=\"{{menuLink.id + 'menu'}}\" [style.margin-left]=\"sidenav && sidenav.opened ? '0px' : '5px'\">\n <span class=\"app-name\" (click)=\"goToMenuLink(menuLink)\">\n <div *ngIf=\"sidenav && sidenav.opened\" style=\"display: flex; align-items: center;gap: 5px;\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <label *ngIf=\"showTitle\" class=\"app-name-label\" [innerHTML]=\"selectedApplication(menuLink)\"></label>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n <div *ngIf=\"sidenav && !sidenav.opened\">\n <img *ngIf=\"menuLink?.name\" matTooltip=\"{{getTooltipInfo(menuLink)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\" class=\"icon side-menu-icon children-icon\" [src]=\"getIconUrl(menuLink.icon || 'default-icon.svg')\"/>\n <span *ngIf=\"menuLink?.badge\" class=\"badge-text sov-beta-position\">{{menuLink.badge}}</span>\n </div>\n </span>\n </div>\n </button>\n </div>\n <mat-expansion-panel [expanded]=\"settingsHeadMenu.panelOpenState == true || expandGlobalSettings\" hideToggle=\"true\" id=\"{{settingsHeadMenu.id + 'menu'}}\"\n *ngFor=\"let settingsHeadMenu of toDisplayGlobalSettingsMenu\" [ngClass]=\"{'active': settingsHeadMenu.isActive }\"\n (opened)=\"sidenav.open(); settingsHeadMenu.panelOpenState = true\" (closed)=\"settingsHeadMenu.panelOpenState = false; expandGlobalSettings = false\" [style.border]=\"sidenav && sidenav.opened ? '' : 'none !important'\">\n <mat-expansion-panel-header matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipPosition=\"right\" matTooltipClass=\"left-nav-tooltip\"\n *ngIf=\"settingsHeadMenu.type == 'expandable' else singleMenus\" class=\"main-expansion-panel-header\"\n [ngClass]=\"sidenav && sidenav.opened ? '' : 'sticky-bottom-closed'\">\n <mat-panel-title style=\"gap: 5px;\">\n <img class=\"icon side-menu-icon side-menu-icon-color\" [src]=\"getIconUrl(settingsHeadMenu.icon || 'settings-icon.svg')\" />\n <h3 class=\"sidemenu-heading applicationMenu\">\n <label [innerHTML]=\"selectedApplication(settingsHeadMenu)\"></label>\n <span *ngIf=\"settingsHeadMenu.badge\" class=\"badge-text sov-beta-position\"\n [innerHTML]=\"settingsHeadMenu.badge\"></span>\n </h3>\n </mat-panel-title>\n <mat-panel-description class=\"setting-description\" *ngIf=\"navExpanded\">\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"!settingsHeadMenu.panelOpenState\">arrow_right</mat-icon>\n <mat-icon class=\"main-chevron-icon\" *ngIf=\"settingsHeadMenu.panelOpenState\">arrow_drop_down</mat-icon>\n </mat-panel-description>\n </mat-expansion-panel-header>\n <mat-list class=\"padding-0px\" *ngFor=\"let menu of settingsHeadMenu.children\" [attr.id]=\"settingsHeadMenu.id\"\n [ngClass]=\"{'group-nav-menu': menu.children }\">\n <mat-nav-list>\n <lnc-nav-menus appOffsetTop [isActiveItem]=\"isCheckActiveRoute(menu,settingsHeadMenu)\" [item]=\"menu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-nav-list>\n </mat-list>\n <ng-template #singleMenus>\n <mat-list>\n <lnc-nav-menus [attr.id]=\"settingsHeadMenu.id\" appOffsetTop\n [isActiveItem]=\"isCheckActiveRoute(settingsHeadMenu,settingsHeadMenu)\" [item]=\"settingsHeadMenu\"\n [applicationId]=\"applicationDetails.applicationId\" [parentMenuId]=\"settingsHeadMenu.id\"\n matTooltip=\"{{getTooltipInfo(settingsHeadMenu)}}\" matTooltipClass=\"left-nav-tooltip\" matTooltipPosition=\"right\"\n (menuClicked)=\"menuClicked($event)\" #navMenusComponent>\n </lnc-nav-menus>\n </mat-list>\n </ng-template>\n </mat-expansion-panel>\n\n </div>\n</div>\n<ng-template #errorBlock>\n <div class=\"errorMsg\">\n <span class=\"material-icons\">error</span>\n <span class=\"errorTxt\">{{errorMsg}}</span>\n </div>\n</ng-template>\n\n<a class=\"hamburger-icon expanded-hamburger-icon\" title=\"Toggle Menu\" (click)=\"sidenav.close();allMenuCollapse(); \">\n <mat-icon class=\"left-chevron-icon\">keyboard_arrow_left</mat-icon>\n</a>\n\n<!-- <img *ngIf=\"showMenuIcon()\" class=\"favicon-dimension\" src={{applicationDetails.sidebarInfo.favicon}} alt=\"Intentwise Favicon\" />\n <a *ngIf=\"showMenuIcon()\" title=\"Toggle Menu\" class=\"hamburger-icon collapsed-hamburger\"\n (click)=\"sidenav.open()\">\n <mat-icon class=\"right-chevron-icon\">keyboard_arrow_right</mat-icon>\n </a> -->\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/icon?family=Material+Icons\";@import\"https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600\";.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded{overflow:visible}.mat-ripple-element{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active .mat-ripple-element{display:none}.cdk-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop{position:absolute;inset:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{inset:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:\"\"}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}html{--mat-option-selected-state-label-text-color: #3f51b5;--mat-option-label-text-color: rgba(0, 0, 0, .87);--mat-option-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-option-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-option-selected-state-layer-color: rgba(0, 0, 0, .04)}.mat-accent{--mat-option-selected-state-label-text-color: #ff4081}.mat-warn{--mat-option-selected-state-label-text-color: #f44336}html{--mat-optgroup-label-text-color: rgba(0, 0, 0, .87)}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.mat-mdc-card{--mdc-elevated-card-container-color: white;--mdc-elevated-card-container-elevation: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-outlined-card-container-color: white;--mdc-outlined-card-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-card-container-elevation: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mat-card-subtitle-text-color: rgba(0, 0, 0, .54)}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5;--mdc-linear-progress-track-color: rgba(63, 81, 181, .25)}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}@media (forced-colors: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540;background-color:var(--mdc-linear-progress-track-color, rgba(63, 81, 181, .25))}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081;--mdc-linear-progress-track-color: rgba(255, 64, 129, .25)}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140;background-color:var(--mdc-linear-progress-track-color, rgba(255, 64, 129, .25))}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336;--mdc-linear-progress-track-color: rgba(244, 67, 54, .25)}@keyframes mdc-linear-progress-buffering{}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}@media (forced-colors: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:ButtonBorder}}@media all and (-ms-high-contrast: none),(-ms-high-contrast: active){.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-color:transparent;background-image:url(\"data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E\")}}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640;background-color:var(--mdc-linear-progress-track-color, rgba(244, 67, 54, .25))}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: #fff}html{--mdc-filled-text-field-caret-color: #3f51b5;--mdc-filled-text-field-focus-active-indicator-color: #3f51b5;--mdc-filled-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-filled-text-field-container-color: whitesmoke;--mdc-filled-text-field-disabled-container-color: #fafafa;--mdc-filled-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-filled-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-filled-text-field-error-focus-label-text-color: #f44336;--mdc-filled-text-field-error-label-text-color: #f44336;--mdc-filled-text-field-error-caret-color: #f44336;--mdc-filled-text-field-active-indicator-color: rgba(0, 0, 0, .42);--mdc-filled-text-field-disabled-active-indicator-color: rgba(0, 0, 0, .06);--mdc-filled-text-field-hover-active-indicator-color: rgba(0, 0, 0, .87);--mdc-filled-text-field-error-active-indicator-color: #f44336;--mdc-filled-text-field-error-focus-active-indicator-color: #f44336;--mdc-filled-text-field-error-hover-active-indicator-color: #f44336;--mdc-outlined-text-field-caret-color: #3f51b5;--mdc-outlined-text-field-focus-outline-color: #3f51b5;--mdc-outlined-text-field-focus-label-text-color: rgba(63, 81, 181, .87);--mdc-outlined-text-field-label-text-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-disabled-input-text-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-input-text-placeholder-color: rgba(0, 0, 0, .6);--mdc-outlined-text-field-error-caret-color: #f44336;--mdc-outlined-text-field-error-focus-label-text-color: #f44336;--mdc-outlined-text-field-error-label-text-color: #f44336;--mdc-outlined-text-field-outline-color: rgba(0, 0, 0, .38);--mdc-outlined-text-field-disabled-outline-color: rgba(0, 0, 0, .06);--mdc-outlined-text-field-hover-outline-color: rgba(0, 0, 0, .87);--mdc-outlined-text-field-error-focus-outline-color: #f44336;--mdc-outlined-text-field-error-hover-outline-color: #f44336;--mdc-outlined-text-field-error-outline-color: #f44336;--mat-form-field-disabled-input-text-placeholder-color: rgba(0, 0, 0, .38)}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-subscript-wrapper,.mat-mdc-form-field-bottom-align:before{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-subscript-text-font);line-height:var(--mat-form-field-subscript-text-line-height);font-size:var(--mat-form-field-subscript-text-size);letter-spacing:var(--mat-form-field-subscript-text-tracking);font-weight:var(--mat-form-field-subscript-text-weight)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent{--mdc-filled-text-field-caret-color: #ff4081;--mdc-filled-text-field-focus-active-indicator-color: #ff4081;--mdc-filled-text-field-focus-label-text-color: rgba(255, 64, 129, .87);--mdc-outlined-text-field-caret-color: #ff4081;--mdc-outlined-text-field-focus-outline-color: #ff4081;--mdc-outlined-text-field-focus-label-text-color: rgba(255, 64, 129, .87)}.mat-mdc-form-field.mat-warn{--mdc-filled-text-field-caret-color: #f44336;--mdc-filled-text-field-focus-active-indicator-color: #f44336;--mdc-filled-text-field-focus-label-text-color: rgba(244, 67, 54, .87);--mdc-outlined-text-field-caret-color: #f44336;--mdc-outlined-text-field-focus-outline-color: #f44336;--mdc-outlined-text-field-focus-label-text-color: rgba(244, 67, 54, .87)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}html{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(63, 81, 181, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-accent{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(255, 64, 129, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html .mat-mdc-form-field.mat-warn{--mat-select-panel-background-color: white;--mat-select-enabled-trigger-text-color: rgba(0, 0, 0, .87);--mat-select-disabled-trigger-text-color: rgba(0, 0, 0, .38);--mat-select-placeholder-text-color: rgba(0, 0, 0, .6);--mat-select-enabled-arrow-color: rgba(0, 0, 0, .54);--mat-select-disabled-arrow-color: rgba(0, 0, 0, .38);--mat-select-focused-arrow-color: rgba(244, 67, 54, .87);--mat-select-invalid-arrow-color: rgba(244, 67, 54, .87)}html{--mat-autocomplete-background-color: white}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-primary,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-primary{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-accent,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-accent{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-standard-chip.mat-mdc-chip-selected.mat-warn,.mat-mdc-standard-chip.mat-mdc-chip-highlighted.mat-warn{--mdc-chip-disabled-label-text-color: white;--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-focus-state-layer-color: black;--mdc-chip-focus-state-layer-opacity: .12;--mdc-chip-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white}.mat-mdc-chip.mat-mdc-standard-chip{--mdc-chip-container-height: 32px}.mat-mdc-slide-toggle{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb;--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-handle-elevation-shadow: 0px 2px 1px -1px rgba(0, 0, 0, .2), 0px 1px 1px 0px rgba(0, 0, 0, .14), 0px 1px 3px 0px rgba(0, 0, 0, .12);--mdc-switch-handle-shadow-color: black;--mdc-switch-disabled-handle-elevation-shadow: 0px 0px 0px 0px rgba(0, 0, 0, .2), 0px 0px 0px 0px rgba(0, 0, 0, .14), 0px 0px 0px 0px rgba(0, 0, 0, .12);--mdc-switch-selected-icon-color: #fff;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-handle-color: #616161;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-icon-color: #fff;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #3f51b5;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #ff4081;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-radio-ripple-color: #000;--mat-radio-checked-ripple-color: #f44336;--mat-radio-disabled-label-color: rgba(0, 0, 0, .38)}.mat-mdc-radio-button .mdc-radio{--mdc-radio-state-layer-size: 40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}html{--mat-menu-item-label-text-color: rgba(0, 0, 0, .87);--mat-menu-item-icon-color: rgba(0, 0, 0, .87);--mat-menu-item-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-item-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-menu-container-color: white}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mdc-list-item__start,.mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5}.mat-accent .mdc-list-item__start,.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081}.mat-warn .mdc-list-item__start,.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336}.mat-mdc-list-option{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-accent{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-option.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}html{--mat-paginator-container-text-color: rgba(0, 0, 0, .87);--mat-paginator-container-background-color: white;--mat-paginator-enabled-icon-color: rgba(0, 0, 0, .54);--mat-paginator-disabled-icon-color: rgba(0, 0, 0, .12)}html{--mat-paginator-container-size: 56px}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-tab-group,.mat-mdc-tab-nav-bar{--mdc-tab-indicator-active-indicator-color: #3f51b5;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #3f51b5;--mat-tab-header-active-ripple-color: #3f51b5;--mat-tab-header-inactive-ripple-color: #3f51b5;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #3f51b5;--mat-tab-header-active-hover-label-text-color: #3f51b5;--mat-tab-header-active-focus-indicator-color: #3f51b5;--mat-tab-header-active-hover-indicator-color: #3f51b5}.mat-mdc-tab-group.mat-accent,.mat-mdc-tab-nav-bar.mat-accent{--mdc-tab-indicator-active-indicator-color: #ff4081;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #ff4081;--mat-tab-header-active-ripple-color: #ff4081;--mat-tab-header-inactive-ripple-color: #ff4081;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #ff4081;--mat-tab-header-active-hover-label-text-color: #ff4081;--mat-tab-header-active-focus-indicator-color: #ff4081;--mat-tab-header-active-hover-indicator-color: #ff4081}.mat-mdc-tab-group.mat-warn,.mat-mdc-tab-nav-bar.mat-warn{--mdc-tab-indicator-active-indicator-color: #f44336;--mat-tab-header-disabled-ripple-color: rgba(0, 0, 0, .38);--mat-tab-header-pagination-icon-color: #000;--mat-tab-header-inactive-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-label-text-color: #f44336;--mat-tab-header-active-ripple-color: #f44336;--mat-tab-header-inactive-ripple-color: #f44336;--mat-tab-header-inactive-focus-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-inactive-hover-label-text-color: rgba(0, 0, 0, .6);--mat-tab-header-active-focus-label-text-color: #f44336;--mat-tab-header-active-hover-label-text-color: #f44336;--mat-tab-header-active-focus-indicator-color: #f44336;--mat-tab-header-active-hover-indicator-color: #f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-tab-header-with-background-background-color: #3f51b5;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-tab-header-with-background-background-color: #ff4081;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-tab-header-with-background-background-color: #f44336;--mat-tab-header-with-background-foreground-color: white}.mat-mdc-tab-header{--mdc-secondary-navigation-tab-container-height: 48px}html{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #ff4081;--mdc-checkbox-selected-hover-state-layer-color: #ff4081;--mdc-checkbox-selected-pressed-state-layer-color: #ff4081;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #3f51b5;--mdc-checkbox-selected-hover-state-layer-color: #3f51b5;--mdc-checkbox-selected-pressed-state-layer-color: #3f51b5;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-selected-focus-state-layer-color: #f44336;--mdc-checkbox-selected-hover-state-layer-color: #f44336;--mdc-checkbox-selected-pressed-state-layer-color: #f44336;--mdc-checkbox-unselected-focus-state-layer-color: black;--mdc-checkbox-unselected-hover-state-layer-color: black;--mdc-checkbox-unselected-pressed-state-layer-color: black}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{color:#00000061}html{--mdc-checkbox-state-layer-size: 40px}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mdc-icon-button-icon-color: inherit;--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #6200ee;--mat-mdc-button-ripple-color: rgba(98, 0, 238, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #018786;--mat-mdc-button-ripple-color: rgba(1, 135, 134, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #b00020;--mat-mdc-button-ripple-color: rgba(176, 0, 32, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5;--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081;--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336;--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 48px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:12px}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: white;--mdc-fab-icon-color: black;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: white;--mat-mdc-fab-color: #fff}.mat-mdc-snack-bar-container{--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87);--mat-snack-bar-button-color: #ff4081}html{--mat-table-background-color: white;--mat-table-header-headline-color: rgba(0, 0, 0, .87);--mat-table-row-item-label-text-color: rgba(0, 0, 0, .87);--mat-table-row-item-outline-color: rgba(0, 0, 0, .12)}html{--mat-table-header-container-height: 56px;--mat-table-footer-container-height: 52px;--mat-table-row-item-container-height: 52px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.6);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;pointer-events:none;background-color:var(--mat-badge-background-color);color:var(--mat-badge-text-color);font-family:Roboto,sans-serif;font-family:var(--mat-badge-text-font, Roboto, sans-serif);font-size:12px;font-size:var(--mat-badge-text-size, 12px);font-weight:600;font-weight:var(--mat-badge-text-weight, 600)}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-disabled .mat-badge-content{background-color:var(--mat-badge-disabled-state-background-color);color:var(--mat-badge-disabled-state-text-color)}.mat-badge-hidden .mat-badge-content{display:none}.ng-animate-disabled .mat-badge-content,.mat-badge-content._mat-animation-noopable{transition:none}.mat-badge-content.mat-badge-active{transform:none}.mat-badge-small .mat-badge-content{width:16px;height:16px;line-height:16px;font-size:9px;font-size:var(--mat-badge-small-size-text-size, 9px)}.mat-badge-small.mat-badge-above .mat-badge-content{top:-8px}.mat-badge-small.mat-badge-below .mat-badge-content{bottom:-8px}.mat-badge-small.mat-badge-before .mat-badge-content{left:-16px}[dir=rtl] .mat-badge-small.mat-badge-before .mat-badge-content{left:auto;right:-16px}.mat-badge-small.mat-badge-after .mat-badge-content{right:-16px}[dir=rtl] .mat-badge-small.mat-badge-after .mat-badge-content{right:auto;left:-16px}.mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-8px}.mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-8px}[dir=rtl] .mat-badge-small.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-8px}.mat-badge-medium .mat-badge-content{width:22px;height:22px;line-height:22px}.mat-badge-medium.mat-badge-above .mat-badge-content{top:-11px}.mat-badge-medium.mat-badge-below .mat-badge-content{bottom:-11px}.mat-badge-medium.mat-badge-before .mat-badge-content{left:-22px}[dir=rtl] .mat-badge-medium.mat-badge-before .mat-badge-content{left:auto;right:-22px}.mat-badge-medium.mat-badge-after .mat-badge-content{right:-22px}[dir=rtl] .mat-badge-medium.mat-badge-after .mat-badge-content{right:auto;left:-22px}.mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-11px}.mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-11px}[dir=rtl] .mat-badge-medium.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-11px}.mat-badge-large .mat-badge-content{width:28px;height:28px;line-height:28px;font-size:24px;font-size:var(--mat-badge-large-size-text-size, 24px)}.mat-badge-large.mat-badge-above .mat-badge-content{top:-14px}.mat-badge-large.mat-badge-below .mat-badge-content{bottom:-14px}.mat-badge-large.mat-badge-before .mat-badge-content{left:-28px}[dir=rtl] .mat-badge-large.mat-badge-before .mat-badge-content{left:auto;right:-28px}.mat-badge-large.mat-badge-after .mat-badge-content{right:-28px}[dir=rtl] .mat-badge-large.mat-badge-after .mat-badge-content{right:auto;left:-28px}.mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-before .mat-badge-content{left:auto;right:-14px}.mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:-14px}[dir=rtl] .mat-badge-large.mat-badge-overlap.mat-badge-after .mat-badge-content{right:auto;left:-14px}html{--mat-badge-background-color: #3f51b5;--mat-badge-text-color: white;--mat-badge-disabled-state-background-color: #b9b9b9;--mat-badge-disabled-state-text-color: rgba(0, 0, 0, .38)}.mat-badge-accent{--mat-badge-background-color: #ff4081;--mat-badge-text-color: white}.mat-badge-warn{--mat-badge-background-color: #f44336;--mat-badge-text-color: white}html{--mat-bottom-sheet-container-text-color: rgba(0, 0, 0, .87);--mat-bottom-sheet-container-background-color: white}html{--mat-legacy-button-toggle-text-color: rgba(0, 0, 0, .38);--mat-legacy-button-toggle-state-layer-color: rgba(0, 0, 0, .12);--mat-legacy-button-toggle-selected-state-text-color: rgba(0, 0, 0, .54);--mat-legacy-button-toggle-selected-state-background-color: #e0e0e0;--mat-legacy-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-legacy-button-toggle-disabled-state-background-color: #eeeeee;--mat-legacy-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-background-color: white;--mat-standard-button-toggle-state-layer-color: black;--mat-standard-button-toggle-selected-state-background-color: #e0e0e0;--mat-standard-button-toggle-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-standard-button-toggle-disabled-state-background-color: white;--mat-standard-button-toggle-disabled-selected-state-text-color: rgba(0, 0, 0, .87);--mat-standard-button-toggle-disabled-selected-state-background-color: #bdbdbd;--mat-standard-button-toggle-divider-color: #e0e0e0}html{--mat-standard-button-toggle-height: 48px}html{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #3f51b5;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(63, 81, 181, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(63, 81, 181, .3);--mat-datepicker-toggle-active-state-icon-color: #3f51b5;--mat-datepicker-calendar-date-in-range-state-background-color: rgba(63, 81, 181, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e;--mat-datepicker-toggle-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-body-label-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-period-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-navigation-button-icon-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-header-divider-color: rgba(0, 0, 0, .12);--mat-datepicker-calendar-header-text-color: rgba(0, 0, 0, .54);--mat-datepicker-calendar-date-today-outline-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-today-disabled-state-outline-color: rgba(0, 0, 0, .18);--mat-datepicker-calendar-date-text-color: rgba(0, 0, 0, .87);--mat-datepicker-calendar-date-outline-color: transparent;--mat-datepicker-calendar-date-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-date-preview-state-outline-color: rgba(0, 0, 0, .24);--mat-datepicker-range-input-separator-color: rgba(0, 0, 0, .87);--mat-datepicker-range-input-disabled-state-separator-color: rgba(0, 0, 0, .38);--mat-datepicker-range-input-disabled-state-text-color: rgba(0, 0, 0, .38);--mat-datepicker-calendar-container-background-color: white;--mat-datepicker-calendar-container-text-color: rgba(0, 0, 0, .87)}.mat-datepicker-content.mat-accent{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #ff4081;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(255, 64, 129, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(255, 64, 129, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(255, 64, 129, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-content.mat-warn{--mat-datepicker-calendar-date-selected-state-text-color: white;--mat-datepicker-calendar-date-selected-state-background-color: #f44336;--mat-datepicker-calendar-date-selected-disabled-state-background-color: rgba(244, 67, 54, .4);--mat-datepicker-calendar-date-today-selected-state-outline-color: white;--mat-datepicker-calendar-date-focus-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-hover-state-background-color: rgba(244, 67, 54, .3);--mat-datepicker-calendar-date-in-range-state-background-color: rgba(244, 67, 54, .2);--mat-datepicker-calendar-date-in-comparison-range-state-background-color: rgba(249, 171, 0, .2);--mat-datepicker-calendar-date-in-overlap-range-state-background-color: #a8dab5;--mat-datepicker-calendar-date-in-overlap-range-selected-state-background-color: #46a35e}.mat-datepicker-toggle-active.mat-accent{--mat-datepicker-toggle-active-state-icon-color: #ff4081}.mat-datepicker-toggle-active.mat-warn{--mat-datepicker-toggle-active-state-icon-color: #f44336}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{--mdc-icon-button-state-layer-size: 40px;width:var(--mdc-icon-button-state-layer-size);height:var(--mdc-icon-button-state-layer-size);padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}html{--mat-divider-color: rgba(0, 0, 0, .12)}html{--mat-expansion-container-background-color: white;--mat-expansion-container-text-color: rgba(0, 0, 0, .87);--mat-expansion-actions-divider-color: rgba(0, 0, 0, .12);--mat-expansion-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-expansion-header-disabled-state-text-color: rgba(0, 0, 0, .26);--mat-expansion-header-text-color: rgba(0, 0, 0, .87);--mat-expansion-header-description-color: rgba(0, 0, 0, .54);--mat-expansion-header-indicator-color: rgba(0, 0, 0, .54)}html{--mat-expansion-header-collapsed-state-height: 48px;--mat-expansion-header-expanded-state-height: 64px}html{--mat-icon-color: inherit}.mat-icon.mat-primary{--mat-icon-color: #3f51b5}.mat-icon.mat-accent{--mat-icon-color: #ff4081}.mat-icon.mat-warn{--mat-icon-color: #f44336}html{--mat-sidenav-container-divider-color: rgba(0, 0, 0, .12);--mat-sidenav-container-background-color: white;--mat-sidenav-container-text-color: rgba(0, 0, 0, .87);--mat-sidenav-content-background-color: #fafafa;--mat-sidenav-content-text-color: rgba(0, 0, 0, .87);--mat-sidenav-scrim-color: rgba(0, 0, 0, .6)}html{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #3f51b5;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #3f51b5;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #3f51b5;--mat-stepper-header-edit-state-icon-foreground-color: white;--mat-stepper-container-color: white;--mat-stepper-line-color: rgba(0, 0, 0, .12);--mat-stepper-header-hover-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-focus-state-layer-color: rgba(0, 0, 0, .04);--mat-stepper-header-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-optional-label-text-color: rgba(0, 0, 0, .54);--mat-stepper-header-selected-state-label-text-color: rgba(0, 0, 0, .87);--mat-stepper-header-error-state-label-text-color: #f44336;--mat-stepper-header-icon-background-color: rgba(0, 0, 0, .54);--mat-stepper-header-error-state-icon-foreground-color: #f44336;--mat-stepper-header-error-state-icon-background-color: transparent}html .mat-step-header.mat-accent{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #ff4081;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #ff4081;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #ff4081;--mat-stepper-header-edit-state-icon-foreground-color: white}html .mat-step-header.mat-warn{--mat-stepper-header-icon-foreground-color: white;--mat-stepper-header-selected-state-icon-background-color: #f44336;--mat-stepper-header-selected-state-icon-foreground-color: white;--mat-stepper-header-done-state-icon-background-color: #f44336;--mat-stepper-header-done-state-icon-foreground-color: white;--mat-stepper-header-edit-state-icon-background-color: #f44336;--mat-stepper-header-edit-state-icon-foreground-color: white}html{--mat-stepper-header-height: 72px}.mat-sort-header-arrow{color:#757575}html{--mat-toolbar-container-background-color: whitesmoke;--mat-toolbar-container-text-color: rgba(0, 0, 0, .87)}.mat-toolbar.mat-primary{--mat-toolbar-container-background-color: #3f51b5;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-accent{--mat-toolbar-container-background-color: #ff4081;--mat-toolbar-container-text-color: white}.mat-toolbar.mat-warn{--mat-toolbar-container-background-color: #f44336;--mat-toolbar-container-text-color: white}html{--mat-toolbar-standard-height: 64px;--mat-toolbar-mobile-height: 56px}.mat-tree{background:#fff}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}.errorMsg{position:FIXED;color:#ff273e;font-size:14px;font-family:Source Sans Pro,sans-serif;inset:0;background-color:#fff;text-align:center}.errorMsg .material-icons{position:relative;left:25px;top:calc(51% - 50px)}.errorMsg .errorTxt{padding:10px 10px 10px 30px;text-align:left;width:inherit;display:inline-block;position:relative;line-height:20px;top:calc(50% - 50px)}.sticky_bottom_menu .sticky-bottom-closed{margin-left:3px}.revised-section__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;cursor:pointer;text-align:left;overflow:hidden;height:40px;padding:0 5px}.revised-section__header .revised-chevron-icon-wrap{position:absolute;right:14px!important}.revised-section__header-main{display:inline-flex;align-items:center;gap:5px;min-width:0;overflow:hidden}.revised-section__header-icon-box{position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon{width:13px;height:13px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.revised-section__header-icon ::ng-deep svg{display:block}.revised-nav{display:flex;flex-direction:column;width:100%;flex:1 1 auto;min-height:0}.revised-nav-chevron{flex-shrink:0}.revised-section__title{line-height:38px;white-space:nowrap;overflow:hidden;opacity:1;max-width:220px;transition:opacity 80ms ease,max-width 80ms ease}.revised-section__icon{color:#41586b}.revised-section__chevron{font-size:20px;width:20px;height:20px;line-height:20px;font-family:Material Icons!important;font-weight:400;font-style:normal;display:inline-flex;align-items:center;justify-content:center;text-transform:none;letter-spacing:normal}.revised-section__content{max-height:0;opacity:0;overflow:hidden;padding-bottom:0;visibility:hidden;transition:max-height .1s ease,opacity 80ms ease,padding-bottom .1s ease,visibility 0s linear .1s}.revised-section__content--visible{padding:0 8px 0 28px;max-height:1400px!important;opacity:1!important;visibility:visible!important;overflow:visible!important;transition:max-height .12s ease,opacity .1s ease,padding-bottom .12s ease,visibility 0s linear 0s}.revised-section__content--visible.revised-section__content--grouped{padding-left:32px}:host ::ng-deep .revised-section .mat-expansion-panel-content{padding-left:12px}.revised-group{margin-bottom:4px}.revised-group__header{width:100%;border:0;background:transparent;display:flex;align-items:center;justify-content:space-between;padding:8px 10px 6px;cursor:pointer;text-align:left;font:inherit;color:inherit}.revised-group__title{margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.revised-group__chevron{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;min-width:28px;min-height:28px}.revised-group__list{padding-left:4px!important}.revised-group__multi-panel{box-shadow:none!important;border-radius:0!important;background:transparent!important}.revised-group__multi-panel .mat-expansion-panel-header.revised-group__header--as-panel{padding:8px 10px 6px 12px!important}.revised-group__panel-body{padding-left:0}.revised-group-menu-panel--nested .mat-expansion-panel-header{padding-left:8px;min-height:40px}.revised-group-menu-leaf{padding:0}.revised-group--single .revised-group__header--as-panel{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--single .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--single .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px}.revised-group--single .revised-group__single-link{padding:0;min-height:0}.revised-group--single .revised-group__single-link .mat-mdc-list-item,.revised-group--single .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__list .mat-mdc-list-item,.revised-group--multi .revised-group__list a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable{box-shadow:none;border-radius:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-expandable .mat-expansion-panel-header,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-expandable .mat-expansion-panel-header{border:0;padding:8px 10px 6px 12px!important}.revised-group--multi .revised-group__multi-stack .revised-group__single-link,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link{padding:0;min-height:0}.revised-group--multi .revised-group__multi-stack .revised-group__single-link .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__single-link a[mat-list-item],.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-group--multi .revised-group__multi-stack .revised-group__content .sub-child-menu a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__single-link a[mat-list-item],.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu .mat-mdc-list-item,.revised-optimize-menus .revised-optimize-menu-stack .revised-group__content .sub-child-menu a[mat-list-item]{padding:8px 10px 6px;height:auto;min-height:40px}.revised-section mat-expansion-panel-header.mat-expansion-panel-header,.revised-section .mat-expansion-panel-header{align-items:center!important}.revised-section mat-panel-title,.revised-section .mat-expansion-panel-header-title{flex:1 1 auto!important;min-width:0}.revised-section mat-panel-title .menu-heading,.revised-section .mat-expansion-panel-header-title .menu-heading{font-size:15.5px}.revised-section mat-panel-description.children-description,.revised-section .mat-expansion-panel-header-description.children-description{margin-left:auto!important;margin-right:0!important;flex:0 0 auto!important;display:flex!important;align-items:center;justify-content:flex-end;padding-right:10px}.revised-section .sub-chevron-icon.revised-chevron-icon-wrap,.revised-section span.sub-chevron-icon{position:static!important;left:auto!important;top:auto!important;line-height:0;width:auto!important;min-width:28px;height:auto!important;color:#41586b}.revised-section .revised-group__chevron{color:#41586b}.revised-section .revised-chevron-icon-wrap{display:inline-flex;align-items:center;justify-content:center;overflow:visible;color:#41586b;position:absolute;right:5px}.revised-section .revised-chevron-svg{display:block;width:22px;height:22px;flex-shrink:0;pointer-events:none}.navmenu-expanded .revised-section{width:100%;margin-bottom:0;display:flex;flex-direction:column;align-items:center}.navmenu-expanded .revised-section__header{width:auto;max-width:100%;min-width:0;flex:0 0 auto;min-height:56px;padding:0 8px;justify-content:center;box-sizing:border-box}.navmenu-expanded .revised-section__header-main{width:auto;max-width:100%;justify-content:center;gap:0}.navmenu-expanded .revised-section__title,.navmenu-expanded .revised-section__icon{opacity:0;pointer-events:none}.navmenu-expanded .revised-section__title{max-width:0}.navmenu-expanded .revised-section.active .revised-section__header-icon-box{background:#ebecef;border-radius:10px;padding:8px;box-sizing:border-box}.navmenu-expanded .revised-section__header-icon{width:24px;height:24px}.navmenu-expanded .revised-section__header-icon ::ng-deep svg{width:20px;height:20px}.navmenu-expanded .revised-section__collapsed-active-dot{position:absolute;top:2px;right:2px;width:6px;height:6px;border-radius:50%;background-color:#ff273e;box-shadow:0 0 0 2px #ebecef;pointer-events:none}.navmenu-expanded .revised-section__content:not(.revised-section__content--visible){max-height:0!important;opacity:0!important;padding-bottom:0!important;visibility:hidden!important}.revised-optimize-tabs{display:flex;gap:10px;padding:6px 0 12px;align-items:center;flex-wrap:nowrap;justify-content:center}.revised-optimize-tab{width:40px;min-width:40px;height:40px;border-radius:8px;border:2px solid #e5e7e8;background:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;padding:0;transition:border-color .15s ease,box-shadow .15s ease,background-color .15s ease}.revised-optimize-tab.active{background:#eef2ff;border-color:#4573d2}.revised-optimize-tab:hover{background:#eef2ff}.revised-optimize-tab img{margin-right:0!important;width:24px!important;height:24px!important;object-fit:contain}.revised-optimize-tab__icon{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px}.revised-optimize-tab__badge{position:absolute;top:-6px;left:-6px;min-width:24px;height:24px;padding:0 6px;border-radius:12px;background:#ff4d4f;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;line-height:1;box-shadow:0 0 0 3px #fff}.revised-section-group{margin-bottom:12px;padding-left:45px}.revised-section-group__title{padding:4px 0 2px}.revised-optimize-app-title{color:#202b37;font-size:15px;font-weight:700!important;line-height:36px;text-transform:capitalize}::ng-deep .mat-mdc-tooltip-panel-below mat-tooltip-component .mdc-tooltip.revised-optimize-app-tab-tooltip{position:relative;inset-inline-start:12px}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important}:host ::ng-deep .revised-section lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .revised-section lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3{color:#202b37!important}:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .main-chevron-icon,:host ::ng-deep .revised-section .mat-expansion-panel-header:hover .sub-chevron-icon{color:#41586b!important}:host ::ng-deep .revised-section .mat-mdc-list-item,:host ::ng-deep .revised-section a[mat-list-item]{border-radius:8px;margin:4px 0;min-height:40px;padding-left:0;padding-right:0}.portal-sidnav-menu{overflow-y:auto;scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.15) rgba(255,255,255,.65)}.portal-sidnav-menu::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}.portal-sidnav-menu::-webkit-scrollbar-corner{display:none;height:0;width:0}.portal-sidnav-menu::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}.portal-sidnav-menu .portal-sidnav-menu__subheader{margin:12px 0;padding:0 16px;vertical-align:middle;font-size:14px}.portal-sidnav-menu .mat-expansion-panel{box-shadow:none;border-radius:0}.portal-sidnav-menu .mat-expansion-panel.revised-section:not(:last-child){border-bottom:1px solid #E5E7E8;padding-bottom:5px}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header{height:36px!important;border-bottom-left-radius:0;border-bottom-right-radius:0;padding:0 0 0 25px;border:none!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{margin:0;align-items:center;width:100%}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title .mat-icon{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title img.icon.side-menu-icon{width:24px!important}.portal-sidnav-menu .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-description{margin-right:13px}.portal-sidnav-menu .mat-nav-list{padding:0}.portal-sidnav-menu .mat-nav-list .mat-mdc-list-item-icon,.portal-sidnav-menu .mat-nav-list .mat-icon.portal-sidnav-menu__end_detail{font-size:16px;width:24px;height:24px;line-height:24px;text-align:center;padding:0;flex-shrink:0}.portal-sidnav-menu .mat-list-item-focus{background:transparent}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header{padding-left:20px}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .menu-name-expandable{max-width:170px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:inline-block}.portal-sidnav-menu mat-list mat-expansion-panel mat-expansion-panel-header .level-two-badge{top:-10px!important;right:-4px!important}::ng-deep .mdc-list-item:hover:before,::ng-deep .mdc-list-item:focus:before,::ng-deep .mdc-list-item.mdc-list-item--selected:before,::ng-deep .mdc-list-item.mdc-list-item--activated:before,::ng-deep .mdc-list-item__ripple:before{background-color:transparent!important}.main-expansion-panel-header{position:relative}.main-chevron-icon{font-size:34px;width:25px;height:34px;color:#41586b;position:absolute;right:10px;bottom:1px}.sub-chevron-icon{left:25px;top:6px;font-size:15px;width:25px;height:15px;color:#41586b;position:relative}.header-border{border-top-left-radius:0;border-top-right-radius:0}.header-border-none{border:0}.sidemenu-logo-holder{width:150px;text-align:center;margin:0;line-height:1px;max-height:65px;padding:0 10px;display:flex;justify-content:center}.sidemenu-logo-holder img{width:100%}.sidemenu-heading{color:#1e1f21;font-size:16px;font-weight:600;margin:0!important}.sidemenu-symbol{border-radius:50%;width:18px;height:18px;border:1px solid #ff273e;color:#202b37;text-align:center;font:9px Arial,sans-serif;display:inline-block;font-weight:700;display:flex;justify-content:center;align-items:center;margin-right:10px}.menu-heading{position:relative;margin:0!important;color:#1e1f21!important;white-space:nowrap;text-transform:capitalize;letter-spacing:normal}.logo-dimension{object-fit:cover;max-height:60px}.hamburger-icon{z-index:-1;cursor:pointer;position:fixed;background-color:#fff;border:1px solid #e6eefc;width:20px!important;height:32px;line-height:36px;top:calc(50% - 15px);display:flex;align-items:center;justify-content:center}.left-chevron-icon{color:#7f7f7f}.expanded-hamburger-icon{left:232px}.sidebar-collapse-icon{display:flex;justify-content:flex-end;top:0;z-index:99;background-color:#fff;padding-right:8px}.sidebar-collapse-icon button{width:25px;display:flex;text-align:center;vertical-align:middle;align-items:center;justify-content:center;text-transform:capitalize;border-radius:0;line-height:15px;height:20px;padding:0;min-height:20px;cursor:pointer;color:#1264a3;text-decoration:none;font-size:14px;left:0;top:0;background-color:#fff;border:1px solid #e6eefc}.sidebar-collapse-icon button mat-icon{margin:0}.portal-forgot-logo-text{line-height:1.3;font-family:Dosis,sans-serif;font-style:normal;font-stretch:normal;letter-spacing:4.3px;text-align:left;opacity:1px;color:#41586b;display:inline-block;vertical-align:middle;font-size:25px;font-weight:600}.portal-forgot-card__logo{width:16%}.portal-forget-heading-card{display:flex;justify-content:space-around;align-items:center;flex-direction:row}.revised-section-app-logo{padding:0 10px}.div-background-color,.div-background-color-white{background-color:#fff!important}.mat-expansion-panel-content{padding-left:20px}.mat-expansion-panel-content .sub-child-menu .mat-mdc-list-item h3{font-size:14px!important}:host ::ng-deep .mat-expansion-indicator:after{color:#000!important;border-width:0 1px 1px 0;padding:4px}:host ::ng-deep .mat-expansion-indicator:before{color:#000!important}:host ::ng-deep .mat-expansion-panel-body{padding:0!important}:host ::ng-deep .mat-expansion-panel-body .mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body a.mat-mdc-list-item h3.sidemenu-text,:host ::ng-deep .mat-expansion-panel-body .mdc-list-item__content h3.sidemenu-text{font-size:15.25px!important}:host ::ng-deep .mat-mdc-list-base{padding:0}:host ::ng-deep .mat-mdc-list-base .mat-mdc-list-item,.mat-list-base .mat-list-option{height:40px}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content{padding:0 10px 0 23px!important}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#1e1f21;font: 400 16px Lato,serif}:host ::ng-deep #app_global_settingsmenu.mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-divider.separator{margin-left:0!important;width:calc(100% + 10px)!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content{padding:0 8px 0 20px!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item{padding:0 12px!important;min-height:40px!important;height:auto!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu mat-expansion-panel .mat-expansion-panel-content .mat-expansion-panel-body .mat-mdc-list-base lnc-nav-menus .mat-mdc-list-item .mdc-list-item__content h3.font-color-black{color:#202b37!important;font-size:15.5px!important;font-weight:400!important;line-height:1.25!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active{background-color:#f6f6f6!important;border:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option.active h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option.active h3.sidemenu-text{color:#202b37!important;font-weight:700!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active){background-color:#f6f6f6!important;border-right:none!important;text-decoration:none!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.sidemenu-option:hover:not(.active) h3.sidemenu-text,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3,:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu lnc-nav-menus a.mat-mdc-list-item.sidemenu-option:hover:not(.active) h3.sidemenu-text{color:#202b37!important}:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover:not(.active),:host ::ng-deep .application-sidebar--revised-nav .portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.badge-text.sov-beta-position{position:relative;font-size:10px;color:#ff273e!important;font-family:Lato!important;top:-5px;right:0;letter-spacing:.5px;padding-left:2px;flex-grow:1}.portal-global-setting-menu{border-top:1px solid #E5E7E8!important;margin-bottom:8px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel{padding-left:5px}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item:hover,.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel mat-expansion-panel-header+div[class*=expansion-panel-content] .mat-mdc-list .mat-mdc-list-item.active{background-color:#f6f6f6!important}.portal-global-setting-menu.sticky_bottom_menu mat-expansion-panel.mat-expanded{border-color:#acb0b4}.portal-global-setting-menu .app-menu-container .app-menu-Link-button{padding:12px 5px!important;align-items:center;background:transparent;cursor:pointer!important;width:100%!important;margin:0!important;height:44px!important;border-radius:8px;border:none!important;display:flex!important;justify-content:space-between;font: 400 16px Lato,serif!important;line-height:16px!important}.portal-global-setting-menu .app-menu-container .app-menu-Link-button .app-name label.app-name-label{font-weight:700;cursor:pointer}.navmenu-expanded{align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header{display:flex!important;justify-content:center;align-items:center}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-content{margin-left:12px}.navmenu-expanded .mat-expansion-panel .mat-expansion-panel-header .mat-expansion-panel-header-title{justify-content:center}.navmenu-expanded .portal-global-setting-menu.sticky_bottom_menu .mat-expansion-panel{border:none!important}.side-menu-icon{width:18px;height:18px}::-webkit-scrollbar{height:8px;width:8px;background:#0000001a;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-thumb{background:#00000026;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}::-webkit-scrollbar-track{border-radius:30px;background:#ffffffa6}::-webkit-scrollbar-corner{display:none;height:0px;width:0px}::-webkit-scrollbar-thumb:hover{background:#00000073;border-radius:4px;-webkit-transition:all .2s;transition:all .2s}:host ::ng-deep #loader_sov{display:none}:host ::ng-deep #loading_div{width:100%;height:100%;position:fixed;z-index:9999;display:table;background:#f9f9f9}:host ::ng-deep #loading_div>div{display:table-cell;vertical-align:middle;text-align:center}:host ::ng-deep #loading_div>div #loader{vertical-align:middle;width:100%;height:120px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader img{width:auto;height:140px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div #loader.site_2{height:130px}:host ::ng-deep #loading_div>div #loader.site_2 img{height:160px}:host ::ng-deep #loading_div>div #loader.site_6{height:138px}:host ::ng-deep #loading_div>div #loader.site_5{height:123px}:host ::ng-deep #loading_div>div #loader.site_5 img{height:110px}:host ::ng-deep #loading_div>div #loader.site_7{height:181px}:host ::ng-deep #loading_div>div #loader.site_7 img{height:204px}:host ::ng-deep #loading_div>div #loader_img{vertical-align:middle;width:100%;height:170px;display:block;text-align:center}:host ::ng-deep #loading_div>div #loader_img img{width:auto;height:150px;display:inline-block;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position{width:16%;margin:auto}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-fill:after{background-color:#ff273e!important}:host ::ng-deep #loading_div>div .loader_progress-bar-position .mat-progress-bar-buffer{background-color:#cdcdd2!important}@media only screen and (max-width: 1425px){:host ::ng-deep #loading_div .loader_progress-bar-position{width:26%!important}}::ng-deep body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav{border-right:none!important;overflow:hidden!important;width:300px;min-width:300px;max-width:300px;background-color:#fdfdfd!important;padding-top:11px;padding-right:0!important;padding-left:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .portal-sidnav-menu{padding:0!important}:host-context(body app-root .mat-sidenav-container.left-nav-v2 .mat-sidenav.portal-classic-leftsidenav) .mat-toolbar{margin-bottom:0!important}\n"] }]
|
|
1416
|
+
}], ctorParameters: function () { return [{ type: i1.ApplicationSidebarService }, { type: i2.Router }, { type: i3.RestApiService }, { type: i4.CookieService }, { type: i0.ChangeDetectorRef }, { type: i5.TranslationService }, { type: i6.MixpanelService }, { type: i7.DomSanitizer }]; }, propDecorators: { applicationDetails: [{
|
|
663
1417
|
type: Input
|
|
664
1418
|
}], sidenav: [{
|
|
665
1419
|
type: Input
|
|
@@ -673,4 +1427,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
673
1427
|
type: ViewChild,
|
|
674
1428
|
args: ['navMenusComponent']
|
|
675
1429
|
}] } });
|
|
676
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFlLGVBQWUsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzlFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFROUQsTUFBTSxP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O3dCQUNwSCxPQUFPLElBQUksQ0FBQztxQkFDYjtvQkFBQSxDQUFDO2dCQUNKLENBQUMsQ0FBQyxDQUFBO2FBQ0g7WUFDRCxPQUFPLENBQUMsWUFBWSxJQUFJLElBQUksSUFBSSxDQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsTUFBTSxHQUFHLEVBQUUsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxLQUFLLHFCQUFxQixDQUFDLENBQUMsQ0FBQztTQUMzSjtJQUNMLENBQUM7MkhBdHFCVSwyQkFBMkI7K0dBQTNCLDJCQUEyQiw4S0FPM0IsbUJBQW1CLHdLQURoQixrQkFBa0IscUVDM0JsQyx5emRBb05VOzs0RkQvTEcsMkJBQTJCO2tCQU52QyxTQUFTOytCQUNFLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTs2UkFJdEMsa0JBQWtCO3NCQUExQixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFFNEIsU0FBUztzQkFBMUMsWUFBWTt1QkFBQyxrQkFBa0I7Z0JBQ0EsSUFBSTtzQkFBbkMsU0FBUzt1QkFBQyxtQkFBbUI7Z0JBQ0UsaUJBQWlCO3NCQUFoRCxTQUFTO3VCQUFDLG1CQUFtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXIsIFJvdXRlckV2ZW50LCBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBPbkRlc3Ryb3ksIElucHV0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkcmVuLCBRdWVyeUxpc3QsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQXBwbGljYXRpb25TaWRlYmFyU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvYXBwbGljYXRpb24tc2lkZWJhci5zZXJ2aWNlJ1xuaW1wb3J0IHsgTWF0U2lkZW5hdiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3NpZGVuYXYnO1xuaW1wb3J0IHsgYXBwRGV0YWlscyB9IGZyb20gJy4vYXBwLWRldGFpbHMnXG5pbXBvcnQgeyBPZmZzZXRUb3BEaXJlY3RpdmUsIFNjcm9sbGFibGVEaXJlY3RpdmUgfSBmcm9tICcuL25hdi1tZW51LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBSZXN0QXBpU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvcmVzdC1hcGkuc2VydmljZXMnXG5pbXBvcnQgeyBOYXZNZW51c0NvbXBvbmVudCB9IGZyb20gJy4vbmF2LW1lbnVzL25hdi1tZW51cy5jb21wb25lbnQnXG5pbXBvcnQgeyBDb29raWVTZXJ2aWNlIH0gZnJvbSAnbmd4LWNvb2tpZS1zZXJ2aWNlJztcbmltcG9ydCB7IFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4vc2VydmljZXMvdHJhbnNsYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBHTE9CQUxfTElTVCB9IGZyb20gJy4vbmF2bWVudTEnO1xuaW1wb3J0IHsgY29uc3RhbnRzIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgTWl4cGFuZWxTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9taXhwYW5lbC5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbG5jLW5hdmlnYXRpb24tc2lkZWJhcicsXG4gIHRlbXBsYXRlVXJsOicuL2FwcGxpY2F0aW9uLXNpZGViYXIudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczpbJy4vYXBwbGljYXRpb24tc2lkZWJhci5zY3NzJywnYXBwbGljYXRpb24tc2lkZWJhci50aGVtZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBhcHBsaWNhdGlvbkRldGFpbHMgOmFwcERldGFpbHM7XG5cbiAgQElucHV0KCkgc2lkZW5hdjogTWF0U2lkZW5hdjtcblxuICBAVmlld0NoaWxkcmVuKE9mZnNldFRvcERpcmVjdGl2ZSkgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgQFZpZXdDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlKSBsaXN0OiBTY3JvbGxhYmxlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCduYXZNZW51c0NvbXBvbmVudCcpIG5hdk1lbnVzQ29tcG9uZW50Ok5hdk1lbnVzQ29tcG9uZW50O1xuXG4gIGFjY291bnROYW1lOiBhbnk7XG4gIGFjdGl2ZVBhbmVsOiBhbnk7XG4gIG5hdkV4cGFuZGVkOmJvb2xlYW4gPSBmYWxzZTtcbiAgb2xkTGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgaXNBZG1pblJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRtaW5Sb2xlcyA9IFsnU1VQRVJfQURNSU4nLCdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgY3VycmVudEFwcDogYW55O1xuICBzaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uOiBhbnk7XG4gIG15T2JzZXJ2ZXI6IGFueTtcbiAgZXhwYW5kR2xvYmFsU2V0dGluZ3M6IGFueSA9IGZhbHNlO1xuICBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwOiBib29sZWFuO1xuICBwdWJsaWMgdGhlbWVQb2ludDogc3RyaW5nOyAvLyBQdWJsaWMgdmFyaWFibGUgZm9yIHRoZW1lIHBvaW50XG4gIHNob3dUaXRsZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIGlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlOmJvb2xlYW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZpZ2F0aW9uOiBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBSZXN0QXBpU2VydmljZTogUmVzdEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWU6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjpUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtaXhwYW5lbDogTWl4cGFuZWxTZXJ2aWNlXG4gICAgKSB7XG4gICAgICB0aGlzLm15T2JzZXJ2ZXIgPSB0aGlzLnJvdXRlci5ldmVudHMuc3Vic2NyaWJlKChldmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQgaW5zdGFuY2VvZiBOYXZpZ2F0aW9uU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLmV4cGFuZEdsb2JhbFNldHRpbmdzID0gdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5leHRyYXMuc3RhdGUgJiYgdGhpcy5yb3V0ZXIuZ2V0Q3VycmVudE5hdmlnYXRpb24oKS5leHRyYXMuc3RhdGUuZXhwYW5kUGFuZWw7ICAgICAgICBcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBcbiAgICAgIC8vIERldGVybWluZSB0aGVtZSBwb2ludCBiYXNlZCBvbiBkb21haW5cbiAgICAgIHRoaXMuZGV0ZXJtaW5lVGhlbWVQb2ludCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgdGhlIHRoZW1lIHBvaW50IGJhc2VkIG9uIHRoZSBjdXJyZW50IGRvbWFpblxuICAgKiBVc2VzIFNUQUdJTkdfVEhFTUVfUE9JTlQgZm9yIGxvY2FsLCBoZXJva3UsIG9yIGFwcHRlc3QgZG9tYWluc1xuICAgKiBVc2VzIFBST0RfVEhFTUVfUE9JTlQgZm9yIGFsbCBvdGhlciBkb21haW5zXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVRoZW1lUG9pbnQoKTogdm9pZCB7XG4gICAgY29uc3QgY3VycmVudERvbWFpbiA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIFxuICAgIC8vIENoZWNrIGlmIGRvbWFpbiBjb250YWlucyBsb2NhbCwgaGVyb2t1LCBvciBhcHB0ZXN0XG4gICAgY29uc3QgaXNTdGFnaW5nRG9tYWluID0gY3VycmVudERvbWFpbi5pbmNsdWRlcygnbG9jYWwnKSB8fCBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4uaW5jbHVkZXMoJ2hlcm9rdScpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERvbWFpbi5pbmNsdWRlcygnYXBwdGVzdCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdsb2NhbGhvc3QnKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERvbWFpbi5pbmNsdWRlcygnMTI3LjAuMC4xJyk7XG4gICAgXG4gICAgaWYgKGlzU3RhZ2luZ0RvbWFpbikge1xuICAgICAgdGhpcy50aGVtZVBvaW50ID0gY29uc3RhbnRzLlNUQUdJTkdfVEhFTUVfQlVDS0VUO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRoZW1lUG9pbnQgPSBjb25zdGFudHMuUFJPRF9USEVNRV9CVUNLRVQ7XG4gICAgfVxuICAgIFxuICAgIGNvbnNvbGUubG9nKGBUaGVtZSBwb2ludCBkZXRlcm1pbmVkOiAke3RoaXMudGhlbWVQb2ludH0gZm9yIGRvbWFpbjogJHtjdXJyZW50RG9tYWlufWApO1xuICB9XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBnZXR0ZXIgdG8gYWNjZXNzIHRoZSBjdXJyZW50IHRoZW1lIHBvaW50XG4gICAqIEByZXR1cm5zIFRoZSBjdXJyZW50IHRoZW1lIHBvaW50IFVSTFxuICAgKi9cbiAgcHVibGljIGdldFRoZW1lUG9pbnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50aGVtZVBvaW50O1xuICB9XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBnZXR0ZXIgdG8gY2hlY2sgaWYgY3VycmVudCBlbnZpcm9ubWVudCBpcyBzdGFnaW5nXG4gICAqIEByZXR1cm5zIFRydWUgaWYgc3RhZ2luZyBlbnZpcm9ubWVudCwgZmFsc2UgaWYgcHJvZHVjdGlvblxuICAgKi9cbiAgcHVibGljIGlzU3RhZ2luZ0Vudmlyb25tZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnRoZW1lUG9pbnQgPT09IGNvbnN0YW50cy5TVEFHSU5HX1RIRU1FX0JVQ0tFVDtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYW51YWxseSB1cGRhdGUgdGhlbWUgcG9pbnQgYW5kIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgKiBAcGFyYW0gZm9yY2VTdGFnaW5nIC0gRm9yY2Ugc3RhZ2luZyB0aGVtZSBwb2ludCBpZiB0cnVlXG4gICAqL1xuICBwdWJsaWMgdXBkYXRlVGhlbWVQb2ludChmb3JjZVN0YWdpbmc/OiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKGZvcmNlU3RhZ2luZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLnRoZW1lUG9pbnQgPSBmb3JjZVN0YWdpbmcgPyBjb25zdGFudHMuU1RBR0lOR19USEVNRV9CVUNLRVQgOiBjb25zdGFudHMuUFJPRF9USEVNRV9CVUNLRVQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lVGhlbWVQb2ludCgpO1xuICAgIH1cbiAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgVVJMIGZvciBhbiBhc3NldCB1c2luZyB0aGUgY3VycmVudCB0aGVtZSBwb2ludFxuICAgKiBAcGFyYW0gYXNzZXRQYXRoIC0gVGhlIGFzc2V0IHBhdGggKGUuZy4sICdsb2dvcy9sb2dvLnBuZycpXG4gICAqIEByZXR1cm5zIFRoZSBmdWxsIFVSTCBmb3IgdGhlIGFzc2V0XG4gICAqL1xuICBwdWJsaWMgZ2V0QXNzZXRVcmwoYXNzZXRQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy50aGVtZVBvaW50KSB7XG4gICAgICB0aGlzLmRldGVybWluZVRoZW1lUG9pbnQoKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMudGhlbWVQb2ludH0vJHthc3NldFBhdGh9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgVVJMIGZvciBhbiBpY29uIHVzaW5nIHRoZSBjdXJyZW50IHRoZW1lIHBvaW50XG4gICAqIEBwYXJhbSBpY29uTmFtZSAtIFRoZSBpY29uIG5hbWUgKGUuZy4sICdtZW51LWljb24uc3ZnJylcbiAgICogQHJldHVybnMgVGhlIGZ1bGwgVVJMIGZvciB0aGUgaWNvbiB3aXRoIHRoZW1lL2Fzc2V0cy9pY29ucy8gcGF0aFxuICAgKi9cbiAgcHVibGljIGdldEljb25VcmwoaWNvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnRoZW1lUG9pbnQpIHtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lVGhlbWVQb2ludCgpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy50aGVtZVBvaW50fS90aGVtZS9hc3NldHMvaWNvbnMvJHtpY29uTmFtZX1gO1xuICB9XG5cbiAgcGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgbWFpblBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gIHB1YmxpYyBwcmV2QWN0aXZlSGVhZE1lbnU7XG4gIHB1YmxpYyB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMgPSBbXTtcbiAgcHVibGljIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudTogYW55W107XG4gIHB1YmxpYyB0b0Rpc3BsYXlMaW5rTWVudTogYW55W107XG4gIHB1YmxpYyBlcnJvck1zZzpzdHJpbmc7XG5cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10pe1xuICAgICAgbGV0IHVzZXJSb2xlID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZTtcbiAgICAgIHRoaXMuaXNBZG1pblJvbGUgPSB0aGlzLmFkbWluUm9sZXMuaW5kZXhPZih1c2VyUm9sZSkgPiAtMSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCk7XG4gICAgLy8gY29uc3QgY29uZmlncyA9IHRoaXMucm91dGVyLmNvbmZpZztcbiAgICAvLyBmb3IobGV0IGNvbmZpZyBvZiBjb25maWdzKXtcbiAgICAvLyAgIGlmKGNvbmZpZy5jaGlsZHJlbil7XG4gICAgLy8gICAgIGZvcihsZXQgY2hpbGQgb2YgY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgICBjaGlsZC5jYW5BY3RpdmF0ZSA9IFtDYW5Mb2FkR3VhcmRdXG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8gdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoY29uZmlncyk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gIH1cblxuICBjYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Upe1xuICAgICAgbGV0IHN0YXR1cyAgICAgICAgICA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2xlZnROYXZPcGVuU3RhdHVzJyk7XG4gICAgICB0aGlzLm5hdkV4cGFuZGVkICAgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzICYmIHN0YXR1cyA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5zaG93VGl0bGUgPSB0aGlzLm5hdkV4cGFuZGVkO1xuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICB0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24gPSB0aGlzLnNpZGVuYXYub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgoc3RhdHVzKT0+e1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdsZWZ0TmF2T3BlblN0YXR1cycsSlNPTi5zdHJpbmdpZnkoc3RhdHVzKSk7XG4gICAgICAgIHRoaXMubmF2RXhwYW5kZWQgICA9IHN0YXR1cztcbiAgICAgICAgdGhpcy5zaWRlbmF2Lm9wZW5lZCA9IHN0YXR1cztcbiAgICAgICAgdGhpcy5zaG93VGl0bGUgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljICBjaGVja0FwcGxpY2F0aW9uRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLmVycm9yTXNnID0gJyc7XG4gICAgaWYoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQgIT0gJ2Fkc19hbWF6b25fZHNwJyl7XG4gICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzKVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVBcHBEZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscyl7XG4gICAgdGhpcy5jcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgLy8gaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpe1xuICAgIC8vICAgdGhpcy5nZXRBY3RpdmVSZWNvQ291bnQodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQpO1xuICAgIC8vIH1cbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVOYXZpZ2F0aW9uU2lkZUJhcihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldGpzb25NZW51bGlzdHMoYXBwbGljYXRpb25EZXRhaWxzKS5zdWJzY3JpYmUoKG1lbnVsaXN0czogYW55KSA9PiB7XG4gICAgICAvLyBsZXQgbWVudWxpc3RzID0gR0xPQkFMX0xJU1RcbiAgICAgIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zID0gdGhpcy5uYXZpZ2F0aW9uLmdldE1lbnVMaXN0KGFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ID0gdGhpcy5uYXZpZ2F0aW9uLmdldEdsb2JhbFNldHRpbmdzTWVudShhcHBsaWNhdGlvbkRldGFpbHMsIG1lbnVsaXN0cyk7XG4gICAgICAvLyBVc2UgcHJvcGVyIGZpbHRlcmluZyBzeXN0ZW0gZm9yIEpvaW4gSW50ZW50d2lzZSBDb21tdW5pdHkgbGlua1xuICAgICAgY29uc3QgZm91bmQgPSBtZW51bGlzdHMuZmluZChsaXN0ID0+IGxpc3QuaWQgPT09ICdhcHBfaW50ZW50d2lzZV9jb21tdW5pdHknKTtcbiAgICAgIHRoaXMudG9EaXNwbGF5TGlua01lbnUgPSBmb3VuZCA/IHRoaXMubmF2aWdhdGlvbi5nZXRBcHBsaWNhdGlvbk1lbnVJdGVtKGZvdW5kKSA/IFtmb3VuZF0gOiBbXSA6IFtdO1xuICAgICAgdGhpcy5leHBhbmRDdXJyZW50TWVudU9ubHkoYXBwbGljYXRpb25EZXRhaWxzLCBmYWxzZSk7XG4gICAgICB0aGlzLmV4cGFuZENoaWxkTWVudU9ubHkodGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpO1xuICAgICAgdGhpcy5jaGVja0ZvclJlZGlyZWN0aW9uKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zLHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51LGFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyAsIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ICwgdGhpcy50b0Rpc3BsYXlMaW5rTWVudSk7XG4gICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTWVudSgpO1xuICAgICAgdGhpcy5zZXRNZW51TGlzdChhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCx0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyk7XG4gICAgICB0aGlzLmluQ29udGV4dEluc2lnaHRzV0xBcHAgPSB0aGlzLmhpZGVNZW51Rm9yV0woKTtcbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldE1lbnVMaXN0KGFwcElkLG1lbnVMaXN0KXtcbiAgICB2YXIgYXBwRGV0YWlsczphbnkgPSBuZXcgT2JqZWN0KCk7XG4gICAgYXBwRGV0YWlscy5hcHBpY2F0aW9uSWQgPSBhcHBJZDtcbiAgICBhcHBEZXRhaWxzLm1lbnVMaXN0ID0gbWVudUxpc3QuZmluZCgobWVudSk9PnsgcmV0dXJuIG1lbnUuaWQgPT0gYXBwSWR9KVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBEZXRhaWxzJyxKU09OLnN0cmluZ2lmeShhcHBEZXRhaWxzKSk7XG4gIH1cblxuICBwdWJsaWMgbWVudUNsaWNrZWQob2JqOiBhbnkpIHtcbiAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgdHJ1ZSk7XG4gICAgdGhpcy5leHBhbmRDaGlsZE1lbnVPbmx5KHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICBpZihvYmopIHtcbiAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBvYmouYWN0aXZlUGFuZWw7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG4gIFxuICBwdWJsaWMgZXhwYW5kQ2hpbGRNZW51T25seSh0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUpIHtcbiAgICBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgLy8gdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSA9IGZhbHNlO1xuICAgICAgbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgICBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICBpZih0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgJiYgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51Lmxlbmd0aCkge1xuICAgICAgICAgIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICBpZih0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0uY2hpbGRyZW4gJiYgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51WzBdLmNoaWxkcmVuLmxlbmd0aCl7XG4gICAgICAgICAgZm9yKGxldCBtZW51IG9mIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVswXS5jaGlsZHJlbil7XG4gICAgICAgICAgICBpZihtZW51LnJvdXRlPT1jdXJyZW50Um91dGUpe1xuICAgICAgICAgICAgICB0b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnVbMF0ucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAvLyB0aGlzLmlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIHNldFRpbWVvdXQgb3BlcmF0aW9uXG4gICAgfSwgMTAwKVxuICAgXG4gIH1cblxuICBwdWJsaWMgZXhwYW5kQ3VycmVudE1lbnVPbmx5KGFwcGxpY2F0aW9uRGV0YWlscywgb25NZW51Q2xpY2tlZCkge1xuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMpIHtcbiAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgfVxuICAgIFxuICAgIGZvcihsZXQgaGVhZE1lbnUgb2YgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMpIHtcbiAgICAgICAgaWYoaGVhZE1lbnUuaWQgPT0gYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgIH0gZWxzZSBpZihoZWFkTWVudS5pZC5pbmRleE9mKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSA+IC0xKSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcblxuICAgICAgICAgIGxldCB1cmxBcnJheSA9IHRoaXMucm91dGVyLnVybC5zcGxpdCgnLycpO1xuICAgICAgICAgIGxldCByb3V0ZVVybCA9IHVybEFycmF5W3VybEFycmF5Lmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmKChoZWFkTWVudS5pZD09IFwiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiIHx8IGhlYWRNZW51LmlkPT0gXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCIpICYmIHVybEFycmF5Lmxlbmd0aCA+Mil7XG4gICAgICAgICAgICB1cmxBcnJheT0gdXJsQXJyYXkuc2xpY2UodXJsQXJyYXkubGVuZ3RoLTIpO1xuICAgICAgICAgICAgcm91dGVVcmw9IHVybEFycmF5LmpvaW4oJy8nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgICAgICAgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX2NvbnRlbnRfY29udGVudF9hbmFseXRpY3NcIiAmJiB0aGlzLm5hdmlnYXRpb24uY29udGVudEFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEgKSB7XG4gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICB9IGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX2NvbnRlbnRfc2hhcmVfb2Zfdm9pY2VcIiAmJiB0aGlzLm5hdmlnYXRpb24uc292QXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuICAgICAgICAgICAgICBpZigoY3VycmVudFJvdXRlICE9ICdwcm9kdWN0LW1ldGEtZGF0YScgJiYgY3VycmVudFJvdXRlICE9ICdicmFuZC10ZXJtcy1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdsYWJlbHMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzLW1hcHBpbmcnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc292LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2NvbnRlbnQtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJykgfHwgIXRoaXMuY3VycmVudEFwcCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnU2hhcmUgT2YgVm9pY2UnKSB7XG4gICAgICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgICAgICAgIGlmKG9uTWVudUNsaWNrZWQgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1NoYXJlIE9mIFZvaWNlJykge1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fc2VsbGVyX3NlbGxlcl9hbmFseXRpY3NcIiAmJiB0aGlzLm5hdmlnYXRpb24uc2VsbGVyQW5hbHl0aWNzQXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSl7XG4gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZWxzZSBpZihoZWFkTWVudS5pZCA9PSBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIiAmJiB0aGlzLm5hdmlnYXRpb24udmVuZG9yQW5hbHl0aWNzQXBwUm91dGVzLmluZGV4T2YoY3VycmVudFJvdXRlKT4tMSkge1xuICAgICAgICAgICAgaWYoKGN1cnJlbnRSb3V0ZSAhPSAncHJvZHVjdC1tZXRhLWRhdGEnICYmIGN1cnJlbnRSb3V0ZSAhPSAnYnJhbmQtdGVybXMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnbGFiZWxzLXNldHRpbmdzJyAgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMtbWFwcGluZycgJiYgY3VycmVudFJvdXRlICE9ICdzb3Ytc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnY29udGVudC1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdzZWFyY2gtcXVlcnktcGVyZm9ybWFuY2UnKSB8fCAhdGhpcy5jdXJyZW50QXBwIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdWZW5kb3IgQW5hbHl0aWNzJykge1xuICAgICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG4gICAgICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdWZW5kb3IgQW5hbHl0aWNzJykge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gIGlmKGhlYWRNZW51LmNoaWxkcmVuKXtcbiAgICAgICAgLy8gICAgaGVhZE1lbnUuY2hpbGRyZW4uZm9yRWFjaChtZW51ID0+IHtcbiAgICAgICAgLy8gICAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LnR5cGUgPT0gXCJleHBhbmRhYmxlXCIpIHtcbiAgICAgICAgLy8gICAgICAgIGhlYWRNZW51LmNoaWxkcmVuLmZvckVhY2goc3VibWVudSA9PiB7XG4gICAgICAgIC8vICAgICAgICAgaWYodGhpcy5pc0NoZWNrQWN0aXZlUm91dGUoc3VibWVudS5yb3V0ZSxoZWFkTWVudSkpe1xuICAgICAgICAvLyAgICAgICAgICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAvLyAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcblxuICAgICAgICAvLyAgICAgICAgIH1cbiAgICAgICAgLy8gICAgICAgIH0pXG4gICAgICAgIC8vICAgICAgfVxuICAgICAgICAvLyAgICB9KTtcbiAgICAgICAgLy8gfVxuICAgICAgfVxuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gIHB1YmxpYyBnZXRUb29sdGlwSW5mbyhoZWFkbWVudSl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWQpe1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfWVsc2V7XG4gICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSl7XG4gICAgcmV0dXJuIHRoaXMudHJhbnNsYXRpb24uc2VsZWN0ZWRBcHBsaWNhdGlvbih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgaGVhZG1lbnUpO1xuICB9XG4gIGdldCBzaWRlSWRJbmZvKCl7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKVxuICAgIH1lbHNlIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSl7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSlcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuXG4gIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcE1lbnVzLCBnc01lbnVzLCBhcHBsaWNhdGlvbkRldGFpbHMpIHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBjdXJyZW50QXBwTWVudXMgPSBhcHBNZW51cy5maW5kKGFwcCA9PiAgYXBwLmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDApO1xuXG4gICAgaWYgKGN1cnJlbnRBcHBNZW51cykge1xuICAgICAgY29uc3QgYWxsTWVudXMgPSBbY3VycmVudEFwcE1lbnVzLCAuLi5nc01lbnVzXTtcbiAgICAgIGNvbnN0IGlzTWVudUF2YWlsYWJsZSA9IGZpbmRMaW5rKGFsbE1lbnVzKTtcbiAgICAgIGlmICghaXNNZW51QXZhaWxhYmxlKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoY3VycmVudEFwcE1lbnVzLmRlZmF1bHR1cmwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zWzBdLmRlZmF1bHR1cmwpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gaXNNZW51Um91dGVNYXRjaChsaW5rKSB7XG4gICAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBgLyR7bGlua31gO1xuICAgIH0gXG5cbiAgICBmdW5jdGlvbiBmaW5kTGluayhtZW51QXJyYXkpIHtcbiAgICAgIHJldHVybiBtZW51QXJyYXkuc29tZShmdW5jdGlvbihtZW51KSB7XG4gICAgICAgICAgLy8gSWYgdGhlIG1lbnUgaGFzIGNoaWxkcmVuLCBzZWFyY2ggcmVjdXJzaXZlbHlcbiAgICAgICAgICBpZiAobWVudS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICByZXR1cm4gZmluZExpbmsobWVudS5jaGlsZHJlbik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbWVudSBpdGVtIGhhcyBhIG1hdGNoaW5nIGxpbmtcbiAgICAgICAgICBpZiAoaXNNZW51Um91dGVNYXRjaChtZW51LnJvdXRlKSkge1xuICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hpbGQgcm91dGVzLCBzZWFyY2ggd2l0aGluIHRoZW1cbiAgICAgICAgICBpZiAobWVudS5jaGlsZF9yb3V0ZXMpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG1lbnUuY2hpbGRfcm91dGVzLnNvbWUoZnVuY3Rpb24oY2hpbGRSb3V0ZSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGlzTWVudVJvdXRlTWF0Y2goY2hpbGRSb3V0ZSk7XG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH0pO1xuICB9XG4gIH1cblxuXG5cblxuXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscywgbWVudWxpc3RzKSB7XG4gIC8vICAgdHJ5e1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuICAvLyAgICAgbGV0IGlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2sgPXRydWU7XG4gIC8vICAgICBsZXQgaXNyZWRpcmVjdGVkID0gZmFsc2U7XG4gIC8vICAgICBsZXQgYXBwbGljYXRpb25JZExpc3QgPSBbXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgLCBcImFkc19hbWF6b25fc2VsbGVyX3ZlbmRvcl9hbmFseXRpY3NcIl1cblxuICAvLyAgICAgbGV0IG1lbnVsaXN0ID0gYXBwbGljYXRpb25JZExpc3QuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzICYmIGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMubGVuZ3RoID4gMCA/IGFwcGxpY2F0aW9uRGV0YWlscy5saXN0TWVudXMgOiBtZW51bGlzdHM7XG5cbiAgLy8gICAgIGNvbnN0IHJvbGUgPSBbJ1NVUEVSX0FETUlOJywgJ1NVUEVSX0FETUlOX1JFQURfT05MWSddO1xuICAvLyAgICAgaWYgKHJvbGUuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMudXNlckluZm8ucm9sZSkgPT0gLTEpIHtcbiAgICAgICAgXG4gIC8vICAgICAgIGxldCBhcHBsaWNhdGlvbk1lbnVlcyA9IG1lbnVsaXN0ICYmIG1lbnVsaXN0Lmxlbmd0aCA+IDAgJiYgbWVudWxpc3QuZmluZCgobWVudXMpPT57XG4gIC8vICAgICAgICAgcmV0dXJuIG1lbnVzLmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXG4gIC8vICAgICAgIH0pXG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLm9yZ2FuaXphdGlvbl9zZXR0aW5nX25vdF9pbikge1xuICAvLyAgICAgICAgIGlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JOb3RPcmdTZXR0aW5ncyhhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICBpc01lbnVWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yUm9sZXMoYXBwbGljYXRpb25NZW51ZXMudmlzaWJpbGl0eV9yb2xlcyk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvcnZpc2liaWxpdHlSb2xlc05vdEluKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKSB7XG4gIC8vICAgICAgICAgaXNNZW51Tm90VmlzaWJsZUJ5YXBwc3BhY2lmaWNjb25maWdjaGVjayA9IHRoaXMubmF2aWdhdGlvbi5hcHBTcGVjaWZpY0NvbmZpZyhhcHBsaWNhdGlvbk1lbnVlcy5hcHBfc3BhY2lmaWNfY29uZmlnX2NoZWNrKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgaXNNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0Zvck9yZ1dpdGhVc2VyUm9sZShhcHBsaWNhdGlvbk1lbnVlcy5vcmdfdXNlcl9jdHJsLGFwcGxpY2F0aW9uTWVudWVzLCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgaWYgKGFwcGxpY2F0aW9uTWVudWVzICYmIGFwcGxpY2F0aW9uTWVudWVzLmlkID09IFwiYW1jLXBsYXRmb3JtLXdlYlwiICYmIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKSB7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSA9IHRydWU7XG4gIC8vICAgICAgICAgbGV0IGlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSA9IHRydWU7XG5cbiAgLy8gICAgICAgICBjb25zdCBjaGlsZG1lbnUgPSB0aGlzLnZhbGlkYXRlUm91dGVCeVN0YXRlKCB0aGlzLnJvdXRlciAsIGFwcGxpY2F0aW9uTWVudWVzLmNoaWxkcmVuKTtcblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlc19ub3RfaW4pO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIGlmIChjaGlsZG1lbnUgJiYgY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXMpIHtcbiAgLy8gICAgICAgICAgIGlzQ2hpbGRNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoY2hpbGRtZW51Lm9yZ191c2VyX2N0cmwsY2hpbGRtZW51LCBhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudE9yZ2FuaXphdGlvbi5vcmdhbml6YXRpb25JZCk7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKCghaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgfHwgIWlzQ2hpbGRNZW51ck9yZ1dpdGhVc2VyUm9sZSkgJiYgY2hpbGRtZW51KSB7XG4gIC8vICAgICAgICAgICBpc3JlZGlyZWN0ZWQgPSB0cnVlO1xuICAvLyAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW1wiL1wiXSk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmICgoIWlzTWVudVZpc2libGVCeW9yZ1NldHRpbmcgfHwgIWlzTWVudVZpc2libGVCeVJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeVJvbGUgfHwgIWlzTWVudXJPcmdXaXRoVXNlclJvbGUgfHwgIWlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2spICYmICFpc3JlZGlyZWN0ZWQpIHtcbiAgLy8gICAgICAgICBpZiAoIXRoaXMuY3VycmVudEFwcCkge1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZSh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9uc1swXS5kZWZhdWx0dXJsKTsgIFxuICAvLyAgICAgICAgIH1lbHNle1xuICAvLyAgICAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShhcHBsaWNhdGlvbk1lbnVlcy5kZWZhdWx0dXJsKTtcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICB9Y2F0Y2goZXJyb3Ipe1xuICAvLyAgICAgICB0aHJvdyBlcnJvcjtcbiAgLy8gICB9XG4gIC8vIH1cblxuICB2YWxpZGF0ZVJvdXRlQnlTdGF0ZShzdGF0ZSAsIGxpc3RNZW51cyl7XG4gICAgdHJ5e1xuICAgICAgICBjb25zdCBmaW5kUm91dGUgPSBsaXN0TWVudXMuZmluZChsaXN0ID0+IHtcbiAgICAgICAgICAgIGlmKGxpc3QubGluayA9PSAnYW1jJytzdGF0ZS51cmwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgIH0gZWxzZSBpZihsaXN0Lm1hdGNoUm91dGVzICYmIGxpc3QubWF0Y2hSb3V0ZXMubGVuZ3RoID4gMCl7XG4gICAgICAgICAgICAgICAgaWYobGlzdC5tYXRjaFJvdXRlcy5pbmNsdWRlcyhzdGF0ZS51cmwpKXtcbiAgICAgICAgICAgICAgICAgIHJldHVybiBsaXN0O1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gZmluZFJvdXRlO1xuICAgIH1jYXRjaChlcnJvcil7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbn1cbiAgXG4gIC8vIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcGxpY2F0aW9uRGV0YWlsczogYXBwRGV0YWlscykge1xuICAvLyAgIGxldCByb3V0ZSA9ICcnO1xuICAvLyAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCAmJiAhKHRoaXMubmF2aWdhdGlvbi5pc0hhdmluZ0FueUFjdGl2ZVN1YnMoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQsYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnN1YnNjcmlwdGlvbixhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSkpKXtcbiAgLy8gICAgIHN3aXRjaChhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQudHlwZSl7XG4gIC8vICAgICAgIGNhc2UgJ0NPTlRFTlQnOiB7XG4gIC8vICAgICAgICAgICByb3V0ZSA9ICdjb250ZW50L3NoYXJlLW9mLXZvaWNlJ1xuICAvLyAgICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnRFNQJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2RzcC9vcmRlcidcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfQVRUUklCVVRJT04nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnYXR0cmlidXRpb24vYXR0cmlidXRpb24tY2FtcGFpZ25zJ1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1NFTExFUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9zZWxsZXItc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1ZFTkRPUl9DRU5UUkFMJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1jb250ZW50LWRhc2hib2FyZC9jdXN0b20tcmVwb3J0cy12ZW5kb3Itc2FsZXMtb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0lOU1RBQ0FSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdpbnN0YWNhcnQvaW5zdGFjYXJ0LW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdDUklURU8nOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnY3JpdGVvL2NyaXRlby1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnV0FMTUFSVCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICd3YWxtYXJ0Lyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1BWk9OX01BUktFVElOR19DTE9VRCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkcC9kYXRhLWFuYWx5dGljcy1nZXR0aW5nLXN0YXJ0ZWQnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNU19WRU5ET1InOlxuICAvLyAgICAgICBjYXNlICdBTVNfU0VMTEVSJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJyMhL2Ftcy1wYWdlLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShyb3V0ZSk7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgcHVibGljIGFzeW5jIGdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50KXtcbiAgICB0cnkge1xuICAgIHRoaXMuUmVzdEFwaVNlcnZpY2UuZ2V0U3RydWN0dXJlQVBJU3VwcG9ydERhdGEoY3VycmVudEFjY291bnQub3JnYW5pemF0aW9uSWQsY3VycmVudEFjY291bnQuYnVzaW5lc3NHcm91cElkLGN1cnJlbnRBY2NvdW50LmFtc0FjY291bnRJZCkuc3Vic2NyaWJlKCBcbiAgICAgIChyZXNwb25zZTphbnkpID0+IHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzU3RydWN0dXJlQXBpU3VwcG9ydCA9IHJlc3BvbnNlID8gcmVzcG9uc2VbJ3N0cnVjdHVyZUFwaVN1cHBvcnQnXSA6IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5uYXZpZ2F0aW9uLmlzTWFuYWdlZFNlcnZpY2VBY2MgPSByZXNwb25zZSA/IHJlc3BvbnNlWydpc01hbmFnZWRBY2NvdW50J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuY3JlYXRlQXBwRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gICAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gYWZ0ZXIgQVBJIHJlc3BvbnNlXG4gICAgICB9LFxuICAgICAgKGVycm9yOmFueSkgPT57XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc01hbmFnZWRTZXJ2aWNlQWNjID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIGVycm9yXG4gICAgICB9KTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxuXG4gIH1cbiAgXG4gIHB1YmxpYyBzY3JvbGxUb0FjdGl2ZU1lbnUoKXtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmKHRoaXMubGlzdEl0ZW1zICYmIHRoaXMubGlzdEl0ZW1zLmZpbmQoKF8sIGkpID0+ICBfLmlzQWN0aXZlSXRlbSkgIT0gdW5kZWZpbmVkKXtcbiAgICAgICAgdGhpcy5saXN0LnNjcm9sbFRvcCA9IHRoaXMubGlzdEl0ZW1zLmZpbmQoKF8sIGkpID0+ICBfLmlzQWN0aXZlSXRlbSkub2Zmc2V0VG9wO1xuICAgICAgfVxuICAgIH0sIDUwMCk7XG4gIH1cblxuICBwdWJsaWMgaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsaGVhZG1lbnUscGFyZW50TWVudSA9IG51bGwpIHtcbiAgICAvLyBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAvLyBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAvLyBsZXQgY3VycmVudFJvdXRlID0gcm91dGVVcmwuc3BsaXQoJz8nKVswXTtcbiAgICAvLyBsZXQgcm91dGU9bWVudS5yb3V0ZTtcbiAgICAvLyBsZXQgcGFnZU5hbWU7XG4gICAgLy8gaWYocm91dGUpe1xuICAgIC8vIGxldCBzcGxpdGVkVVJMID0gcm91dGUuc3BsaXQoXCIvXCIpO1xuICAgIC8vIHBhZ2VOYW1lID0gc3BsaXRlZFVSTC5sZW5ndGggPjAgPyAgc3BsaXRlZFVSTFtzcGxpdGVkVVJMLmxlbmd0aCAtIDFdIDogcm91dGU7XG4gICAgLy8gfVxuXG4gICAgbGV0IHJvdXRlVXJsID0gdGhpcy5yb3V0ZXIudXJsO1xuICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgIGxldCByb3V0ZT1tZW51LnJvdXRlO1xuICAgIGxldCBwYWdlTmFtZTtcbiAgICBpZihyb3V0ZSl7XG4gICAgICBwYWdlTmFtZSA9IHJvdXRlO1xuICAgIH1cblxuICAgIGlmICgoY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZSB8fCBjdXJyZW50Um91dGUgPT09IFwiL1wiK3BhZ2VOYW1lK1wiL2tleXdvcmQtcmVwb3J0XCIgfHwgY3VycmVudFJvdXRlID09PSBcIi9cIitwYWdlTmFtZStcIi9rZXl3b3JkLXN1Z2dlc3Rpb25zL2F1dG9cIiB8fCBjdXJyZW50Um91dGUgPT09IFwiL1wiK3BhZ2VOYW1lK1wiL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsXCIpICYmIGhlYWRtZW51IT11bmRlZmluZWQpIHtcbiAgICAgIGlmKHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PT09IHVuZGVmaW5lZCl7XG4gICAgICAgIGhlYWRtZW51LmlzQWN0aXZlPXRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PWhlYWRtZW51O1xuICAgICAgfWVsc2V7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51LmlzQWN0aXZlPWZhbHNlO1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZT10cnVlO1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudT1oZWFkbWVudTtcbiAgICAgIH1cbiAgICAgIGlmKHBhcmVudE1lbnUgIT0gbnVsbCl7XG4gICAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBwYXJlbnRNZW51LmlkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfWVsc2UgaWYobWVudSAmJiBtZW51Lm1hdGNoUm91dGVzICYmIHRoaXMucm91dGVyLnVybCl7XG4gICAgICBpZiAobWVudS5tYXRjaFJvdXRlcy5pbmRleE9mKHRoaXMucm91dGVyLnVybC5zcGxpdCgnPycpWzBdKSA+IC0xKSB7XG4gICAgICAgIGhlYWRtZW51LmlzQWN0aXZlPXRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51PWhlYWRtZW51O1xuXG4gICAgICAgIGlmKHBhcmVudE1lbnUgIT0gbnVsbCl7XG4gICAgICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IHBhcmVudE1lbnUuaWQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBlbHNle1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2V7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGtlZXBNZW51RXhwYW5kZWQocGFyZW50TWVudUlkOnN0cmluZykge1xuICAgIGlmKHBhcmVudE1lbnVJZC5pbmRleE9mKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDAgICl7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWxsTWVudUNvbGxhcHNlKCl7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb2RmaWNhdGlvbkRhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICBsZXQgY29uZmlncyA9IHRoaXMubmF2aWdhdGlvbi5nZXRUeXBlU3RhdHVzQ29uZmlncygpO1xuXHRcdGxldCBvcmRlciA9IE9iamVjdC5rZXlzKGNvbmZpZ3MpO1xuXHRcdGlmKG9yZGVyLmluZGV4T2YoZGF0YS50eXBlKSA+IC0xKXtcblx0XHRcdGRhdGEuYWN0aXZlID0gY29uZmlnc1tkYXRhLnR5cGVdID8gY29uZmlnc1tkYXRhLnR5cGVdIDogZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gdGhpcy5zaG93TWVudUljb24oKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkID09ICdhZHNfYW1hem9uX2RzcCcpe1xuICAgICAgdGhpcy5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpbnB1dHMgY2hhbmdlXG4gIH1cblxuICBwdWJsaWMgZ29Ub0FwcGxpY2F0aW9uKGl0ZW0pIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkQXBwSWQnKTtcbiAgICBpZihpdGVtLmRlZmF1bHR1cmwpe1xuICAgICAgdGhpcy5nb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgaXRlbS5pZCk7XG4gICAgfWVsc2V7XG4gICAgICBpZihpdGVtLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICBpZihpdGVtLmNoaWxkcmVuWzBdLmNoaWxkcmVuICYmIGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZ29Ub0FwcERlZmF1bHRQYWdlKGl0ZW0uY2hpbGRyZW5bMF0sIGl0ZW0uaWQpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZShpdGVtLCBpdGVtLmlkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ29Ub01lbnVMaW5rKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmxpbmspIHtcbiAgICAgIHdpbmRvdy5vcGVuKGl0ZW0ubGluaywgJ19ibGFuaycpO1xuICAgICAgY29uc3QgcHJhbXMgPSB7XG4gICAgICAgIFwibG9jYXRpb25cIjogbG9jYXRpb24uaHJlZixcbiAgICAgICAgXCJBcHBOYW1lXCI6IGl0ZW0/Lm5hbWUsXG4gICAgICAgIFwibW9kdWxlX25hbWVcIiA6IG51bGxcbiAgICAgIH1cbiAgICAgIHRoaXMubWl4cGFuZWwucHJvZHVjdFRyYWNrRXZlbnQoXCJQYWdlIFZpZXdlZFwiLHByYW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYodGhpcy5zaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uKXtcbiAgICAgIHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgYXBwSWQpIHtcbiAgICB0aGlzLm5hdk1lbnVzQ29tcG9uZW50Lm9uU2VsZWN0TWVudShldmVudCwgaXRlbSwgYXBwSWQpO1xuICB9XG5cbiAgcHVibGljIGhpZGVNZW51Rm9yV0woKXtcbiAgICAgIGxldCBpc09yZ1NldHRpbmc7XG4gICAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlID09PSAnSUFDX0JSQU5EX1JFQURfT05MWScgfHwgKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmxlbmd0aCA9PSAwKSl7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfWVsc2V7XG4gICAgICAgIGlmICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgaXNPcmdTZXR0aW5nID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MuZmlsdGVyKGZ1bmN0aW9uKG9yZ1NldHRpbmcpe1xuICAgICAgICAgICAgaWYoIG9yZ1NldHRpbmcuc2V0dGluZyA9PT0gJ0lBQ19JTlNJR0hUUycgJiYgKCFvcmdTZXR0aW5nLnZhbHVlIHx8IG9yZ1NldHRpbmcudmFsdWUgJiYgb3JnU2V0dGluZy52YWx1ZSA9PSAnQUNUSVZFJykpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIChpc09yZ1NldHRpbmcgIT0gbnVsbCAmJiAoIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLnNpdGVJZCA+IDExIHx8IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWyd1c2VySW5mbyddLnJvbGUgPT09ICdJQUNfQlJBTkRfUkVBRF9PTkxZJykpO1xuICAgICAgfVxuICB9XG5cbiAgLy8gcHVibGljIGlzQXBwbGljYXRpb25BY3RpdmUocGFyZW50TWVudUlkKSB7XG4gIC8vICAgaWYocGFyZW50TWVudUlkLmluZGV4T2YodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPj0gMCAgJiYgdGhpcy5pc0dsb2JhbFNldHRpbmdzTWVudUFjdGl2ZSl7XG4gIC8vICAgICByZXR1cm4gdHJ1ZTtcbiAgLy8gICB9XG4gIC8vICAgZWxzZXtcbiAgLy8gICAgIHJldHVybiBmYWxzZTtcbiAgLy8gICB9XG4gIC8vIH1cblxuICBcbn1cbiIsIjxkaXYgaWQ9XCJsb2FkZXJfc292XCI+XG4gIDxkaXYgaWQ9XCJsb2FkaW5nX2RpdlwiICpuZ0lmPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mb1wiPlxuICAgIDxkaXY+XG4gICAgICA8ZGl2IGlkPVwibG9hZGVyXCIgKm5nSWY9XCJzaWRlSWRJbmZvICE9PSAxXCJcbiAgICAgICAgY2xhc3M9XCJzaXRlX3t7c2lkZUlkSW5mb319XCI+XG4gICAgICAgIDxpbWcgc3JjPVwie3thcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvfX1cIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBpZD1cImxvYWRlcl9pbWdcIiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICA8aW1nIHNyYz1cIi9hc3NldHMvaW1hZ2VzL2hhcHB5X2V5ZXNfY2xvc2VkX3NtYWxsLnN2Z1wiPlxuICAgICAgPC9kaXY+XG4gICAgICA8bWF0LXByb2dyZXNzLWJhciBjbGFzcz1cImxvYWRlcl9wcm9ncmVzcy1iYXItcG9zaXRpb25cIiBtb2RlPVwiaW5kZXRlcm1pbmF0ZVwiPjwvbWF0LXByb2dyZXNzLWJhcj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPGRpdiBmeExheW91dD1cImNvbHVtblwiIGZ4RmxleEZpbGwgKm5nSWY9XCJlcnJvck1zZy5sZW5ndGggPT0gMCBlbHNlIGVycm9yQmxvY2tcIiB0cmFuc2xhdGU9XCJub1wiIGlkPVwiYW5ndWxhci0xNi12ZXJzaW9uXCIgW25nQ2xhc3NdPVwieyduYXZtZW51LWV4cGFuZGVkJyA6ICFuYXZFeHBhbmRlZH1cIj5cbiAgPG1hdC10b29sYmFyIGNsYXNzPVwicG9ydGFsLXNpZGUtbWVudS10b3AtdG9vbGJhclwiPlxuICAgIDxtYXQtdG9vbGJhci1yb3cgZnhMYXlvdXQ9XCJyb3dcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJwb3J0YWwtZm9yZ2V0LWhlYWRpbmctY2FyZFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtbG9nby1ob2xkZXJcIj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyAhPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmF2aWNvblwiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2RXhwYW5kZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb25cIiAvPlxuICAgICAgICAgICAgICA8aW1nIFtzcmNdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8ubG9nb1wiIHN0eWxlPVwiZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICAqbmdJZj1cIm5hdkV4cGFuZGVkXCIgY2xhc3M9XCJsb2dvLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNpZGVJZEluZm8gPT0gMVwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9pbnRlbnR3aXNlbG9nby5zdmdcIiBzdHlsZT1cIndpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7ZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwiIW5hdkV4cGFuZGVkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uIGludGVudHdpc2UtZmF2aWNvblwiPlxuICAgICAgICAgICAgICA8aW1nIHNyYz1cImFzc2V0cy9sb2dvcy9JbnRlbnR3aXNlLnN2Z1wiICBzdHlsZT1cImRpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCIgW2FsdF09XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5maXJzdE5hbWVcIiBjbGFzcz1cImxvZ28tZGltZW5zaW9uIGludGVudHdpc2UtbG9nb1wiPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvbWF0LXRvb2xiYXItcm93PlxuICA8L21hdC10b29sYmFyPlxuICA8IS0tIDxkaXYgY2xhc3M9XCJzaWRlYmFyLWNvbGxhcHNlLWljb25cIiAqbmdJZj1cImlzQWRtaW5Sb2xlXCI+XG4gICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSBjbGFzcz1cInNpZGVtZW51LWljb24tdG9wXCIgKGNsaWNrKT1cImFsbE1lbnVDb2xsYXBzZSgpXCI+XG4gICAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZFwiPmtleWJvYXJkX2Fycm93X3VwPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj4gLS0+XG4gIDxkaXYgKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkICYmICFpbkNvbnRleHRJbnNpZ2h0c1dMQXBwXCIgY2xhc3M9XCJhcHAtbWVudS1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLW1lbnUtYnV0dG9uIHNlbGVjdGVkLWFwcC1idXR0b25cIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID09IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b24gc2VsZWN0ZWQtYXBwLWJ1dHRvblwiIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJhcHBNZW51XCIgKm5nSWY9XCJ0b0Rpc3BsYXlBcHBsaWNhdGlvbnMgJiYgdG9EaXNwbGF5QXBwbGljYXRpb25zLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYXBwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFwcC1tZW51XCIgW2JhY2tkcm9wQ2xhc3NdPVwiJ2FsbC1tb2R1bGUtbWVudXMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtb3B0aW9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaGVhZG1lbnUucGFuZWxPcGVuU3RhdGV9XCIgY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiICpuZ0lmPVwiaGVhZG1lbnUubmFtZSAhPSAnQWNjb3VudCBNYW5hZ2VtZW50J1wiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJzaWRlTmF2SWNvbiBjaGlsZHJlbi1pY29uXCIgW25nQ2xhc3NdPVwiaGVhZG1lbnUubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpXCI+PC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gY2hpbGRyZW4taWNvbiBzaWRlLW1lbnUtaWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChoZWFkbWVudS5pY29uIHx8ICdkZWZhdWx0LWljb24uc3ZnJylcIi8+XG4gICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLXNpZG5hdi1tZW51XCIgZnhGbGV4PVwibm9ncm93IG5vc2hyaW5rXCIgYXBwU2Nyb2xsYWJsZSBbbmdDbGFzc109XCJ7J3doaXRlTGFiZWxTaWRlbmF2JyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCI+XG4gICAgPG1hdC1leHBhbnNpb24tcGFuZWwgW2V4cGFuZGVkXT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID09IHRydWVcIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiXG4gICAgICAqbmdGb3I9XCJsZXQgaGVhZG1lbnUgb2YgdG9EaXNwbGF5QXBwbGljYXRpb25zXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50QXBwLmlkID09PSBoZWFkbWVudS5pZCB9XCJcbiAgICAgIChvcGVuZWQpPVwiaGVhZG1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAqbmdJZj1cImhlYWRtZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgIChjbGljayk9XCJnb1RvQXBwbGljYXRpb24oaGVhZG1lbnUpXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25VcmwoaGVhZG1lbnUuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInNpZGVtZW51LWhlYWRpbmcgYXBwbGljYXRpb25NZW51XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGhlYWRtZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRtZW51LmJhZGdlXCIgY2xhc3M9XCJiYWRnZS10ZXh0IHNvdi1iZXRhLXBvc2l0aW9uXCIgW2lubmVySFRNTF09XCJoZWFkbWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImhlYWRtZW51LWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhaGVhZG1lbnUucGFuZWxPcGVuU3RhdGVcIj5hcnJvd19yaWdodDwvbWF0LWljb24+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBoZWFkbWVudS5jaGlsZHJlblwiIFthdHRyLmlkXT1cImhlYWRtZW51LmlkXCIgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IG1lbnUuY2hpbGRyZW4gfVwiPlxuICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cIm1lbnUuY2hpbGRyZW4gZWxzZSBsaXN0TWVudVwiIGNsYXNzPVwiZGl2LWJhY2tncm91bmQtY29sb3Itd2hpdGVcIiBbZXhwYW5kZWRdPVwibWVudS5pZCA9PSBhY3RpdmVQYW5lbFwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmVQYW5lbCc6IG1lbnUuaWQgPT0gYWN0aXZlUGFuZWwgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAob3BlbmVkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IG1lbnUucGFuZWxPcGVuU3RhdGUgPT09IHRydWUsICdoZWFkZXItYm9yZGVyLW5vbmUnOiBtZW51LnBhbmVsT3BlblN0YXRlID09PSBmYWxzZSB9XCI+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8aW1nIHN0eWxlPVwibWFyZ2luLXJpZ2h0OiAxMHB4XCIgKm5nSWY9XCIobWVudS5pY29uICYmIG1lbnUuaWNvbiAhPSAnJykgZWxzZSBkaXNwbGF5SW5pdGlhbHNcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBzaWRlLW1lbnUtaWNvbi1jb2xvclwiIFtzcmNdPVwiZ2V0SWNvblVybChtZW51Lmljb24pXCIgLz5cbiAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5SW5pdGlhbHM+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVtZW51LXN5bWJvbFwiPlxuICAgICAgICAgICAgICAgICAge3ttZW51LnN5bWJvbH19XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgICAgIDxoMyBjbGFzcz1cIm1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCI+PHNwYW4gY2xhc3M9XCJtZW51LW5hbWUtZXhwYW5kYWJsZVwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51KVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwibWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImNoaWxkcmVuLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWItY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwibWVudS5wYW5lbE9wZW5TdGF0ZVwiPmtleWJvYXJkX2Fycm93X2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8IS0tIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cbiAgICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0Zvcj1cImxldCBjaGlsZE1lbnUgb2YgbWVudS5jaGlsZHJlbjtcIiBjbGFzcz1cInN1Yi1jaGlsZC1tZW51XCI+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoY2hpbGRNZW51LGhlYWRtZW51LG1lbnUpXCIgW2l0ZW1dPVwiY2hpbGRNZW51XCJcbiAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCIgW3BhcmVudFBhbmVsSWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbGlzdE1lbnU+XG4gICAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwiaGVhZG1lbnUuaWRcIlxuICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgaWQ9XCJ7e2hlYWRtZW51LmlkfX1cIiBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoaGVhZG1lbnUsaGVhZG1lbnUpXCJcbiAgICAgICAgICAgIFtpdGVtXT1cImhlYWRtZW51XCIgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBvcnRhbC1nbG9iYWwtc2V0dGluZy1tZW51IHN0aWNreV9ib3R0b21fbWVudVwiICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIiBjbGFzcz1cImFwcC1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1tZW51LUxpbmstYnV0dG9uXCIgKm5nSWY9XCJ0b0Rpc3BsYXlMaW5rTWVudSAmJiB0b0Rpc3BsYXlMaW5rTWVudS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lbnVMaW5rIG9mIHRvRGlzcGxheUxpbmtNZW51XCIgaWQ9XCJ7e21lbnVMaW5rLmlkICsgJ21lbnUnfX1cIiBbc3R5bGUubWFyZ2luLWxlZnRdPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCA/ICcwcHgnIDogJzVweCdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcC1uYW1lXCIgKGNsaWNrKT1cImdvVG9NZW51TGluayhtZW51TGluaylcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxuICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibWVudUxpbms/Lm5hbWVcIiBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhtZW51TGluayl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBjaGlsZHJlbi1pY29uXCIgW3NyY109XCJnZXRJY29uVXJsKG1lbnVMaW5rLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwic2hvd1RpdGxlXCIgY2xhc3M9XCJhcHAtbmFtZS1sYWJlbFwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51TGluaylcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgIXNpZGVuYXYub3BlbmVkXCI+XG4gICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJtZW51TGluaz8ubmFtZVwiIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKG1lbnVMaW5rKX19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgY2xhc3M9XCJpY29uIHNpZGUtbWVudS1pY29uIGNoaWxkcmVuLWljb25cIiBbc3JjXT1cImdldEljb25VcmwobWVudUxpbmsuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9PSB0cnVlIHx8IGV4cGFuZEdsb2JhbFNldHRpbmdzXCIgaGlkZVRvZ2dsZT1cInRydWVcIiBpZD1cInt7c2V0dGluZ3NIZWFkTWVudS5pZCArICdtZW51J319XCJcbiAgICAgICpuZ0Zvcj1cImxldCBzZXR0aW5nc0hlYWRNZW51IG9mIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2V0dGluZ3NIZWFkTWVudS5pc0FjdGl2ZSB9XCJcbiAgICAgIChvcGVuZWQpPVwic2lkZW5hdi5vcGVuKCk7IHNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7IGV4cGFuZEdsb2JhbFNldHRpbmdzID0gZmFsc2VcIiBbc3R5bGUuYm9yZGVyXT1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgPyAnJyA6ICdub25lICFpbXBvcnRhbnQnXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS50eXBlID09ICdleHBhbmRhYmxlJyBlbHNlIHNpbmdsZU1lbnVzXCIgY2xhc3M9XCJtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkID8gJycgOiAnc3RpY2t5LWJvdHRvbS1jbG9zZWQnXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25Vcmwoc2V0dGluZ3NIZWFkTWVudS5pY29uIHx8ICdzZXR0aW5ncy1pY29uLnN2ZycpXCIgLz5cbiAgICAgICAgICA8aDMgY2xhc3M9XCJzaWRlbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uTWVudVwiPlxuICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihzZXR0aW5nc0hlYWRNZW51KVwiPjwvbGFiZWw+XG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIlxuICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cInNldHRpbmdzSGVhZE1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgIDxtYXQtcGFuZWwtZGVzY3JpcHRpb24gY2xhc3M9XCJzZXR0aW5nLWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCIhc2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJtYWluLWNoZXZyb24taWNvblwiICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgIDxtYXQtbGlzdCBjbGFzcz1cInBhZGRpbmctMHB4XCIgKm5nRm9yPVwibGV0IG1lbnUgb2Ygc2V0dGluZ3NIZWFkTWVudS5jaGlsZHJlblwiIFthdHRyLmlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICBbbmdDbGFzc109XCJ7J2dyb3VwLW5hdi1tZW51JzogbWVudS5jaGlsZHJlbiB9XCI+XG4gICAgICAgIDxtYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsc2V0dGluZ3NIZWFkTWVudSlcIiBbaXRlbV09XCJtZW51XCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCJcbiAgICAgICAgICAgIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICA8L21hdC1saXN0PlxuICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVNZW51cz5cbiAgICAgICAgPG1hdC1saXN0PlxuICAgICAgICAgIDxsbmMtbmF2LW1lbnVzIFthdHRyLmlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIiBhcHBPZmZzZXRUb3BcbiAgICAgICAgICAgIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKHNldHRpbmdzSGVhZE1lbnUsc2V0dGluZ3NIZWFkTWVudSlcIiBbaXRlbV09XCJzZXR0aW5nc0hlYWRNZW51XCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJzZXR0aW5nc0hlYWRNZW51LmlkXCJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKHNldHRpbmdzSGVhZE1lbnUpfX1cIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1saXN0PlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8L21hdC1leHBhbnNpb24tcGFuZWw+XG5cbiAgPC9kaXY+XG48L2Rpdj5cbjxuZy10ZW1wbGF0ZSAjZXJyb3JCbG9jaz5cbiAgPGRpdiBjbGFzcz1cImVycm9yTXNnXCI+XG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiPmVycm9yPC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiZXJyb3JUeHRcIj57e2Vycm9yTXNnfX08L3NwYW4+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPGEgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBleHBhbmRlZC1oYW1idXJnZXItaWNvblwiIHRpdGxlPVwiVG9nZ2xlIE1lbnVcIiAoY2xpY2spPVwic2lkZW5hdi5jbG9zZSgpO2FsbE1lbnVDb2xsYXBzZSgpOyBcIj5cbiAgPG1hdC1pY29uIGNsYXNzPVwibGVmdC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19sZWZ0PC9tYXQtaWNvbj5cbjwvYT5cblxuPCEtLSA8aW1nICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiBjbGFzcz1cImZhdmljb24tZGltZW5zaW9uXCIgc3JjPXt7YXBwbGljYXRpb25EZXRhaWxzLnNpZGViYXJJbmZvLmZhdmljb259fSBhbHQ9XCJJbnRlbnR3aXNlIEZhdmljb25cIiAvPlxuICA8YSAqbmdJZj1cInNob3dNZW51SWNvbigpXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIGNsYXNzPVwiaGFtYnVyZ2VyLWljb24gY29sbGFwc2VkLWhhbWJ1cmdlclwiXG4gICAgKGNsaWNrKT1cInNpZGVuYXYub3BlbigpXCI+XG4gICAgPG1hdC1pY29uIGNsYXNzPVwicmlnaHQtY2hldnJvbi1pY29uXCI+a2V5Ym9hcmRfYXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICA8L2E+IC0tPiJdfQ==
|
|
1430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi9wcm9qZWN0cy9hcHBsaWNhdGlvbi1zaWRlYmFyL3NyYy9saWIvYXBwbGljYXRpb24tc2lkZWJhci1yZXZpc2VkLnRlbXBsYXRlLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxNQUFNLEVBQWUsZUFBZSxFQUFFLGFBQWEsRUFBUyxNQUFNLGlCQUFpQixDQUFDO0FBQzdGLE9BQU8sRUFBRSxTQUFTLEVBQXFCLEtBQUssRUFBRSx1QkFBdUIsRUFBRSxZQUFZLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqSSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQTtBQUNsRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDL0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDhCQUE4QixDQUFBO0FBQzdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFBO0FBQ25FLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUVwRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM5RCxPQUFPLEVB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SSxJQUFJLElBQUksQ0FBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsV0FBVyxDQUFDLE1BQU0sR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FBQyxDQUFDLENBQUM7U0FDM0o7SUFDTCxDQUFDOzJIQS9nRFUsMkJBQTJCOytHQUEzQiwyQkFBMkIsOEtBTzNCLG1CQUFtQix3S0FEaEIsa0JBQWtCLHFFQzlCbEMsMHU5QkFvYUE7OzRGRDVZYSwyQkFBMkI7a0JBTnZDLFNBQVM7K0JBQ0Usd0JBQXdCLG1CQUdqQix1QkFBdUIsQ0FBQyxNQUFNO3dUQUl0QyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUU0QixTQUFTO3NCQUExQyxZQUFZO3VCQUFDLGtCQUFrQjtnQkFDQSxJQUFJO3NCQUFuQyxTQUFTO3VCQUFDLG1CQUFtQjtnQkFDRSxpQkFBaUI7c0JBQWhELFNBQVM7dUJBQUMsbUJBQW1CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0b3JSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJvdXRlciwgUm91dGVyRXZlbnQsIE5hdmlnYXRpb25TdGFydCwgTmF2aWdhdGlvbkVuZCwgUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uRGVzdHJveSwgSW5wdXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBWaWV3Q2hpbGRyZW4sIFF1ZXJ5TGlzdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9hcHBsaWNhdGlvbi1zaWRlYmFyLnNlcnZpY2UnXG5pbXBvcnQgeyBNYXRTaWRlbmF2IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2lkZW5hdic7XG5pbXBvcnQgeyBhcHBEZXRhaWxzIH0gZnJvbSAnLi9hcHAtZGV0YWlscydcbmltcG9ydCB7IE9mZnNldFRvcERpcmVjdGl2ZSwgU2Nyb2xsYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4vbmF2LW1lbnUuZGlyZWN0aXZlJztcbmltcG9ydCB7IFJlc3RBcGlTZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy9yZXN0LWFwaS5zZXJ2aWNlcydcbmltcG9ydCB7IE5hdk1lbnVzQ29tcG9uZW50IH0gZnJvbSAnLi9uYXYtbWVudXMvbmF2LW1lbnVzLmNvbXBvbmVudCdcbmltcG9ydCB7IENvb2tpZVNlcnZpY2UgfSBmcm9tICduZ3gtY29va2llLXNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi9zZXJ2aWNlcy90cmFuc2xhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IEdMT0JBTF9MSVNUIH0gZnJvbSAnLi9uYXZtZW51MSc7XG5pbXBvcnQgeyBjb25zdGFudHMgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBNaXhwYW5lbFNlcnZpY2UgfSBmcm9tICcuL3NlcnZpY2VzL21peHBhbmVsLnNlcnZpY2UnO1xuaW1wb3J0IHsgRG9tU2FuaXRpemVyLCBTYWZlSHRtbCB9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXInO1xuaW1wb3J0IHsgUmV2aXNlZEFwcFRhYnNTZWN0aW9uLCBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXAsIFJldmlzZWROYXZNZW51SXRlbSwgUmV2aXNlZE5hdmlnYXRpb25Db25maWcsIFJldmlzZWROYXZpZ2F0aW9uU3RhdGUsIFJldmlzZWRTZWN0aW9uIH0gZnJvbSAnLi9yZXZpc2VkLW5hdmlnYXRpb24nO1xuaW1wb3J0IHsgZm9ya0pvaW4sIG9mIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xuYy1uYXZpZ2F0aW9uLXNpZGViYXInLFxuICB0ZW1wbGF0ZVVybDonLi9hcHBsaWNhdGlvbi1zaWRlYmFyLXJldmlzZWQudGVtcGxhdGUuaHRtbCcsXG4gIHN0eWxlVXJsczpbJy4vYXBwbGljYXRpb24tc2lkZWJhci5zY3NzJywnYXBwbGljYXRpb24tc2lkZWJhci50aGVtZS5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uU2lkZWJhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcblxuICBASW5wdXQoKSBhcHBsaWNhdGlvbkRldGFpbHMgOmFwcERldGFpbHM7XG5cbiAgQElucHV0KCkgc2lkZW5hdjogTWF0U2lkZW5hdjtcblxuICBAVmlld0NoaWxkcmVuKE9mZnNldFRvcERpcmVjdGl2ZSkgbGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgQFZpZXdDaGlsZChTY3JvbGxhYmxlRGlyZWN0aXZlKSBsaXN0OiBTY3JvbGxhYmxlRGlyZWN0aXZlO1xuICBAVmlld0NoaWxkKCduYXZNZW51c0NvbXBvbmVudCcpIG5hdk1lbnVzQ29tcG9uZW50Ok5hdk1lbnVzQ29tcG9uZW50O1xuXG4gIGFjY291bnROYW1lOiBhbnk7XG4gIGFjdGl2ZVBhbmVsOiBhbnk7XG4gIG5hdkV4cGFuZGVkOmJvb2xlYW4gPSBmYWxzZTtcbiAgb2xkTGlzdEl0ZW1zOiBRdWVyeUxpc3Q8T2Zmc2V0VG9wRGlyZWN0aXZlPjtcbiAgaXNBZG1pblJvbGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgYWRtaW5Sb2xlcyA9IFsnU1VQRVJfQURNSU4nLCdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgY3VycmVudEFwcDogYW55O1xuICBzaWRlTmF2U3RhdHVzU3Vic2NyaXB0aW9uOiBhbnk7XG4gIHNpZGVOYXZDbG9zZWRTdGFydFN1YnNjcmlwdGlvbjogYW55O1xuICBteU9ic2VydmVyOiBhbnk7XG4gIGV4cGFuZEdsb2JhbFNldHRpbmdzOiBhbnkgPSBmYWxzZTtcbiAgaW5Db250ZXh0SW5zaWdodHNXTEFwcDogYm9vbGVhbjtcbiAgcHVibGljIHRoZW1lUG9pbnQ6IHN0cmluZzsgLy8gUHVibGljIHZhcmlhYmxlIGZvciB0aGVtZSBwb2ludFxuICBzaG93VGl0bGU6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSByZXZpc2VkU2VjdGlvbkljb25DYWNoZToge1tzZWN0aW9uSWQ6IHN0cmluZ106IFNhZmVIdG1sIHwgc3RyaW5nfSA9IHt9O1xuXG4gIC8vIGlzR2xvYmFsU2V0dGluZ3NNZW51QWN0aXZlOmJvb2xlYW4gPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyBuYXZpZ2F0aW9uOiBBcHBsaWNhdGlvblNpZGViYXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXG4gICAgcHJpdmF0ZSBSZXN0QXBpU2VydmljZTogUmVzdEFwaVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjb29raWU6IENvb2tpZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBjZHJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGlvbjpUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSBtaXhwYW5lbDogTWl4cGFuZWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgc2FuaXRpemVyOiBEb21TYW5pdGl6ZXJcbiAgICApIHtcbiAgICAgIHRoaXMubXlPYnNlcnZlciA9IHRoaXMucm91dGVyLmV2ZW50cy5zdWJzY3JpYmUoKGV2ZW50KSA9PiB7XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkge1xuICAgICAgICAgIHRoaXMuZXhwYW5kR2xvYmFsU2V0dGluZ3MgPSB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZSAmJiB0aGlzLnJvdXRlci5nZXRDdXJyZW50TmF2aWdhdGlvbigpLmV4dHJhcy5zdGF0ZS5leHBhbmRQYW5lbDsgICAgICAgIFxuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25FbmQpIHtcbiAgICAgICAgICBpZiAodGhpcy5pc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpICYmIHRoaXMucmV2aXNlZFNlY3Rpb25zICYmIHRoaXMucmV2aXNlZFNlY3Rpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRDdXJyZW50TWVudU9ubHkodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgICAgICAgIHRoaXMucmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKTtcbiAgICAgICAgICAgIHRoaXMubG9nT3B0aW1pemVEZWJ1Z1N0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTWVudUlmVmlzaWJsZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnN5bmNHbG9iYWxTZXR0aW5nc1BhbmVsT3BlblRvQWN0aXZlUm91dGUoKTtcbiAgICAgICAgICAvLyBMZWdhY3kgbmF2ICsgbmVzdGVkIHBhbmVsIGV4cGFuc2lvbiAoYGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZGApIGRlcGVuZCBvbiByb3V0ZTsgT25QdXNoIG5lZWRzIGEgdGljayBhZnRlciBuYXZpZ2F0ZS5cbiAgICAgICAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIFxuICAgICAgLy8gRGV0ZXJtaW5lIHRoZW1lIHBvaW50IGJhc2VkIG9uIGRvbWFpblxuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gIH1cblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyB0aGUgdGhlbWUgcG9pbnQgYmFzZWQgb24gdGhlIGN1cnJlbnQgZG9tYWluXG4gICAqIFVzZXMgU1RBR0lOR19USEVNRV9QT0lOVCBmb3IgbG9jYWwsIGhlcm9rdSwgb3IgYXBwdGVzdCBkb21haW5zXG4gICAqIFVzZXMgUFJPRF9USEVNRV9QT0lOVCBmb3IgYWxsIG90aGVyIGRvbWFpbnNcbiAgICovXG4gIHByaXZhdGUgZGV0ZXJtaW5lVGhlbWVQb2ludCgpOiB2b2lkIHtcbiAgICBjb25zdCBjdXJyZW50RG9tYWluID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgXG4gICAgLy8gQ2hlY2sgaWYgZG9tYWluIGNvbnRhaW5zIGxvY2FsLCBoZXJva3UsIG9yIGFwcHRlc3RcbiAgICBjb25zdCBpc1N0YWdpbmdEb21haW4gPSBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdsb2NhbCcpIHx8IFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudERvbWFpbi5pbmNsdWRlcygnaGVyb2t1JykgfHwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCdhcHB0ZXN0JykgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnREb21haW4uaW5jbHVkZXMoJ2xvY2FsaG9zdCcpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50RG9tYWluLmluY2x1ZGVzKCcxMjcuMC4wLjEnKTtcbiAgICBcbiAgICBpZiAoaXNTdGFnaW5nRG9tYWluKSB7XG4gICAgICB0aGlzLnRoZW1lUG9pbnQgPSBjb25zdGFudHMuU1RBR0lOR19USEVNRV9CVUNLRVQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGhlbWVQb2ludCA9IGNvbnN0YW50cy5QUk9EX1RIRU1FX0JVQ0tFVDtcbiAgICB9XG4gICAgXG4gICAgY29uc29sZS5sb2coYFRoZW1lIHBvaW50IGRldGVybWluZWQ6ICR7dGhpcy50aGVtZVBvaW50fSBmb3IgZG9tYWluOiAke2N1cnJlbnREb21haW59YCk7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGdldHRlciB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgdGhlbWUgcG9pbnRcbiAgICogQHJldHVybnMgVGhlIGN1cnJlbnQgdGhlbWUgcG9pbnQgVVJMXG4gICAqL1xuICBwdWJsaWMgZ2V0VGhlbWVQb2ludCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRoZW1lUG9pbnQ7XG4gIH1cblxuICAvKipcbiAgICogUHVibGljIGdldHRlciB0byBjaGVjayBpZiBjdXJyZW50IGVudmlyb25tZW50IGlzIHN0YWdpbmdcbiAgICogQHJldHVybnMgVHJ1ZSBpZiBzdGFnaW5nIGVudmlyb25tZW50LCBmYWxzZSBpZiBwcm9kdWN0aW9uXG4gICAqL1xuICBwdWJsaWMgaXNTdGFnaW5nRW52aXJvbm1lbnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMudGhlbWVQb2ludCA9PT0gY29uc3RhbnRzLlNUQUdJTkdfVEhFTUVfQlVDS0VUO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hbnVhbGx5IHVwZGF0ZSB0aGVtZSBwb2ludCBhbmQgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAqIEBwYXJhbSBmb3JjZVN0YWdpbmcgLSBGb3JjZSBzdGFnaW5nIHRoZW1lIHBvaW50IGlmIHRydWVcbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUaGVtZVBvaW50KGZvcmNlU3RhZ2luZz86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAoZm9yY2VTdGFnaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMudGhlbWVQb2ludCA9IGZvcmNlU3RhZ2luZyA/IGNvbnN0YW50cy5TVEFHSU5HX1RIRU1FX0JVQ0tFVCA6IGNvbnN0YW50cy5QUk9EX1RIRU1FX0JVQ0tFVDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBVUkwgZm9yIGFuIGFzc2V0IHVzaW5nIHRoZSBjdXJyZW50IHRoZW1lIHBvaW50XG4gICAqIEBwYXJhbSBhc3NldFBhdGggLSBUaGUgYXNzZXQgcGF0aCAoZS5nLiwgJ2xvZ29zL2xvZ28ucG5nJylcbiAgICogQHJldHVybnMgVGhlIGZ1bGwgVVJMIGZvciB0aGUgYXNzZXRcbiAgICovXG4gIHB1YmxpYyBnZXRBc3NldFVybChhc3NldFBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLnRoZW1lUG9pbnQpIHtcbiAgICAgIHRoaXMuZGV0ZXJtaW5lVGhlbWVQb2ludCgpO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy50aGVtZVBvaW50fS8ke2Fzc2V0UGF0aH1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZnVsbCBVUkwgZm9yIGFuIGljb24gdXNpbmcgdGhlIGN1cnJlbnQgdGhlbWUgcG9pbnRcbiAgICogQHBhcmFtIGljb25OYW1lIC0gVGhlIGljb24gbmFtZSAoZS5nLiwgJ21lbnUtaWNvbi5zdmcnKVxuICAgKiBAcmV0dXJucyBUaGUgZnVsbCBVUkwgZm9yIHRoZSBpY29uIHdpdGggdGhlbWUvYXNzZXRzL2ljb25zLyBwYXRoXG4gICAqL1xuICBwdWJsaWMgZ2V0SWNvblVybChpY29uTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMudGhlbWVQb2ludCkge1xuICAgICAgdGhpcy5kZXRlcm1pbmVUaGVtZVBvaW50KCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aGlzLnRoZW1lUG9pbnR9L3RoZW1lL2Fzc2V0cy9pY29ucy8ke2ljb25OYW1lfWA7XG4gIH1cblxuICBwYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICBtYWluUGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgcHVibGljIHByZXZBY3RpdmVIZWFkTWVudTtcbiAgcHVibGljIHRvRGlzcGxheUFwcGxpY2F0aW9ucyA9IFtdO1xuICBwdWJsaWMgdG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51OiBhbnlbXTtcbiAgcHVibGljIHRvRGlzcGxheUxpbmtNZW51OiBhbnlbXTtcbiAgcHVibGljIHJldmlzZWROYXZpZ2F0aW9uU3RhdGU6IFJldmlzZWROYXZpZ2F0aW9uU3RhdGU7XG4gIHB1YmxpYyByZXZpc2VkU2VjdGlvbnM6IFJldmlzZWRTZWN0aW9uW10gPSBbXTtcbiAgcHVibGljIHJldmlzZWRTZWN0aW9uU3RhdGU6IHtbc2VjdGlvbklkOiBzdHJpbmddOiBib29sZWFufSA9IHt9O1xuICAvKiogR3JvdXAtbGV2ZWwgZXhwYW5zaW9uIChrZXk6IHNlY3Rpb25JZF9ncm91cElkKS4gT25seSBmb3IgZ3JvdXBlZC1tZW51cyB3aXRoIGEgZ3JvdXAgdGl0bGUuICovXG4gIHB1YmxpYyByZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlOiB7W3NlY3Rpb25JZF9ncm91cElkOiBzdHJpbmddOiBib29sZWFufSA9IHt9O1xuICBwdWJsaWMgcmV2aXNlZFNlbGVjdGVkQXBwQnlTZWN0aW9uOiB7W3NlY3Rpb25JZDogc3RyaW5nXTogc3RyaW5nfSA9IHt9O1xuICBwdWJsaWMgZXJyb3JNc2c6c3RyaW5nO1xuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10pe1xuICAgICAgbGV0IHVzZXJSb2xlID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZTtcbiAgICAgIHRoaXMuaXNBZG1pblJvbGUgPSB0aGlzLmFkbWluUm9sZXMuaW5kZXhPZih1c2VyUm9sZSkgPiAtMSA/IHRydWUgOiBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy5jYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCk7XG4gICAgLy8gY29uc3QgY29uZmlncyA9IHRoaXMucm91dGVyLmNvbmZpZztcbiAgICAvLyBmb3IobGV0IGNvbmZpZyBvZiBjb25maWdzKXtcbiAgICAvLyAgIGlmKGNvbmZpZy5jaGlsZHJlbil7XG4gICAgLy8gICAgIGZvcihsZXQgY2hpbGQgb2YgY29uZmlnLmNoaWxkcmVuKXtcbiAgICAvLyAgICAgICBjaGlsZC5jYW5BY3RpdmF0ZSA9IFtDYW5Mb2FkR3VhcmRdXG4gICAgLy8gICAgIH1cbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8gdGhpcy5yb3V0ZXIucmVzZXRDb25maWcoY29uZmlncyk7XG4gICAgdGhpcy5jaGVja0FwcGxpY2F0aW9uRGV0YWlscyh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gIH1cblxuICBjYWxjdWxhdGVMZWZ0bmF2U3RhdHVzKCl7XG4gICAgaWYodGhpcy5zaWRlbmF2ICYmIHRoaXMuc2lkZW5hdi5vcGVuZWRDaGFuZ2Upe1xuICAgICAgbGV0IHN0YXR1cyAgICAgICAgICA9IHNlc3Npb25TdG9yYWdlLmdldEl0ZW0oJ2xlZnROYXZPcGVuU3RhdHVzJyk7XG4gICAgICB0aGlzLm5hdkV4cGFuZGVkICAgPSBzdGF0dXMgJiYgc3RhdHVzID09ICdmYWxzZScgPyBmYWxzZSA6IHRydWU7XG4gICAgICB0aGlzLnNpZGVuYXYub3BlbmVkID0gc3RhdHVzICYmIHN0YXR1cyA9PSAnZmFsc2UnID8gZmFsc2UgOiB0cnVlO1xuICAgICAgdGhpcy5zaG93VGl0bGUgPSB0aGlzLm5hdkV4cGFuZGVkO1xuICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICBpZiAodGhpcy5pc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpKSB7XG4gICAgICAgIGlmICh0aGlzLnNpZGVuYXYuY2xvc2VkU3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnNpZGVOYXZDbG9zZWRTdGFydFN1YnNjcmlwdGlvbiA9IHRoaXMuc2lkZW5hdi5jbG9zZWRTdGFydC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgLy8gRG8gbm90IGNsZWFyIHJldmlzZWRTZWN0aW9uU3RhdGUgaGVyZTogaXQgYmVjb21lcyBhbGwgYGZhbHNlYCwgdGhlbiByZWJ1aWxkIHRyZWF0c1xuICAgICAgICAgICAgLy8gYHByZXYgPT09IGZhbHNlYCBhcyBcInVzZXIgY29sbGFwc2VkXCIgYW5kIGtlZXBzIHRoZSBhY3RpdmUgc2VjdGlvbiBjbG9zZWQgYWZ0ZXIgcmVvcGVuLlxuICAgICAgICAgICAgdGhpcy5uYXZFeHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgdGhpcy5zaG93VGl0bGUgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24gPSB0aGlzLnNpZGVuYXYub3BlbmVkQ2hhbmdlLnN1YnNjcmliZSgoc3RhdHVzKT0+e1xuICAgICAgICBzZXNzaW9uU3RvcmFnZS5zZXRJdGVtKCdsZWZ0TmF2T3BlblN0YXR1cycsSlNPTi5zdHJpbmdpZnkoc3RhdHVzKSk7XG4gICAgICAgIHRoaXMubmF2RXhwYW5kZWQgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMuc2lkZW5hdi5vcGVuZWQgPSBzdGF0dXM7XG4gICAgICAgIHRoaXMuc2hvd1RpdGxlID0gc3RhdHVzO1xuICAgICAgICBpZiAoc3RhdHVzKSB7XG4gICAgICAgICAgaWYgKHRoaXMuaXNSZXZpc2VkTmF2aWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICAgICAgdGhpcy5leHBhbmRSZXZpc2VkU2VjdGlvbnNDb250YWluaW5nQWN0aXZlUm91dGUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5zeW5jR2xvYmFsU2V0dGluZ3NQYW5lbE9wZW5Ub0FjdGl2ZVJvdXRlKCk7XG4gICAgICAgICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1lbnVJZlZpc2libGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyAgY2hlY2tBcHBsaWNhdGlvbkRldGFpbHMoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKSB7XG4gICAgdGhpcy5lcnJvck1zZyA9ICcnO1xuICAgIGlmKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkICE9ICdhZHNfYW1hem9uX2RzcCcpe1xuICAgICAgdGhpcy5jcmVhdGVBcHBEZXRhaWxzKGFwcGxpY2F0aW9uRGV0YWlscylcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQXBwRGV0YWlscyhhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpe1xuICAgIHRoaXMuY3JlYXRlTmF2aWdhdGlvblNpZGVCYXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgIC8vIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50KXtcbiAgICAvLyAgIHRoaXMuZ2V0QWN0aXZlUmVjb0NvdW50KHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50KTtcbiAgICAvLyB9XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlTmF2aWdhdGlvblNpZGVCYXIoYXBwbGljYXRpb25EZXRhaWxzOiBhcHBEZXRhaWxzKSB7XG4gICAgY29uc3QgY29uc3VtZXJSZXZpc2VkQ29uZmlnID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LnJldmlzZWROYXZpZ2F0aW9uO1xuICAgIGNvbnN0IHVzZUxlZ2FjeU5hdmlnYXRpb24gPSBjb25zdW1lclJldmlzZWRDb25maWc/LnVzZUxlZ2FjeU5hdmlnYXRpb24gPT09IHRydWU7XG4gICAgY29uc3Qgc2hvdWxkTG9hZFNlY3Rpb25MYXlvdXQgPSAhdXNlTGVnYWN5TmF2aWdhdGlvbjtcblxuICAgIGZvcmtKb2luKHtcbiAgICAgIG1lbnVsaXN0czogdGhpcy5SZXN0QXBpU2VydmljZS5nZXRqc29uTWVudWxpc3RzKGFwcGxpY2F0aW9uRGV0YWlscyksXG4gICAgICAvKiogU2VjdGlvbiBzdHJ1Y3R1cmU6IFMzIGBzaWRlYmFyLWxheW91dC5qc29uYCBmaXJzdCwgYnVuZGxlZCBgc2lkZWJhci1sYXlvdXQubG9jYWxgIG9uIGVycm9yLiAqL1xuICAgICAgcmV2aXNlZExheW91dDogc2hvdWxkTG9hZFNlY3Rpb25MYXlvdXRcbiAgICAgICAgPyB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldFNpZGViYXJMYXlvdXRDb25maWcoKVxuICAgICAgICA6IG9mKHsgdXNlTGVnYWN5TmF2aWdhdGlvbjogdHJ1ZSwgc2VjdGlvbnM6IFtdIH0gYXMgUmV2aXNlZE5hdmlnYXRpb25Db25maWcpXG4gICAgfSkuc3Vic2NyaWJlKCh7IG1lbnVsaXN0cywgcmV2aXNlZExheW91dCB9OiB7IG1lbnVsaXN0czogYW55OyByZXZpc2VkTGF5b3V0OiBSZXZpc2VkTmF2aWdhdGlvbkNvbmZpZyB9KSA9PiB7XG4gICAgICBjb25zdCBtZXJnZWRBcHBsaWNhdGlvbkRldGFpbHMgPSB7XG4gICAgICAgIC4uLnRoaXMuYXBwbGljYXRpb25EZXRhaWxzLFxuICAgICAgICByZXZpc2VkTmF2aWdhdGlvbjogdXNlTGVnYWN5TmF2aWdhdGlvblxuICAgICAgICAgID8geyAuLi5jb25zdW1lclJldmlzZWRDb25maWcsIHVzZUxlZ2FjeU5hdmlnYXRpb246IHRydWUsIHNlY3Rpb25zOiBbXSB9XG4gICAgICAgICAgOiB7IC4uLnJldmlzZWRMYXlvdXQsIHVzZUxlZ2FjeU5hdmlnYXRpb246IGZhbHNlIH1cbiAgICAgIH07XG4gICAgICB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyA9IG1lcmdlZEFwcGxpY2F0aW9uRGV0YWlscztcbiAgICAgIC8vIGxldCBtZW51bGlzdHMgPSBHTE9CQUxfTElTVFxuICAgICAgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMgPSB0aGlzLm5hdmlnYXRpb24uZ2V0TWVudUxpc3QobWVyZ2VkQXBwbGljYXRpb25EZXRhaWxzLCBtZW51bGlzdHMpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUgPSB0aGlzLm5hdmlnYXRpb24uZ2V0R2xvYmFsU2V0dGluZ3NNZW51KG1lcmdlZEFwcGxpY2F0aW9uRGV0YWlscywgbWVudWxpc3RzKTtcbiAgICAgIC8vIFVzZSBwcm9wZXIgZmlsdGVyaW5nIHN5c3RlbSBmb3IgSm9pbiBJbnRlbnR3aXNlIENvbW11bml0eSBsaW5rXG4gICAgICBjb25zdCBmb3VuZCA9IG1lbnVsaXN0cy5maW5kKGxpc3QgPT4gbGlzdC5pZCA9PT0gJ2FwcF9pbnRlbnR3aXNlX2NvbW11bml0eScpO1xuICAgICAgdGhpcy50b0Rpc3BsYXlMaW5rTWVudSA9IGZvdW5kID8gdGhpcy5uYXZpZ2F0aW9uLmdldEFwcGxpY2F0aW9uTWVudUl0ZW0oZm91bmQpID8gW2ZvdW5kXSA6IFtdIDogW107XG4gICAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seShtZXJnZWRBcHBsaWNhdGlvbkRldGFpbHMsIGZhbHNlKTtcbiAgICAgIHRoaXMuZXhwYW5kQ2hpbGRNZW51T25seSh0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSk7XG4gICAgICB0aGlzLmNoZWNrRm9yUmVkaXJlY3Rpb24odGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsdGhpcy50b0Rpc3BsYXlHbG9iYWxTZXR0aW5nc01lbnUsbWVyZ2VkQXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgIHRoaXMucmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKTtcbiAgICAgIGlmICh0aGlzLm5hdkV4cGFuZGVkICYmIHRoaXMuaXNSZXZpc2VkTmF2aWdhdGlvbkVuYWJsZWQoKSkge1xuICAgICAgICB0aGlzLmV4cGFuZFJldmlzZWRTZWN0aW9uc0NvbnRhaW5pbmdBY3RpdmVSb3V0ZSgpO1xuICAgICAgfVxuICAgICAgdGhpcy5zeW5jR2xvYmFsU2V0dGluZ3NQYW5lbE9wZW5Ub0FjdGl2ZVJvdXRlKCk7XG4gICAgICBjb25zb2xlLmxvZyh0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyAsIHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51ICwgdGhpcy50b0Rpc3BsYXlMaW5rTWVudSk7XG4gICAgICB0aGlzLnNjcm9sbFRvQWN0aXZlTWVudUlmVmlzaWJsZSgpO1xuICAgICAgdGhpcy5zZXRNZW51TGlzdChtZXJnZWRBcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCx0aGlzLnRvRGlzcGxheUFwcGxpY2F0aW9ucyk7XG4gICAgICB0aGlzLmluQ29udGV4dEluc2lnaHRzV0xBcHAgPSB0aGlzLmhpZGVNZW51Rm9yV0woKTtcbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIHNldE1lbnVMaXN0KGFwcElkLG1lbnVMaXN0KXtcbiAgICB2YXIgYXBwRGV0YWlsczphbnkgPSBuZXcgT2JqZWN0KCk7XG4gICAgYXBwRGV0YWlscy5hcHBpY2F0aW9uSWQgPSBhcHBJZDtcbiAgICBhcHBEZXRhaWxzLm1lbnVMaXN0ID0gbWVudUxpc3QuZmluZCgobWVudSk9PnsgcmV0dXJuIG1lbnUuaWQgPT0gYXBwSWR9KVxuICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKCdhcHBEZXRhaWxzJyxKU09OLnN0cmluZ2lmeShhcHBEZXRhaWxzKSk7XG4gIH1cblxuICBwdWJsaWMgbWVudUNsaWNrZWQob2JqOiBhbnkpIHtcbiAgICB0aGlzLmV4cGFuZEN1cnJlbnRNZW51T25seSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscywgdHJ1ZSk7XG4gICAgdGhpcy5leHBhbmRDaGlsZE1lbnVPbmx5KHRoaXMudG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICBpZihvYmopIHtcbiAgICAgIHRoaXMuYWN0aXZlUGFuZWwgPSBvYmouYWN0aXZlUGFuZWw7XG4gICAgfVxuICAgIGlmICh0aGlzLmlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKCkpIHtcbiAgICAgIHRoaXMucmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKTtcbiAgICB9XG4gICAgdGhpcy5zY3JvbGxUb0FjdGl2ZU1lbnVJZlZpc2libGUoKTtcbiAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuICBcbiAgcHVibGljIGV4cGFuZENoaWxkTWVudU9ubHkodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLnN5bmNHbG9iYWxTZXR0aW5nc1BhbmVsT3BlblRvQWN0aXZlUm91dGUodG9EaXNwbGF5R2xvYmFsU2V0dGluZ3NNZW51KTtcbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH0sIDEwMCk7XG4gIH1cblxuICAvKipcbiAgICogT3BlbnMgZWFjaCBHbG9iYWwgU2V0dGluZ3MgaGVhZCBwYW5lbCB3aGVuIHRoZSBjdXJyZW50IFVSTCBtYXRjaGVzIHRoYXQgcGFuZWzigJlzIG1lbnUgdHJlZVxuICAgKiAoYW55IGRlcHRoKS4gVXNlZCBvbiBzaWRlbmF2IG9wZW4gYW5kIGFmdGVyIG1lbnUgZGF0YSByZWZyZXNoLlxuICAgKi9cbiAgcHJpdmF0ZSBzeW5jR2xvYmFsU2V0dGluZ3NQYW5lbE9wZW5Ub0FjdGl2ZVJvdXRlKG1lbnVzTGlzdD86IGFueVtdKTogdm9pZCB7XG4gICAgY29uc3QgbGlzdCA9IG1lbnVzTGlzdCA/PyB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudTtcbiAgICBpZiAoIWxpc3Q/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsaXN0LmZvckVhY2goKHNldHRpbmdzSGVhZE1lbnU6IGFueSkgPT4ge1xuICAgICAgc2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgY29uc3QgY2hpbGRyZW4gPSBzZXR0aW5nc0hlYWRNZW51LmNoaWxkcmVuO1xuICAgICAgaWYgKGNoaWxkcmVuPy5sZW5ndGggJiYgdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoY2hpbGRyZW4gYXMgUmV2aXNlZE5hdk1lbnVJdGVtW10pKSB7XG4gICAgICAgIHNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGV4cGFuZEN1cnJlbnRNZW51T25seShhcHBsaWNhdGlvbkRldGFpbHMsIG9uTWVudUNsaWNrZWQpIHtcbiAgICBmb3IobGV0IGhlYWRNZW51IG9mIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKSB7XG4gICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgICBcbiAgICBmb3IobGV0IGhlYWRNZW51IG9mIHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zKSB7XG4gICAgICAgIGlmKGhlYWRNZW51LmlkID09IGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkKSB7XG4gICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgIHRoaXMuY3VycmVudEFwcCA9IGhlYWRNZW51O1xuICAgICAgICB9IGVsc2UgaWYoaGVhZE1lbnUuaWQuaW5kZXhPZihhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZCkgPiAtMSkge1xuICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7XG5cbiAgICAgICAgICBsZXQgdXJsQXJyYXkgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJy8nKTtcbiAgICAgICAgICBsZXQgcm91dGVVcmwgPSB1cmxBcnJheVt1cmxBcnJheS5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZigoaGVhZE1lbnUuaWQ9PSBcImFkc19hbWF6b25fc2VsbGVyX3NlbGxlcl9hbmFseXRpY3NcIiB8fCBoZWFkTWVudS5pZD09IFwiYWRzX2FtYXpvbl9zZWxsZXJfdmVuZG9yX2FuYWx5dGljc1wiKSAmJiB1cmxBcnJheS5sZW5ndGggPjIpe1xuICAgICAgICAgICAgdXJsQXJyYXk9IHVybEFycmF5LnNsaWNlKHVybEFycmF5Lmxlbmd0aC0yKTtcbiAgICAgICAgICAgIHJvdXRlVXJsPSB1cmxBcnJheS5qb2luKCcvJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBjdXJyZW50Um91dGUgPSByb3V0ZVVybC5zcGxpdCgnPycpWzBdO1xuICAgICAgICAgIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9jb250ZW50X2NvbnRlbnRfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLmNvbnRlbnRBcHBSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpPi0xICkge1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfSBlbHNlIGlmKGhlYWRNZW51LmlkID09IFwiYWRzX2FtYXpvbl9jb250ZW50X3NoYXJlX29mX3ZvaWNlXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNvdkFwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgICAgaWYoKGN1cnJlbnRSb3V0ZSAhPSAncHJvZHVjdC1tZXRhLWRhdGEnICYmIGN1cnJlbnRSb3V0ZSAhPSAnYnJhbmQtdGVybXMtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnbGFiZWxzLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3N1Yi1icmFuZHMnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcy1tYXBwaW5nJyAmJiBjdXJyZW50Um91dGUgIT0gJ3Nvdi1zZXR0aW5ncycgJiYgY3VycmVudFJvdXRlICE9ICdjb250ZW50LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ3NlYXJjaC1xdWVyeS1wZXJmb3JtYW5jZScpIHx8ICF0aGlzLmN1cnJlbnRBcHAgfHwgdGhpcy5jdXJyZW50QXBwLm5hbWUgPT0gJ1NoYXJlIE9mIFZvaWNlJykge1xuICAgICAgICAgICAgICAgIGhlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgICBpZihvbk1lbnVDbGlja2VkIHx8IHRoaXMuY3VycmVudEFwcC5uYW1lID09ICdTaGFyZSBPZiBWb2ljZScpIHtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl9zZWxsZXJfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnNlbGxlckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpe1xuICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50QXBwID0gaGVhZE1lbnU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgaWYoaGVhZE1lbnUuaWQgPT0gXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCIgJiYgdGhpcy5uYXZpZ2F0aW9uLnZlbmRvckFuYWx5dGljc0FwcFJvdXRlcy5pbmRleE9mKGN1cnJlbnRSb3V0ZSk+LTEpIHtcbiAgICAgICAgICAgIGlmKChjdXJyZW50Um91dGUgIT0gJ3Byb2R1Y3QtbWV0YS1kYXRhJyAmJiBjdXJyZW50Um91dGUgIT0gJ2JyYW5kLXRlcm1zLXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2xhYmVscy1zZXR0aW5ncycgICYmIGN1cnJlbnRSb3V0ZSAhPSAnc3ViLWJyYW5kcycgJiYgY3VycmVudFJvdXRlICE9ICdzdWItYnJhbmRzLW1hcHBpbmcnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc292LXNldHRpbmdzJyAmJiBjdXJyZW50Um91dGUgIT0gJ2NvbnRlbnQtc2V0dGluZ3MnICYmIGN1cnJlbnRSb3V0ZSAhPSAnc2VhcmNoLXF1ZXJ5LXBlcmZvcm1hbmNlJykgfHwgIXRoaXMuY3VycmVudEFwcCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnVmVuZG9yIEFuYWx5dGljcycpIHtcbiAgICAgICAgICAgICAgaGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlO1xuICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRBcHAgPSBoZWFkTWVudTtcbiAgICAgICAgICAgICAgaWYob25NZW51Q2xpY2tlZCB8fCB0aGlzLmN1cnJlbnRBcHAubmFtZSA9PSAnVmVuZG9yIEFuYWx5dGljcycpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vICBpZihoZWFkTWVudS5jaGlsZHJlbil7XG4gICAgICAgIC8vICAgIGhlYWRNZW51LmNoaWxkcmVuLmZvckVhY2gobWVudSA9PiB7XG4gICAgICAgIC8vICAgICAgaWYgKG1lbnUuY2hpbGRyZW4gJiYgbWVudS50eXBlID09IFwiZXhwYW5kYWJsZVwiKSB7XG4gICAgICAgIC8vICAgICAgICBoZWFkTWVudS5jaGlsZHJlbi5mb3JFYWNoKHN1Ym1lbnUgPT4ge1xuICAgICAgICAvLyAgICAgICAgIGlmKHRoaXMuaXNDaGVja0FjdGl2ZVJvdXRlKHN1Ym1lbnUucm91dGUsaGVhZE1lbnUpKXtcbiAgICAgICAgLy8gICAgICAgICAgICBtZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICAgICAgLy8gICAgICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWU7XG5cbiAgICAgICAgLy8gICAgICAgICB9XG4gICAgICAgIC8vICAgICAgICB9KVxuICAgICAgICAvLyAgICAgIH1cbiAgICAgICAgLy8gICAgfSk7XG4gICAgICAgIC8vIH1cbiAgICAgIH1cbiAgICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICAgIH1cblxuICBwdWJsaWMgZ2V0VG9vbHRpcEluZm8oaGVhZG1lbnUpe1xuICAgIGlmKHRoaXMuc2lkZW5hdiAmJiB0aGlzLnNpZGVuYXYub3BlbmVkKXtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1lbHNle1xuICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdGVkQXBwbGljYXRpb24oaGVhZG1lbnUpe1xuICAgIHJldHVybiB0aGlzLnRyYW5zbGF0aW9uLnNlbGVjdGVkQXBwbGljYXRpb24odGhpcy5hcHBsaWNhdGlvbkRldGFpbHMsIGhlYWRtZW51KTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uYXZpZ2F0aW9uLmlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgfVxuXG4gIHB1YmxpYyBpc0xlZ2FjeU5hdmlnYXRpb25FbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm5hdmlnYXRpb24uaXNMZWdhY3lOYXZpZ2F0aW9uRW5hYmxlZCh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscyk7XG4gIH1cblxuICBwdWJsaWMgb25SZXZpc2VkU2VjdGlvbkhlYWRlckNsaWNrKHNlY3Rpb25JZDogc3RyaW5nKSB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0UmV2aXNlZFNlY3Rpb25CeUlkKHNlY3Rpb25JZCk7XG4gICAgaWYgKCFzZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLm5hdkV4cGFuZGVkICYmIHRoaXMuc2lkZW5hdikge1xuICAgICAgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb25JZF0gPSB0cnVlO1xuICAgICAgdGhpcy5zaWRlbmF2Lm9wZW4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0N1cnJlbnRseUV4cGFuZGVkID0gdGhpcy5pc1JldmlzZWRTZWN0aW9uRXhwYW5kZWQoc2VjdGlvbklkKTtcbiAgICBjb25zdCByb3V0ZUluU2VjdGlvbiA9IHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbik7XG4gICAgaWYgKHJvdXRlSW5TZWN0aW9uKSB7XG4gICAgICB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGVbc2VjdGlvbklkXSA9ICFpc0N1cnJlbnRseUV4cGFuZGVkO1xuICAgICAgdGhpcy5jZHJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNDdXJyZW50bHlFeHBhbmRlZCkge1xuICAgICAgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb25JZF0gPSBmYWxzZTtcbiAgICAgIHRoaXMuY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb25JZF0gPSB0cnVlO1xuICAgIHRoaXMuY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgaXNSZXZpc2VkU2VjdGlvbkV4cGFuZGVkKHNlY3Rpb25JZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0UmV2aXNlZFNlY3Rpb25CeUlkKHNlY3Rpb25JZCk7XG4gICAgaWYgKHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uSWRdID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbklkID09PSAnb3B0aW1pemUnICYmIHRoaXMuaXNSZXZpc2VkQXBwVGFic1NlY3Rpb24oc2VjdGlvbikpIHtcbiAgICAgIGlmICh0aGlzLmdldEN1cnJlbnRPcHRpbWl6ZUFwcChzZWN0aW9uKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuICEhKHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uSWRdID09PSB0cnVlIHx8IChzZWN0aW9uICYmIHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbikpKTtcbiAgfVxuXG4gIC8qKiBUcnVlIHdoZW4gYW55IG1lbnUgdW5kZXIgdGhpcyBzZWN0aW9uIG1hdGNoZXMgdGhlIGN1cnJlbnQgcm91dGUgKGUuZy4gY29sbGFwc2VkIHJhaWwgYWN0aXZlIGluZGljYXRvcikuICovXG4gIHB1YmxpYyBpc1JldmlzZWRTZWN0aW9uQWN0aXZlKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbik7XG4gIH1cblxuICBwdWJsaWMgZ2V0UmV2aXNlZFNlY3Rpb25JY29uKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogU2FmZUh0bWwgfCBzdHJpbmcge1xuICAgIGlmICghc2VjdGlvbiB8fCAhc2VjdGlvbi5pZCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5yZXZpc2VkU2VjdGlvbkljb25DYWNoZVtzZWN0aW9uLmlkXSkge1xuICAgICAgdGhpcy5yZXZpc2VkU2VjdGlvbkljb25DYWNoZVtzZWN0aW9uLmlkXSA9IHNlY3Rpb24uaWNvblN2ZyA/IHRoaXMuc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKHNlY3Rpb24uaWNvblN2ZykgOiAnJztcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5yZXZpc2VkU2VjdGlvbkljb25DYWNoZVtzZWN0aW9uLmlkXTtcbiAgfVxuXG4gIHB1YmxpYyBpc1JldmlzZWRBcHBUYWJzU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IHNlY3Rpb24gaXMgUmV2aXNlZEFwcFRhYnNTZWN0aW9uIHtcbiAgICByZXR1cm4gISFzZWN0aW9uICYmIHNlY3Rpb24udHlwZSA9PT0gJ2FwcC10YWJzJztcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2VjdGlvbkFwcHMoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiBSZXZpc2VkTmF2TWVudUl0ZW1bXSB7XG4gICAgcmV0dXJuIHRoaXMuaXNSZXZpc2VkQXBwVGFic1NlY3Rpb24oc2VjdGlvbikgPyBzZWN0aW9uLmFwcHMgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkR3JvdXBlZFNlY3Rpb25Hcm91cHMoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXBbXSB7XG4gICAgcmV0dXJuIHNlY3Rpb24gJiYgc2VjdGlvbi50eXBlID09PSAnZ3JvdXBlZC1tZW51cycgPyBzZWN0aW9uLmdyb3VwcyA6IFtdO1xuICB9XG5cbiAgLyoqIEpTT04gYGdyb3Vwc1tdYCByb3c6IG9wdGlvbmFsIGZsYXQgbGlzdCB3aXRoIG5vIGdyb3VwIHRpdGxlICovXG4gIHB1YmxpYyBpc1JldmlzZWRVbnRpdGxlZEdyb3VwKGdyb3VwOiBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISFncm91cCAmJiAhZ3JvdXAudGl0bGU7XG4gIH1cblxuICAvKiogSlNPTiBgZ3JvdXBzW11gIHJvdzogb25lIG1lbnUgaXRlbSB1bmRlciBhIHRpdGxlZCBncm91cCAoZS5nLiBGT1VOREFUSU9OIHJvd3MpICovXG4gIHB1YmxpYyBpc1JldmlzZWRTaW5nbGVJdGVtR3JvdXAoZ3JvdXA6IFJldmlzZWRJbnRlbGxpZ2VuY2VHcm91cCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIWdyb3VwICYmICEhZ3JvdXAudGl0bGUgJiYgZ3JvdXAuaXRlbXMgJiYgZ3JvdXAuaXRlbXMubGVuZ3RoID09PSAxO1xuICB9XG5cbiAgLyoqIEpTT04gYGdyb3Vwc1tdYCByb3c6IHRpdGxlZCBncm91cCB3aXRoIG11bHRpcGxlIG1lbnUgcm9vdHMgKGUuZy4gQ29tbWVyY2UgSW5zaWdodHMpICovXG4gIHB1YmxpYyBpc1JldmlzZWRNdWx0aUl0ZW1Hcm91cChncm91cDogUmV2aXNlZEludGVsbGlnZW5jZUdyb3VwKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhZ3JvdXAgJiYgISFncm91cC50aXRsZSAmJiBncm91cC5pdGVtcyAmJiBncm91cC5pdGVtcy5sZW5ndGggPiAxO1xuICB9XG5cbiAgcHVibGljIGhhc0V4cGFuZGFibGVNZW51c0luU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG1lbnVzID0gdGhpcy5nZXRSZXZpc2VkU2VjdGlvbk1lbnVzKHNlY3Rpb24pO1xuICAgIHJldHVybiBtZW51cy5zb21lKChtKSA9PiBtICYmIG0uY2hpbGRyZW4gJiYgbS5jaGlsZHJlbi5sZW5ndGggPiAwKTtcbiAgfVxuXG4gIHB1YmxpYyBoYXNFeHBhbmRhYmxlTWVudXNJbkdyb3VwKGdyb3VwOiBSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXApOiBib29sZWFuIHtcbiAgICByZXR1cm4gISEoZ3JvdXAgJiYgZ3JvdXAuaXRlbXMgJiYgZ3JvdXAuaXRlbXMuc29tZSgobSkgPT4gbSAmJiBtLmNoaWxkcmVuICYmIG0uY2hpbGRyZW4ubGVuZ3RoID4gMCkpO1xuICB9XG5cbiAgcHVibGljIGdldFJldmlzZWRTZWN0aW9uU2VsZWN0ZWRBcHAoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiBSZXZpc2VkTmF2TWVudUl0ZW0ge1xuICAgIGlmICghdGhpcy5pc1JldmlzZWRBcHBUYWJzU2VjdGlvbihzZWN0aW9uKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoc2VjdGlvbi5pZCA9PT0gJ29wdGltaXplJykge1xuICAgICAgY29uc3QgY3VycmVudE9wdGltaXplQXBwID0gdGhpcy5nZXRDdXJyZW50T3B0aW1pemVBcHAoc2VjdGlvbik7XG4gICAgICBpZiAoY3VycmVudE9wdGltaXplQXBwKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50T3B0aW1pemVBcHA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZWN0ZWRBcHBJZCA9IHRoaXMucmV2aXNlZFNlbGVjdGVkQXBwQnlTZWN0aW9uW3NlY3Rpb24uaWRdO1xuICAgIHJldHVybiBzZWN0aW9uLmFwcHMuZmluZCgoYXBwKSA9PiBhcHAuaWQgPT09IHNlbGVjdGVkQXBwSWQpIHx8IHNlY3Rpb24uYXBwc1swXTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkUmV2aXNlZFNlY3Rpb25BcHAoc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24sIGFwcDogUmV2aXNlZE5hdk1lbnVJdGVtKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKGFwcCAmJiB0aGlzLmdldFJldmlzZWRTZWN0aW9uU2VsZWN0ZWRBcHAoc2VjdGlvbik/LmlkID09PSBhcHAuaWQpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdFJldmlzZWRTZWN0aW9uQXBwKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uLCBhcHA6IFJldmlzZWROYXZNZW51SXRlbSwgbG9hZERlZmF1bHRQYWdlOiBib29sZWFuID0gdHJ1ZSkge1xuICAgIGlmICghYXBwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMucmV2aXNlZFNlbGVjdGVkQXBwQnlTZWN0aW9uW3NlY3Rpb24uaWRdID0gYXBwLmlkO1xuICAgIHRoaXMuY3VycmVudEFwcCA9IGFwcDtcbiAgICBpZiAobG9hZERlZmF1bHRQYWdlKSB7XG4gICAgICB0aGlzLmdvVG9BcHBsaWNhdGlvbihhcHApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2VjdGlvbk1lbnVzKHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogUmV2aXNlZE5hdk1lbnVJdGVtW10ge1xuICAgIGNvbnN0IHNlbGVjdGVkQXBwID0gdGhpcy5nZXRSZXZpc2VkU2VjdGlvblNlbGVjdGVkQXBwKHNlY3Rpb24pO1xuICAgIGlmICghc2VsZWN0ZWRBcHAgfHwgIXNlbGVjdGVkQXBwLmNoaWxkcmVuKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICAgIHJldHVybiBzZWxlY3RlZEFwcC5jaGlsZHJlbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2VjdGlvblRhYkJhZGdlQ291bnQoYXBwOiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBudW1iZXIgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXZpc2VkT3B0aW1pemVSZWNvbW1lbmRhdGlvbkNvdW50KGFwcCk7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeVJldmlzZWRTZWN0aW9uKGluZGV4OiBudW1iZXIsIHNlY3Rpb246IFJldmlzZWRTZWN0aW9uKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gc2VjdGlvbj8uaWQgfHwgaW5kZXg7XG4gIH1cblxuICBwdWJsaWMgdHJhY2tCeVJldmlzZWRHcm91cChpbmRleDogbnVtYmVyLCBncm91cDogUmV2aXNlZEludGVsbGlnZW5jZUdyb3VwKTogc3RyaW5nIHwgbnVtYmVyIHtcbiAgICByZXR1cm4gZ3JvdXA/LmlkIHx8IGluZGV4O1xuICB9XG5cbiAgcHVibGljIHRyYWNrQnlSZXZpc2VkTWVudShpbmRleDogbnVtYmVyLCBtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBzdHJpbmcgfCBudW1iZXIge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGluZGV4O1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSgobWVudSBhcyBhbnkpLnNvdXJjZVBhdGgpICYmIChtZW51IGFzIGFueSkuc291cmNlUGF0aC5sZW5ndGggPiAwKSB7XG4gICAgICByZXR1cm4gKG1lbnUgYXMgYW55KS5zb3VyY2VQYXRoLmpvaW4oJz4nKTtcbiAgICB9XG4gICAgcmV0dXJuIChtZW51IGFzIGFueSkuc291cmNlTWVudUlkIHx8IG1lbnUuaWQgfHwgaW5kZXg7XG4gIH1cblxuICAvKiogUGxhaW4tdGV4dCBhcHAgbmFtZSBmb3IgT3B0aW1pemUgdGFiIHRvb2x0aXBzIChgbGVmdC1uYXYtdG9vbHRpcGAsIHNhbWUgYXMgY29sbGFwc2VkIHJhaWwpLiAqL1xuICBwdWJsaWMgZ2V0UmV2aXNlZE9wdGltaXplQXBwVGFiVG9vbHRpcChhcHA6IFJldmlzZWROYXZNZW51SXRlbSk6IHN0cmluZyB8IG51bGwge1xuICAgIGlmICghYXBwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgbGFiZWwgPSB0aGlzLnNlbGVjdGVkQXBwbGljYXRpb24oYXBwKTtcbiAgICBjb25zdCBwbGFpbiA9IGxhYmVsID8gU3RyaW5nKGxhYmVsKS5yZXBsYWNlKC88W14+XSo+L2csICcnKS5yZXBsYWNlKC9cXHMrL2csICcgJykudHJpbSgpIDogJyc7XG4gICAgcmV0dXJuIHBsYWluIHx8IG51bGw7XG4gIH1cblxuICBwdWJsaWMgaXNSZXZpc2VkTWVudUFjdGl2ZShtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc01lbnVSb3V0ZUFjdGl2ZShtZW51KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgc3VibWVudSAobGVnYWN5ICsgcmV2aXNlZCk6IGtlZXAgbWF0LWV4cGFuc2lvbi1wYW5lbCBvcGVuIHdoZW4gdGhlIGN1cnJlbnQgVVJMIG1hdGNoZXNcbiAgICogYW55IGRlc2NlbmRhbnQgbGVhZiwgbm90IG9ubHkgd2hlbiBgYWN0aXZlUGFuZWxgIHdhcyBzZXQgZnJvbSBhIHNpZGViYXIgY2xpY2suXG4gICAqIFN0aWxsIGhvbm9ycyB1c2VyLW9wZW4gc3RhdGUgdmlhIGBtZW51LnBhbmVsT3BlblN0YXRlYCBhbmQgY2xpY2stZHJpdmVuIGBhY3RpdmVQYW5lbGAuXG4gICAqL1xuICBwdWJsaWMgaXNDaGlsZE1lbnVQYW5lbEV4cGFuZGVkKG1lbnU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IG1lbnUuY2hpbGRyZW47XG4gICAgY29uc3QgZGVzY2VuZGFudEFjdGl2ZSA9XG4gICAgICBjaGlsZHJlbiAmJlxuICAgICAgY2hpbGRyZW4ubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoY2hpbGRyZW4pO1xuICAgIGlmIChtZW51LnBhbmVsU3RhdGVUb3VjaGVkKSB7XG4gICAgICByZXR1cm4gISFtZW51LnBhbmVsT3BlblN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gISFkZXNjZW5kYW50QWN0aXZlIHx8IG1lbnUuaWQgPT09IHRoaXMuYWN0aXZlUGFuZWwgfHwgISFtZW51LnBhbmVsT3BlblN0YXRlO1xuICB9XG5cbiAgLyoqIEhpZ2hsaWdodCBzdHlsaW5nOiBhY3RpdmUgcGFuZWwgb3IgYW55IGFjdGl2ZSBkZXNjZW5kYW50LiAqL1xuICBwdWJsaWMgaXNDaGlsZE1lbnVQYW5lbEhpZ2hsaWdodGVkKG1lbnU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBjaGlsZHJlbiA9IG1lbnUuY2hpbGRyZW47XG4gICAgY29uc3QgZGVzY2VuZGFudEFjdGl2ZSA9XG4gICAgICBjaGlsZHJlbiAmJlxuICAgICAgY2hpbGRyZW4ubGVuZ3RoID4gMCAmJlxuICAgICAgdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoY2hpbGRyZW4pO1xuICAgIHJldHVybiAhIWRlc2NlbmRhbnRBY3RpdmUgfHwgbWVudS5pZCA9PT0gdGhpcy5hY3RpdmVQYW5lbDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoaWxkTWVudVBhbmVsSGVhZGVyQ2xpY2sobWVudTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1lbnUucGFuZWxTdGF0ZVRvdWNoZWQgPSB0cnVlO1xuICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSAhdGhpcy5pc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSk7XG4gICAgdGhpcy5jZHJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkNoaWxkTWVudVBhbmVsT3BlbmVkKG1lbnU6IGFueSk6IHZvaWQge1xuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZW51LnBhbmVsU3RhdGVUb3VjaGVkID0gdHJ1ZTtcbiAgICBtZW51LnBhbmVsT3BlblN0YXRlID0gdHJ1ZTtcbiAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIG9uQ2hpbGRNZW51UGFuZWxDbG9zZWQobWVudTogYW55KTogdm9pZCB7XG4gICAgaWYgKCFtZW51KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG1lbnUucGFuZWxTdGF0ZVRvdWNoZWQgPSB0cnVlO1xuICAgIG1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZTtcbiAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGdldFJldmlzZWRQYXJlbnRNZW51SWQobWVudTogUmV2aXNlZE5hdk1lbnVJdGVtLCBmYWxsYmFja1BhcmVudElkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbWVudSAmJiBtZW51Lm93bmVyQXBwSWQgPyBtZW51Lm93bmVyQXBwSWQgOiBmYWxsYmFja1BhcmVudElkO1xuICB9XG5cbiAgcHVibGljIGdldFJldmlzZWRQYXJlbnRQYW5lbElkKG1lbnU6IFJldmlzZWROYXZNZW51SXRlbSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG1lbnUgJiYgbWVudS5zb3VyY2VQYXJlbnRJZCAmJiBtZW51LnNvdXJjZVBhcmVudElkICE9PSBtZW51Lm93bmVyQXBwSWQgPyBtZW51LnNvdXJjZVBhcmVudElkIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIExlYWYgcm93IGluIGByZXZpc2VkR3JvdXBNZW51SXRlbVNoZWxsYDogT1BUSU1JWkUgKGFwcC10YWJzKSBvbWl0cyBwYW5lbCBpZDsgZ3JvdXBlZC1tZW51cyB1c2VzIGBnZXRSZXZpc2VkUGFyZW50UGFuZWxJZGAuICovXG4gIHB1YmxpYyBnZXRSZXZpc2VkU2hlbGxMZWFmUGFyZW50UGFuZWxJZChtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0sIG9wdGltaXplUGFyZW50QXBwPzogUmV2aXNlZE5hdk1lbnVJdGVtKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gb3B0aW1pemVQYXJlbnRBcHAgPyB1bmRlZmluZWQgOiB0aGlzLmdldFJldmlzZWRQYXJlbnRQYW5lbElkKG1lbnUpO1xuICB9XG5cbiAgcHVibGljIHNob3VsZFNob3dSZXZpc2VkSW50ZWxsaWdlbmNlR3JvdXBUaXRsZShncm91cDogUmV2aXNlZEludGVsbGlnZW5jZUdyb3VwKTogYm9vbGVhbiB7XG4gICAgaWYgKCFncm91cCB8fCAhZ3JvdXAudGl0bGUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWdyb3VwLml0ZW1zIHx8IGdyb3VwLml0ZW1zLmxlbmd0aCAhPT0gMSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3QgZ3JvdXBUaXRsZSA9IHRoaXMubm9ybWFsaXplUmV2aXNlZExhYmVsKGdyb3VwLnRpdGxlKTtcbiAgICBjb25zdCBpdGVtVGl0bGUgPSB0aGlzLm5vcm1hbGl6ZVJldmlzZWRMYWJlbCh0aGlzLnNlbGVjdGVkQXBwbGljYXRpb24oZ3JvdXAuaXRlbXNbMF0pKTtcblxuICAgIGlmICghZ3JvdXBUaXRsZSB8fCAhaXRlbVRpdGxlKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gIShpdGVtVGl0bGUgPT09IGdyb3VwVGl0bGUgfHwgaXRlbVRpdGxlLmluZGV4T2YoZ3JvdXBUaXRsZSkgPiAtMSB8fCBncm91cFRpdGxlLmluZGV4T2YoaXRlbVRpdGxlKSA+IC0xKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVidWlsZFJldmlzZWROYXZpZ2F0aW9uU3RhdGUoKSB7XG4gICAgdGhpcy5yZXZpc2VkTmF2aWdhdGlvblN0YXRlID0gdGhpcy5uYXZpZ2F0aW9uLmJ1aWxkUmV2aXNlZE5hdmlnYXRpb25TdGF0ZShcbiAgICAgIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLFxuICAgICAgdGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnMsXG4gICAgICB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSxcbiAgICAgIHRoaXMudG9EaXNwbGF5TGlua01lbnVcbiAgICApO1xuICAgIHRoaXMucmV2aXNlZFNlY3Rpb25JY29uQ2FjaGUgPSB7fTtcbiAgICB0aGlzLnJldmlzZWRTZWN0aW9ucyA9IHRoaXMucmV2aXNlZE5hdmlnYXRpb25TdGF0ZSA/IHRoaXMucmV2aXNlZE5hdmlnYXRpb25TdGF0ZS5zZWN0aW9ucyA6IFtdO1xuICAgIHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZSA9IHRoaXMuYnVpbGRSZXZpc2VkU2VjdGlvblN0YXRlKHRoaXMucmV2aXNlZFNlY3Rpb25zKTtcbiAgICB0aGlzLnJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGUgPSB0aGlzLmJ1aWxkUmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZSh0aGlzLnJldmlzZWRTZWN0aW9ucyk7XG4gICAgdGhpcy5yZXZpc2VkU2VsZWN0ZWRBcHBCeVNlY3Rpb24gPSB0aGlzLmJ1aWxkUmV2aXNlZFNlbGVjdGVkQXBwU3RhdGUodGhpcy5yZXZpc2VkU2VjdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGUoc2VjdGlvbnM6IFJldmlzZWRTZWN0aW9uW10pOiB7W2tleTogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIGNvbnN0IG5leHRTdGF0ZToge1trZXk6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG4gICAgKHNlY3Rpb25zIHx8IFtdKS5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBpZiAoc2VjdGlvbi50eXBlICE9PSAnZ3JvdXBlZC1tZW51cycgfHwgIXNlY3Rpb24uZ3JvdXBzKSB7IHJldHVybjsgfVxuICAgICAgc2VjdGlvbi5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0gc2VjdGlvbi5pZCArICdfJyArIGdyb3VwLmlkO1xuICAgICAgICBjb25zdCBvcGVuQnlSb3V0ZSA9IHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKGdyb3VwLml0ZW1zIHx8IFtdKTtcbiAgICAgICAgbmV4dFN0YXRlW2tleV0gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5yZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlLCBrZXkpXG4gICAgICAgICAgPyB0aGlzLnJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGVba2V5XVxuICAgICAgICAgIDogb3BlbkJ5Um91dGU7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9XG5cbiAgcHVibGljIGlzUmV2aXNlZEdyb3VwRXhwYW5kZWQoc2VjdGlvbklkOiBzdHJpbmcsIGdyb3VwSWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleSA9IHNlY3Rpb25JZCArICdfJyArIGdyb3VwSWQ7XG4gICAgY29uc3Qgc2VjdGlvbiA9IHRoaXMuZ2V0UmV2aXNlZFNlY3Rpb25CeUlkKHNlY3Rpb25JZCk7XG4gICAgY29uc3QgZ3JvdXAgPSB0aGlzLmdldFJldmlzZWRHcm91cGVkU2VjdGlvbkdyb3VwcyhzZWN0aW9uKS5maW5kKChnKSA9PiBnLmlkID09PSBncm91cElkKTtcbiAgICBjb25zdCByb3V0ZUluR3JvdXAgPSAhIWdyb3VwICYmIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKGdyb3VwLml0ZW1zIHx8IFtdKTtcbiAgICByZXR1cm4gcm91dGVJbkdyb3VwIHx8IHRoaXMucmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZVtrZXldICE9PSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBvblJldmlzZWRHcm91cEhlYWRlckNsaWNrKHNlY3Rpb25JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSBzZWN0aW9uSWQgKyAnXycgKyBncm91cElkO1xuICAgIHRoaXMucmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZVtrZXldID0gIXRoaXMuaXNSZXZpc2VkR3JvdXBFeHBhbmRlZChzZWN0aW9uSWQsIGdyb3VwSWQpO1xuICAgIHRoaXMuY2RyZWYubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXZpc2VkR3JvdXBQYW5lbE9wZW5lZChzZWN0aW9uSWQ6IHN0cmluZywgZ3JvdXBJZDogc3RyaW5nKSB7XG4gICAgY29uc3Qga2V5ID0gc2VjdGlvbklkICsgJ18nICsgZ3JvdXBJZDtcbiAgICB0aGlzLnJldmlzZWRHcm91cEV4cGFuZGVkU3RhdGVba2V5XSA9IHRydWU7XG4gICAgdGhpcy5jZHJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJldmlzZWRHcm91cFBhbmVsQ2xvc2VkKHNlY3Rpb25JZDogc3RyaW5nLCBncm91cElkOiBzdHJpbmcpIHtcbiAgICBjb25zdCBrZXkgPSBzZWN0aW9uSWQgKyAnXycgKyBncm91cElkO1xuICAgIGNvbnN0IHNlY3Rpb24gPSB0aGlzLmdldFJldmlzZWRTZWN0aW9uQnlJZChzZWN0aW9uSWQpO1xuICAgIGNvbnN0IGdyb3VwID0gdGhpcy5nZXRSZXZpc2VkR3JvdXBlZFNlY3Rpb25Hcm91cHMoc2VjdGlvbikuZmluZCgoZykgPT4gZy5pZCA9PT0gZ3JvdXBJZCk7XG4gICAgdGhpcy5yZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlW2tleV0gPSAhIWdyb3VwICYmIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKGdyb3VwLml0ZW1zIHx8IFtdKTtcbiAgICB0aGlzLmNkcmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJldmlzZWRTZWN0aW9uU3RhdGUoc2VjdGlvbnM6IFJldmlzZWRTZWN0aW9uW10pOiB7W3NlY3Rpb25JZDogc3RyaW5nXTogYm9vbGVhbn0ge1xuICAgIGNvbnN0IG5leHRTdGF0ZToge1tzZWN0aW9uSWQ6IHN0cmluZ106IGJvb2xlYW59ID0ge307XG5cbiAgICAoc2VjdGlvbnMgfHwgW10pLmZvckVhY2goKHNlY3Rpb24pID0+IHtcbiAgICAgIGNvbnN0IHJvdXRlSW5TZWN0aW9uID0gdGhpcy5zZWN0aW9uQ29udGFpbnNBY3RpdmVSb3V0ZShzZWN0aW9uKTtcbiAgICAgIGNvbnN0IHByZXYgPSB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGUgJiYgdGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlW3NlY3Rpb24uaWRdO1xuICAgICAgLy8gUHJlc2VydmUgbWFudWFsIG9wZW5zIGFjcm9zcyBuYXZpZ2F0aW9uczsgYWN0aXZlIHJvdXRlIGFsc28gZm9yY2VzIGV4cGFuc2lvbi5cbiAgICAgIG5leHRTdGF0ZVtzZWN0aW9uLmlkXSA9IHByZXYgPT09IHRydWUgfHwgcm91dGVJblNlY3Rpb247XG4gICAgfSk7XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZFJldmlzZWRTZWxlY3RlZEFwcFN0YXRlKHNlY3Rpb25zOiBSZXZpc2VkU2VjdGlvbltdKToge1tzZWN0aW9uSWQ6IHN0cmluZ106IHN0cmluZ30ge1xuICAgIGNvbnN0IG5leHRTdGF0ZToge1tzZWN0aW9uSWQ6IHN0cmluZ106IHN0cmluZ30gPSB7fTtcblxuICAgIChzZWN0aW9ucyB8fCBbXSkuZm9yRWFjaCgoc2VjdGlvbikgPT4ge1xuICAgICAgaWYgKCF0aGlzLmlzUmV2aXNlZEFwcFRhYnNTZWN0aW9uKHNlY3Rpb24pIHx8ICFzZWN0aW9uLmFwcHMubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcHJldmlvdXNTZWxlY3Rpb24gPSB0aGlzLnJldmlzZWRTZWxlY3RlZEFwcEJ5U2VjdGlvbltzZWN0aW9uLmlkXTtcbiAgICAgIGNvbnN0IGN1cnJlbnRBcHAgPSB0aGlzLmdldEN1cnJlbnRPcHRpbWl6ZUFwcChzZWN0aW9uKTtcbiAgICAgIGNvbnN0IGFwcHNXaXRoQWN0aXZlUm91dGUgPSAoc2VjdGlvbi5hcHBzIHx8IFtdKS5maWx0ZXIoKGFwcCkgPT5cbiAgICAgICAgYXBwICYmIGFwcC5pZCAhPT0gJ2Fkc19hbWF6b25fYWR2ZXJ0aXNpbmcnICYmIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKFthcHBdKVxuICAgICAgKTtcblxuICAgICAgbGV0IHNlbGVjdGVkQXBwOiBSZXZpc2VkTmF2TWVudUl0ZW0gfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoY3VycmVudEFwcCkge1xuICAgICAgICBzZWxlY3RlZEFwcCA9IGN1cnJlbnRBcHA7XG4gICAgICB9IGVsc2UgaWYgKGFwcHNXaXRoQWN0aXZlUm91dGUubGVuZ3RoID09PSAxKSB7XG4gICAgICAgIHNlbGVjdGVkQXBwID0gYXBwc1dpdGhBY3RpdmVSb3V0ZVswXTtcbiAgICAgIH0gZWxzZSBpZiAoYXBwc1dpdGhBY3RpdmVSb3V0ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IHByZXYgPSBzZWN0aW9uLmFwcHMuZmluZCgoYXBwKSA9PiBhcHAuaWQgPT09IHByZXZpb3VzU2VsZWN0aW9uKTtcbiAgICAgICAgc2VsZWN0ZWRBcHAgPVxuICAgICAgICAgIChwcmV2ICYmIGFwcHNXaXRoQWN0aXZlUm91dGUuc29tZSgoYSkgPT4gYS5pZCA9PT0gcHJldi5pZCkgPyBwcmV2IDogdW5kZWZpbmVkKSB8fFxuICAgICAgICAgIGFwcHNXaXRoQWN0aXZlUm91dGVbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxlY3RlZEFwcCA9XG4gICAgICAgICAgc2VjdGlvbi5hcHBzLmZpbmQoKGFwcCkgPT4gYXBwLmlkID09PSBwcmV2aW91c1NlbGVjdGlvbikgfHxcbiAgICAgICAgICBzZWN0aW9uLmFwcHMuZmluZCgoYXBwKSA9PiBhcHAuaWQgPT09IHNlY3Rpb24uZGVmYXVsdEFwcElkKSB8fFxuICAgICAgICAgIHNlY3Rpb24uYXBwc1swXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVjdGVkQXBwKSB7XG4gICAgICAgIG5leHRTdGF0ZVtzZWN0aW9uLmlkXSA9IHNlbGVjdGVkQXBwLmlkO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPcHRpbWl6ZS9hcHAtdGFicyBzaG91bGQgc3RheSBhbmNob3JlZCB0byB0aGUgY3VycmVudCBBbmd1bGFyIGhvc3QgYXBwLlxuICAgKiBTcG9uc29yZWQgQWRzIGlzIGFuIEFuZ3VsYXJKUyBhcHAgYW5kIHNob3VsZCBub3QgZHJpdmUgYXBwLXRhYnMgc2VsZWN0aW9uL2V4cGFuc2lvbiBoZXJlLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXRDdXJyZW50T3B0aW1pemVBcHAoc2VjdGlvbjogUmV2aXNlZEFwcFRhYnNTZWN0aW9uKTogUmV2aXNlZE5hdk1lbnVJdGVtIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXNlY3Rpb24/LmFwcHM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgY3VycmVudEFwcElkID0gdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LmFwcGxpY2F0aW9uSWQgfHwgdGhpcy5jdXJyZW50QXBwPy5pZDtcbiAgICBpZiAoIWN1cnJlbnRBcHBJZCB8fCBjdXJyZW50QXBwSWQgPT09ICdhZHNfYW1hem9uX2FkdmVydGlzaW5nJykge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb24uYXBwcy5maW5kKChhcHApID0+IGFwcD8uaWQgPT09IGN1cnJlbnRBcHBJZCk7XG4gIH1cblxuICBwcml2YXRlIGxvZ09wdGltaXplRGVidWdTdGF0ZSgpOiB2b2lkIHtcbiAgICBjb25zdCBvcHRpbWl6ZVNlY3Rpb24gPSAodGhpcy5yZXZpc2VkU2VjdGlvbnMgfHwgW10pLmZpbmQoKHNlY3Rpb24pID0+IHNlY3Rpb24/LmlkID09PSAnb3B0aW1pemUnKSBhcyBSZXZpc2VkQXBwVGFic1NlY3Rpb24gfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFvcHRpbWl6ZVNlY3Rpb24pIHtcbiAgICAgIGNvbnNvbGUubG9nKCdbc2lkZWJhcl1bb3B0aW1pemUtZGVidWddIG5vIG9wdGltaXplIHNlY3Rpb24nLCB7XG4gICAgICAgIHJvdXRlOiB0aGlzLnJvdXRlcj8udXJsLFxuICAgICAgICBhcHBsaWNhdGlvbklkOiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscz8uYXBwbGljYXRpb25JZCxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNlbGVjdGVkQXBwSWQgPSB0aGlzLnJldmlzZWRTZWxlY3RlZEFwcEJ5U2VjdGlvblsnb3B0aW1pemUnXTtcbiAgICBjb25zdCBhY3RpdmVBcHAgPSB0aGlzLmZpbmRBY3RpdmVBcHBGb3JTZWN0aW9uKG9wdGltaXplU2VjdGlvbik7XG4gICAgY29uc3Qgc2VsZWN0ZWRBcHAgPSB0aGlzLmdldFJldmlzZWRTZWN0aW9uU2VsZWN0ZWRBcHAob3B0aW1pemVTZWN0aW9uKTtcbiAgICBjb25zdCBleHBhbmRlZCA9IHRoaXMuaXNSZXZpc2VkU2VjdGlvbkV4cGFuZGVkKCdvcHRpbWl6ZScpO1xuICAgIGNvbnN0IGNvbnRhaW5zQWN0aXZlUm91dGUgPSB0aGlzLnNlY3Rpb25Db250YWluc0FjdGl2ZVJvdXRlKG9wdGltaXplU2VjdGlvbik7XG5cbiAgICBjb25zb2xlLmxvZygnW3NpZGViYXJdW29wdGltaXplLWRlYnVnXScsIHtcbiAgICAgIHJvdXRlOiB0aGlzLnJvdXRlcj8udXJsLFxuICAgICAgYXBwbGljYXRpb25JZDogdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LmFwcGxpY2F0aW9uSWQsXG4gICAgICBjdXJyZW50QXBwSWQ6IHRoaXMuY3VycmVudEFwcD8uaWQsXG4gICAgICBvcHRpbWl6ZUFwcHM6IChvcHRpbWl6ZVNlY3Rpb24uYXBwcyB8fCBbXSkubWFwKChhcHApID0+IGFwcD8uaWQpLFxuICAgICAgc2VsZWN0ZWRBcHBJZCxcbiAgICAgIHNlbGVjdGVkQXBwUmVzb2x2ZWQ6IHNlbGVjdGVkQXBwPy5pZCxcbiAgICAgIGFjdGl2ZUFwcElkOiBhY3RpdmVBcHA/LmlkLFxuICAgICAgY29udGFpbnNBY3RpdmVSb3V0ZSxcbiAgICAgIGV4cGFuZGVkLFxuICAgICAgc2VjdGlvblN0YXRlOiB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGU/Llsnb3B0aW1pemUnXSxcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgY29sbGFwc2VBbGxSZXZpc2VkU2VjdGlvbnMoKSB7XG4gICAgT2JqZWN0LmtleXModGhpcy5yZXZpc2VkU2VjdGlvblN0YXRlIHx8IHt9KS5mb3JFYWNoKChzZWN0aW9uSWQpID0+IHtcbiAgICAgIHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uSWRdID0gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKiogV2hlbiB0aGUgc2lkZW5hdiBvcGVucywgZXhwYW5kIGFueSByZXZpc2VkIHNlY3Rpb24gdGhhdCBvd25zIHRoZSBjdXJyZW50IHJvdXRlIChhbmQgc3luYyBhcHAtdGFicyBzZWxlY3Rpb24pLiAqL1xuICBwcml2YXRlIGV4cGFuZFJldmlzZWRTZWN0aW9uc0NvbnRhaW5pbmdBY3RpdmVSb3V0ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNSZXZpc2VkTmF2aWdhdGlvbkVuYWJsZWQoKSB8fCAhdGhpcy5yZXZpc2VkU2VjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJldmlzZWRTZWN0aW9ucy5mb3JFYWNoKChzZWN0aW9uKSA9PiB7XG4gICAgICBpZiAodGhpcy5zZWN0aW9uQ29udGFpbnNBY3RpdmVSb3V0ZShzZWN0aW9uKSkge1xuICAgICAgICB0aGlzLnJldmlzZWRTZWN0aW9uU3RhdGVbc2VjdGlvbi5pZF0gPSB0cnVlO1xuICAgICAgICB0aGlzLnN5bmNTZWN0aW9uU2VsZWN0aW9uVG9BY3RpdmVSb3V0ZShzZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgb3Blbk9ubHlSZXZpc2VkU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIHRoaXMucmV2aXNlZFNlY3Rpb25TdGF0ZVtzZWN0aW9uLmlkXSA9IHRydWU7XG4gICAgcmV0dXJuIHRoaXMuc3luY1NlY3Rpb25TZWxlY3Rpb25Ub0FjdGl2ZVJvdXRlKHNlY3Rpb24pO1xuICB9XG5cbiAgLyoqIENsZWFycyBgcGFuZWxPcGVuU3RhdGVgIG9uIGV4cGFuZGFibGUgcm93cyBzbyByZW9wZW5pbmcgYSBzZWN0aW9uIGRvZXMgbm90IGtlZXAgYXJiaXRyYXJ5IHBhbmVscyBvcGVuLiAqL1xuICBwcml2YXRlIGNsZWFyUmV2aXNlZEV4cGFuZGFibGVQYW5lbE9wZW5TdGF0ZUluTWVudVRyZWUobWVudXM6IFJldmlzZWROYXZNZW51SXRlbVtdKTogdm9pZCB7XG4gICAgKG1lbnVzIHx8IFtdKS5mb3JFYWNoKChtZW51KSA9PiB7XG4gICAgICBpZiAobWVudT8uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAobWVudSBhcyBSZXZpc2VkTmF2TWVudUl0ZW0gJiB7IHBhbmVsT3BlblN0YXRlPzogYm9vbGVhbiB9KS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgICAgICB0aGlzLmNsZWFyUmV2aXNlZEV4cGFuZGFibGVQYW5lbE9wZW5TdGF0ZUluTWVudVRyZWUobWVudS5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNsZWFyRXhwYW5kYWJsZVBhbmVsT3BlblN0YXRlRm9yUmV2aXNlZFNlY3Rpb24oc2VjdGlvbjogUmV2aXNlZFNlY3Rpb24pOiB2b2lkIHtcbiAgICBpZiAoIXNlY3Rpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuaXNSZXZpc2VkQXBwVGFic1NlY3Rpb24oc2VjdGlvbikpIHtcbiAgICAgIChzZWN0aW9uLmFwcHMgfHwgW10pLmZvckVhY2goKGFwcCkgPT4ge1xuICAgICAgICB0aGlzLmNsZWFyUmV2aXNlZEV4cGFuZGFibGVQYW5lbE9wZW5TdGF0ZUluTWVudVRyZWUoYXBwLmNoaWxkcmVuIHx8IFtdKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2VjdGlvbi50eXBlID09PSAnZ3JvdXBlZC1tZW51cycgJiYgc2VjdGlvbi5ncm91cHMpIHtcbiAgICAgIHNlY3Rpb24uZ3JvdXBzLmZvckVhY2goKGdyb3VwKSA9PiB7XG4gICAgICAgIHRoaXMuY2xlYXJSZXZpc2VkRXhwYW5kYWJsZVBhbmVsT3BlblN0YXRlSW5NZW51VHJlZShncm91cC5pdGVtcyB8fCBbXSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKiogVGl0bGVkIGdyb3VwIHBhbmVsczogZXhwYW5kZWQgb25seSB3aGVuIGEgbGVhZiB1bmRlciB0aGUgZ3JvdXAgbWF0Y2hlcyB0aGUgY3VycmVudCByb3V0ZSAodW5sZXNzIHVzZXIgdG9nZ2xlZCBsYXRlcikuICovXG4gIHByaXZhdGUgcmVzZXRSZXZpc2VkR3JvdXBFeHBhbmRlZFN0YXRlRm9yU2VjdGlvbihzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IHZvaWQge1xuICAgIGlmICghc2VjdGlvbiB8fCBzZWN0aW9uLnR5cGUgIT09ICdncm91cGVkLW1lbnVzJyB8fCAhc2VjdGlvbi5ncm91cHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgc2VjdGlvbi5ncm91cHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgIGNvbnN0IGtleSA9IHNlY3Rpb24uaWQgKyAnXycgKyBncm91cC5pZDtcbiAgICAgIHRoaXMucmV2aXNlZEdyb3VwRXhwYW5kZWRTdGF0ZVtrZXldID0gdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoZ3JvdXAuaXRlbXMgfHwgW10pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRSZXZpc2VkU2VjdGlvbkJ5SWQoc2VjdGlvbklkOiBzdHJpbmcpOiBSZXZpc2VkU2VjdGlvbiB7XG4gICAgcmV0dXJuICh0aGlzLnJldmlzZWRTZWN0aW9ucyB8fCBbXSkuZmluZCgoc2VjdGlvbikgPT4gc2VjdGlvbi5pZCA9PT0gc2VjdGlvbklkKTtcbiAgfVxuXG4gIHByaXZhdGUgc2Nyb2xsVG9BY3RpdmVNZW51SWZWaXNpYmxlKCkge1xuICAgIC8vIFJldmlzZWQgbGF5b3V0IGtlZXBzIHNlY3Rpb24gaGVhZGVycyArIE9wdGltaXplIGFwcCB0YWJzIGluIHRoZSBzYW1lIHNjcm9sbCBhcmVhIGFzIG1lbnUgcm93cy5cbiAgICAvLyBgc2Nyb2xsVG9wID0gb2Zmc2V0VG9wYCBpcyB3cm9uZyAob2Zmc2V0UGFyZW50IOKJoCBzY3JvbGwgY29udGFpbmVyKSBhbmQganVtcHMgdGhlIGxpc3QsIGhpZGluZyB0aGF0IGNocm9tZS5cbiAgICBpZiAodGhpcy5pc1JldmlzZWROYXZpZ2F0aW9uRW5hYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuc2Nyb2xsVG9BY3RpdmVNZW51KCk7XG4gIH1cblxuICBwcml2YXRlIHN5bmNTZWN0aW9uU2VsZWN0aW9uVG9BY3RpdmVSb3V0ZShzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmV2aXNlZEFwcFRhYnNTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICBjb25zdCBhY3RpdmVBcHAgPSB0aGlzLmZpbmRBY3RpdmVBcHBGb3JTZWN0aW9uKHNlY3Rpb24pO1xuICAgICAgaWYgKGFjdGl2ZUFwcCkge1xuICAgICAgICB0aGlzLnJldmlzZWRTZWxlY3RlZEFwcEJ5U2VjdGlvbltzZWN0aW9uLmlkXSA9IGFjdGl2ZUFwcC5pZDtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc2VjdGlvbkNvbnRhaW5zQWN0aXZlUm91dGUoc2VjdGlvbik7XG4gIH1cblxuICBwcml2YXRlIGZpbmRBY3RpdmVBcHBGb3JTZWN0aW9uKHNlY3Rpb246IFJldmlzZWRBcHBUYWJzU2VjdGlvbik6IFJldmlzZWROYXZNZW51SXRlbSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudE9wdGltaXplQXBwKHNlY3Rpb24pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWN0aW9uQ29udGFpbnNBY3RpdmVSb3V0ZShzZWN0aW9uOiBSZXZpc2VkU2VjdGlvbik6IGJvb2xlYW4ge1xuICAgIGlmICghc2VjdGlvbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzUmV2aXNlZEFwcFRhYnNTZWN0aW9uKHNlY3Rpb24pKSB7XG4gICAgICByZXR1cm4gISF0aGlzLmdldEN1cnJlbnRPcHRpbWl6ZUFwcChzZWN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5oYXNBY3RpdmVSb3V0ZUluTWVudXMoXG4gICAgICB0aGlzLmdldFJldmlzZWRHcm91cGVkU2VjdGlvbkdyb3VwcyhzZWN0aW9uKS5yZWR1Y2UoKGl0ZW1zLCBncm91cCkgPT4gaXRlbXMuY29uY2F0KGdyb3VwLml0ZW1zIHx8IFtdKSwgW10pXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzQWN0aXZlUm91dGVJbk1lbnVzKG1lbnVzOiBSZXZpc2VkTmF2TWVudUl0ZW1bXSA9IFtdKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIG1lbnVzLnNvbWUoKG1lbnUpID0+IHtcbiAgICAgIGlmICghbWVudSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLmlzTWVudVJvdXRlQWN0aXZlKG1lbnUpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVudS5jaGlsZHJlbiAmJiBtZW51LmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGFzQWN0aXZlUm91dGVJbk1lbnVzKG1lbnUuY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTm9ybWFsaXplcyBhIHBhdGggZm9yIG5hdiBtYXRjaGluZy4gU29tZSBzaGVsbHMgZGlmZmVyOiBgcm91dGVyLnVybGAgdnMgYGxvY2F0aW9uLnBhdGhuYW1lYCB2cyBoYXNoIChgIy/igKZgLCBgIyEv4oCmYCkuXG4gICAqL1xuICBwcml2YXRlIG5vcm1hbGl6ZU5hdlBhdGhTZWdtZW50KHJhdzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXJhdykge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBsZXQgdSA9IHJhdy5zcGxpdCgnPycpWzBdLnNwbGl0KCcjJylbMF07XG4gICAgaWYgKHUubGVuZ3RoID4gMSAmJiB1LmVuZHNXaXRoKCcvJykpIHtcbiAgICAgIHUgPSB1LnNsaWNlKDAsIC0xKTtcbiAgICB9XG4gICAgcmV0dXJuIHU7XG4gIH1cblxuICAvKipcbiAgICogU3RyaXAgYCMhL2AgLyBgIy9gIGZyb20gYG1lbnUucm91dGVgIHNvIGl0IGNhbiBtYXRjaCBgY29sbGVjdENhbmRpZGF0ZU5hdlBhdGhzKClgIChoYXNoIOKGkiBgL3NlZ21lbnRgKS5cbiAgICogVXNlZCBvbmx5IGZvciAqKmV4YWN0KiogKGFuZCBsZWdhY3kga2V5d29yZCBzdWZmaXgpIGNoZWNrcyDigJQgbm8gcHJlZml4IHdpbGRjYXJkLCB0byBhdm9pZCBjcm9zcy1tZW51IGZhbHNlIHBvc2l0aXZlcy5cbiAgICovXG4gIHByaXZhdGUgbm9ybWFsaXplTWVudVJvdXRlRm9yUGF0aE1hdGNoKHJvdXRlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsIHtcbiAgICBpZiAoIXJvdXRlIHx8IHR5cGVvZiByb3V0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICBsZXQgciA9IHJvdXRlLnRyaW0oKTtcbiAgICBpZiAoci5pbmRleE9mKCcjIS8nKSA9PT0gMCkge1xuICAgICAgciA9IHIuc2xpY2UoMyk7XG4gICAgfSBlbHNlIGlmIChyLmluZGV4T2YoJyMvJykgPT09IDApIHtcbiAgICAgIHIgPSByLnNsaWNlKDIpO1xuICAgIH0gZWxzZSBpZiAoci5pbmRleE9mKCcjJykgPT09IDApIHtcbiAgICAgIHIgPSByLnNsaWNlKDEpO1xuICAgIH1cbiAgICByID0gci5yZXBsYWNlKC9eXFwvKy8sICcnKTtcbiAgICBpZiAoIXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gJy8nICsgcjtcbiAgfVxuXG4gIC8qKiBDb2xsZWN0IGFsbCBVUkwgc2hhcGVzIHRoYXQgbWlnaHQgcmVwcmVzZW50IHRoZSBjdXJyZW50IHBhZ2UgKGZpeGVzIENyaXRlbyAvIGFuY2lsbGFyeSB3aGVuIFJvdXRlciBVUkwgbGFncyBvciBvbWl0cyBiYXNlKS4gKi9cbiAgcHJpdmF0ZSBjb2xsZWN0Q2FuZGlkYXRlTmF2UGF0aHMoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IHBhdGhzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3QgYWRkID0gKHA6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbiA9IHRoaXMubm9ybWFsaXplTmF2UGF0aFNlZ21lbnQocCk7XG4gICAgICBpZiAobikge1xuICAgICAgICBwYXRocy5hZGQobik7XG4gICAgICB9XG4gICAgfTtcbiAgICBhZGQodGhpcy5yb3V0ZXIudXJsKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmxvY2F0aW9uKSB7XG4gICAgICBhZGQod2luZG93LmxvY2F0aW9uLnBhdGhuYW1lIHx8ICcnKTtcbiAgICAgIGNvbnN0IGhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaCB8fCAnJztcbiAgICAgIGlmIChoYXNoLmluZGV4T2YoJyMvJykgPT09IDApIHtcbiAgICAgICAgYWRkKGhhc2guc2xpY2UoMSkpO1xuICAgICAgfSBlbHNlIGlmIChoYXNoLmluZGV4T2YoJyMhLycpID09PSAwKSB7XG4gICAgICAgIGFkZCgnLycgKyBoYXNoLnNsaWNlKDMpLnJlcGxhY2UoL15cXC8rLywgJycpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIEFycmF5LmZyb20ocGF0aHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1lbnVzIHdob3NlIGBsaW5rYCBpcyBhIHJlYWwgcGF0aCAoYGRzcC/igKZgLCBgZHAv4oCmYCwgYGNvbnRlbnQv4oCmYCwgYGNyaXRlby/igKZgLCBgd2FsbWFydC/igKZgLCBldGMuKS5cbiAgICogRm9yIHRoZXNlLCBuZXZlciB0cmVhdCBiYXJlIGBtZW51LnJvdXRlYCAoZS5nLiBgb3ZlcnZpZXdgKSBhcyBhY3RpdmUg4oCUIGl0IGNvbGxpZGVzIGFjcm9zcyBhcHBzIChEU1AgdnMgU09WKS5cbiAgICovXG4gIHByaXZhdGUgbWVudVVzZXNQYXRoUHJlZml4ZWRMaW5rKG1lbnU6IFJldmlzZWROYXZNZW51SXRlbSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGxpbmsgPSBtZW51Lmxpbms7XG4gICAgcmV0dXJuIHR5cGVvZiBsaW5rID09PSAnc3RyaW5nJyAmJiBsaW5rLmluZGV4T2YoJ3RyaWFuZ3VsYXIuJykgIT09IDAgJiYgbGluay5pbmRleE9mKCcvJykgIT09IC0xO1xuICB9XG5cbiAgLyoqIGBsaW5rYCBsaWtlIGBjcml0ZW8vY3JpdGVvLW92ZXJ2aWV3YCB2cyBVUkwgYC9jcml0ZW8vY3JpdGVvLW92ZXJ2aWV3YCBvciBgLi4uL2NyaXRlby9jcml0ZW8tb3ZlcnZpZXdgIChiYXNlIGhyZWYpLiAqL1xuICBwcml2YXRlIG1lbnVQYXRoTWF0Y2hlc0xpbmtQYXRoKGN1cnJlbnRSb3V0ZTogc3RyaW5nLCBsaW5rOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIGxpbmsgIT09ICdzdHJpbmcnIHx8IGxpbmsuaW5kZXhPZigndHJpYW5ndWxhci4nKSA9PT0gMCB8fCBsaW5rLmluZGV4T2YoJy8nKSA9PT0gLTEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgbGV0IHBhdGggPSBsaW5rLnN0YXJ0c1dpdGgoJy8nKSA/IGxpbmsgOiAnLycgKyBsaW5rLnJlcGxhY2UoL15cXC8rLywgJycpO1xuICAgIGlmIChwYXRoLmxlbmd0aCA+IDEgJiYgcGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgICBwYXRoID0gcGF0aC5zbGljZSgwLCAtMSk7XG4gICAgfVxuICAgIGlmIChjdXJyZW50Um91dGUgPT09IHBhdGggfHwgY3VycmVudFJvdXRlLmluZGV4T2YocGF0aCArICcvJykgPT09IDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBhdCA9IGN1cnJlbnRSb3V0ZS5sYXN0SW5kZXhPZihwYXRoKTtcbiAgICBpZiAoYXQgPj0gMCAmJiBhdCA9PT0gY3VycmVudFJvdXRlLmxlbmd0aCAtIHBhdGgubGVuZ3RoICYmIChhdCA9PT0gMCB8fCBjdXJyZW50Um91dGUuY2hhckF0KGF0IC0gMSkgPT09ICcvJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogYGNoaWxkX3JvdXRlc2AgZW50cmllcyBhcmUgb2Z0ZW4gaG9zdC1yZWxhdGl2ZSBzZWdtZW50cyAoZS5nLiBgd2FsbWFydC1rZXl3b3Jkcy9rZXl3b3JkLXJlcG9ydGApIHdoaWxlXG4gICAqIHRoZSBicm93c2VyIFVSTCBpcyBgL3dhbG1hcnQvd2FsbWFydC1rZXl3b3Jkcy9rZXl3b3JkLXJlcG9ydGAuXG4gICAqL1xuICBwcml2YXRlIG1lbnVDaGlsZFJvdXRlTWF0Y2hlc1BhdGgoY3VycmVudFJvdXRlOiBzdHJpbmcsIGNoaWxkUm91dGU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGlmICghY2hpbGRSb3V0ZSB8fCB0eXBlb2YgY2hpbGRSb3V0ZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgbm9ybWFsaXplZCA9IGNoaWxkUm91dGUuc3RhcnRzV2l0aCgnLycpID8gY2hpbGRSb3V0ZSA6ICcvJyArIGNoaWxkUm91dGUucmVwbGFjZSgvXlxcLysvLCAnJyk7XG4gICAgaWYgKGN1cnJlbnRSb3V0ZSA9PT0gbm9ybWFsaXplZCB8fCBjdXJyZW50Um91dGUgPT09IGNoaWxkUm91dGUpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICBpZiAoY3VycmVudFJvdXRlLmxlbmd0aCA+PSBub3JtYWxpemVkLmxlbmd0aCAmJlxuICAgICAgICBjdXJyZW50Um91dGUuZW5kc1dpdGgobm9ybWFsaXplZCkgJiZcbiAgICAgICAgKGN1cnJlbnRSb3V0ZS5sZW5ndGggPT09IG5vcm1hbGl6ZWQubGVuZ3RoIHx8IGN1cnJlbnRSb3V0ZS5jaGFyQXQoY3VycmVudFJvdXRlLmxlbmd0aCAtIG5vcm1hbGl6ZWQubGVuZ3RoIC0gMSkgPT09ICcvJykpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRXhwYW5kYWJsZSBhcHBzIHVzZSBgZGVmYXVsdHVybGAgbGlrZSBgY3JpdGVvL2Ag4oCUIHRyZWF0IGFueSBgL2NyaXRlb2Agb3IgYC9jcml0ZW8vLi4uYCBhcyB1bmRlciB0aGF0IGFwcCBmb3IgYWN0aXZlIGRldGVjdGlvbi5cbiAgICogU2tpcHMgYCMhYCAvIGAjYCB2YWx1ZXMgdXNlZCBieSBsZWdhY3kgQW1hem9uIHVpLXJvdXRlciBlbnRyaWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBtZW51RGVmYXVsdFVybE1hdGNoZXNQYXRoKGN1cnJlbnRSb3V0ZTogc3RyaW5nLCBtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICBjb25zdCBkdSA9IG1lbnUuZGVmYXVsdHVybDtcbiAgICBpZiAoIWR1IHx8IHR5cGVvZiBkdSAhPT0gJ3N0cmluZycgfHwgZHUuaW5kZXhPZignIycpID49IDAgfHwgZHUuaW5kZXhPZignIScpID49IDApIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgYmFzZSA9ICcvJyArIGR1LnJlcGxhY2UoL15cXC8rLywgJycpLnJlcGxhY2UoL1xcLyQvLCAnJyk7XG4gICAgaWYgKCFiYXNlIHx8IGJhc2UgPT09ICcvJykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBiYXNlIHx8IGN1cnJlbnRSb3V0ZS5zdGFydHNXaXRoKGJhc2UgKyAnLycpO1xuICB9XG5cbiAgLyoqIFB1YmxpYyBzbyByb3V0ZSBydWxlcyBzdGF5IGluIG9uZSBwbGFjZSAodXNlZCBieSByZXZpc2VkIGdyb3VwZWQgbWVudXMgKyB1bmlmaWVkIGlzQ2hlY2tBY3RpdmVSb3V0ZSkuICovXG4gIHB1YmxpYyBpc01lbnVSb3V0ZUFjdGl2ZShtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBib29sZWFuIHtcbiAgICBpZiAoIW1lbnUpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgY2FuZGlkYXRlcyA9IHRoaXMuY29sbGVjdENhbmRpZGF0ZU5hdlBhdGhzKCk7XG4gICAgY29uc3QgY2hpbGRSb3V0ZXMgPSAobWVudSBhcyBhbnkpPy5jaGlsZF9yb3V0ZXMgfHwgW107XG5cbiAgICBjb25zdCBwYXRoUHJlZml4ZWRMaW5rID0gdGhpcy5tZW51VXNlc1BhdGhQcmVmaXhlZExpbmsobWVudSk7XG5cbiAgICBmb3IgKGNvbnN0IGN1cnJlbnRSb3V0ZSBvZiBjYW5kaWRhdGVzKSB7XG4gICAgICAvKiBQYXRoLXByZWZpeGVkIGFuY2lsbGFyeSBsaW5rcyBtdXN0IG1hdGNoIGZ1bGwgcGF0aCAobGluayAvIGRlZmF1bHR1cmwgLyBjaGlsZF9yb3V0ZXMpLCBub3QgYHJvdXRlYCBhbG9uZS4gKi9cbiAgICAgIGlmICghcGF0aFByZWZpeGVkTGluayAmJiBtZW51LnJvdXRlKSB7XG4gICAgICAgIGNvbnN0IG5yID0gdGhpcy5ub3JtYWxpemVNZW51Um91dGVGb3JQYXRoTWF0Y2gobWVudS5yb3V0ZSk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBuciAmJlxuICAgICAgICAgIChjdXJyZW50Um91dGUgPT09IG5yIHx8XG4gICAgICAgICAgICBjdXJyZW50Um91dGUgPT09IG5yICsgJy9rZXl3b3JkLXJlcG9ydCcgfHxcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbnIgKyAnL2tleXdvcmQtc3VnZ2VzdGlvbnMvYXV0bycgfHxcbiAgICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbnIgKyAnL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsJylcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbGVnYWN5ID0gJy8nICsgbWVudS5yb3V0ZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbGVnYWN5IHx8XG4gICAgICAgICAgY3VycmVudFJvdXRlID09PSBsZWdhY3kgKyAnL2tleXdvcmQtcmVwb3J0JyB8fFxuICAgICAgICAgIGN1cnJlbnRSb3V0ZSA9PT0gbGVnYWN5ICsgJy9rZXl3b3JkLXN1Z2dlc3Rpb25zL2F1dG8nIHx8XG4gICAgICAgICAgY3VycmVudFJvdXRlID09PSBsZWdhY3kgKyAnL2tleXdvcmQtc3VnZ2VzdGlvbnMvbWFudWFsJ1xuICAgICAgICApIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMubWVudVBhdGhNYXRjaGVzTGlua1BhdGgoY3VycmVudFJvdXRlLCBtZW51LmxpbmsgYXMgc3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm1lbnVEZWZhdWx0VXJsTWF0Y2hlc1BhdGgoY3VycmVudFJvdXRlLCBtZW51KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChtZW51Lm1hdGNoUm91dGVzICYmIG1lbnUubWF0Y2hSb3V0ZXMuaW5kZXhPZihjdXJyZW50Um91dGUpID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBpZiAoY2hpbGRSb3V0ZXMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIGNoaWxkUm91dGVzLnNvbWUoKGNoaWxkUm91dGUpID0+IHRoaXMubWVudUNoaWxkUm91dGVNYXRjaGVzUGF0aChjdXJyZW50Um91dGUsIGNoaWxkUm91dGUpKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBub3JtYWxpemVSZXZpc2VkTGFiZWwobGFiZWw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFsYWJlbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHJldHVybiBsYWJlbFxuICAgICAgLnJlcGxhY2UoLzxbXj5dKj4vZywgJycpXG4gICAgICAucmVwbGFjZSgvaW50ZW50d2lzZVxccysvZ2ksICcnKVxuICAgICAgLnJlcGxhY2UoL1xccysvZywgJyAnKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldFJldmlzZWRPcHRpbWl6ZVJlY29tbWVuZGF0aW9uQ291bnQoYXBwOiBSZXZpc2VkTmF2TWVudUl0ZW0pOiBudW1iZXIgfCBudWxsIHtcbiAgICBpZiAoIWFwcCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGFwcC5pZCA9PT0gJ2Fkc19hbWF6b25fYWR2ZXJ0aXNpbmcnKSB7XG4gICAgICBjb25zdCByZWNvbW1lbmRhdGlvbk1lbnUgPSB0aGlzLmZpbmRSZXZpc2VkTWVudUJ5SWQoYXBwLmNoaWxkcmVuIHx8IFtdLCAnYW1zX2Fkc19yZWNvbW1lbmRhdGlvbnMnKTtcbiAgICAgIHJldHVybiByZWNvbW1lbmRhdGlvbk1lbnUgPyB0aGlzLmdldE1lbnVDb3VudFZhbHVlKHJlY29tbWVuZGF0aW9uTWVudSwgJ2FjdGl2ZVJlY29tbWVuZGF0aW9uJykgOiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRNZW51Q291bnRWYWx1ZShtZW51OiBSZXZpc2VkTmF2TWVudUl0ZW0sIGZhbGxiYWNrQ291bnRLZXk/OiBzdHJpbmcpOiBudW1iZXIgfCBudWxsIHtcbiAgICBjb25zdCBjb3VudEtleSA9IG1lbnUgJiYgbWVudS5jb3VudEtleSA/IG1lbnUuY291bnRLZXkgOiBmYWxsYmFja0NvdW50S2V5O1xuICAgIGlmICghY291bnRLZXkpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IGNvdW50VmFsdWUgPSB0aGlzLm5hdmlnYXRpb24uZmV0Y2hLZXlWYWx1ZShjb3VudEtleSk7XG4gICAgcmV0dXJuIHR5cGVvZiBjb3VudFZhbHVlID09PSAnbnVtYmVyJyAmJiBjb3VudFZhbHVlID4gMCA/IGNvdW50VmFsdWUgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBmaW5kUmV2aXNlZE1lbnVCeUlkKG1lbnVzOiBSZXZpc2VkTmF2TWVudUl0ZW1bXSwgbWVudUlkOiBzdHJpbmcpOiBSZXZpc2VkTmF2TWVudUl0ZW0gfCBudWxsIHtcbiAgICBpZiAoIW1lbnVzIHx8ICFtZW51SWQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgbWVudSBvZiBtZW51cykge1xuICAgICAgaWYgKCFtZW51KSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVudS5pZCA9PT0gbWVudUlkIHx8IG1lbnUuc291cmNlTWVudUlkID09PSBtZW51SWQpIHtcbiAgICAgICAgcmV0dXJuIG1lbnU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1hdGNoZWRDaGlsZCA9IHRoaXMuZmluZFJldmlzZWRNZW51QnlJZChtZW51LmNoaWxkcmVuIHx8IFtdLCBtZW51SWQpO1xuICAgICAgaWYgKG1hdGNoZWRDaGlsZCkge1xuICAgICAgICByZXR1cm4gbWF0Y2hlZENoaWxkO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGdldCBzaWRlSWRJbmZvKCl7XG4gICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8gJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKXtcbiAgICAgIHJldHVybiBOdW1iZXIodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uc2l0ZUlkKVxuICAgIH1lbHNlIGlmKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzICYmIHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSl7XG4gICAgICByZXR1cm4gTnVtYmVyKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzWydzaXRlSWQnXSlcbiAgICB9XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuXG4gIHB1YmxpYyBjaGVja0ZvclJlZGlyZWN0aW9uKGFwcE1lbnVzLCBnc01lbnVzLCBhcHBsaWNhdGlvbkRldGFpbHMpIHtcbiAgICBjb25zdCBjdXJyZW50Um91dGUgPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKVswXTtcbiAgICBjb25zdCBjdXJyZW50QXBwTWVudXMgPSBhcHBNZW51cy5maW5kKGFwcCA9PiAgYXBwLmlkLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDApO1xuXG4gICAgaWYgKGN1cnJlbnRBcHBNZW51cykge1xuICAgICAgY29uc3QgYWxsTWVudXMgPSBbY3VycmVudEFwcE1lbnVzLCAuLi5nc01lbnVzXTtcbiAgICAgIGNvbnN0IGlzTWVudUF2YWlsYWJsZSA9IGZpbmRMaW5rKGFsbE1lbnVzKTtcbiAgICAgIGlmICghaXNNZW51QXZhaWxhYmxlKSB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoY3VycmVudEFwcE1lbnVzLmRlZmF1bHR1cmwpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm5hdmlnYXRpb24uZ2V0SG9zdE9yaWdpbkFuZE5hdmlnYXRlKHRoaXMudG9EaXNwbGF5QXBwbGljYXRpb25zWzBdLmRlZmF1bHR1cmwpO1xuICAgIH1cblxuXG4gICAgZnVuY3Rpb24gaXNNZW51Um91dGVNYXRjaChsaW5rKSB7XG4gICAgICByZXR1cm4gY3VycmVudFJvdXRlID09PSBgLyR7bGlua31gO1xuICAgIH0gXG5cbiAgICBmdW5jdGlvbiBmaW5kTGluayhtZW51QXJyYXkpIHtcbiAgICAgIHJldHVybiBtZW51QXJyYXkuc29tZShmdW5jdGlvbihtZW51KSB7XG4gICAgICAgICAgaWYobWVudS5sZXZlbCA9PSBcIm9uZVwiICYmIG1lbnUuY2hpbGRyZW4gJiYgbWVudS5jaGlsZHJlbi5sZW5ndGggPiAwKXtcbiAgICAgICAgICAvLyBJZiB0aGUgbWVudSBoYXMgY2hpbGRyZW4sIHNlYXJjaCByZWN1cnNpdmVseVxuICAgICAgICAgIGlmIChtZW51LmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgIHJldHVybiBmaW5kTGluayhtZW51LmNoaWxkcmVuKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBtZW51IGl0ZW0gaGFzIGEgbWF0Y2hpbmcgbGlua1xuICAgICAgICAgIGlmIChpc01lbnVSb3V0ZU1hdGNoKG1lbnUucm91dGUpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIElmIHRoZXJlIGFyZSBjaGlsZCByb3V0ZXMsIHNlYXJjaCB3aXRoaW4gdGhlbVxuICAgICAgICAgIGlmIChtZW51LmNoaWxkX3JvdXRlcykge1xuICAgICAgICAgICAgICByZXR1cm4gbWVudS5jaGlsZF9yb3V0ZXMuc29tZShmdW5jdGlvbihjaGlsZFJvdXRlKSB7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gaXNNZW51Um91dGVNYXRjaChjaGlsZFJvdXRlKTtcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICk7XG4gICAgfVxuICB9XG5cblxuXG5cblxuICAvLyBwdWJsaWMgY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMsIG1lbnVsaXN0cykge1xuICAvLyAgIHRyeXtcbiAgLy8gICAgIGxldCBpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVOb3RWaXNpYmxlQnlSb2xlID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVyT3JnV2l0aFVzZXJSb2xlID0gdHJ1ZTtcbiAgLy8gICAgIGxldCBpc01lbnVOb3RWaXNpYmxlQnlhcHBzcGFjaWZpY2NvbmZpZ2NoZWNrID10cnVlO1xuICAvLyAgICAgbGV0IGlzcmVkaXJlY3RlZCA9IGZhbHNlO1xuICAvLyAgICAgbGV0IGFwcGxpY2F0aW9uSWRMaXN0ID0gW1wiYWRzX2FtYXpvbl9zZWxsZXJfc2VsbGVyX2FuYWx5dGljc1wiICwgXCJhZHNfYW1hem9uX3NlbGxlcl92ZW5kb3JfYW5hbHl0aWNzXCJdXG5cbiAgLy8gICAgIGxldCBtZW51bGlzdCA9IGFwcGxpY2F0aW9uSWRMaXN0LmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID4gLTEgJiYgYXBwbGljYXRpb25EZXRhaWxzLmxpc3RNZW51cyAmJiBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzLmxlbmd0aCA+IDAgPyBhcHBsaWNhdGlvbkRldGFpbHMubGlzdE1lbnVzIDogbWVudWxpc3RzO1xuXG4gIC8vICAgICBjb25zdCByb2xlID0gWydTVVBFUl9BRE1JTicsICdTVVBFUl9BRE1JTl9SRUFEX09OTFknXTtcbiAgLy8gICAgIGlmIChyb2xlLmluZGV4T2YoYXBwbGljYXRpb25EZXRhaWxzLnVzZXJJbmZvLnJvbGUpID09IC0xKSB7XG4gICAgICAgIFxuICAvLyAgICAgICBsZXQgYXBwbGljYXRpb25NZW51ZXMgPSBtZW51bGlzdCAmJiBtZW51bGlzdC5sZW5ndGggPiAwICYmIG1lbnVsaXN0LmZpbmQoKG1lbnVzKT0+e1xuICAvLyAgICAgICAgIHJldHVybiBtZW51cy5pZCA9PSBhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFxuICAvLyAgICAgICB9KVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5vcmdhbml6YXRpb25fc2V0dGluZ19ub3RfaW4pIHtcbiAgLy8gICAgICAgICBpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yTm90T3JnU2V0dGluZ3MoYXBwbGljYXRpb25NZW51ZXMub3JnYW5pemF0aW9uX3NldHRpbmdfbm90X2luKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzKSB7XG4gIC8vICAgICAgICAgaXNNZW51VmlzaWJsZUJ5Um9sZSA9IHRoaXMubmF2aWdhdGlvbi5jaGVja0ZvclJvbGVzKGFwcGxpY2F0aW9uTWVudWVzLnZpc2liaWxpdHlfcm9sZXMpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzX25vdF9pbikge1xuICAvLyAgICAgICAgIGlzTWVudU5vdFZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3J2aXNpYmlsaXR5Um9sZXNOb3RJbihhcHBsaWNhdGlvbk1lbnVlcy52aXNpYmlsaXR5X3JvbGVzX25vdF9pbik7XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMuYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjaykge1xuICAvLyAgICAgICAgIGlzTWVudU5vdFZpc2libGVCeWFwcHNwYWNpZmljY29uZmlnY2hlY2sgPSB0aGlzLm5hdmlnYXRpb24uYXBwU3BlY2lmaWNDb25maWcoYXBwbGljYXRpb25NZW51ZXMuYXBwX3NwYWNpZmljX2NvbmZpZ19jaGVjayk7XG4gIC8vICAgICAgIH1cblxuICAvLyAgICAgICBpZiAoYXBwbGljYXRpb25NZW51ZXMgJiYgYXBwbGljYXRpb25NZW51ZXMub3JnX3VzZXJfY3RybCkge1xuICAvLyAgICAgICAgIGlzTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JPcmdXaXRoVXNlclJvbGUoYXBwbGljYXRpb25NZW51ZXMub3JnX3VzZXJfY3RybCxhcHBsaWNhdGlvbk1lbnVlcywgYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGlmIChhcHBsaWNhdGlvbk1lbnVlcyAmJiBhcHBsaWNhdGlvbk1lbnVlcy5pZCA9PSBcImFtYy1wbGF0Zm9ybS13ZWJcIiAmJiBhcHBsaWNhdGlvbk1lbnVlcy5jaGlsZHJlbikge1xuICAvLyAgICAgICAgIGxldCBpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgICAgIGxldCBpc0NoaWxkTWVudU5vdFZpc2libGVCeVJvbGUgPSB0cnVlO1xuICAvLyAgICAgICAgIGxldCBpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUgPSB0cnVlO1xuXG4gIC8vICAgICAgICAgY29uc3QgY2hpbGRtZW51ID0gdGhpcy52YWxpZGF0ZVJvdXRlQnlTdGF0ZSggdGhpcy5yb3V0ZXIgLCBhcHBsaWNhdGlvbk1lbnVlcy5jaGlsZHJlbik7XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzX25vdF9pbikge1xuICAvLyAgICAgICAgICAgaXNDaGlsZE1lbnVOb3RWaXNpYmxlQnlSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9ydmlzaWJpbGl0eVJvbGVzTm90SW4oY2hpbGRtZW51LnZpc2liaWxpdHlfcm9sZXNfbm90X2luKTtcbiAgLy8gICAgICAgICB9XG5cbiAgLy8gICAgICAgICBpZiAoY2hpbGRtZW51ICYmIGNoaWxkbWVudS52aXNpYmlsaXR5X3JvbGVzKSB7XG4gIC8vICAgICAgICAgICBpc0NoaWxkTWVudVZpc2libGVCeVJvbGUgPSB0aGlzLm5hdmlnYXRpb24uY2hlY2tGb3JSb2xlcyhjaGlsZG1lbnUudmlzaWJpbGl0eV9yb2xlcyk7XG4gIC8vICAgICAgICAgfVxuXG4gIC8vICAgICAgICAgaWYgKGNoaWxkbWVudSAmJiBjaGlsZG1lbnUub3JnX3VzZXJfY3RybCkge1xuICAvLyAgICAgICAgICAgaXNDaGlsZE1lbnVyT3JnV2l0aFVzZXJSb2xlID0gdGhpcy5uYXZpZ2F0aW9uLmNoZWNrRm9yT3JnV2l0aFVzZXJSb2xlKGNoaWxkbWVudS5vcmdfdXNlcl9jdHJsLGNoaWxkbWVudSwgYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRPcmdhbml6YXRpb24ub3JnYW5pemF0aW9uSWQpO1xuICAvLyAgICAgICAgIH1cblxuICAvLyAgICAgICAgIGlmICgoIWlzQ2hpbGRNZW51Tm90VmlzaWJsZUJ5Um9sZSB8fCAhaXNDaGlsZE1lbnVWaXNpYmxlQnlSb2xlIHx8ICFpc0NoaWxkTWVudXJPcmdXaXRoVXNlclJvbGUpICYmIGNoaWxkbWVudSkge1xuICAvLyAgICAgICAgICAgaXNyZWRpcmVjdGVkID0gdHJ1ZTtcbiAgLy8gICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtcIi9cIl0pO1xuICAvLyAgICAgICAgIH1cbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBpZiAoKCFpc01lbnVWaXNpYmxlQnlvcmdTZXR0aW5nIHx8ICFpc01lbnVWaXNpYmxlQnlSb2xlIHx8ICFpc01lbnVOb3RWaXNpYmxlQnlSb2xlIHx8ICFpc01lbnVyT3JnV2l0aFVzZXJSb2xlIHx8ICFpc01lbnVOb3RWaXNpYmxlQnlhcHBzcGFjaWZpY2NvbmZpZ2NoZWNrKSAmJiAhaXNyZWRpcmVjdGVkKSB7XG4gIC8vICAgICAgICAgaWYgKCF0aGlzLmN1cnJlbnRBcHApIHtcbiAgLy8gICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUodGhpcy50b0Rpc3BsYXlBcHBsaWNhdGlvbnNbMF0uZGVmYXVsdHVybCk7ICBcbiAgLy8gICAgICAgICB9ZWxzZXtcbiAgLy8gICAgICAgICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUoYXBwbGljYXRpb25NZW51ZXMuZGVmYXVsdHVybCk7XG4gIC8vICAgICAgICAgfVxuICAvLyAgICAgICB9XG4gIC8vICAgICB9XG4gIC8vICAgfWNhdGNoKGVycm9yKXtcbiAgLy8gICAgICAgdGhyb3cgZXJyb3I7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgdmFsaWRhdGVSb3V0ZUJ5U3RhdGUoc3RhdGUgLCBsaXN0TWVudXMpe1xuICAgIHRyeXtcbiAgICAgICAgY29uc3QgZmluZFJvdXRlID0gbGlzdE1lbnVzLmZpbmQobGlzdCA9PiB7XG4gICAgICAgICAgICBpZihsaXN0LmxpbmsgPT0gJ2FtYycrc3RhdGUudXJsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3Q7XG4gICAgICAgICAgICB9IGVsc2UgaWYobGlzdC5tYXRjaFJvdXRlcyAmJiBsaXN0Lm1hdGNoUm91dGVzLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIGlmKGxpc3QubWF0Y2hSb3V0ZXMuaW5jbHVkZXMoc3RhdGUudXJsKSl7XG4gICAgICAgICAgICAgICAgICByZXR1cm4gbGlzdDtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIGZpbmRSb3V0ZTtcbiAgICB9Y2F0Y2goZXJyb3Ipe1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICB9XG59XG4gIFxuICAvLyBwdWJsaWMgY2hlY2tGb3JSZWRpcmVjdGlvbihhcHBsaWNhdGlvbkRldGFpbHM6IGFwcERldGFpbHMpIHtcbiAgLy8gICBsZXQgcm91dGUgPSAnJztcbiAgLy8gICBpZihhcHBsaWNhdGlvbkRldGFpbHMuY3VycmVudEFjY291bnQgJiYgISh0aGlzLm5hdmlnYXRpb24uaXNIYXZpbmdBbnlBY3RpdmVTdWJzKGFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkLGFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudC5zdWJzY3JpcHRpb24sYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpKSl7XG4gIC8vICAgICBzd2l0Y2goYXBwbGljYXRpb25EZXRhaWxzLmN1cnJlbnRBY2NvdW50LnR5cGUpe1xuICAvLyAgICAgICBjYXNlICdDT05URU5UJzoge1xuICAvLyAgICAgICAgICAgcm91dGUgPSAnY29udGVudC9zaGFyZS1vZi12b2ljZSdcbiAgLy8gICAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0RTUCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICdkc3Avb3JkZXInXG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQU1TX0FUVFJJQlVUSU9OJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2F0dHJpYnV0aW9uL2F0dHJpYnV0aW9uLWNhbXBhaWducydcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdTRUxMRVJfQ0VOVFJBTCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtY29udGVudC1kYXNoYm9hcmQvc2VsbGVyLXNhbGVzLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdWRU5ET1JfQ0VOVFJBTCc6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtY29udGVudC1kYXNoYm9hcmQvY3VzdG9tLXJlcG9ydHMtdmVuZG9yLXNhbGVzLW92ZXJ2aWV3JztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdJTlNUQUNBUlQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnaW5zdGFjYXJ0L2luc3RhY2FydC1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgICAgY2FzZSAnQ1JJVEVPJzoge1xuICAvLyAgICAgICAgIHJvdXRlID0gJ2NyaXRlby9jcml0ZW8tb3ZlcnZpZXcnO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ1dBTE1BUlQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnd2FsbWFydC8nO1xuICAvLyAgICAgICAgIGJyZWFrO1xuICAvLyAgICAgICB9XG4gIC8vICAgICAgIGNhc2UgJ0FNQVpPTl9NQVJLRVRJTkdfQ0xPVUQnOiB7XG4gIC8vICAgICAgICAgcm91dGUgPSAnZHAvZGF0YS1hbmFseXRpY3MtZ2V0dGluZy1zdGFydGVkJztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgfVxuICAvLyAgICAgICBjYXNlICdBTVNfVkVORE9SJzpcbiAgLy8gICAgICAgY2FzZSAnQU1TX1NFTExFUic6IHtcbiAgLy8gICAgICAgICByb3V0ZSA9ICcjIS9hbXMtcGFnZS1vdmVydmlldyc7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIH1cbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUocm91dGUpO1xuICAvLyAgIH1cbiAgLy8gfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YShjdXJyZW50QWNjb3VudCl7XG4gICAgdHJ5IHtcbiAgICB0aGlzLlJlc3RBcGlTZXJ2aWNlLmdldFN0cnVjdHVyZUFQSVN1cHBvcnREYXRhKGN1cnJlbnRBY2NvdW50Lm9yZ2FuaXphdGlvbklkLGN1cnJlbnRBY2NvdW50LmJ1c2luZXNzR3JvdXBJZCxjdXJyZW50QWNjb3VudC5hbXNBY2NvdW50SWQpLnN1YnNjcmliZSggXG4gICAgICAocmVzcG9uc2U6YW55KSA9PiB7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc1N0cnVjdHVyZUFwaVN1cHBvcnQgPSByZXNwb25zZSA/IHJlc3BvbnNlWydzdHJ1Y3R1cmVBcGlTdXBwb3J0J10gOiB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMubmF2aWdhdGlvbi5pc01hbmFnZWRTZXJ2aWNlQWNjID0gcmVzcG9uc2UgPyByZXNwb25zZVsnaXNNYW5hZ2VkQWNjb3VudCddIDogdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLmNyZWF0ZUFwcERldGFpbHModGhpcy5hcHBsaWNhdGlvbkRldGFpbHMpO1xuICAgICAgICB0aGlzLmNkcmVmLmRldGVjdENoYW5nZXMoKTsgLy8gVHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGFmdGVyIEFQSSByZXNwb25zZVxuICAgICAgfSxcbiAgICAgIChlcnJvcjphbnkpID0+e1xuICAgICAgICB0aGlzLm5hdmlnYXRpb24uaXNTdHJ1Y3R1cmVBcGlTdXBwb3J0ID0gdW5kZWZpbmVkO1xuICAgICAgICB0aGlzLm5hdmlnYXRpb24uaXNNYW5hZ2VkU2VydmljZUFjYyA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5jcmVhdGVBcHBEZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICAgICAgdGhpcy5jZHJlZi5kZXRlY3RDaGFuZ2VzKCk7IC8vIFRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBhZnRlciBlcnJvclxuICAgICAgfSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICB9XG4gIFxuICBwdWJsaWMgc2Nyb2xsVG9BY3RpdmVNZW51KCl7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZih0aGlzLmxpc3RJdGVtcyAmJiB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pICE9IHVuZGVmaW5lZCl7XG4gICAgICAgIHRoaXMubGlzdC5zY3JvbGxUb3AgPSB0aGlzLmxpc3RJdGVtcy5maW5kKChfLCBpKSA9PiAgXy5pc0FjdGl2ZUl0ZW0pLm9mZnNldFRvcDtcbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHVibGljIGlzQ2hlY2tBY3RpdmVSb3V0ZShtZW51LGhlYWRtZW51LHBhcmVudE1lbnUgPSBudWxsKSB7XG4gICAgLy8gbGV0IHVybEFycmF5ID0gdGhpcy5yb3V0ZXIudXJsLnNwbGl0KCcvJyk7XG4gICAgLy8gbGV0IHJvdXRlVXJsID0gdXJsQXJyYXlbdXJsQXJyYXkubGVuZ3RoIC0gMV07XG4gICAgLy8gbGV0IGN1cnJlbnRSb3V0ZSA9IHJvdXRlVXJsLnNwbGl0KCc/JylbMF07XG4gICAgLy8gbGV0IHJvdXRlPW1lbnUucm91dGU7XG4gICAgLy8gbGV0IHBhZ2VOYW1lO1xuICAgIC8vIGlmKHJvdXRlKXtcbiAgICAvLyBsZXQgc3BsaXRlZFVSTCA9IHJvdXRlLnNwbGl0KFwiL1wiKTtcbiAgICAvLyBwYWdlTmFtZSA9IHNwbGl0ZWRVUkwubGVuZ3RoID4wID8gIHNwbGl0ZWRVUkxbc3BsaXRlZFVSTC5sZW5ndGggLSAxXSA6IHJvdXRlO1xuICAgIC8vIH1cblxuICAgIGlmICghbWVudSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuaXNNZW51Um91dGVBY3RpdmUobWVudSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHBhcmVudE1lbnUgIT0gbnVsbCkge1xuICAgICAgdGhpcy5hY3RpdmVQYW5lbCA9IHBhcmVudE1lbnUuaWQ7XG4gICAgfVxuICAgIGlmIChoZWFkbWVudSAhPT0gdW5kZWZpbmVkICYmIGhlYWRtZW51ICE9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5wcmV2QWN0aXZlSGVhZE1lbnUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51ID0gaGVhZG1lbnU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnByZXZBY3RpdmVIZWFkTWVudS5pc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgICBoZWFkbWVudS5pc0FjdGl2ZSA9IHRydWU7XG4gICAgICAgIHRoaXMucHJldkFjdGl2ZUhlYWRNZW51ID0gaGVhZG1lbnU7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcHVibGljIGtlZXBNZW51RXhwYW5kZWQocGFyZW50TWVudUlkOnN0cmluZykge1xuICAgIGlmKHBhcmVudE1lbnVJZC5pbmRleE9mKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDAgICl7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZXtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWxsTWVudUNvbGxhcHNlKCl7XG4gICAgZm9yKGxldCBoZWFkTWVudSBvZiB0aGlzLnRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudSkge1xuICAgICAgICBoZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb2RmaWNhdGlvbkRhdGEoZGF0YTogYW55KTogYW55IHtcbiAgICBsZXQgY29uZmlncyA9IHRoaXMubmF2aWdhdGlvbi5nZXRUeXBlU3RhdHVzQ29uZmlncygpO1xuXHRcdGxldCBvcmRlciA9IE9iamVjdC5rZXlzKGNvbmZpZ3MpO1xuXHRcdGlmKG9yZGVyLmluZGV4T2YoZGF0YS50eXBlKSA+IC0xKXtcblx0XHRcdGRhdGEuYWN0aXZlID0gY29uZmlnc1tkYXRhLnR5cGVdID8gY29uZmlnc1tkYXRhLnR5cGVdIDogZmFsc2U7XG5cdFx0fVxuXHRcdHJldHVybiBkYXRhO1xuXHR9XG5cbiAgbmdPbkNoYW5nZXMoKSB7XG4gICAgLy8gdGhpcy5zaG93TWVudUljb24oKTtcbiAgICB0aGlzLmNoZWNrQXBwbGljYXRpb25EZXRhaWxzKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzKTtcbiAgICBpZih0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkID09ICdhZHNfYW1hem9uX2RzcCcpe1xuICAgICAgdGhpcy5nZXRTdHJ1Y3R1cmVBUElTdXBwb3J0RGF0YSh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5jdXJyZW50QWNjb3VudCk7XG4gICAgfVxuICAgIHRoaXMuY2RyZWYuZGV0ZWN0Q2hhbmdlcygpOyAvLyBUcmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb24gd2hlbiBpbnB1dHMgY2hhbmdlXG4gIH1cblxuICBwdWJsaWMgZ29Ub0FwcGxpY2F0aW9uKGl0ZW0pIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oJ3NlbGVjdGVkQXBwSWQnKTtcbiAgICBjb25zdCB0YXJnZXRJdGVtID0gdGhpcy5nZXREZWZhdWx0TmF2aWdhdGlvblRhcmdldChpdGVtKTtcbiAgICB0aGlzLmdvVG9BcHBEZWZhdWx0UGFnZSh0YXJnZXRJdGVtLCBpdGVtPy5pZCB8fCB0YXJnZXRJdGVtPy5pZCk7XG4gIH1cblxuICBwdWJsaWMgZ29Ub01lbnVMaW5rKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAmJiBpdGVtLmxpbmspIHtcbiAgICAgIHdpbmRvdy5vcGVuKGl0ZW0ubGluaywgJ19ibGFuaycpO1xuICAgICAgY29uc3QgcHJhbXMgPSB7XG4gICAgICAgIFwibG9jYXRpb25cIjogbG9jYXRpb24uaHJlZixcbiAgICAgICAgXCJBcHBOYW1lXCI6IGl0ZW0/Lm5hbWUsXG4gICAgICAgIFwibW9kdWxlX25hbWVcIiA6IG51bGxcbiAgICAgIH1cbiAgICAgIHRoaXMubWl4cGFuZWwucHJvZHVjdFRyYWNrRXZlbnQoXCJQYWdlIFZpZXdlZFwiLHByYW1zKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgaWYgKHRoaXMubXlPYnNlcnZlcikge1xuICAgICAgdGhpcy5teU9ic2VydmVyLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuICAgIGlmKHRoaXMuc2lkZU5hdlN0YXR1c1N1YnNjcmlwdGlvbil7XG4gICAgICB0aGlzLnNpZGVOYXZTdGF0dXNTdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2lkZU5hdkNsb3NlZFN0YXJ0U3Vic2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLnNpZGVOYXZDbG9zZWRTdGFydFN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnb1RvQXBwRGVmYXVsdFBhZ2UoaXRlbSwgYXBwSWQpIHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzYW1lQXBwID0gISEoYXBwSWQgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHM/LmFwcGxpY2F0aW9uSWQgJiYgYXBwSWQgPT09IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpO1xuXG4gICAgaWYgKGl0ZW0uZGVmYXVsdHVybCkge1xuICAgICAgdGhpcy5uYXZpZ2F0aW9uLmdldEhvc3RPcmlnaW5BbmROYXZpZ2F0ZShpdGVtLmRlZmF1bHR1cmwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChzYW1lQXBwICYmIHR5cGVvZiBpdGVtLnJvdXRlID09PSAnc3RyaW5nJyAmJiBpdGVtLnJvdXRlICE9PSAnJyAmJiBpdGVtLnJvdXRlLmluZGV4T2YoJyMnKSA8IDApIHtcbiAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFtpdGVtLnJvdXRlXSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaGFzRXhwbGljaXRIYXNoUm91dGUgPSB0eXBlb2YgaXRlbS5yb3V0ZSA9PT0gJ3N0cmluZycgJiYgaXRlbS5yb3V0ZS5pbmRleE9mKCcjJykgPj0gMDtcbiAgICBjb25zdCB0YXJnZXRVcmwgPSBoYXNFeHBsaWNpdEhhc2hSb3V0ZSA/IGl0ZW0ucm91dGUgOiAoaXRlbS5saW5rIHx8IGl0ZW0ucm91dGUpO1xuICAgIGlmICghdGFyZ2V0VXJsKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaG9zdE5hdkV4dHJhcyA9IGhhc0V4cGxpY2l0SGFzaFJvdXRlID8geyBhcHBJZCB9IDogdW5kZWZpbmVkO1xuICAgIHRoaXMubmF2aWdhdGlvbi5nZXRIb3N0T3JpZ2luQW5kTmF2aWdhdGUodGFyZ2V0VXJsLCBob3N0TmF2RXh0cmFzKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0RGVmYXVsdE5hdmlnYXRpb25UYXJnZXQoaXRlbTogYW55KTogYW55IHtcbiAgICBpZiAoIWl0ZW0pIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIGlmIChpdGVtLmRlZmF1bHR1cmwgfHwgaXRlbS5yb3V0ZSB8fCBpdGVtLmxpbmspIHtcbiAgICAgIHJldHVybiBpdGVtO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuID0gaXRlbS5jaGlsZHJlbiB8fCBbXTtcbiAgICBmb3IgKGNvbnN0IGNoaWxkIG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCByZXNvbHZlZCA9IHRoaXMuZ2V0RGVmYXVsdE5hdmlnYXRpb25UYXJnZXQoY2hpbGQpO1xuICAgICAgaWYgKHJlc29sdmVkKSB7XG4gICAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaXRlbTtcbiAgfVxuXG4gIHB1YmxpYyBoaWRlTWVudUZvcldMKCl7XG4gICAgICBsZXQgaXNPcmdTZXR0aW5nO1xuICAgICAgaWYodGhpcy5hcHBsaWNhdGlvbkRldGFpbHNbJ3VzZXJJbmZvJ10ucm9sZSA9PT0gJ0lBQ19CUkFORF9SRUFEX09OTFknIHx8ICh0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncyAmJiB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5vcmdTZXR0aW5ncy5sZW5ndGggPT0gMCkpe1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1lbHNle1xuICAgICAgICBpZiAodGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MgJiYgdGhpcy5hcHBsaWNhdGlvbkRldGFpbHMub3JnU2V0dGluZ3MubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlzT3JnU2V0dGluZyA9IHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLm9yZ1NldHRpbmdzLmZpbHRlcihmdW5jdGlvbihvcmdTZXR0aW5nKXtcbiAgICAgICAgICAgIGlmKCBvcmdTZXR0aW5nLnNldHRpbmcgPT09ICdJQUNfSU5TSUdIVFMnICYmICghb3JnU2V0dGluZy52YWx1ZSB8fCBvcmdTZXR0aW5nLnZhbHVlICYmIG9yZ1NldHRpbmcudmFsdWUgPT0gJ0FDVElWRScpKSB7XG4gICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiAoaXNPcmdTZXR0aW5nICE9IG51bGwgJiYgKCB0aGlzLmFwcGxpY2F0aW9uRGV0YWlscy5zaWRlYmFySW5mby5zaXRlSWQgPiAxMSB8fCB0aGlzLmFwcGxpY2F0aW9uRGV0YWlsc1sndXNlckluZm8nXS5yb2xlID09PSAnSUFDX0JSQU5EX1JFQURfT05MWScpKTtcbiAgICAgIH1cbiAgfVxuXG4gIC8vIHB1YmxpYyBpc0FwcGxpY2F0aW9uQWN0aXZlKHBhcmVudE1lbnVJZCkge1xuICAvLyAgIGlmKHBhcmVudE1lbnVJZC5pbmRleE9mKHRoaXMuYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWQpID49IDAgICYmIHRoaXMuaXNHbG9iYWxTZXR0aW5nc01lbnVBY3RpdmUpe1xuICAvLyAgICAgcmV0dXJuIHRydWU7XG4gIC8vICAgfVxuICAvLyAgIGVsc2V7XG4gIC8vICAgICByZXR1cm4gZmFsc2U7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgXG59XG4iLCI8ZGl2IGlkPVwibG9hZGVyX3NvdlwiPlxuICA8ZGl2IGlkPVwibG9hZGluZ19kaXZcIiAqbmdJZj1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm9cIj5cbiAgICA8ZGl2PlxuICAgICAgPGRpdiBpZD1cImxvYWRlclwiICpuZ0lmPVwic2lkZUlkSW5mbyAhPT0gMVwiXG4gICAgICAgIGNsYXNzPVwic2l0ZV97e3NpZGVJZEluZm99fVwiPlxuICAgICAgICA8aW1nIHNyYz1cInt7YXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8ubG9nb319XCI+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgaWQ9XCJsb2FkZXJfaW1nXCIgKm5nSWY9XCJzaWRlSWRJbmZvID09IDFcIj5cbiAgICAgICAgPGltZyBzcmM9XCIvYXNzZXRzL2ltYWdlcy9oYXBweV9leWVzX2Nsb3NlZF9zbWFsbC5zdmdcIj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG1hdC1wcm9ncmVzcy1iYXIgY2xhc3M9XCJsb2FkZXJfcHJvZ3Jlc3MtYmFyLXBvc2l0aW9uXCIgbW9kZT1cImluZGV0ZXJtaW5hdGVcIj48L21hdC1wcm9ncmVzcy1iYXI+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZsZXhGaWxsICpuZ0lmPVwiZXJyb3JNc2cubGVuZ3RoID09IDAgZWxzZSBlcnJvckJsb2NrXCIgdHJhbnNsYXRlPVwibm9cIiBpZD1cImFuZ3VsYXItMTYtdmVyc2lvblwiIFtuZ0NsYXNzXT1cInsnbmF2bWVudS1leHBhbmRlZCcgOiAhbmF2RXhwYW5kZWQsICdhcHBsaWNhdGlvbi1zaWRlYmFyLS1yZXZpc2VkLW5hdic6IGlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKCl9XCI+XG4gIDxtYXQtdG9vbGJhciBjbGFzcz1cInBvcnRhbC1zaWRlLW1lbnUtdG9wLXRvb2xiYXJcIj5cbiAgICA8bWF0LXRvb2xiYXItcm93IGZ4TGF5b3V0PVwicm93XCI+XG4gICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1zZWN0aW9uLWFwcC1sb2dvIHBvcnRhbC1mb3JnZXQtaGVhZGluZy1jYXJkXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlbWVudS1sb2dvLWhvbGRlclwiPlxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzaWRlSWRJbmZvICE9PSAxXCI+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5mYXZpY29uXCIgc3R5bGU9XCJ3aWR0aDogNDBweCAhaW1wb3J0YW50O2Rpc3BsYXk6IGZsZXggIWltcG9ydGFudDtcIiAqbmdJZj1cIiFuYXZFeHBhbmRlZFwiIFthbHRdPVwiYXBwbGljYXRpb25EZXRhaWxzPy5zaWRlYmFySW5mbz8uZmlyc3ROYW1lXCIgY2xhc3M9XCJmYXZpY29uLWRpbWVuc2lvblwiIC8+XG4gICAgICAgICAgICAgIDxpbWcgW3NyY109XCJhcHBsaWNhdGlvbkRldGFpbHM/LnNpZGViYXJJbmZvPy5sb2dvXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgICpuZ0lmPVwibmF2RXhwYW5kZWRcIiBjbGFzcz1cImxvZ28tZGltZW5zaW9uXCIgLz5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2lkZUlkSW5mbyA9PSAxXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL2ludGVudHdpc2Vsb2dvLnN2Z1wiIHN0eWxlPVwid2lkdGg6IDQwcHggIWltcG9ydGFudDtkaXNwbGF5OiBmbGV4ICFpbXBvcnRhbnQ7XCIgKm5nSWY9XCIhbmF2RXhwYW5kZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb24gaW50ZW50d2lzZS1mYXZpY29uXCI+XG4gICAgICAgICAgICAgIDxpbWcgc3JjPVwiYXNzZXRzL2xvZ29zL0ludGVudHdpc2Uuc3ZnXCIgIHN0eWxlPVwiZGlzcGxheTogZmxleCAhaW1wb3J0YW50O1wiICpuZ0lmPVwibmF2RXhwYW5kZWRcIiBbYWx0XT1cImFwcGxpY2F0aW9uRGV0YWlscz8uc2lkZWJhckluZm8/LmZpcnN0TmFtZVwiIGNsYXNzPVwibG9nby1kaW1lbnNpb24gaW50ZW50d2lzZS1sb2dvXCI+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9tYXQtdG9vbGJhci1yb3c+XG4gIDwvbWF0LXRvb2xiYXI+XG4gIDwhLS0gPGRpdiBjbGFzcz1cInNpZGViYXItY29sbGFwc2UtaWNvblwiICpuZ0lmPVwiaXNBZG1pblJvbGVcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIGNsYXNzPVwic2lkZW1lbnUtaWNvbi10b3BcIiAoY2xpY2spPVwiYWxsTWVudUNvbGxhcHNlKClcIj5cbiAgICAgICAgICA8bWF0LWljb24gKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCI+a2V5Ym9hcmRfYXJyb3dfdXA8L21hdC1pY29uPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZGl2PiAtLT5cbiAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgJiYgIWluQ29udGV4dEluc2lnaHRzV0xBcHAgJiYgaXNMZWdhY3lOYXZpZ2F0aW9uRW5hYmxlZCgpXCIgY2xhc3M9XCJhcHAtbWVudS1jb250YWluZXJcIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYXBwLW1lbnUtYnV0dG9uIHNlbGVjdGVkLWFwcC1idXR0b25cIiAqbmdJZj1cInRvRGlzcGxheUFwcGxpY2F0aW9ucyAmJiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnMubGVuZ3RoID09IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxidXR0b24gY2xhc3M9XCJhcHAtbWVudS1idXR0b24gc2VsZWN0ZWQtYXBwLWJ1dHRvblwiIFttYXQtbWVudS10cmlnZ2VyLWZvcl09XCJhcHBNZW51XCIgKm5nSWY9XCJ0b0Rpc3BsYXlBcHBsaWNhdGlvbnMgJiYgdG9EaXNwbGF5QXBwbGljYXRpb25zLmxlbmd0aCA+IDFcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYXBwLW5hbWUgc2VsZWN0ZWQtYXBwLWNvbnRhaW5lclwiPlxuICAgICAgICA8IS0tIDxtYXQtaWNvbiAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cInNpZGVOYXZJY29uIHt7Y3VycmVudEFwcD8ubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpfX1cIj48L21hdC1pY29uPiAtLT5cbiAgICAgICAgPGltZyAqbmdJZj1cImN1cnJlbnRBcHA/Lm5hbWVcIiBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChjdXJyZW50QXBwLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgPGxhYmVsIHN0eWxlPVwibWFyZ2luLWxlZnQ6IC00cHg7XCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGN1cnJlbnRBcHApXCI+PC9sYWJlbD5cbiAgICAgICAgPHNwYW4gKm5nSWY9XCJjdXJyZW50QXBwPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7Y3VycmVudEFwcC5iYWRnZX19PC9zcGFuPlxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi1pY29uXCI+PC9zcGFuPlxuICAgIDwvYnV0dG9uPlxuICAgIDxtYXQtbWVudSAjYXBwTWVudT1cIm1hdE1lbnVcIiBjbGFzcz1cImFwcC1tZW51XCIgW2JhY2tkcm9wQ2xhc3NdPVwiJ2FsbC1tb2R1bGUtbWVudXMnXCI+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBoZWFkbWVudSBvZiB0b0Rpc3BsYXlBcHBsaWNhdGlvbnNcIj5cbiAgICAgICAgPGJ1dHRvbiBjbGFzcz1cIm1lbnUtb3B0aW9uXCIgbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwiZ29Ub0FwcGxpY2F0aW9uKGhlYWRtZW51KVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaGVhZG1lbnUucGFuZWxPcGVuU3RhdGV9XCIgY2xhc3M9XCJ7e2hlYWRtZW51LmlkfX1faWNvblwiICpuZ0lmPVwiaGVhZG1lbnUubmFtZSAhPSAnQWNjb3VudCBNYW5hZ2VtZW50J1wiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgICAgPCEtLSA8bWF0LWljb24gY2xhc3M9XCJzaWRlTmF2SWNvbiBjaGlsZHJlbi1pY29uXCIgW25nQ2xhc3NdPVwiaGVhZG1lbnUubmFtZS5zcGxpdCgnICcpLmpvaW4oJycpXCI+PC9tYXQtaWNvbj4gLS0+XG4gICAgICAgICAgPGltZyBjbGFzcz1cImljb24gY2hpbGRyZW4taWNvbiBzaWRlLW1lbnUtaWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChoZWFkbWVudS5pY29uIHx8ICdkZWZhdWx0LWljb24uc3ZnJylcIi8+XG4gICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgIDxzcGFuICpuZ0lmPVwiaGVhZG1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb25cIiBbaW5uZXJIVE1MXT1cImhlYWRtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbWF0LW1lbnU+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwicG9ydGFsLXNpZG5hdi1tZW51XCIgZnhGbGV4PVwibm9ncm93IG5vc2hyaW5rXCIgYXBwU2Nyb2xsYWJsZSBbbmdDbGFzc109XCJ7J3doaXRlTGFiZWxTaWRlbmF2JyA6IGluQ29udGV4dEluc2lnaHRzV0xBcHB9XCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzUmV2aXNlZE5hdmlnYXRpb25FbmFibGVkKCk7IGVsc2UgbGVnYWN5TmF2aWdhdGlvblRlbXBsYXRlXCI+XG4gICAgICA8IS0tXG4gICAgICAgIFJldmlzZWQgbmF2IG1hcHMgdG8gc2lkZWJhciBsYXlvdXQgSlNPTiAoYHNlY3Rpb25zW11gKTpcbiAgICAgICAgLSB0eXBlIGBhcHAtdGFic2Ag4oaSIE9wdGltaXplOiB0YWIgc3RyaXAgKyBgcmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbGAgcGVyIG1lbnUgcm93IChzYW1lIGV4cGFuZC9sZWFmL2FjdGl2ZSBwYXR0ZXJuIGFzIElOVEVMTElHRU5DRSkuXG4gICAgICAgIC0gdHlwZSBgZ3JvdXBlZC1tZW51c2Ag4oaSIGBncm91cHNbXWA6IGVhY2ggZ3JvdXAgdXNlcyBgaXRlbXNbXWAgb2YgYHsgbWVudUlkLCB0aXRsZT8gfWAgKGlkcyBmcm9tIGBuYXZtZW51MWApLlxuICAgICAgICAgIExlYWYgdnMgZXhwYW5kYWJsZSBjb21lcyBmcm9tIG5hdiBkYXRhLiBTaW5nbGUtIGFuZCBtdWx0aS1pdGVtIGdyb3VwcyBzaGFyZSBgcmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbGAgKHNhbWUgbGF5b3V0IGFzIFByb2R1Y3QgMzYwIC8gRm91bmRhdGlvbikuIFVudGl0bGVkIGZsYXQgZ3JvdXBzIHN0aWxsIHVzZSBgcmV2aXNlZEdyb3VwZWRNZW51Um93c2AgKyBpbm5lciBtYXQtbGlzdCBmb3IgZGVlcCBuZXN0aW5nLlxuICAgICAgICBBZGQgbW9yZSBzZWN0aW9ucyBpbiBKU09OIOKAlCB0aGV5IHJlbmRlciBoZXJlIGluIG9yZGVyLiBCb3R0b20gc3RpY2t5IGJsb2NrIGlzIHVuY2hhbmdlZCBiZWxvdy5cbiAgICAgIC0tPlxuICAgICAgPCEtLSBTVkcgY2hldnJvbnMgKG5vdCBtYXQtaWNvbiBsaWdhdHVyZXMpIHNvIGV4cGFuZCBhcnJvd3Mgd29yayBldmVuIHdoZW4gTWF0ZXJpYWwgSWNvbnMgZm9udCBmYWlscyB0byBsb2FkIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNyZXZpc2VkQ2hldnJvblN2ZyBsZXQtZXhwYW5kZWQ9XCJleHBhbmRlZFwiPlxuICAgICAgICA8c3ZnICpuZ0lmPVwiIWV4cGFuZGVkXCIgY2xhc3M9XCJyZXZpc2VkLWNoZXZyb24tc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTAgNkw4LjU5IDcuNDEgMTMuMTcgMTJsLTQuNTggNC41OUwxMCAxOGw2LTZ6XCIvPlxuICAgICAgICA8L3N2Zz5cbiAgICAgICAgPHN2ZyAqbmdJZj1cImV4cGFuZGVkXCIgY2xhc3M9XCJyZXZpc2VkLWNoZXZyb24tc3ZnXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiIGQ9XCJNMTYuNTkgOC41OUwxMiAxMy4xNyA3LjQxIDguNTkgNiAxMGw2IDYgNi02elwiLz5cbiAgICAgICAgPC9zdmc+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8bmctdGVtcGxhdGUgI3JldmlzZWRNYXRQYW5lbENoZXZyb25zIGxldC1leHBhbmRlZD1cImV4cGFuZGVkXCIgbGV0LWljb25DbGFzcz1cImljb25DbGFzc1wiPlxuICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwiY2hpbGRyZW4tZGVzY3JpcHRpb24gcmV2aXNlZC1uYXYtZXhwYW5zaW9uLWNoZXZyb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgPHNwYW4gW25nQ2xhc3NdPVwiaWNvbkNsYXNzIHx8ICdzdWItY2hldnJvbi1pY29uIHJldmlzZWQtbmF2LWNoZXZyb24nXCIgY2xhc3M9XCJyZXZpc2VkLWNoZXZyb24taWNvbi13cmFwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZENoZXZyb25Tdmc7IGNvbnRleHQ6IHsgZXhwYW5kZWQ6IGV4cGFuZGVkIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbWF0LXBhbmVsLWRlc2NyaXB0aW9uPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPCEtLSBPbmUgcmVzb2x2ZWQgbWVudTogZ3JvdXBlZC1tZW51cyAoRm91bmRhdGlvbiAvIElOVEVMTElHRU5DRSkgb3IgYXBwLXRhYnMgT1BUSU1JWkUgd2hlbiBgb3B0aW1pemVQYXJlbnRBcHBgIGlzIHNldC4gTm8gaW5uZXIgbWF0LWxpc3QuIC0tPlxuICAgICAgPG5nLXRlbXBsYXRlICNyZXZpc2VkR3JvdXBNZW51SXRlbVNoZWxsIGxldC1tZW51PVwibWVudVwiIGxldC1vcHRpbWl6ZVBhcmVudEFwcD1cIm9wdGltaXplUGFyZW50QXBwXCI+XG4gICAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsICpuZ0lmPVwibWVudS5jaGlsZHJlbj8ubGVuZ3RoXCIgY2xhc3M9XCJkaXYtYmFja2dyb3VuZC1jb2xvci13aGl0ZSByZXZpc2VkLWdyb3VwX19zaW5nbGUtZXhwYW5kYWJsZVwiIFtleHBhbmRlZF09XCJpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJ0cnVlXCJcbiAgICAgICAgICBbbmdDbGFzc109XCJ7J2FjdGl2ZVBhbmVsJzogaXNDaGlsZE1lbnVQYW5lbEhpZ2hsaWdodGVkKG1lbnUpICwgJ3doaXRlTGFiZWxBY3RpdmUnIDogaW5Db250ZXh0SW5zaWdodHNXTEFwcH1cIiBoaWRlVG9nZ2xlPVwidHJ1ZVwiXG4gICAgICAgICAgKG9wZW5lZCk9XCJvbkNoaWxkTWVudVBhbmVsT3BlbmVkKG1lbnUpXCIgKGNsb3NlZCk9XCJvbkNoaWxkTWVudVBhbmVsQ2xvc2VkKG1lbnUpXCI+XG4gICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwicmV2aXNlZC1ncm91cF9faGVhZGVyIHJldmlzZWQtZ3JvdXBfX2hlYWRlci0tYXMtcGFuZWxcIiAoY2xpY2spPVwib25DaGlsZE1lbnVQYW5lbEhlYWRlckNsaWNrKG1lbnUpXCI+XG4gICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX3RpdGxlIG1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKG1lbnUpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCIgW2lubmVySFRNTF09XCJtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZE1hdFBhbmVsQ2hldnJvbnM7IGNvbnRleHQ6IHsgZXhwYW5kZWQ6IGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KSwgaWNvbkNsYXNzOiAncmV2aXNlZC1ncm91cF9fY2hldnJvbiByZXZpc2VkLW5hdi1leHBhbnNpb24tY2hldnJvbiByZXZpc2VkLW5hdi1jaGV2cm9uJyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1ncm91cF9fY29udGVudFwiPlxuICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCBjbGFzcz1cInN1Yi1jaGlsZC1tZW51XCI+XG4gICAgICAgICAgICAgIDxsbmMtbmF2LW1lbnVzICpuZ0Zvcj1cImxldCBjaGlsZE1lbnUgb2YgbWVudS5jaGlsZHJlblwiIGFwcE9mZnNldFRvcFxuICAgICAgICAgICAgICAgIFtpc0FjdGl2ZUl0ZW1dPVwiaXNSZXZpc2VkTWVudUFjdGl2ZShjaGlsZE1lbnUpXCIgW2l0ZW1dPVwiY2hpbGRNZW51XCJcbiAgICAgICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiXG4gICAgICAgICAgICAgICAgW3BhcmVudE1lbnVJZF09XCJvcHRpbWl6ZVBhcmVudEFwcCA/IG9wdGltaXplUGFyZW50QXBwLmlkIDogZ2V0UmV2aXNlZFBhcmVudE1lbnVJZChjaGlsZE1lbnUsIG1lbnUub3duZXJBcHBJZClcIlxuICAgICAgICAgICAgICAgIFtwYXJlbnRQYW5lbElkXT1cIm1lbnUuaWRcIiAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgPG1hdC1uYXYtbGlzdCAqbmdJZj1cIiFtZW51LmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX3NpbmdsZS1saW5rXCI+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wXG4gICAgICAgICAgICBbaXNBY3RpdmVJdGVtXT1cImlzUmV2aXNlZE1lbnVBY3RpdmUobWVudSlcIiBbaXRlbV09XCJtZW51XCJcbiAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCJcbiAgICAgICAgICAgIFtwYXJlbnRNZW51SWRdPVwib3B0aW1pemVQYXJlbnRBcHAgPyBvcHRpbWl6ZVBhcmVudEFwcC5pZCA6IGdldFJldmlzZWRQYXJlbnRNZW51SWQobWVudSlcIlxuICAgICAgICAgICAgW3BhcmVudFBhbmVsSWRdPVwiZ2V0UmV2aXNlZFNoZWxsTGVhZlBhcmVudFBhbmVsSWQobWVudSwgb3B0aW1pemVQYXJlbnRBcHApXCIgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gR3JvdXBlZC1tZW51cyByb3dzOiBsZWFmIHwgbWF0LWV4cGFuc2lvbiAoZGVwdGggMCkgfCBuZXN0ZWQgbWF0LWV4cGFuc2lvbiAoZGVwdGggMSkuIE1heCAyIGV4cGFuc2lvbiBsZXZlbHMgaGVyZTsgZGVlcGVyIGxlYXZlcyB1c2UgbG5jLW5hdi1tZW51cy4gLS0+XG4gICAgICA8bmctdGVtcGxhdGUgI3JldmlzZWRHcm91cGVkTWVudVJvd3MgbGV0LWdyb3VwPVwiZ3JvdXBcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgbWVudSBvZiBncm91cC5pdGVtc1wiPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkR3JvdXBlZE1lbnVFbnRyeTsgY29udGV4dDogeyBtZW51OiBtZW51LCBuZXN0aW5nRGVwdGg6IDAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDxuZy10ZW1wbGF0ZSAjcmV2aXNlZEdyb3VwZWRNZW51RW50cnkgbGV0LW1lbnU9XCJtZW51XCIgbGV0LW5lc3RpbmdEZXB0aD1cIm5lc3RpbmdEZXB0aFwiPlxuICAgICAgICA8bWF0LW5hdi1saXN0ICpuZ0lmPVwiIW1lbnUuY2hpbGRyZW4/Lmxlbmd0aFwiIGNsYXNzPVwicmV2aXNlZC1ncm91cC1tZW51LWxlYWZcIj5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc1JldmlzZWRNZW51QWN0aXZlKG1lbnUpXCIgW2l0ZW1dPVwibWVudVwiXG4gICAgICAgICAgICBbYXBwbGljYXRpb25JZF09XCJhcHBsaWNhdGlvbkRldGFpbHMuYXBwbGljYXRpb25JZFwiIFtwYXJlbnRNZW51SWRdPVwiZ2V0UmV2aXNlZFBhcmVudE1lbnVJZChtZW51KVwiXG4gICAgICAgICAgICBbcGFyZW50UGFuZWxJZF09XCJnZXRSZXZpc2VkUGFyZW50UGFuZWxJZChtZW51KVwiIChtZW51Q2xpY2tlZCk9XCJtZW51Q2xpY2tlZCgkZXZlbnQpXCIgI25hdk1lbnVzQ29tcG9uZW50PlxuICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwgKm5nSWY9XCJtZW51LmNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cImRpdi1iYWNrZ3JvdW5kLWNvbG9yLXdoaXRlXCJcbiAgICAgICAgICBbY2xhc3MucmV2aXNlZC1ncm91cC1tZW51LXBhbmVsLS1uZXN0ZWRdPVwibmVzdGluZ0RlcHRoID4gMFwiXG4gICAgICAgICAgW2V4cGFuZGVkXT1cImlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cInRydWVcIlxuICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlUGFuZWwnOiBpc0NoaWxkTWVudVBhbmVsSGlnaGxpZ2h0ZWQobWVudSkgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAob3BlbmVkKT1cIm9uQ2hpbGRNZW51UGFuZWxPcGVuZWQobWVudSlcIiAoY2xvc2VkKT1cIm9uQ2hpbGRNZW51UGFuZWxDbG9zZWQobWVudSlcIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgKGNsaWNrKT1cIm9uQ2hpbGRNZW51UGFuZWxIZWFkZXJDbGljayhtZW51KVwiIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KSwgJ2hlYWRlci1ib3JkZXItbm9uZSc6ICFpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSkgfVwiPlxuICAgICAgICAgICAgPG1hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgPGgzIGNsYXNzPVwibWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uU3VibWVudXNcIj48c3BhbiBjbGFzcz1cIm1lbnUtbmFtZS1leHBhbmRhYmxlXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKG1lbnUpXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvbiBsZXZlbC10d28tYmFkZ2VcIiBbaW5uZXJIVE1MXT1cIm1lbnUuYmFkZ2VcIj48L3NwYW4+XG4gICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkTWF0UGFuZWxDaGV2cm9uczsgY29udGV4dDogeyBleHBhbmRlZDogaXNDaGlsZE1lbnVQYW5lbEV4cGFuZGVkKG1lbnUpIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLWdyb3VwLW1lbnUtY2hpbGRyZW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNoaWxkIG9mIG1lbnUuY2hpbGRyZW5cIj5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImNoaWxkLmNoaWxkcmVuPy5sZW5ndGggJiYgKG5lc3RpbmdEZXB0aCA/PyAwKSA8IDJcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwZWRNZW51RW50cnk7IGNvbnRleHQ6IHsgbWVudTogY2hpbGQsIG5lc3RpbmdEZXB0aDogKG5lc3RpbmdEZXB0aCA/PyAwKSArIDEgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPG1hdC1uYXYtbGlzdCAqbmdJZj1cIiFjaGlsZC5jaGlsZHJlbj8ubGVuZ3RoIHx8IChuZXN0aW5nRGVwdGggPz8gMCkgPj0gMlwiIGNsYXNzPVwic3ViLWNoaWxkLW1lbnVcIj5cbiAgICAgICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc1JldmlzZWRNZW51QWN0aXZlKGNoaWxkKVwiIFtpdGVtXT1cImNoaWxkXCJcbiAgICAgICAgICAgICAgICAgIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJnZXRSZXZpc2VkUGFyZW50TWVudUlkKGNoaWxkLCBtZW51Lm93bmVyQXBwSWQpXCJcbiAgICAgICAgICAgICAgICAgIFtwYXJlbnRQYW5lbElkXT1cIm1lbnUuaWRcIiAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG5cbiAgICAgIDwhLS0gU2FtZSBzZWN0aW9uIGNsYXNzIGFzIGxlZ2FjeSBzbyAucG9ydGFsLXNpZG5hdi1tZW51IC5tYXQtZXhwYW5zaW9uLXBhbmVsIC5tYXQtbWRjLWxpc3QgYVttYXQtbGlzdC1pdGVtXS5hY3RpdmUgYXBwbGllcyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLW5hdlwiIHRyYW5zbGF0ZT1cIm5vXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb24gbWF0LWV4cGFuc2lvbi1wYW5lbFwiICpuZ0Zvcj1cImxldCBzZWN0aW9uIG9mIHJldmlzZWRTZWN0aW9uczsgdHJhY2tCeTogdHJhY2tCeVJldmlzZWRTZWN0aW9uXCIgW2F0dHIuaWRdPVwic2VjdGlvbi5pZCArICdtZW51J1wiIFthdHRyLmRhdGEtc2VjdGlvbi10eXBlXT1cInNlY3Rpb24udHlwZVwiXG4gICAgICAgICAgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBpc1JldmlzZWRTZWN0aW9uQWN0aXZlKHNlY3Rpb24pfVwiPlxuICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb25fX2hlYWRlciBtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9uUmV2aXNlZFNlY3Rpb25IZWFkZXJDbGljayhzZWN0aW9uLmlkKVwiXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJuYXZFeHBhbmRlZCA/IG51bGwgOiBzZWN0aW9uLnRpdGxlXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtc2VjdGlvbl9faGVhZGVyLW1haW5cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb25fX2hlYWRlci1pY29uLWJveFwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV2aXNlZC1zZWN0aW9uX19oZWFkZXItaWNvbiBpY29uIHNpZGUtbWVudS1pY29uIHNpZGUtbWVudS1pY29uLWNvbG9yXCIgW2lubmVySFRNTF09XCJnZXRSZXZpc2VkU2VjdGlvbkljb24oc2VjdGlvbilcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXZpc2VkLXNlY3Rpb25fX2NvbGxhcHNlZC1hY3RpdmUtZG90XCIgKm5nSWY9XCIhbmF2RXhwYW5kZWQgJiYgaXNSZXZpc2VkU2VjdGlvbkFjdGl2ZShzZWN0aW9uKVwiIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtc2VjdGlvbl9fdGl0bGUgc2lkZW1lbnUtaGVhZGluZyBhcHBsaWNhdGlvbk1lbnVcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+e3sgc2VjdGlvbi50aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaGVhZG1lbnUtZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb24gcmV2aXNlZC1uYXYtY2hldnJvbiByZXZpc2VkLWNoZXZyb24taWNvbi13cmFwXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJldmlzZWRDaGV2cm9uU3ZnOyBjb250ZXh0OiB7IGV4cGFuZGVkOiBpc1JldmlzZWRTZWN0aW9uRXhwYW5kZWQoc2VjdGlvbi5pZCkgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm5hdkV4cGFuZGVkICYmIGlzUmV2aXNlZFNlY3Rpb25FeHBhbmRlZChzZWN0aW9uLmlkKVwiXG4gICAgICAgICAgICBjbGFzcz1cInJldmlzZWQtc2VjdGlvbl9fY29udGVudCByZXZpc2VkLXNlY3Rpb25fX2NvbnRlbnQtLXZpc2libGUgcGFkZGluZy0wcHhcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAncmV2aXNlZC1zZWN0aW9uX19jb250ZW50LS1ncm91cGVkJzogc2VjdGlvbi50eXBlID09PSAnZ3JvdXBlZC1tZW51cydcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgW2F0dHIuaWRdPVwic2VjdGlvbi5pZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwic2VjdGlvbi50eXBlXCI+XG5cbiAgICAgICAgICAgICAgPCEtLSBKU09OOiB7IHR5cGU6IFwiYXBwLXRhYnNcIiwgYXBwSWRzLCBkZWZhdWx0QXBwSWQgfSAtLT5cbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2FwcC10YWJzJ1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXZpc2VkLW9wdGltaXplLXRhYnNcIiAqbmdJZj1cImdldFJldmlzZWRTZWN0aW9uQXBwcyhzZWN0aW9uKS5sZW5ndGggPiAwXCI+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInJldmlzZWQtb3B0aW1pemUtdGFiXCIgKm5nRm9yPVwibGV0IGFwcCBvZiBnZXRSZXZpc2VkU2VjdGlvbkFwcHMoc2VjdGlvbik7IHRyYWNrQnk6IHRyYWNrQnlSZXZpc2VkTWVudVwiXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXNTZWxlY3RlZFJldmlzZWRTZWN0aW9uQXBwKHNlY3Rpb24sIGFwcCl9XCJcbiAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwiZ2V0UmV2aXNlZE9wdGltaXplQXBwVGFiVG9vbHRpcChhcHApXCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwiYmVsb3dcIlxuICAgICAgICAgICAgICAgICAgICBbbWF0VG9vbHRpcENsYXNzXT1cIlsnbGVmdC1uYXYtdG9vbHRpcCcsICdyZXZpc2VkLW9wdGltaXplLWFwcC10YWItdG9vbHRpcCddXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInNlbGVjdFJldmlzZWRTZWN0aW9uQXBwKHNlY3Rpb24sIGFwcClcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXZpc2VkLW9wdGltaXplLXRhYl9fYmFkZ2VcIiAqbmdJZj1cImdldFJldmlzZWRTZWN0aW9uVGFiQmFkZ2VDb3VudChhcHApICE9PSBudWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAge3sgZ2V0UmV2aXNlZFNlY3Rpb25UYWJCYWRnZUNvdW50KGFwcCkgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJldmlzZWQtb3B0aW1pemUtdGFiX19pY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gY2hpbGRyZW4taWNvblwiIFtzcmNdPVwiZ2V0SWNvblVybChhcHAuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIgW2FsdF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKGFwcClcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1vcHRpbWl6ZS1tZW51c1wiICpuZ0lmPVwiZ2V0UmV2aXNlZFNlY3Rpb25TZWxlY3RlZEFwcChzZWN0aW9uKSBhcyBzZWxlY3RlZEFwcFwiPlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtb3B0aW1pemUtYXBwLXRpdGxlIG1lbnUtaGVhZGluZyBhcHBsaWNhdGlvblN1Ym1lbnVzXCIgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKHNlbGVjdGVkQXBwKVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX211bHRpLXN0YWNrIHJldmlzZWQtb3B0aW1pemUtbWVudS1zdGFja1wiIFthdHRyLmlkXT1cInNlY3Rpb24uaWQgKyAnXycgKyBzZWxlY3RlZEFwcC5pZFwiIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBoYXNFeHBhbmRhYmxlTWVudXNJblNlY3Rpb24oc2VjdGlvbikgfVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIGdldFJldmlzZWRTZWN0aW9uTWVudXMoc2VjdGlvbik7IHRyYWNrQnk6IHRyYWNrQnlSZXZpc2VkTWVudVwiPlxuICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkR3JvdXBNZW51SXRlbVNoZWxsOyBjb250ZXh0OiB7IG1lbnU6IG1lbnUsIG9wdGltaXplUGFyZW50QXBwOiBzZWxlY3RlZEFwcCB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgIDwhLS0gSlNPTjogeyB0eXBlOiBcImdyb3VwZWQtbWVudXNcIiwgZ3JvdXBzOiBbIC4uLiBdIH0gLS0+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidncm91cGVkLW1lbnVzJ1wiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGdldFJldmlzZWRHcm91cGVkU2VjdGlvbkdyb3VwcyhzZWN0aW9uKTsgdHJhY2tCeTogdHJhY2tCeVJldmlzZWRHcm91cFwiPlxuXG4gICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNSZXZpc2VkVW50aXRsZWRHcm91cChncm91cClcIiBjbGFzcz1cInJldmlzZWQtZ3JvdXAgcmV2aXNlZC1ncm91cC0tZmxhdFwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWxpc3QgY2xhc3M9XCJwYWRkaW5nLTBweCByZXZpc2VkLWdyb3VwX19saXN0XCIgW2F0dHIuaWRdPVwic2VjdGlvbi5pZCArICdfJyArIGdyb3VwLmlkXCIgW25nQ2xhc3NdPVwieydncm91cC1uYXYtbWVudSc6IGhhc0V4cGFuZGFibGVNZW51c0luR3JvdXAoZ3JvdXApIH1cIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwZWRNZW51Um93czsgY29udGV4dDogeyBncm91cDogZ3JvdXAgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1saXN0PlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1JldmlzZWRTaW5nbGVJdGVtR3JvdXAoZ3JvdXApXCIgY2xhc3M9XCJyZXZpc2VkLWdyb3VwIHJldmlzZWQtZ3JvdXAtLXNpbmdsZVwiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIGdyb3VwLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5UmV2aXNlZE1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbDsgY29udGV4dDogeyBtZW51OiBtZW51IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzUmV2aXNlZE11bHRpSXRlbUdyb3VwKGdyb3VwKVwiIGNsYXNzPVwicmV2aXNlZC1ncm91cCByZXZpc2VkLWdyb3VwLS1tdWx0aVwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBjbGFzcz1cImRpdi1iYWNrZ3JvdW5kLWNvbG9yLXdoaXRlIHJldmlzZWQtZ3JvdXBfX211bHRpLXBhbmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICBbZXhwYW5kZWRdPVwiaXNSZXZpc2VkR3JvdXBFeHBhbmRlZChzZWN0aW9uLmlkLCBncm91cC5pZClcIlxuICAgICAgICAgICAgICAgICAgICAgIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAob3BlbmVkKT1cIm9uUmV2aXNlZEdyb3VwUGFuZWxPcGVuZWQoc2VjdGlvbi5pZCwgZ3JvdXAuaWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xvc2VkKT1cIm9uUmV2aXNlZEdyb3VwUGFuZWxDbG9zZWQoc2VjdGlvbi5pZCwgZ3JvdXAuaWQpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIGNsYXNzPVwicmV2aXNlZC1ncm91cF9faGVhZGVyIHJldmlzZWQtZ3JvdXBfX2hlYWRlci0tYXMtcGFuZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwibmF2RXhwYW5kZWQgPyBudWxsIDogZ3JvdXAudGl0bGVcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwicmV2aXNlZC1ncm91cF9fdGl0bGUgbWVudS1oZWFkaW5nIGFwcGxpY2F0aW9uU3VibWVudXNcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+e3sgZ3JvdXAudGl0bGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZXZpc2VkTWF0UGFuZWxDaGV2cm9uczsgY29udGV4dDogeyBleHBhbmRlZDogaXNSZXZpc2VkR3JvdXBFeHBhbmRlZChzZWN0aW9uLmlkLCBncm91cC5pZCksIGljb25DbGFzczogJ3JldmlzZWQtZ3JvdXBfX2NoZXZyb24gcmV2aXNlZC1uYXYtZXhwYW5zaW9uLWNoZXZyb24gcmV2aXNlZC1uYXYtY2hldnJvbicgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgICAgICAgPCEtLSBQZXItaXRlbSBET00gbWF0Y2hlcyByZXZpc2VkLWdyb3VwLS1zaW5nbGUgKG5vIGlubmVyIG1hdC1saXN0KSBzbyBnbG9iYWwgc2lkZWJhciB0aGVtZSBkb2VzIG5vdCBhcHBseSBtdXRlZCAubWF0LWxpc3QgLmFwcGxpY2F0aW9uU3VibWVudXMgdG8gQ29tbWVyY2Utc3R5bGUgcm93cy4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJldmlzZWQtZ3JvdXBfX3BhbmVsLWJvZHlcIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmV2aXNlZC1ncm91cF9fbXVsdGktc3RhY2tcIiBbYXR0ci5pZF09XCJzZWN0aW9uLmlkICsgJ18nICsgZ3JvdXAuaWRcIiBbbmdDbGFzc109XCJ7J2dyb3VwLW5hdi1tZW51JzogaGFzRXhwYW5kYWJsZU1lbnVzSW5Hcm91cChncm91cCkgfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBtZW51IG9mIGdyb3VwLml0ZW1zOyB0cmFja0J5OiB0cmFja0J5UmV2aXNlZE1lbnVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmV2aXNlZEdyb3VwTWVudUl0ZW1TaGVsbDsgY29udGV4dDogeyBtZW51OiBtZW51IH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtZXhwYW5zaW9uLXBhbmVsPlxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2xlZ2FjeU5hdmlnYXRpb25UZW1wbGF0ZT5cbiAgICAgIDxtYXQtZXhwYW5zaW9uLXBhbmVsIFtleHBhbmRlZF09XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9PSB0cnVlXCIgaGlkZVRvZ2dsZT1cInRydWVcIlxuICAgICAgICAqbmdGb3I9XCJsZXQgaGVhZG1lbnUgb2YgdG9EaXNwbGF5QXBwbGljYXRpb25zXCIgW25nQ2xhc3NdPVwieydhY3RpdmUnOiBjdXJyZW50QXBwLmlkID09PSBoZWFkbWVudS5pZCB9XCJcbiAgICAgICAgKG9wZW5lZCk9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cImhlYWRtZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2VcIj5cbiAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAqbmdJZj1cImhlYWRtZW51LnR5cGUgPT0gJ2V4cGFuZGFibGUnIGVsc2Ugc2luZ2xlTWVudXNcIiBjbGFzcz1cIm1haW4tZXhwYW5zaW9uLXBhbmVsLWhlYWRlclwiXG4gICAgICAgICAgKGNsaWNrKT1cImdvVG9BcHBsaWNhdGlvbihoZWFkbWVudSlcIj5cbiAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25VcmwoaGVhZG1lbnUuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgICAgPGgzIGNsYXNzPVwic2lkZW1lbnUtaGVhZGluZyBhcHBsaWNhdGlvbk1lbnVcIj5cbiAgICAgICAgICAgICAgPGxhYmVsIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihoZWFkbWVudSlcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImhlYWRtZW51LmJhZGdlXCIgY2xhc3M9XCJiYWRnZS10ZXh0IHNvdi1iZXRhLXBvc2l0aW9uXCIgW2lubmVySFRNTF09XCJoZWFkbWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgPC9tYXQtcGFuZWwtdGl0bGU+XG4gICAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cImhlYWRtZW51LWRlc2NyaXB0aW9uXCIgKm5nSWY9XCJuYXZFeHBhbmRlZFwiPlxuICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCJoZWFkbWVudS5wYW5lbE9wZW5TdGF0ZVwiPmFycm93X2Ryb3BfZG93bjwvbWF0LWljb24+XG4gICAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgIDxtYXQtbGlzdCBjbGFzcz1cInBhZGRpbmctMHB4XCIgKm5nRm9yPVwibGV0IG1lbnUgb2YgaGVhZG1lbnUuY2hpbGRyZW5cIiBbYXR0ci5pZF09XCJoZWFkbWVudS5pZFwiIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBtZW51LmNoaWxkcmVuIH1cIj5cbiAgICAgICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCAqbmdJZj1cIm1lbnUuY2hpbGRyZW4gZWxzZSBsaXN0TWVudVwiIGNsYXNzPVwiZGl2LWJhY2tncm91bmQtY29sb3Itd2hpdGVcIiBbZXhwYW5kZWRdPVwiaXNDaGlsZE1lbnVQYW5lbEV4cGFuZGVkKG1lbnUpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnYWN0aXZlUGFuZWwnOiBpc0NoaWxkTWVudVBhbmVsSGlnaGxpZ2h0ZWQobWVudSkgLCAnd2hpdGVMYWJlbEFjdGl2ZScgOiBpbkNvbnRleHRJbnNpZ2h0c1dMQXBwfVwiIGhpZGVUb2dnbGU9XCJ0cnVlXCJcbiAgICAgICAgICAgIChvcGVuZWQpPVwibWVudS5wYW5lbE9wZW5TdGF0ZSA9IHRydWVcIiAoY2xvc2VkKT1cIm1lbnUucGFuZWxPcGVuU3RhdGUgPSBmYWxzZVwiPlxuICAgICAgICAgICAgPG1hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaGVhZGVyLWJvcmRlcic6IGlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KSwgJ2hlYWRlci1ib3JkZXItbm9uZSc6ICFpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSkgfVwiPlxuICAgICAgICAgICAgICA8bWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICAgIDxpbWcgc3R5bGU9XCJtYXJnaW4tcmlnaHQ6IDEwcHhcIiAqbmdJZj1cIihtZW51Lmljb24gJiYgbWVudS5pY29uICE9ICcnKSBlbHNlIGRpc3BsYXlJbml0aWFsc1wiXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cImljb24gc2lkZS1tZW51LWljb24gc2lkZS1tZW51LWljb24tY29sb3JcIiBbc3JjXT1cImdldEljb25VcmwobWVudS5pY29uKVwiIC8+XG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNkaXNwbGF5SW5pdGlhbHM+XG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZW1lbnUtc3ltYm9sXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7bWVudS5zeW1ib2x9fVxuICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICA8aDMgY2xhc3M9XCJtZW51LWhlYWRpbmcgYXBwbGljYXRpb25TdWJtZW51c1wiPjxzcGFuIGNsYXNzPVwibWVudS1uYW1lLWV4cGFuZGFibGVcIiBbaW5uZXJIVE1MXT1cInNlbGVjdGVkQXBwbGljYXRpb24obWVudSlcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnUuYmFkZ2VcIiBjbGFzcz1cImJhZGdlLXRleHQgc292LWJldGEtcG9zaXRpb24gbGV2ZWwtdHdvLWJhZGdlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJtZW51LmJhZGdlXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaDM+XG4gICAgICAgICAgICAgIDwvbWF0LXBhbmVsLXRpdGxlPlxuICAgICAgICAgICAgICA8bWF0LXBhbmVsLWRlc2NyaXB0aW9uIGNsYXNzPVwiY2hpbGRyZW4tZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwic3ViLWNoZXZyb24taWNvblwiICpuZ0lmPVwiIWlzQ2hpbGRNZW51UGFuZWxFeHBhbmRlZChtZW51KVwiPmFycm93X3JpZ2h0PC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCJzdWItY2hldnJvbi1pY29uXCIgKm5nSWY9XCJpc0NoaWxkTWVudVBhbmVsRXhwYW5kZWQobWVudSlcIj5hcnJvd19kcm9wX2Rvd248L21hdC1pY29uPlxuICAgICAgICAgICAgICA8L21hdC1wYW5lbC1kZXNjcmlwdGlvbj5cbiAgICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICAgICAgICA8IS0tIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPiAtLT5cbiAgICAgICAgICAgIDxtYXQtbmF2LWxpc3QgKm5nRm9yPVwibGV0IGNoaWxkTWVudSBvZiBtZW51LmNoaWxkcmVuO1wiIGNsYXNzPVwic3ViLWNoaWxkLW1lbnVcIj5cbiAgICAgICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKGNoaWxkTWVudSxoZWFkbWVudSxtZW51KVwiIFtpdGVtXT1cImNoaWxkTWVudVwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCIgW3BhcmVudFBhbmVsSWRdPVwibWVudS5pZFwiXG4gICAgICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgICAgIDwvbG5jLW5hdi1tZW51cz5cbiAgICAgICAgICAgIDwvbWF0LW5hdi1saXN0PlxuICAgICAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI2xpc3RNZW51PlxuICAgICAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICAgICAgPGxuYy1uYXYtbWVudXMgYXBwT2Zmc2V0VG9wIFtpc0FjdGl2ZUl0ZW1dPVwiaXNDaGVja0FjdGl2ZVJvdXRlKG1lbnUsaGVhZG1lbnUpXCIgW2l0ZW1dPVwibWVudVwiXG4gICAgICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cImhlYWRtZW51LmlkXCJcbiAgICAgICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICAgICAgPC9tYXQtbmF2LWxpc3Q+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzaW5nbGVNZW51cz5cbiAgICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgICA8bG5jLW5hdi1tZW51cyBpZD1cInt7aGVhZG1lbnUuaWR9fVwiIGFwcE9mZnNldFRvcCBbaXNBY3RpdmVJdGVtXT1cImlzQ2hlY2tBY3RpdmVSb3V0ZShoZWFkbWVudSxoZWFkbWVudSlcIlxuICAgICAgICAgICAgICBbaXRlbV09XCJoZWFkbWVudVwiIFthcHBsaWNhdGlvbklkXT1cImFwcGxpY2F0aW9uRGV0YWlscy5hcHBsaWNhdGlvbklkXCIgW3BhcmVudE1lbnVJZF09XCJoZWFkbWVudS5pZFwiXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKGhlYWRtZW51KX19XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCJcbiAgICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgICAgPC9tYXQtbGlzdD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cInBvcnRhbC1nbG9iYWwtc2V0dGluZy1tZW51IHN0aWNreV9ib3R0b21fbWVudVwiICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIj5cbiAgICA8ZGl2ICpuZ0lmPVwiIWluQ29udGV4dEluc2lnaHRzV0xBcHBcIiBjbGFzcz1cImFwcC1tZW51LWNvbnRhaW5lclwiPlxuICAgICAgPGJ1dHRvbiBjbGFzcz1cImFwcC1tZW51LUxpbmstYnV0dG9uXCIgKm5nSWY9XCJ0b0Rpc3BsYXlMaW5rTWVudSAmJiB0b0Rpc3BsYXlMaW5rTWVudS5sZW5ndGggPiAwXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IG1lbnVMaW5rIG9mIHRvRGlzcGxheUxpbmtNZW51XCIgaWQ9XCJ7e21lbnVMaW5rLmlkICsgJ21lbnUnfX1cIiBbc3R5bGUubWFyZ2luLWxlZnRdPVwic2lkZW5hdiAmJiBzaWRlbmF2Lm9wZW5lZCA/ICcwcHgnIDogJzVweCdcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwcC1uYW1lXCIgKGNsaWNrKT1cImdvVG9NZW51TGluayhtZW51TGluaylcIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkXCIgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO2dhcDogNXB4O1wiPlxuICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwibWVudUxpbms/Lm5hbWVcIiBtYXRUb29sdGlwPVwie3tnZXRUb29sdGlwSW5mbyhtZW51TGluayl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBjaGlsZHJlbi1pY29uXCIgW3NyY109XCJnZXRJY29uVXJsKG1lbnVMaW5rLmljb24gfHwgJ2RlZmF1bHQtaWNvbi5zdmcnKVwiLz5cbiAgICAgICAgICAgICAgPGxhYmVsICpuZ0lmPVwic2hvd1RpdGxlXCIgY2xhc3M9XCJhcHAtbmFtZS1sYWJlbFwiIFtpbm5lckhUTUxdPVwic2VsZWN0ZWRBcHBsaWNhdGlvbihtZW51TGluaylcIj48L2xhYmVsPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNpZGVuYXYgJiYgIXNpZGVuYXYub3BlbmVkXCI+XG4gICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJtZW51TGluaz8ubmFtZVwiIG1hdFRvb2x0aXA9XCJ7e2dldFRvb2x0aXBJbmZvKG1lbnVMaW5rKX19XCIgbWF0VG9vbHRpcFBvc2l0aW9uPVwicmlnaHRcIiBtYXRUb29sdGlwQ2xhc3M9XCJsZWZ0LW5hdi10b29sdGlwXCIgY2xhc3M9XCJpY29uIHNpZGUtbWVudS1pY29uIGNoaWxkcmVuLWljb25cIiBbc3JjXT1cImdldEljb25VcmwobWVudUxpbmsuaWNvbiB8fCAnZGVmYXVsdC1pY29uLnN2ZycpXCIvPlxuICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIm1lbnVMaW5rPy5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiPnt7bWVudUxpbmsuYmFkZ2V9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbiAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwic2V0dGluZ3NIZWFkTWVudS5wYW5lbE9wZW5TdGF0ZSA9PSB0cnVlIHx8IGV4cGFuZEdsb2JhbFNldHRpbmdzXCIgaGlkZVRvZ2dsZT1cInRydWVcIiBpZD1cInt7c2V0dGluZ3NIZWFkTWVudS5pZCArICdtZW51J319XCJcbiAgICAgICpuZ0Zvcj1cImxldCBzZXR0aW5nc0hlYWRNZW51IG9mIHRvRGlzcGxheUdsb2JhbFNldHRpbmdzTWVudVwiIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogc2V0dGluZ3NIZWFkTWVudS5pc0FjdGl2ZSB9XCJcbiAgICAgIChvcGVuZWQpPVwic2lkZW5hdi5vcGVuKCk7IHNldHRpbmdzSGVhZE1lbnUucGFuZWxPcGVuU3RhdGUgPSB0cnVlXCIgKGNsb3NlZCk9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlID0gZmFsc2U7IGV4cGFuZEdsb2JhbFNldHRpbmdzID0gZmFsc2VcIiBbc3R5bGUuYm9yZGVyXT1cInNpZGVuYXYgJiYgc2lkZW5hdi5vcGVuZWQgPyAnJyA6ICdub25lICFpbXBvcnRhbnQnXCI+XG4gICAgICA8bWF0LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBQb3NpdGlvbj1cInJpZ2h0XCIgbWF0VG9vbHRpcENsYXNzPVwibGVmdC1uYXYtdG9vbHRpcFwiXG4gICAgICAgICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS50eXBlID09ICdleHBhbmRhYmxlJyBlbHNlIHNpbmdsZU1lbnVzXCIgY2xhc3M9XCJtYWluLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXJcIlxuICAgICAgICBbbmdDbGFzc109XCJzaWRlbmF2ICYmIHNpZGVuYXYub3BlbmVkID8gJycgOiAnc3RpY2t5LWJvdHRvbS1jbG9zZWQnXCI+XG4gICAgICAgIDxtYXQtcGFuZWwtdGl0bGUgc3R5bGU9XCJnYXA6IDVweDtcIj5cbiAgICAgICAgICA8aW1nIGNsYXNzPVwiaWNvbiBzaWRlLW1lbnUtaWNvbiBzaWRlLW1lbnUtaWNvbi1jb2xvclwiIFtzcmNdPVwiZ2V0SWNvblVybChzZXR0aW5nc0hlYWRNZW51Lmljb24gfHwgJ3NldHRpbmdzLWljb24uc3ZnJylcIiAvPlxuICAgICAgICAgIDxoMyBjbGFzcz1cInNpZGVtZW51LWhlYWRpbmcgYXBwbGljYXRpb25NZW51XCI+XG4gICAgICAgICAgICA8bGFiZWwgW2lubmVySFRNTF09XCJzZWxlY3RlZEFwcGxpY2F0aW9uKHNldHRpbmdzSGVhZE1lbnUpXCI+PC9sYWJlbD5cbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiIGNsYXNzPVwiYmFkZ2UtdGV4dCBzb3YtYmV0YS1wb3NpdGlvblwiXG4gICAgICAgICAgICAgIFtpbm5lckhUTUxdPVwic2V0dGluZ3NIZWFkTWVudS5iYWRnZVwiPjwvc3Bhbj5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICA8L21hdC1wYW5lbC10aXRsZT5cbiAgICAgICAgPG1hdC1wYW5lbC1kZXNjcmlwdGlvbiBjbGFzcz1cInNldHRpbmctZGVzY3JpcHRpb25cIiAqbmdJZj1cIm5hdkV4cGFuZGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwibWFpbi1jaGV2cm9uLWljb25cIiAqbmdJZj1cIiFzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfcmlnaHQ8L21hdC1pY29uPlxuICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cIm1haW4tY2hldnJvbi1pY29uXCIgKm5nSWY9XCJzZXR0aW5nc0hlYWRNZW51LnBhbmVsT3BlblN0YXRlXCI+YXJyb3dfZHJvcF9kb3duPC9tYXQtaWNvbj5cbiAgICAgICAgPC9tYXQtcGFuZWwtZGVzY3JpcHRpb24+XG4gICAgICA8L21hdC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAgPG1hdC1saXN0IGNsYXNzPVwicGFkZGluZy0wcHhcIiAqbmdGb3I9XCJsZXQgbWVudSBvZiBzZXR0aW5nc0hlYWRNZW51LmNoaWxkcmVuXCIgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiXG4gICAgICAgIFtuZ0NsYXNzXT1cInsnZ3JvdXAtbmF2LW1lbnUnOiBtZW51LmNoaWxkcmVuIH1cIj5cbiAgICAgICAgPG1hdC1uYXYtbGlzdD5cbiAgICAgICAgICA8bG5jLW5hdi1tZW51cyBhcHBPZmZzZXRUb3AgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUobWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cIm1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgKG1lbnVDbGlja2VkKT1cIm1lbnVDbGlja2VkKCRldmVudClcIiAjbmF2TWVudXNDb21wb25lbnQ+XG4gICAgICAgICAgPC9sbmMtbmF2LW1lbnVzPlxuICAgICAgICA8L21hdC1uYXYtbGlzdD5cbiAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZU1lbnVzPlxuICAgICAgICA8bWF0LWxpc3Q+XG4gICAgICAgICAgPGxuYy1uYXYtbWVudXMgW2F0dHIuaWRdPVwic2V0dGluZ3NIZWFkTWVudS5pZFwiIGFwcE9mZnNldFRvcFxuICAgICAgICAgICAgW2lzQWN0aXZlSXRlbV09XCJpc0NoZWNrQWN0aXZlUm91dGUoc2V0dGluZ3NIZWFkTWVudSxzZXR0aW5nc0hlYWRNZW51KVwiIFtpdGVtXT1cInNldHRpbmdzSGVhZE1lbnVcIlxuICAgICAgICAgICAgW2FwcGxpY2F0aW9uSWRdPVwiYXBwbGljYXRpb25EZXRhaWxzLmFwcGxpY2F0aW9uSWRcIiBbcGFyZW50TWVudUlkXT1cInNldHRpbmdzSGVhZE1lbnUuaWRcIlxuICAgICAgICAgICAgbWF0VG9vbHRpcD1cInt7Z2V0VG9vbHRpcEluZm8oc2V0dGluZ3NIZWFkTWVudSl9fVwiIG1hdFRvb2x0aXBDbGFzcz1cImxlZnQtbmF2LXRvb2x0aXBcIiBtYXRUb29sdGlwUG9zaXRpb249XCJyaWdodFwiXG4gICAgICAgICAgICAobWVudUNsaWNrZWQpPVwibWVudUNsaWNrZWQoJGV2ZW50KVwiICNuYXZNZW51c0NvbXBvbmVudD5cbiAgICAgICAgICA8L2xuYy1uYXYtbWVudXM+XG4gICAgICAgIDwvbWF0LWxpc3Q+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbWF0LWV4cGFuc2lvbi1wYW5lbD5cblxuICA8L2Rpdj5cbjwvZGl2PlxuPG5nLXRlbXBsYXRlICNlcnJvckJsb2NrPlxuICA8ZGl2IGNsYXNzPVwiZXJyb3JNc2dcIj5cbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zXCI+ZXJyb3I8L3NwYW4+XG4gICAgPHNwYW4gY2xhc3M9XCJlcnJvclR4dFwiPnt7ZXJyb3JNc2d9fTwvc3Bhbj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48YSBjbGFzcz1cImhhbWJ1cmdlci1pY29uIGV4cGFuZGVkLWhhbWJ1cmdlci1pY29uXCIgdGl0bGU9XCJUb2dnbGUgTWVudVwiIChjbGljayk9XCJzaWRlbmF2LmNsb3NlKCk7YWxsTWVudUNvbGxhcHNlKCk7IFwiPlxuICA8bWF0LWljb24gY2xhc3M9XCJsZWZ0LWNoZXZyb24taWNvblwiPmtleWJvYXJkX2Fycm93X2xlZnQ8L21hdC1pY29uPlxuPC9hPlxuXG48IS0tIDxpbWcgKm5nSWY9XCJzaG93TWVudUljb24oKVwiIGNsYXNzPVwiZmF2aWNvbi1kaW1lbnNpb25cIiBzcmM9e3thcHBsaWNhdGlvbkRldGFpbHMuc2lkZWJhckluZm8uZmF2aWNvbn19IGFsdD1cIkludGVudHdpc2UgRmF2aWNvblwiIC8+XG4gIDxhICpuZ0lmPVwic2hvd01lbnVJY29uKClcIiB0aXRsZT1cIlRvZ2dsZSBNZW51XCIgY2xhc3M9XCJoYW1idXJnZXItaWNvbiBjb2xsYXBzZWQtaGFtYnVyZ2VyXCJcbiAgICAoY2xpY2spPVwic2lkZW5hdi5vcGVuKClcIj5cbiAgICA8bWF0LWljb24gY2xhc3M9XCJyaWdodC1jaGV2cm9uLWljb25cIj5rZXlib2FyZF9hcnJvd19yaWdodDwvbWF0LWljb24+XG4gIDwvYT4gLS0+XG4iXX0=
|