@ieeesa-npm/groups 0.4.5 → 0.4.6
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/components/tree-view/tree-view.component.mjs +49 -18
- package/esm2022/lib/components/view-roster/view-roster.component.mjs +2 -1
- package/esm2022/lib/groups.component.mjs +1 -2
- package/esm2022/lib/models/group-function-type.model.mjs +2 -1
- package/esm2022/lib/models/group-info.model.mjs +1 -1
- package/fesm2022/ieeesa-npm-groups.mjs +50 -18
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -1
- package/lib/components/tree-view/tree-view.component.d.ts +0 -1
- package/lib/models/group-function-type.model.d.ts +2 -1
- package/lib/models/group-info.model.d.ts +1 -0
- package/package.json +1 -1
|
@@ -178,6 +178,7 @@ export class GroupsDataSource {
|
|
|
178
178
|
return;
|
|
179
179
|
}
|
|
180
180
|
if (expand) {
|
|
181
|
+
clickedNode.item.noOfChildren = children.length;
|
|
181
182
|
const nodes = children?.map((node) => new GroupNode(node, clickedNode?.level + 1, this.database?.isExpandable(node)));
|
|
182
183
|
this.data?.splice(index + 1, 0, ...nodes);
|
|
183
184
|
}
|
|
@@ -233,8 +234,7 @@ export class TreeViewComponent {
|
|
|
233
234
|
// eslint-disable-next-line no-unused-vars
|
|
234
235
|
elementRef,
|
|
235
236
|
// eslint-disable-next-line no-unused-vars
|
|
236
|
-
groupsService
|
|
237
|
-
// eslint-disable-next-line no-empty-function
|
|
237
|
+
groupsService // eslint-disable-next-line no-empty-function
|
|
238
238
|
) {
|
|
239
239
|
this.database = database;
|
|
240
240
|
this.elementRef = elementRef;
|
|
@@ -246,7 +246,6 @@ export class TreeViewComponent {
|
|
|
246
246
|
this.destroy$ = new Subject();
|
|
247
247
|
this.plusCircleIconButton = this.buttons[4];
|
|
248
248
|
this.minusCircleIconButton = this.buttons[5];
|
|
249
|
-
this.isEditGroup = false;
|
|
250
249
|
this.menuItems = this.buttons?.filter((e) => e.id !== GroupAction?.EXPAND_GROUP_VIEW &&
|
|
251
250
|
e.id !== GroupAction?.COLLAPSE_GROUP_VIEW);
|
|
252
251
|
this.isGroupSearchOrFilter = false;
|
|
@@ -308,6 +307,7 @@ export class TreeViewComponent {
|
|
|
308
307
|
this.treeControl?.toggle(node);
|
|
309
308
|
}
|
|
310
309
|
else {
|
|
310
|
+
this.groupsService.setGroupFunctionType(GroupFunctionType.TOGGLE);
|
|
311
311
|
this.toggleGroupClick.emit(node?.item);
|
|
312
312
|
this.selectedGroup = node;
|
|
313
313
|
}
|
|
@@ -330,7 +330,6 @@ export class TreeViewComponent {
|
|
|
330
330
|
*/
|
|
331
331
|
setGroupDataSource() {
|
|
332
332
|
if (this.dataSource &&
|
|
333
|
-
!this.isEditGroup &&
|
|
334
333
|
this.groupsService.getGroupFunctionType() === GroupFunctionType.CREATE) {
|
|
335
334
|
this.parentGroupsInfo?.forEach((parentGroupNode) => {
|
|
336
335
|
if (this.dataSource?.data?.findIndex((node) => node?.item?.groupId === parentGroupNode?.groupId) === -1) {
|
|
@@ -341,7 +340,7 @@ export class TreeViewComponent {
|
|
|
341
340
|
}
|
|
342
341
|
});
|
|
343
342
|
}
|
|
344
|
-
else if (this.
|
|
343
|
+
else if (this.groupsService.getGroupFunctionType() === GroupFunctionType.EDIT) {
|
|
345
344
|
this.editGroup(this.parentGroupsInfo);
|
|
346
345
|
}
|
|
347
346
|
else {
|
|
@@ -361,12 +360,16 @@ export class TreeViewComponent {
|
|
|
361
360
|
groupNodeReference?.forEach((node) => {
|
|
362
361
|
if (node?.item?.groupId ===
|
|
363
362
|
this.editGroupAndParentGroupInfo?.groupInfo?.groupId) {
|
|
363
|
+
const noOfChildrenReference = node.item.noOfChildren;
|
|
364
364
|
node.item = editedNode;
|
|
365
|
+
node.item.noOfChildren = noOfChildrenReference;
|
|
365
366
|
node.expandable = this.database.isExpandable(node?.item);
|
|
367
|
+
if (node.item.hasChildren && this.treeControl.isExpanded(node)) {
|
|
368
|
+
this.treeControl.toggle(node);
|
|
369
|
+
}
|
|
366
370
|
}
|
|
367
371
|
});
|
|
368
372
|
this.dataSource.data = groupNodeReference;
|
|
369
|
-
this.isEditGroup = false;
|
|
370
373
|
}
|
|
371
374
|
/**
|
|
372
375
|
* Loads the child groups and updates the tree view.
|
|
@@ -375,10 +378,7 @@ export class TreeViewComponent {
|
|
|
375
378
|
loadChildGroups() {
|
|
376
379
|
this.database?.setChildGroupsInfo(this.childGroupsInfo);
|
|
377
380
|
const groupNodesReference = this.dataSource?.data;
|
|
378
|
-
if (this.
|
|
379
|
-
this.editGroup(this.childGroupsInfo);
|
|
380
|
-
}
|
|
381
|
-
if (this.selectedGroup && !this.isEditGroup) {
|
|
381
|
+
if (this.groupsService.getGroupFunctionType() === GroupFunctionType.CREATE) {
|
|
382
382
|
if (!this.selectedGroup?.item?.hasChildren) {
|
|
383
383
|
this.selectedGroup.item.hasChildren = true;
|
|
384
384
|
const groupParentNode = new GroupNode(this.selectedGroup.item, this.selectedGroup.level, true);
|
|
@@ -391,13 +391,22 @@ export class TreeViewComponent {
|
|
|
391
391
|
if (this.dataSource?.data?.findIndex((node) => node?.item?.groupId === groupNode?.groupId) === -1) {
|
|
392
392
|
const newGroupNode = new GroupNode(groupNode, this.selectedGroup?.level + 1, this.database?.isExpandable(groupNode));
|
|
393
393
|
const groupNodesReference = this.dataSource?.data;
|
|
394
|
+
groupNodesReference.forEach((node) => {
|
|
395
|
+
if (node.item.groupId === this.selectedGroup.item.groupId) {
|
|
396
|
+
node.item.noOfChildren = children.length;
|
|
397
|
+
}
|
|
398
|
+
});
|
|
394
399
|
groupNodesReference.splice(groupNodesReference.indexOf(this.selectedGroup) + 1, 0, newGroupNode);
|
|
395
400
|
this.dataSource.data = groupNodesReference;
|
|
396
401
|
}
|
|
397
402
|
});
|
|
398
403
|
}
|
|
399
|
-
|
|
400
|
-
|
|
404
|
+
}
|
|
405
|
+
else if (this.groupsService.getGroupFunctionType() === GroupFunctionType.EDIT) {
|
|
406
|
+
this.editGroup(this.childGroupsInfo);
|
|
407
|
+
}
|
|
408
|
+
else if (this.groupsService.getGroupFunctionType() === GroupFunctionType.TOGGLE) {
|
|
409
|
+
this.treeControl?.toggle(this.selectedGroup);
|
|
401
410
|
}
|
|
402
411
|
}
|
|
403
412
|
/**
|
|
@@ -407,8 +416,31 @@ export class TreeViewComponent {
|
|
|
407
416
|
*/
|
|
408
417
|
deleteGroupNode(deletedGroupId) {
|
|
409
418
|
if (this.treeControl && deletedGroupId) {
|
|
410
|
-
const
|
|
411
|
-
this.dataSource.data
|
|
419
|
+
const deletedGroupIndex = this.dataSource.data.findIndex((node) => node.item.groupId === deletedGroupId);
|
|
420
|
+
const deletedGroup = this.dataSource.data.at(deletedGroupIndex);
|
|
421
|
+
const dataSourceReference = this.dataSource.data;
|
|
422
|
+
if (deletedGroupIndex) {
|
|
423
|
+
if (deletedGroup?.item.groupParentId !== null) {
|
|
424
|
+
const deletedParentGroupIndex = this.dataSource.data.findIndex((node) => node.item.groupId === deletedGroup?.item.groupParentId);
|
|
425
|
+
const deletedParentGroup = this.dataSource.data.at(deletedParentGroupIndex);
|
|
426
|
+
if (deletedParentGroup && deletedParentGroup.item.noOfChildren) {
|
|
427
|
+
deletedParentGroup.item.noOfChildren =
|
|
428
|
+
deletedParentGroup.item.noOfChildren - 1;
|
|
429
|
+
if (deletedParentGroup.item.noOfChildren === 0) {
|
|
430
|
+
deletedParentGroup.item.hasChildren = false;
|
|
431
|
+
const newNode = new GroupNode(deletedParentGroup.item, deletedParentGroup.level, false);
|
|
432
|
+
dataSourceReference.splice(deletedGroupIndex - 1, 2, newNode);
|
|
433
|
+
}
|
|
434
|
+
else {
|
|
435
|
+
dataSourceReference.splice(deletedGroupIndex, 1);
|
|
436
|
+
}
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
else {
|
|
440
|
+
dataSourceReference.splice(deletedGroupIndex, 1);
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
this.dataSource.data = dataSourceReference;
|
|
412
444
|
this.deletedGroupId = undefined;
|
|
413
445
|
}
|
|
414
446
|
}
|
|
@@ -452,7 +484,6 @@ export class TreeViewComponent {
|
|
|
452
484
|
groupInfo: group?.item,
|
|
453
485
|
parentGroupInfo: editGroupParentInfo,
|
|
454
486
|
};
|
|
455
|
-
this.isEditGroup = true;
|
|
456
487
|
this.editGroupClick.emit(this.editGroupAndParentGroupInfo);
|
|
457
488
|
}
|
|
458
489
|
else if (this.selectedGroupAction?.id === GroupAction.DELETE_GROUP) {
|
|
@@ -498,7 +529,7 @@ export class TreeViewComponent {
|
|
|
498
529
|
this.destroy$.unsubscribe();
|
|
499
530
|
}
|
|
500
531
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: TreeViewComponent, deps: [{ token: Groups }, { token: i0.ElementRef }, { token: i1.GroupsService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
501
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: TreeViewComponent, isStandalone: true, selector: "ieeesa-tree", inputs: { parentGroupsInfo: "parentGroupsInfo", childGroupsInfo: "childGroupsInfo", isGroupSearchOrFilterActive: "isGroupSearchOrFilterActive", deletedGroupIdInfo: "deletedGroupIdInfo" }, outputs: { toggleGroupClick: "toggleGroupClick", createGroupClick: "createGroupClick", editGroupClick: "editGroupClick", deleteGroupClick: "deleteGroupClick", viewRosterClick: "viewRosterClick" }, ngImport: i0, template: "<div class=\"ieeesa-tree\">\r\n <mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"ieeesa-tree__root\"\r\n #rootSelector\r\n role=\"treegrid\"\r\n >\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16\"\r\n >\r\n <div\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n !isGroupSearchOrFilterActive ? 'ieeesa-tree__collapse-icon' : ''\r\n \"\r\n role=\"gridcell\"\r\n ></div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChildGroups\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16 ieeesa-tree__parent-node-wrapper\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n treeControl.isExpanded(node)\r\n ? 'ieeesa-tree__root-node-white-bg'\r\n : 'ieeesa-tree__root-node'\r\n \"\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div role=\"gridcell\">\r\n <ieeesa-icon-button\r\n *ngIf=\"!isGroupSearchOrFilterActive\"\r\n (iconButtonClick)=\"viewChildGroups(node)\"\r\n [iconButton]=\"getToggleButtonInfo(node)\"\r\n ></ieeesa-icon-button>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <ng-template #ieeesaGroupNodeOutlet let-node>\r\n <ng-container\r\n *ngTemplateOutlet=\"ieeesaGroupInfoOutlet; context: { $implicit: node }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex d-none gap-3 d-sm-flex d-md-flex d-lg-flex ieeesa-tree__group-actions\"\r\n role=\"gridcell\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupActionsOutlet;\r\n context: { $implicit: node }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <ieeesa-menu\r\n [menuItems]=\"getFilteredGroupActions(node)\"\r\n (menuItemClick)=\"onGroupActionsClick($event); handleGroupActions(node)\"\r\n class=\"d-lg-none d-md-none d-sm-none\"\r\n role=\"gridcell\"\r\n ></ieeesa-menu>\r\n </ng-template>\r\n <ng-template #ieeesaGroupInfoOutlet let-node>\r\n <div class=\"ieeesa-tree__group-info-wrapper\">\r\n <div\r\n class=\"ieeesa-tree__group-info d-flex flex-column flex-sm-column flex-md-column flex-lg-row align-items-start align-items-sm-baseline align-items-md-baseline align-items-lg-baseline gap-2 mb-1\"\r\n >\r\n <p\r\n class=\"ieeesa-tree__node-group-name ieeesa-headline-sm-26\"\r\n [matTooltip]=\"node?.item?.groupName\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupName }}\r\n </p>\r\n <p\r\n class=\"ieeesa-tree__node-group-acronym ieeesa-title-lg-24\"\r\n [matTooltip]=\"node?.item?.groupAcronym\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupAcronym }}\r\n </p>\r\n </div>\r\n <div class=\"ieeesa-body-md-16 ieeesa-tree__node-group-desc\">\r\n {{ node?.item?.groupTypeInfo?.name }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #ieeesaGroupActionsOutlet let-node>\r\n <ieeesa-icon-button\r\n *ngFor=\"let item of getFilteredGroupActions(node); trackBy: trackByFn\"\r\n [iconButton]=\"item\"\r\n (iconButtonClick)=\"\r\n onGroupActionsClick($event); handleGroupActions(node)\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-template>\r\n </mat-tree>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-tree p{margin-bottom:0}.ieeesa-tree .mat-mdc-icon-button{padding:0!important;position:absolute;right:1.7em}.ieeesa-tree__group-actions{position:absolute;right:4.375em}.ieeesa-tree__group-info-wrapper{width:80%;max-width:60%}.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:69%}.ieeesa-tree__node-group-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:67%;min-width:0}.ieeesa-tree__node-group-acronym{color:#63666a!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:auto;max-width:100%;min-width:0}.ieeesa-tree__node-group-desc{color:#4a4d50!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ieeesa-tree__node-group-desc:hover{text-wrap:wrap}.ieeesa-tree__node{background:#f4f8fe;padding:.75em 1.5em .75em 1.125em}.ieeesa-tree__root-node-white-bg{background:#ffffff;box-shadow:0 1px #00b5e2 inset,6px 0 #379dfc inset}.ieeesa-tree__collapse-icon{min-width:3.5em}@media (max-width: 992px){.ieeesa-tree__group-info-wrapper{max-width:60%}.ieeesa-tree__node-group-acronym{max-width:90%}}@media (max-width: 576px){.ieeesa-tree__group-info-wrapper,.ieeesa-tree__node-group-acronym,.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:90%}.ieeesa-tree__node-group-name{max-width:80%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i3.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i3.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: i3.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i3.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: MenuComponent, selector: "ieeesa-menu", inputs: ["menuItems"], outputs: ["menuItemClick"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton"], outputs: ["iconButtonClick"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: TextTruncatedDirective, selector: "[matTooltip][ieeesaTextTruncated]" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
532
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.3", type: TreeViewComponent, isStandalone: true, selector: "ieeesa-tree", inputs: { parentGroupsInfo: "parentGroupsInfo", childGroupsInfo: "childGroupsInfo", isGroupSearchOrFilterActive: "isGroupSearchOrFilterActive", deletedGroupIdInfo: "deletedGroupIdInfo" }, outputs: { toggleGroupClick: "toggleGroupClick", createGroupClick: "createGroupClick", editGroupClick: "editGroupClick", deleteGroupClick: "deleteGroupClick", viewRosterClick: "viewRosterClick" }, ngImport: i0, template: "<div class=\"ieeesa-tree\">\r\n <mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"ieeesa-tree__root\"\r\n #rootSelector\r\n role=\"treegrid\"\r\n >\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16\"\r\n >\r\n <div\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n !isGroupSearchOrFilterActive ? 'ieeesa-tree__collapse-icon' : ''\r\n \"\r\n role=\"gridcell\"\r\n ></div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChildGroups\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16 ieeesa-tree__parent-node-wrapper\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n treeControl.isExpanded(node)\r\n ? 'ieeesa-tree__root-node-white-bg'\r\n : 'ieeesa-tree__root-node'\r\n \"\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div role=\"gridcell\">\r\n <ieeesa-icon-button\r\n *ngIf=\"!isGroupSearchOrFilterActive\"\r\n (iconButtonClick)=\"viewChildGroups(node)\"\r\n [iconButton]=\"getToggleButtonInfo(node)\"\r\n ></ieeesa-icon-button>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <ng-template #ieeesaGroupNodeOutlet let-node>\r\n <ng-container\r\n *ngTemplateOutlet=\"ieeesaGroupInfoOutlet; context: { $implicit: node }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex d-none gap-3 d-sm-flex d-md-flex d-lg-flex ieeesa-tree__group-actions\"\r\n role=\"gridcell\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupActionsOutlet;\r\n context: { $implicit: node }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <ieeesa-menu\r\n [menuItems]=\"getFilteredGroupActions(node)\"\r\n (menuItemClick)=\"onGroupActionsClick($event); handleGroupActions(node)\"\r\n class=\"d-lg-none d-md-none d-sm-none\"\r\n role=\"gridcell\"\r\n ></ieeesa-menu>\r\n </ng-template>\r\n <ng-template #ieeesaGroupInfoOutlet let-node>\r\n <div class=\"ieeesa-tree__group-info-wrapper\">\r\n <div\r\n class=\"ieeesa-tree__group-info d-flex flex-column flex-sm-column flex-md-column flex-lg-row align-items-start align-items-sm-baseline align-items-md-baseline align-items-lg-baseline gap-2 mb-1\"\r\n >\r\n <p\r\n class=\"ieeesa-tree__node-group-name ieeesa-headline-sm-26\"\r\n [matTooltip]=\"node?.item?.groupName\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupName }}\r\n </p>\r\n <p\r\n class=\"ieeesa-tree__node-group-acronym ieeesa-title-lg-24\"\r\n [matTooltip]=\"node?.item?.groupAcronym\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupAcronym }}\r\n </p>\r\n </div>\r\n <div class=\"ieeesa-body-md-16 ieeesa-tree__node-group-desc\">\r\n {{ node?.item?.groupTypeInfo?.name }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #ieeesaGroupActionsOutlet let-node>\r\n <ieeesa-icon-button\r\n *ngFor=\"let item of getFilteredGroupActions(node); trackBy: trackByFn\"\r\n [iconButton]=\"item\"\r\n (iconButtonClick)=\"\r\n onGroupActionsClick($event); handleGroupActions(node)\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-template>\r\n </mat-tree>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-tree p{margin-bottom:0}.ieeesa-tree .ieeesa-icon-button{padding:1px 6px}.ieeesa-tree .mat-mdc-icon-button{padding:0!important;position:absolute;right:1.7em}.ieeesa-tree__group-actions{position:absolute;right:4.375em}.ieeesa-tree__group-info-wrapper{width:80%;max-width:60%}.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:69%}.ieeesa-tree__node-group-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:67%;min-width:0}.ieeesa-tree__node-group-acronym{color:#63666a!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:auto;max-width:100%;min-width:0}.ieeesa-tree__node-group-desc{color:#4a4d50!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ieeesa-tree__node-group-desc:hover{text-wrap:wrap}.ieeesa-tree__node{background:#f4f8fe;padding:.75em 1.5em .75em 1.125em}.ieeesa-tree__root-node-white-bg{background:#ffffff;box-shadow:0 1px #00b5e2 inset,6px 0 #379dfc inset}.ieeesa-tree__collapse-icon{min-width:3.25em}@media (max-width: 992px){.ieeesa-tree__group-info-wrapper{max-width:60%}.ieeesa-tree__node-group-acronym{max-width:90%}}@media (max-width: 576px){.ieeesa-tree__group-info-wrapper,.ieeesa-tree__node-group-acronym,.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:90%}.ieeesa-tree__node-group-name{max-width:80%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: MatTreeModule }, { kind: "directive", type: i3.MatTreeNodeDef, selector: "[matTreeNodeDef]", inputs: ["matTreeNodeDefWhen", "matTreeNode"] }, { kind: "directive", type: i3.MatTreeNodePadding, selector: "[matTreeNodePadding]", inputs: ["matTreeNodePadding", "matTreeNodePaddingIndent"] }, { kind: "component", type: i3.MatTree, selector: "mat-tree", exportAs: ["matTree"] }, { kind: "directive", type: i3.MatTreeNode, selector: "mat-tree-node", inputs: ["role", "disabled", "tabIndex"], exportAs: ["matTreeNode"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: MenuComponent, selector: "ieeesa-menu", inputs: ["menuItems"], outputs: ["menuItemClick"] }, { kind: "component", type: IconButtonComponent, selector: "ieeesa-icon-button", inputs: ["iconButton"], outputs: ["iconButtonClick"] }, { kind: "ngmodule", type: MatTooltipModule }, { kind: "directive", type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "directive", type: TextTruncatedDirective, selector: "[matTooltip][ieeesaTextTruncated]" }], encapsulation: i0.ViewEncapsulation.None }); }
|
|
502
533
|
}
|
|
503
534
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImport: i0, type: TreeViewComponent, decorators: [{
|
|
504
535
|
type: Component,
|
|
@@ -511,7 +542,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
511
542
|
IconButtonComponent,
|
|
512
543
|
MatTooltipModule,
|
|
513
544
|
TextTruncatedDirective,
|
|
514
|
-
], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-tree\">\r\n <mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"ieeesa-tree__root\"\r\n #rootSelector\r\n role=\"treegrid\"\r\n >\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16\"\r\n >\r\n <div\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n !isGroupSearchOrFilterActive ? 'ieeesa-tree__collapse-icon' : ''\r\n \"\r\n role=\"gridcell\"\r\n ></div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChildGroups\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16 ieeesa-tree__parent-node-wrapper\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n treeControl.isExpanded(node)\r\n ? 'ieeesa-tree__root-node-white-bg'\r\n : 'ieeesa-tree__root-node'\r\n \"\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div role=\"gridcell\">\r\n <ieeesa-icon-button\r\n *ngIf=\"!isGroupSearchOrFilterActive\"\r\n (iconButtonClick)=\"viewChildGroups(node)\"\r\n [iconButton]=\"getToggleButtonInfo(node)\"\r\n ></ieeesa-icon-button>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <ng-template #ieeesaGroupNodeOutlet let-node>\r\n <ng-container\r\n *ngTemplateOutlet=\"ieeesaGroupInfoOutlet; context: { $implicit: node }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex d-none gap-3 d-sm-flex d-md-flex d-lg-flex ieeesa-tree__group-actions\"\r\n role=\"gridcell\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupActionsOutlet;\r\n context: { $implicit: node }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <ieeesa-menu\r\n [menuItems]=\"getFilteredGroupActions(node)\"\r\n (menuItemClick)=\"onGroupActionsClick($event); handleGroupActions(node)\"\r\n class=\"d-lg-none d-md-none d-sm-none\"\r\n role=\"gridcell\"\r\n ></ieeesa-menu>\r\n </ng-template>\r\n <ng-template #ieeesaGroupInfoOutlet let-node>\r\n <div class=\"ieeesa-tree__group-info-wrapper\">\r\n <div\r\n class=\"ieeesa-tree__group-info d-flex flex-column flex-sm-column flex-md-column flex-lg-row align-items-start align-items-sm-baseline align-items-md-baseline align-items-lg-baseline gap-2 mb-1\"\r\n >\r\n <p\r\n class=\"ieeesa-tree__node-group-name ieeesa-headline-sm-26\"\r\n [matTooltip]=\"node?.item?.groupName\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupName }}\r\n </p>\r\n <p\r\n class=\"ieeesa-tree__node-group-acronym ieeesa-title-lg-24\"\r\n [matTooltip]=\"node?.item?.groupAcronym\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupAcronym }}\r\n </p>\r\n </div>\r\n <div class=\"ieeesa-body-md-16 ieeesa-tree__node-group-desc\">\r\n {{ node?.item?.groupTypeInfo?.name }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #ieeesaGroupActionsOutlet let-node>\r\n <ieeesa-icon-button\r\n *ngFor=\"let item of getFilteredGroupActions(node); trackBy: trackByFn\"\r\n [iconButton]=\"item\"\r\n (iconButtonClick)=\"\r\n onGroupActionsClick($event); handleGroupActions(node)\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-template>\r\n </mat-tree>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-tree p{margin-bottom:0}.ieeesa-tree .mat-mdc-icon-button{padding:0!important;position:absolute;right:1.7em}.ieeesa-tree__group-actions{position:absolute;right:4.375em}.ieeesa-tree__group-info-wrapper{width:80%;max-width:60%}.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:69%}.ieeesa-tree__node-group-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:67%;min-width:0}.ieeesa-tree__node-group-acronym{color:#63666a!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:auto;max-width:100%;min-width:0}.ieeesa-tree__node-group-desc{color:#4a4d50!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ieeesa-tree__node-group-desc:hover{text-wrap:wrap}.ieeesa-tree__node{background:#f4f8fe;padding:.75em 1.5em .75em 1.125em}.ieeesa-tree__root-node-white-bg{background:#ffffff;box-shadow:0 1px #00b5e2 inset,6px 0 #379dfc inset}.ieeesa-tree__collapse-icon{min-width:3.5em}@media (max-width: 992px){.ieeesa-tree__group-info-wrapper{max-width:60%}.ieeesa-tree__node-group-acronym{max-width:90%}}@media (max-width: 576px){.ieeesa-tree__group-info-wrapper,.ieeesa-tree__node-group-acronym,.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:90%}.ieeesa-tree__node-group-name{max-width:80%}}\n"] }]
|
|
545
|
+
], encapsulation: ViewEncapsulation.None, template: "<div class=\"ieeesa-tree\">\r\n <mat-tree\r\n [dataSource]=\"dataSource\"\r\n [treeControl]=\"treeControl\"\r\n class=\"ieeesa-tree__root\"\r\n #rootSelector\r\n role=\"treegrid\"\r\n >\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16\"\r\n >\r\n <div\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n !isGroupSearchOrFilterActive ? 'ieeesa-tree__collapse-icon' : ''\r\n \"\r\n role=\"gridcell\"\r\n ></div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <mat-tree-node\r\n *matTreeNodeDef=\"let node; when: hasChildGroups\"\r\n matTreeNodePadding\r\n [matTreeNodePaddingIndent]=\"treePaddingIndent\"\r\n class=\"ieeesa-body-md-16 ieeesa-tree__parent-node-wrapper\"\r\n >\r\n <div\r\n [ngClass]=\"\r\n treeControl.isExpanded(node)\r\n ? 'ieeesa-tree__root-node-white-bg'\r\n : 'ieeesa-tree__root-node'\r\n \"\r\n class=\"ieeesa-tree__node w-100 d-flex gap-lg-3 my-0 gap-0 gap-sm-0 gap-md-2\"\r\n [ngStyle]=\"getBoxShadow(node?.item?.groupTypeInfo?.legendColor)\"\r\n >\r\n <div role=\"gridcell\">\r\n <ieeesa-icon-button\r\n *ngIf=\"!isGroupSearchOrFilterActive\"\r\n (iconButtonClick)=\"viewChildGroups(node)\"\r\n [iconButton]=\"getToggleButtonInfo(node)\"\r\n ></ieeesa-icon-button>\r\n </div>\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupNodeOutlet;\r\n context: { $implicit: node }\r\n \"\r\n ></ng-container>\r\n </div>\r\n </mat-tree-node>\r\n <ng-template #ieeesaGroupNodeOutlet let-node>\r\n <ng-container\r\n *ngTemplateOutlet=\"ieeesaGroupInfoOutlet; context: { $implicit: node }\"\r\n ></ng-container>\r\n <div\r\n class=\"d-flex d-none gap-3 d-sm-flex d-md-flex d-lg-flex ieeesa-tree__group-actions\"\r\n role=\"gridcell\"\r\n >\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n ieeesaGroupActionsOutlet;\r\n context: { $implicit: node }\r\n \"\r\n >\r\n </ng-container>\r\n </div>\r\n <ieeesa-menu\r\n [menuItems]=\"getFilteredGroupActions(node)\"\r\n (menuItemClick)=\"onGroupActionsClick($event); handleGroupActions(node)\"\r\n class=\"d-lg-none d-md-none d-sm-none\"\r\n role=\"gridcell\"\r\n ></ieeesa-menu>\r\n </ng-template>\r\n <ng-template #ieeesaGroupInfoOutlet let-node>\r\n <div class=\"ieeesa-tree__group-info-wrapper\">\r\n <div\r\n class=\"ieeesa-tree__group-info d-flex flex-column flex-sm-column flex-md-column flex-lg-row align-items-start align-items-sm-baseline align-items-md-baseline align-items-lg-baseline gap-2 mb-1\"\r\n >\r\n <p\r\n class=\"ieeesa-tree__node-group-name ieeesa-headline-sm-26\"\r\n [matTooltip]=\"node?.item?.groupName\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupName }}\r\n </p>\r\n <p\r\n class=\"ieeesa-tree__node-group-acronym ieeesa-title-lg-24\"\r\n [matTooltip]=\"node?.item?.groupAcronym\"\r\n ieeesaTextTruncated\r\n role=\"gridcell\"\r\n >\r\n {{ node?.item?.groupAcronym }}\r\n </p>\r\n </div>\r\n <div class=\"ieeesa-body-md-16 ieeesa-tree__node-group-desc\">\r\n {{ node?.item?.groupTypeInfo?.name }}\r\n </div>\r\n </div>\r\n </ng-template>\r\n <ng-template #ieeesaGroupActionsOutlet let-node>\r\n <ieeesa-icon-button\r\n *ngFor=\"let item of getFilteredGroupActions(node); trackBy: trackByFn\"\r\n [iconButton]=\"item\"\r\n (iconButtonClick)=\"\r\n onGroupActionsClick($event); handleGroupActions(node)\r\n \"\r\n >\r\n </ieeesa-icon-button>\r\n </ng-template>\r\n </mat-tree>\r\n</div>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.56em;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25em;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625em;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375em;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375em;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125em;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875em;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625em;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5em;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125em;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1em;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875em;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5em;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:rgba(29,25,43,.12)}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:rgba(103,80,164,.12)}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:rgba(103,80,164,.08)}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1em;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1em;border:1px solid #cac4d0;background:#ffffff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125em;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-tree p{margin-bottom:0}.ieeesa-tree .ieeesa-icon-button{padding:1px 6px}.ieeesa-tree .mat-mdc-icon-button{padding:0!important;position:absolute;right:1.7em}.ieeesa-tree__group-actions{position:absolute;right:4.375em}.ieeesa-tree__group-info-wrapper{width:80%;max-width:60%}.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:69%}.ieeesa-tree__node-group-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden;max-width:67%;min-width:0}.ieeesa-tree__node-group-acronym{color:#63666a!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;width:auto;max-width:100%;min-width:0}.ieeesa-tree__node-group-desc{color:#4a4d50!important;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.ieeesa-tree__node-group-desc:hover{text-wrap:wrap}.ieeesa-tree__node{background:#f4f8fe;padding:.75em 1.5em .75em 1.125em}.ieeesa-tree__root-node-white-bg{background:#ffffff;box-shadow:0 1px #00b5e2 inset,6px 0 #379dfc inset}.ieeesa-tree__collapse-icon{min-width:3.25em}@media (max-width: 992px){.ieeesa-tree__group-info-wrapper{max-width:60%}.ieeesa-tree__node-group-acronym{max-width:90%}}@media (max-width: 576px){.ieeesa-tree__group-info-wrapper,.ieeesa-tree__node-group-acronym,.ieeesa-tree__parent-node-wrapper .ieeesa-tree__group-info-wrapper{max-width:90%}.ieeesa-tree__node-group-name{max-width:80%}}\n"] }]
|
|
515
546
|
}], ctorParameters: function () { return [{ type: Groups }, { type: i0.ElementRef }, { type: i1.GroupsService }]; }, propDecorators: { parentGroupsInfo: [{
|
|
516
547
|
type: Input
|
|
517
548
|
}], childGroupsInfo: [{
|
|
@@ -531,4 +562,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.3", ngImpor
|
|
|
531
562
|
}], viewRosterClick: [{
|
|
532
563
|
type: Output
|
|
533
564
|
}] } });
|
|
534
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBR04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxhQUFhLEVBRWIsbUJBQW1CLEVBRW5CLHNCQUFzQixHQUN2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxTQUFTLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0vQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7QUFDM0U7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCO0lBQ0UsMENBQTBDO0lBQ25DLElBQWU7SUFDdEIsMENBQTBDO0lBQ25DLFFBQVEsQ0FBQztJQUNoQiwwQ0FBMEM7SUFDbkMsYUFBYSxLQUFLO0lBQ3pCLDBDQUEwQztJQUNuQyxZQUFZLEtBQUssQ0FBQyw2Q0FBNkM7O1FBTi9ELFNBQUksR0FBSixJQUFJLENBQVc7UUFFZixVQUFLLEdBQUwsS0FBSyxDQUFJO1FBRVQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUVsQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3ZCLENBQUM7Q0FDTDtBQUVEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sTUFBTTtJQUlqQjs7OztPQUlHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQWtCO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxJQUFpQjtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUM1QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFELENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsSUFBZTtRQUMxQixPQUFPLENBQ0wsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsV0FBVyxDQUN0RSxDQUFDO0lBQ0osQ0FBQzs4R0ExQ1UsTUFBTTtrSEFBTixNQUFNLGNBRE8sTUFBTTs7MkZBQ25CLE1BQU07a0JBRGxCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQTZDbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCOzs7O09BSUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxJQUFJLElBQUksQ0FBQyxLQUFrQjtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXVDO0lBQy9DLDBDQUEwQztJQUNsQyxRQUFnQixDQUFDLDZDQUE2Qzs7UUFGOUQsZ0JBQVcsR0FBWCxXQUFXLENBQTRCO1FBRXZDLGFBQVEsR0FBUixRQUFRLENBQVE7UUF2QjFCLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNwRCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWMsRUFBRSxDQUFDLENBQUM7SUF1Qi9DLENBQUM7SUFFSjs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxnQkFBa0M7UUFDeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTzthQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUNHLE1BQXFDLENBQUMsS0FBSztnQkFDM0MsTUFBcUMsQ0FBQyxPQUFPLEVBQzlDO2dCQUNBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFvQyxDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxzSUFBc0k7SUFDdEksVUFBVSxDQUFDLGdCQUFrQztRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsTUFBa0M7UUFDbEQsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxPQUFPO2lCQUNYLEtBQUssRUFBRTtpQkFDUCxPQUFPLEVBQUU7aUJBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxXQUFzQixFQUFFLE1BQWU7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUMxQixpREFBaUQ7WUFDakQsT0FBTztTQUNSO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLEtBQUssR0FBRyxRQUFRLEVBQUUsR0FBRyxDQUN6QixDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxTQUFTLENBQ1gsSUFBSSxFQUNKLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUN0QixJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FDbEMsQ0FDSixDQUFDO1lBQ0YsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQztTQUMzQzthQUFNO1lBQ0wsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1lBQ2QsS0FDRSxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxFQUNqQixDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEdBQUcsV0FBVyxFQUFFLEtBQUssRUFDakUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsb0NBQW9DO2NBQ2pELEdBQUU7WUFDSixJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3JDO1FBRUQsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFDRDs7Ozs7R0FLRztBQWtCSCxNQUFNLE9BQU8saUJBQWlCO0lBcUI1QixJQUNJLGdCQUFnQixDQUFDLEtBQWtCO1FBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDO1FBQzFCLElBQUksS0FBSztZQUFFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQ0ksZUFBZSxDQUFDLEtBQWtCO1FBQ3BDLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBQ0QsSUFBSSxlQUFlO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSwyQkFBMkIsQ0FBQyxLQUFjO1FBQzVDLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxLQUFLLENBQUM7SUFDckMsQ0FBQztJQUNELElBQUksMkJBQTJCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLHFCQUFxQixDQUFDO0lBQ3BDLENBQUM7SUFFRCxJQUNJLGtCQUFrQixDQUFDLEVBQXNCO1FBQzNDLElBQUksQ0FBQyxjQUFjLEdBQUcsRUFBRSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQU9ELDZEQUE2RDtJQUM3RDtJQUNFLDBDQUEwQztJQUNuQyxRQUFnQjtJQUN2QiwwQ0FBMEM7SUFDbkMsVUFBc0I7SUFDN0IsMENBQTBDO0lBQ25DLGFBQTRCO0lBQ3JDLDZDQUE2Qzs7UUFMcEMsYUFBUSxHQUFSLFFBQVEsQ0FBUTtRQUVoQixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBRXRCLGtCQUFhLEdBQWIsYUFBYSxDQUFlO1FBbkVyQyw4REFBOEQ7UUFDOUQsY0FBUyxHQUFRLFNBQVMsQ0FBQztRQUMzQixZQUFPLEdBQVcsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFDO1FBQ3RELHNCQUFpQixHQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixDQUFDO1FBSzFFLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUVwRCx5QkFBb0IsR0FBZSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ25ELDBCQUFxQixHQUFlLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEQsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsY0FBUyxHQUFXLElBQUksQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUN0QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osQ0FBQyxDQUFDLEVBQUUsS0FBSyxXQUFXLEVBQUUsaUJBQWlCO1lBQ3ZDLENBQUMsQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFLG1CQUFtQixDQUM1QyxDQUFDO1FBbUJNLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQWtCNUIscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNqRCxxQkFBZ0IsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBQ2pELG1CQUFjLEdBQUcsSUFBSSxZQUFZLEVBQTBCLENBQUM7UUFDNUQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUErQjFEOzs7O1dBSUc7UUFDSCxhQUFRLEdBQUcsQ0FBQyxJQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7UUFFNUM7Ozs7V0FJRztRQUNILGlCQUFZLEdBQUcsQ0FBQyxJQUFlLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxVQUFVLENBQUM7UUFFckQ7Ozs7OztXQU1HO1FBQ0gsbUJBQWMsR0FBRyxDQUFDLEtBQWEsRUFBRSxTQUFvQixFQUFFLEVBQUUsQ0FDdkQsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQTNDcEIsQ0FBQztJQUNKOzs7T0FHRztJQUNILFFBQVE7UUFDTixJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxVQUFVLEVBQUUsVUFBVTtZQUN6QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLGFBQWEsR0FDakIsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUN0RSxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDckUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBd0JEOzs7O09BSUc7SUFDSCxlQUFlLENBQUMsSUFBZTtRQUM3QixJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7WUFDNUIsT0FBTztTQUNSO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNoQzthQUFNO1lBQ0wsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCw4REFBOEQ7SUFDOUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTztZQUNMLFNBQVMsRUFDUCxpREFBaUQsR0FBRyxLQUFLLEdBQUcsUUFBUTtTQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixJQUNFLElBQUksQ0FBQyxVQUFVO1lBQ2YsQ0FBQyxJQUFJLENBQUMsV0FBVztZQUNqQixJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUN0RTtZQUNBLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsQ0FBQyxlQUFlLEVBQUUsRUFBRTtnQkFDakQsSUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLENBQzlCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSyxlQUFlLEVBQUUsT0FBTyxDQUMzRCxLQUFLLENBQUMsQ0FBQyxFQUNSO29CQUNBLE1BQU0sWUFBWSxHQUFHLElBQUksU0FBUyxDQUNoQyxlQUFlLEVBQ2YsQ0FBQyxFQUNELElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxDQUM1QyxDQUFDO29CQUNGLE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7b0JBQ2xELG1CQUFtQixFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7aUJBQzVDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQ3ZDO2FBQU07WUFDTCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksZUFBZSxDQUNwQyxJQUFJLENBQUMsUUFBUSxFQUNiLElBQUksQ0FBQyxZQUFZLENBQ2xCLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLENBQUM7U0FDMUU7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxVQUF1QjtRQUMvQixNQUFNLGtCQUFrQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO1FBQ2pELE1BQU0sVUFBVSxHQUFHLFVBQVUsRUFBRSxJQUFJLENBQ2pDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLEVBQUUsT0FBTyxLQUFLLElBQUksQ0FBQywyQkFBMkIsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUN6RSxDQUFDO1FBQ0Ysa0JBQWtCLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDbkMsSUFDRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU87Z0JBQ25CLElBQUksQ0FBQywyQkFBMkIsRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUNwRDtnQkFDQSxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQXVCLENBQUM7Z0JBQ3BDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO2FBQzFEO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQixDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDbEQsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3RDO1FBQ0QsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQUMxQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO2dCQUMzQyxNQUFNLGVBQWUsR0FBRyxJQUFJLFNBQVMsQ0FDbkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQ3ZCLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUN4QixJQUFJLENBQ0wsQ0FBQztnQkFDRixtQkFBbUIsQ0FBQyxNQUFNLENBQ3hCLG1CQUFtQixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQy9DLENBQUMsRUFDRCxlQUFlLENBQ2hCLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDMUM7WUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtnQkFDbkQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNwRCxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsU0FBUyxFQUFFLEVBQUU7b0JBQzlCLElBQ0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUM5QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEtBQUssU0FBUyxFQUFFLE9BQU8sQ0FDckQsS0FBSyxDQUFDLENBQUMsRUFDUjt3QkFDQSxNQUFNLFlBQVksR0FBRyxJQUFJLFNBQVMsQ0FDaEMsU0FBUyxFQUNULElBQUksQ0FBQyxhQUFhLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFDN0IsSUFBSSxDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQ3ZDLENBQUM7d0JBQ0YsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQzt3QkFDbEQsbUJBQW1CLENBQUMsTUFBTSxDQUN4QixtQkFBbUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsRUFDbkQsQ0FBQyxFQUNELFlBQVksQ0FDYixDQUFDO3dCQUNGLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO3FCQUM1QztnQkFDSCxDQUFDLENBQUMsQ0FBQzthQUNKOztnQkFBTSxJQUFJLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckQ7SUFDSCxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGVBQWUsQ0FBQyxjQUFrQztRQUNoRCxJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksY0FBYyxFQUFFO1lBQ3RDLE1BQU0sZUFBZSxHQUFnQixJQUFJLENBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQ3RFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSyxjQUFjLENBQzNDLENBQUM7WUFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxlQUFlLENBQUM7WUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLElBQXVCO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUMsS0FBZ0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQWdCO1FBQ2pDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEtBQUssV0FBVyxDQUFDLFVBQVUsRUFBRTtZQUNsRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU07WUFDdkQsOERBQThEO1lBQzlELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FDbEUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDWCxJQUFJLENBQUMsMkJBQTJCLEdBQUc7Z0JBQ2pDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDdEIsZUFBZSxFQUFFLG1CQUFtQjthQUNyQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDNUQ7YUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksRUFBRTtZQUNwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLEtBQWdCO1FBQ3RDLE1BQU0sWUFBWSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVCLENBQUMsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQ0UsQ0FBQyxFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsV0FBVztnQkFDakMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsVUFBVTtnQkFDaEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLFdBQVcsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLFdBQVcsQ0FBQyxnQkFBZ0I7b0JBQ3JDLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsRUFDMUQ7Z0JBQ0EsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxLQUFhLEVBQUUsVUFBc0I7UUFDN0MsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQS9WVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix3Y0MxUDlCLDA2SUE0SEEsNm5RRGlISSxZQUFZLHlsQkFDWixhQUFhLGdoQkFDYixhQUFhLDhCQUNiLGVBQWUsK0JBQ2YsYUFBYSwyR0FDYixtQkFBbUIsb0hBQ25CLGdCQUFnQiwrSEFDaEIsc0JBQXNCOzsyRkFNYixpQkFBaUI7a0JBakI3QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7cUJBQ3ZCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7K0lBd0JqQyxnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBVUYsZUFBZTtzQkFEbEIsS0FBSztnQkFVRiwyQkFBMkI7c0JBRDlCLEtBQUs7Z0JBU0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQVNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNZW51Q29tcG9uZW50LFxyXG4gIE1lbnUsXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uLFxyXG4gIFRleHRUcnVuY2F0ZWREaXJlY3RpdmUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdyb3VwQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29sbGVjdGlvblZpZXdlcixcclxuICBTZWxlY3Rpb25DaGFuZ2UsXHJcbiAgRGF0YVNvdXJjZSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSwgTWF0VHJlZU5vZGVQYWRkaW5nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdEdyb3VwQW5kUGFyZW50SW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9lZGl0LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXBzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuLyoqXHJcbiAqIER5bmFtaWMgRmxhdCBub2RlIGNyZWF0ZXMgYSBub2RlIHN0cnVjdHVyZVxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBHcm91cE5vZGVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcm91cE5vZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgaXRlbTogR3JvdXBJbmZvLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgbGV2ZWwgPSAxLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZXhwYW5kYWJsZSA9IGZhbHNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG59XHJcblxyXG4vKipcclxuICogR3JvdXBzIHN0b3JlcyB0aGUgcGFyZW50IG5vZGVzIGFuZCBjaGlsZCBub2Rlc1xyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBHcm91cHNcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cHMge1xyXG4gIHJvb3RMZXZlbE5vZGVzITogR3JvdXBJbmZvW107XHJcbiAgLyoqIEluaXRpYWwgZGF0YSBmcm9tIGRhdGFiYXNlICovXHJcbiAgcHJpdmF0ZSBjaGlsZEdyb3VwcyE6IEdyb3VwSW5mb1tdO1xyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgQ2hpbGQgZ3JvdXBzIGluZm9cclxuICAgKiBAcmV0dXJuIHsqfSAge0dyb3VwSW5mb1tdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNcclxuICAgKi9cclxuICBnZXRDaGlsZEdyb3Vwc0luZm8oKTogR3JvdXBJbmZvW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hpbGRHcm91cHM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIENoaWxkIGdyb3VwcyBpbmZvXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gdmFsdWVcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzXHJcbiAgICovXHJcbiAgc2V0Q2hpbGRHcm91cHNJbmZvKHZhbHVlOiBHcm91cEluZm9bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGlsZEdyb3VwcyA9IHZhbHVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBncm91cHMgZGF0YSBhbmQgY3JlYXRlcyB0aGUgbm9kZSBzdHJ1Y3R1cmUgZm9yIG1hdCB0cmVlXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gZGF0YVxyXG4gICAqIEByZXR1cm4geyp9ICB7R3JvdXBOb2RlW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1xyXG4gICAqL1xyXG4gIGluaXRpYWxEYXRhKGRhdGE6IEdyb3VwSW5mb1tdKTogR3JvdXBOb2RlW10ge1xyXG4gICAgdGhpcy5yb290TGV2ZWxOb2RlcyA9IGRhdGE7XHJcbiAgICByZXR1cm4gdGhpcy5yb290TGV2ZWxOb2Rlcy5tYXAoXHJcbiAgICAgIChub2RlKSA9PiBuZXcgR3JvdXBOb2RlKG5vZGUsIDAsIHRoaXMuaXNFeHBhbmRhYmxlKG5vZGUpKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIHRoZSBub2RlIGlzIGV4cGFuZGFibGUgb3Igbm90XHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IG5vZGVcclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1xyXG4gICAqL1xyXG4gIGlzRXhwYW5kYWJsZShub2RlOiBHcm91cEluZm8pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICghIW5vZGU/LmNoaWxkcmVuICYmIG5vZGU/LmNoaWxkcmVuPy5sZW5ndGggPiAwKSB8fCBub2RlPy5oYXNDaGlsZHJlblxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIER5bmFtaWMgRGF0YSBTb3VyY2UgaGFuZGxlcyB0aGUgY29ubmVjdGlvbiB3aXRoIGR5bmFtaWMgZGF0YSBiYXNlXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEdyb3Vwc0RhdGFTb3VyY2VcclxuICogQGltcGxlbWVudHMge0RhdGFTb3VyY2U8R3JvdXBOb2RlPn1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcm91cHNEYXRhU291cmNlIGltcGxlbWVudHMgRGF0YVNvdXJjZTxHcm91cE5vZGU+IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgZGF0YUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvdXBOb2RlW10+KFtdKTtcclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1cGRhdGVkIHRyZWUgY29udHJvbCBkYXRhXHJcbiAgICogQHR5cGUge0dyb3VwTm9kZVtdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNEYXRhU291cmNlXHJcbiAgICovXHJcbiAgZ2V0IGRhdGEoKTogR3JvdXBOb2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZT8udmFsdWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGEgdG8gdHJlZSBjb250cm9sIGFuZCBlbWl0IHRoZSB2YWx1ZSB0byBpbnRpbWF0ZSB0aGUgZGF0YSBjaGFuZ2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzRGF0YVNvdXJjZVxyXG4gICAqL1xyXG4gIHNldCBkYXRhKHZhbHVlOiBHcm91cE5vZGVbXSkge1xyXG4gICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8R3JvdXBOb2RlPixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBkYXRhYmFzZTogR3JvdXBzIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBkYXRhIGJhc2UgYW5kIG1hdCB0cmVlXHJcbiAgICogQHBhcmFtIHtDb2xsZWN0aW9uVmlld2VyfSBjb2xsZWN0aW9uVmlld2VyXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPEdyb3VwTm9kZVtdPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzRGF0YVNvdXJjZVxyXG4gICAqL1xyXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8R3JvdXBOb2RlW10+IHtcclxuICAgIHRoaXMudHJlZUNvbnRyb2w/LmV4cGFuc2lvbk1vZGVsPy5jaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKGNoYW5nZSBhcyBTZWxlY3Rpb25DaGFuZ2U8R3JvdXBOb2RlPikuYWRkZWQgfHxcclxuICAgICAgICAgIChjaGFuZ2UgYXMgU2VsZWN0aW9uQ2hhbmdlPEdyb3VwTm9kZT4pLnJlbW92ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlVHJlZUNvbnRyb2woY2hhbmdlIGFzIFNlbGVjdGlvbkNoYW5nZTxHcm91cE5vZGU+KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIG1lcmdlKGNvbGxlY3Rpb25WaWV3ZXI/LnZpZXdDaGFuZ2UsIHRoaXMuZGF0YUNoYW5nZSkucGlwZShcclxuICAgICAgbWFwKCgpID0+IHRoaXMuZGF0YSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERpc2Nvbm5lY3QgdGhlIGNvbm5lY3Rpb24gd2l0aCBtYXQgdHJlZVxyXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvblZpZXdlcn0gY29sbGVjdGlvblZpZXdlclxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNEYXRhU291cmNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgbm8tZW1wdHktZnVuY3Rpb24sIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMvcmVtb3ZlcyB0aGUgY2hpbGQgbm9kZXMgd2hpbGUgZXhwYW5kcy9jb2xsYXBzZXMgdGhlIHBhcmVudCBub2RlXHJcbiAgICogQHBhcmFtIHtTZWxlY3Rpb25DaGFuZ2U8R3JvdXBOb2RlPn0gY2hhbmdlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0RhdGFTb3VyY2VcclxuICAgKi9cclxuICBoYW5kbGVUcmVlQ29udHJvbChjaGFuZ2U6IFNlbGVjdGlvbkNoYW5nZTxHcm91cE5vZGU+KSB7XHJcbiAgICBpZiAoY2hhbmdlPy5hZGRlZCkge1xyXG4gICAgICBjaGFuZ2UuYWRkZWQ/LmZvckVhY2goKG5vZGUpID0+IHRoaXMudG9nZ2xlTm9kZShub2RlLCB0cnVlKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlPy5yZW1vdmVkKSB7XHJcbiAgICAgIGNoYW5nZS5yZW1vdmVkXHJcbiAgICAgICAgLnNsaWNlKClcclxuICAgICAgICAucmV2ZXJzZSgpXHJcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHRoaXMudG9nZ2xlTm9kZShub2RlLCBmYWxzZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIHRoZSBub2RlLCBhZGQvcmVtb3ZlcyB0aGUgbm9kZSBmcm9tIGRpc3BsYXlcclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gY2xpY2tlZE5vZGVcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV4cGFuZFxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0RhdGFTb3VyY2VcclxuICAgKi9cclxuICB0b2dnbGVOb2RlKGNsaWNrZWROb2RlOiBHcm91cE5vZGUsIGV4cGFuZDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmRhdGFiYXNlPy5nZXRDaGlsZEdyb3Vwc0luZm8oKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhPy5pbmRleE9mKGNsaWNrZWROb2RlKTtcclxuICAgIGlmICghY2hpbGRyZW4gfHwgaW5kZXggPCAwKSB7XHJcbiAgICAgIC8vIElmIG5vIGNoaWxkcmVuLCBvciBjYW5ub3QgZmluZCB0aGUgbm9kZSwgbm8gb3BcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChleHBhbmQpIHtcclxuICAgICAgY29uc3Qgbm9kZXMgPSBjaGlsZHJlbj8ubWFwKFxyXG4gICAgICAgIChub2RlKSA9PlxyXG4gICAgICAgICAgbmV3IEdyb3VwTm9kZShcclxuICAgICAgICAgICAgbm9kZSxcclxuICAgICAgICAgICAgY2xpY2tlZE5vZGU/LmxldmVsICsgMSxcclxuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZT8uaXNFeHBhbmRhYmxlKG5vZGUpXHJcbiAgICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0YT8uc3BsaWNlKGluZGV4ICsgMSwgMCwgLi4ubm9kZXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbGV0IGNvdW50ID0gMDtcclxuICAgICAgZm9yIChcclxuICAgICAgICBsZXQgaSA9IGluZGV4ICsgMTtcclxuICAgICAgICBpIDwgdGhpcy5kYXRhPy5sZW5ndGggJiYgdGhpcy5kYXRhW2ldPy5sZXZlbCA+IGNsaWNrZWROb2RlPy5sZXZlbDtcclxuICAgICAgICBpKyssIGNvdW50KysgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5XHJcbiAgICAgICkge31cclxuICAgICAgdGhpcy5kYXRhPy5zcGxpY2UoaW5kZXggKyAxLCBjb3VudCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gTm90aWZ5IHRoZSBjaGFuZ2VcclxuICAgIHRoaXMuZGF0YUNoYW5nZT8ubmV4dCh0aGlzLmRhdGEpO1xyXG4gIH1cclxufVxyXG4vKipcclxuICogRGlzcGxheXMgdGhlIGdyb3VwcyB3aGVyZSBwYXJlbnQvY2hpbGQgcmVsYXRpb25zaGlwcyBhcmUgcmVwcmVzZW50ZWQgaW4gYSB0cmVlIHZpZXcvaGllcmFyY2h5LlxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBUcmVlVmlld0NvbXBvbmVudFxyXG4gKiBAaW1wbGVtZW50cyB7T25Jbml0fVxyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdpZWVlc2EtdHJlZScsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBNYXRUcmVlTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcclxuICAgIE1lbnVDb21wb25lbnQsXHJcbiAgICBJY29uQnV0dG9uQ29tcG9uZW50LFxyXG4gICAgTWF0VG9vbHRpcE1vZHVsZSxcclxuICAgIFRleHRUcnVuY2F0ZWREaXJlY3RpdmUsXHJcbiAgXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vdHJlZS12aWV3LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi90cmVlLXZpZXcuY29tcG9uZW50LnNjc3MnXSxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgVHJlZVZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBjb25zdGFudHM6IGFueSA9IGNvbnN0YW50cztcclxuICBidXR0b25zOiBNZW51W10gPSB0aGlzLmNvbnN0YW50cz8udmlld0dyb3Vwcz8uYnV0dG9ucztcclxuICB0cmVlUGFkZGluZ0luZGVudDogbnVtYmVyID0gdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cHM/LnRyZWVQYWRkaW5nSW5kZW50O1xyXG4gIHNlbGVjdGVkR3JvdXAhOiBHcm91cE5vZGU7XHJcbiAgc2VsZWN0ZWRHcm91cEFjdGlvbiE6IE1lbnUgfCBJY29uQnV0dG9uO1xyXG4gIHRyZWVDb250cm9sITogRmxhdFRyZWVDb250cm9sPEdyb3VwTm9kZT47XHJcbiAgZGF0YVNvdXJjZSE6IEdyb3Vwc0RhdGFTb3VyY2U7XHJcbiAgZGVzdHJveSQ6IFN1YmplY3Q8Ym9vbGVhbj4gPSBuZXcgU3ViamVjdDxib29sZWFuPigpO1xyXG4gIG1hdFRyZWVOb2RlUGFkZGluZyE6IE1hdFRyZWVOb2RlUGFkZGluZzxHcm91cE5vZGU+O1xyXG4gIHBsdXNDaXJjbGVJY29uQnV0dG9uOiBJY29uQnV0dG9uID0gdGhpcy5idXR0b25zWzRdO1xyXG4gIG1pbnVzQ2lyY2xlSWNvbkJ1dHRvbjogSWNvbkJ1dHRvbiA9IHRoaXMuYnV0dG9uc1s1XTtcclxuICBpc0VkaXRHcm91cCA9IGZhbHNlO1xyXG4gIGVkaXRHcm91cEFuZFBhcmVudEdyb3VwSW5mbyE6IEVkaXRHcm91cEFuZFBhcmVudEluZm87XHJcbiAgbWVudUl0ZW1zOiBNZW51W10gPSB0aGlzLmJ1dHRvbnM/LmZpbHRlcihcclxuICAgIChlKSA9PlxyXG4gICAgICBlLmlkICE9PSBHcm91cEFjdGlvbj8uRVhQQU5EX0dST1VQX1ZJRVcgJiZcclxuICAgICAgZS5pZCAhPT0gR3JvdXBBY3Rpb24/LkNPTExBUFNFX0dST1VQX1ZJRVdcclxuICApO1xyXG4gIHByaXZhdGUgcGFyZW50R3JvdXBzITogR3JvdXBJbmZvW107XHJcbiAgQElucHV0KClcclxuICBzZXQgcGFyZW50R3JvdXBzSW5mbyh2YWx1ZTogR3JvdXBJbmZvW10pIHtcclxuICAgIHRoaXMucGFyZW50R3JvdXBzID0gdmFsdWU7XHJcbiAgICBpZiAodmFsdWUpIHRoaXMuc2V0R3JvdXBEYXRhU291cmNlKCk7XHJcbiAgfVxyXG4gIGdldCBwYXJlbnRHcm91cHNJbmZvKCk6IEdyb3VwSW5mb1tdIHtcclxuICAgIHJldHVybiB0aGlzLnBhcmVudEdyb3VwcztcclxuICB9XHJcbiAgcHJpdmF0ZSBjaGlsZEdyb3VwcyE6IEdyb3VwSW5mb1tdO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGNoaWxkR3JvdXBzSW5mbyh2YWx1ZTogR3JvdXBJbmZvW10pIHtcclxuICAgIHRoaXMuY2hpbGRHcm91cHMgPSB2YWx1ZTtcclxuICAgIHRoaXMubG9hZENoaWxkR3JvdXBzKCk7XHJcbiAgfVxyXG4gIGdldCBjaGlsZEdyb3Vwc0luZm8oKTogR3JvdXBJbmZvW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hpbGRHcm91cHM7XHJcbiAgfVxyXG4gIHByaXZhdGUgaXNHcm91cFNlYXJjaE9yRmlsdGVyID0gZmFsc2U7XHJcbiAgQElucHV0KClcclxuICBzZXQgaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmlzR3JvdXBTZWFyY2hPckZpbHRlciA9IHZhbHVlO1xyXG4gIH1cclxuICBnZXQgaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaXNHcm91cFNlYXJjaE9yRmlsdGVyO1xyXG4gIH1cclxuICBwcml2YXRlIGRlbGV0ZWRHcm91cElkITogc3RyaW5nIHwgdW5kZWZpbmVkO1xyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGRlbGV0ZWRHcm91cElkSW5mbyhpZDogc3RyaW5nIHwgdW5kZWZpbmVkKSB7XHJcbiAgICB0aGlzLmRlbGV0ZWRHcm91cElkID0gaWQ7XHJcbiAgICB0aGlzLmRlbGV0ZUdyb3VwTm9kZSh0aGlzLmRlbGV0ZWRHcm91cElkKTtcclxuICB9XHJcbiAgZ2V0IGRlbGV0ZWRHcm91cElkSW5mbygpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuZGVsZXRlZEdyb3VwSWQ7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KCkgdG9nZ2xlR3JvdXBDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R3JvdXBJbmZvPigpO1xyXG4gIEBPdXRwdXQoKSBjcmVhdGVHcm91cENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHcm91cEluZm8+KCk7XHJcbiAgQE91dHB1dCgpIGVkaXRHcm91cENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxFZGl0R3JvdXBBbmRQYXJlbnRJbmZvPigpO1xyXG4gIEBPdXRwdXQoKSBkZWxldGVHcm91cENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHcm91cEluZm8+KCk7XHJcbiAgQE91dHB1dCgpIHZpZXdSb3N0ZXJDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8R3JvdXBJbmZvPigpO1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFycywgbm8tZW1wdHktZnVuY3Rpb25cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGRhdGFiYXNlOiBHcm91cHMsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZ3JvdXBzU2VydmljZTogR3JvdXBzU2VydmljZVxyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdHJlZSB2aWV3IGNvbXBvbmVudFxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRHcm91cERhdGFTb3VyY2UoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQXNzaWduIEFSSUEgcm9sZSBmb3IgYWxsIG1hdCB0cmVlIG5vZGVzIGFzIFwicm93XCJcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2U/LmRhdGFDaGFuZ2VcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdHJlZUl0ZW1Ob2RlcyA9XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPXRyZWVpdGVtXScpO1xyXG4gICAgICAgIHRyZWVJdGVtTm9kZXM/LmZvckVhY2goKG5vZGU6IEhUTUxFbGVtZW50KSA9PiAobm9kZS5yb2xlID0gJ3JvdycpKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGxldmVsIG9mIHRoZSBub2RlXHJcbiAgICogQHBhcmFtIHtHcm91cE5vZGV9IG5vZGVcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRMZXZlbCA9IChub2RlOiBHcm91cE5vZGUpID0+IG5vZGU/LmxldmVsO1xyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgdGhlIG5vZGUgaXMgZXhwYW5kYWJsZSBvciBub3RcclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gbm9kZVxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzRXhwYW5kYWJsZSA9IChub2RlOiBHcm91cE5vZGUpID0+IG5vZGU/LmV4cGFuZGFibGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBwYXNzZWQgbm9kZSBoYXMgY2hpbGRyZW4gb3RoZXJ3aXNlIGZhbHNlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtHcm91cE5vZGV9IG5vZGVcclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhc0NoaWxkR3JvdXBzID0gKGluZGV4OiBudW1iZXIsIF9ub2RlRGF0YTogR3JvdXBOb2RlKSA9PlxyXG4gICAgX25vZGVEYXRhLmV4cGFuZGFibGU7XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIGdyb3VwIGluZm8gd2hlbiB0aGUgdG9nZ2xlIGdyb3VwIGlzIGNsaWNrZWQgb3IgdG9nZ2xlcyB0aGUgZ3JvdXAgdmlld1xyXG4gICAqIEBwYXJhbSB7R3JvdXBOb2RlfSBncm91cFxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdDaGlsZEdyb3Vwcyhub2RlOiBHcm91cE5vZGUpIHtcclxuICAgIGlmICghbm9kZT8uaXRlbT8uaGFzQ2hpbGRyZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZUNvbnRyb2w/LmlzRXhwYW5kZWQobm9kZSkpIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbD8udG9nZ2xlKG5vZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50b2dnbGVHcm91cENsaWNrLmVtaXQobm9kZT8uaXRlbSk7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IG5vZGU7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGJveCBzaGFkb3cgYmFzZWQgb24gdGhlIGdyb3VwIHR5cGUgbGVnZW5kIGNvbG9yXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNvbG9yXHJcbiAgICogQHJldHVybiB7Kn1cclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gIGdldEJveFNoYWRvdyhjb2xvcjogc3RyaW5nKTogYW55IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIGJveFNoYWRvdzpcclxuICAgICAgICAnMHB4IDFweCAwcHggMHB4ICNjOWNiZDAgaW5zZXQsIDZweCAwcHggMHB4IDBweCAnICsgY29sb3IgKyAnIGluc2V0JyxcclxuICAgIH07XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGFTb3VyY2Ugd2l0aCBwYXJlbnQgZ3JvdXBzIGRhdGFcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBzZXRHcm91cERhdGFTb3VyY2UoKTogdm9pZCB7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSAmJlxyXG4gICAgICAhdGhpcy5pc0VkaXRHcm91cCAmJlxyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0R3JvdXBGdW5jdGlvblR5cGUoKSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQ1JFQVRFXHJcbiAgICApIHtcclxuICAgICAgdGhpcy5wYXJlbnRHcm91cHNJbmZvPy5mb3JFYWNoKChwYXJlbnRHcm91cE5vZGUpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2U/LmRhdGE/LmZpbmRJbmRleChcclxuICAgICAgICAgICAgKG5vZGUpID0+IG5vZGU/Lml0ZW0/Lmdyb3VwSWQgPT09IHBhcmVudEdyb3VwTm9kZT8uZ3JvdXBJZFxyXG4gICAgICAgICAgKSA9PT0gLTFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbnN0IG5ld0dyb3VwTm9kZSA9IG5ldyBHcm91cE5vZGUoXHJcbiAgICAgICAgICAgIHBhcmVudEdyb3VwTm9kZSxcclxuICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgdGhpcy5kYXRhYmFzZS5pc0V4cGFuZGFibGUocGFyZW50R3JvdXBOb2RlKVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIGNvbnN0IGdyb3VwTm9kZXNSZWZlcmVuY2UgPSB0aGlzLmRhdGFTb3VyY2U/LmRhdGE7XHJcbiAgICAgICAgICBncm91cE5vZGVzUmVmZXJlbmNlPy5wdXNoKG5ld0dyb3VwTm9kZSk7XHJcbiAgICAgICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGdyb3VwTm9kZXNSZWZlcmVuY2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5pc0VkaXRHcm91cCkge1xyXG4gICAgICB0aGlzLmVkaXRHcm91cCh0aGlzLnBhcmVudEdyb3Vwc0luZm8pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbCA9IG5ldyBGbGF0VHJlZUNvbnRyb2w8R3JvdXBOb2RlPihcclxuICAgICAgICB0aGlzLmdldExldmVsLFxyXG4gICAgICAgIHRoaXMuaXNFeHBhbmRhYmxlXHJcbiAgICAgICk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IG5ldyBHcm91cHNEYXRhU291cmNlKHRoaXMudHJlZUNvbnRyb2wsIHRoaXMuZGF0YWJhc2UpO1xyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IHRoaXMuZGF0YWJhc2U/LmluaXRpYWxEYXRhKHRoaXMucGFyZW50R3JvdXBzSW5mbyk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIHVwZGF0ZWQgbm9kZSBpbmZvcm1hdGlvblxyXG4gICAqIEBwYXJhbSB7R3JvdXBJbmZvW119IGdyb3Vwc0luZm9cclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBlZGl0R3JvdXAoZ3JvdXBzSW5mbzogR3JvdXBJbmZvW10pIHtcclxuICAgIGNvbnN0IGdyb3VwTm9kZVJlZmVyZW5jZSA9IHRoaXMuZGF0YVNvdXJjZT8uZGF0YTtcclxuICAgIGNvbnN0IGVkaXRlZE5vZGUgPSBncm91cHNJbmZvPy5maW5kKFxyXG4gICAgICAobm9kZSkgPT5cclxuICAgICAgICBub2RlPy5ncm91cElkID09PSB0aGlzLmVkaXRHcm91cEFuZFBhcmVudEdyb3VwSW5mbz8uZ3JvdXBJbmZvPy5ncm91cElkXHJcbiAgICApO1xyXG4gICAgZ3JvdXBOb2RlUmVmZXJlbmNlPy5mb3JFYWNoKChub2RlKSA9PiB7XHJcbiAgICAgIGlmIChcclxuICAgICAgICBub2RlPy5pdGVtPy5ncm91cElkID09PVxyXG4gICAgICAgIHRoaXMuZWRpdEdyb3VwQW5kUGFyZW50R3JvdXBJbmZvPy5ncm91cEluZm8/Lmdyb3VwSWRcclxuICAgICAgKSB7XHJcbiAgICAgICAgbm9kZS5pdGVtID0gZWRpdGVkTm9kZSBhcyBHcm91cEluZm87XHJcbiAgICAgICAgbm9kZS5leHBhbmRhYmxlID0gdGhpcy5kYXRhYmFzZS5pc0V4cGFuZGFibGUobm9kZT8uaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBncm91cE5vZGVSZWZlcmVuY2U7XHJcbiAgICB0aGlzLmlzRWRpdEdyb3VwID0gZmFsc2U7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIExvYWRzIHRoZSBjaGlsZCBncm91cHMgYW5kIHVwZGF0ZXMgdGhlIHRyZWUgdmlldy5cclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBsb2FkQ2hpbGRHcm91cHMoKSB7XHJcbiAgICB0aGlzLmRhdGFiYXNlPy5zZXRDaGlsZEdyb3Vwc0luZm8odGhpcy5jaGlsZEdyb3Vwc0luZm8pO1xyXG4gICAgY29uc3QgZ3JvdXBOb2Rlc1JlZmVyZW5jZSA9IHRoaXMuZGF0YVNvdXJjZT8uZGF0YTtcclxuICAgIGlmICh0aGlzLmlzRWRpdEdyb3VwKSB7XHJcbiAgICAgIHRoaXMuZWRpdEdyb3VwKHRoaXMuY2hpbGRHcm91cHNJbmZvKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlbGVjdGVkR3JvdXAgJiYgIXRoaXMuaXNFZGl0R3JvdXApIHtcclxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkR3JvdXA/Lml0ZW0/Lmhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwLml0ZW0uaGFzQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwUGFyZW50Tm9kZSA9IG5ldyBHcm91cE5vZGUoXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXAuaXRlbSxcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cC5sZXZlbCxcclxuICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGdyb3VwTm9kZXNSZWZlcmVuY2Uuc3BsaWNlKFxyXG4gICAgICAgICAgZ3JvdXBOb2Rlc1JlZmVyZW5jZS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRHcm91cCksXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgZ3JvdXBQYXJlbnROb2RlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChncm91cFBhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQodGhpcy5zZWxlY3RlZEdyb3VwKSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5kYXRhYmFzZS5nZXRDaGlsZEdyb3Vwc0luZm8oKTtcclxuICAgICAgICBjaGlsZHJlbj8uZm9yRWFjaCgoZ3JvdXBOb2RlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZT8uZGF0YT8uZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgIChub2RlKSA9PiBub2RlPy5pdGVtPy5ncm91cElkID09PSBncm91cE5vZGU/Lmdyb3VwSWRcclxuICAgICAgICAgICAgKSA9PT0gLTFcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdHcm91cE5vZGUgPSBuZXcgR3JvdXBOb2RlKFxyXG4gICAgICAgICAgICAgIGdyb3VwTm9kZSxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXA/LmxldmVsICsgMSxcclxuICAgICAgICAgICAgICB0aGlzLmRhdGFiYXNlPy5pc0V4cGFuZGFibGUoZ3JvdXBOb2RlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBncm91cE5vZGVzUmVmZXJlbmNlID0gdGhpcy5kYXRhU291cmNlPy5kYXRhO1xyXG4gICAgICAgICAgICBncm91cE5vZGVzUmVmZXJlbmNlLnNwbGljZShcclxuICAgICAgICAgICAgICBncm91cE5vZGVzUmVmZXJlbmNlLmluZGV4T2YodGhpcy5zZWxlY3RlZEdyb3VwKSArIDEsXHJcbiAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICBuZXdHcm91cE5vZGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBncm91cE5vZGVzUmVmZXJlbmNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgdGhpcy50cmVlQ29udHJvbD8udG9nZ2xlKHRoaXMuc2VsZWN0ZWRHcm91cCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgdGhlIHNlbGVjdGVkIGdyb3VwIGFuZCB1cGRhdGVzIHRoZSB0cmVlIHZpZXcuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlbGV0ZWRHcm91cElkXHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlR3JvdXBOb2RlKGRlbGV0ZWRHcm91cElkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRyZWVDb250cm9sICYmIGRlbGV0ZWRHcm91cElkKSB7XHJcbiAgICAgIGNvbnN0IGdyb3VwRGF0YVNvdXJjZTogR3JvdXBOb2RlW10gPSB0aGlzLnRyZWVDb250cm9sPy5kYXRhTm9kZXM/LmZpbHRlcihcclxuICAgICAgICAoZSkgPT4gZT8uaXRlbT8uZ3JvdXBJZCAhPT0gZGVsZXRlZEdyb3VwSWRcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBncm91cERhdGFTb3VyY2U7XHJcbiAgICAgIHRoaXMuZGVsZXRlZEdyb3VwSWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBtZW51IGdyb3VwIGFjdGlvblxyXG4gICAqIEBwYXJhbSB7TWVudX0gbWVudVxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBBY3Rpb25zQ2xpY2sobWVudTogTWVudSB8IEljb25CdXR0b24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbiA9IG1lbnU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIGV4cGFuZC9jb2xsYXBzZSBpY29uIGJhc2VkIG9uIHRoZSB0b2dnbGVcclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gZ3JvdXBcclxuICAgKiBAcmV0dXJuIHsqfSAgeyp9XHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0VG9nZ2xlQnV0dG9uSW5mbyhncm91cDogR3JvdXBOb2RlKTogSWNvbkJ1dHRvbiB7XHJcbiAgICBpZiAodGhpcy50cmVlQ29udHJvbD8uaXNFeHBhbmRlZChncm91cCkpIHJldHVybiB0aGlzLm1pbnVzQ2lyY2xlSWNvbkJ1dHRvbjtcclxuICAgIHJldHVybiB0aGlzLnBsdXNDaXJjbGVJY29uQnV0dG9uO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBlbWl0dGVkIGdyb3VwIGFjdGlvbnMgZXZlbnRcclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gZ3JvdXBcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVHcm91cEFjdGlvbnMoZ3JvdXA6IEdyb3VwTm9kZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbj8uaWQgPT09IEdyb3VwQWN0aW9uLlZJRVdfUk9TVEVSKSB7XHJcbiAgICAgIHRoaXMudmlld1Jvc3RlckNsaWNrLmVtaXQoZ3JvdXA/Lml0ZW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBBY3Rpb24/LmlkID09PSBHcm91cEFjdGlvbi5DUkVBVEVfU1VCX0dST1VQKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IGdyb3VwO1xyXG4gICAgICB0aGlzLmNyZWF0ZUdyb3VwQ2xpY2suZW1pdChncm91cD8uaXRlbSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbj8uaWQgPT09IEdyb3VwQWN0aW9uLkVESVRfR1JPVVApIHtcclxuICAgICAgY29uc3QgZWRpdEdyb3VwUGFyZW50SW5mbyA9IHRoaXMuZGF0YVNvdXJjZT8uZGF0YT8uZmlsdGVyKFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uaXRlbT8uZ3JvdXBJZCA9PT0gZ3JvdXA/Lml0ZW0/Lmdyb3VwUGFyZW50SWRcclxuICAgICAgKVswXT8uaXRlbTtcclxuICAgICAgdGhpcy5lZGl0R3JvdXBBbmRQYXJlbnRHcm91cEluZm8gPSB7XHJcbiAgICAgICAgZ3JvdXBJbmZvOiBncm91cD8uaXRlbSxcclxuICAgICAgICBwYXJlbnRHcm91cEluZm86IGVkaXRHcm91cFBhcmVudEluZm8sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuaXNFZGl0R3JvdXAgPSB0cnVlO1xyXG4gICAgICB0aGlzLmVkaXRHcm91cENsaWNrLmVtaXQodGhpcy5lZGl0R3JvdXBBbmRQYXJlbnRHcm91cEluZm8pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBBY3Rpb24/LmlkID09PSBHcm91cEFjdGlvbi5ERUxFVEVfR1JPVVApIHtcclxuICAgICAgdGhpcy5kZWxldGVHcm91cENsaWNrLmVtaXQoZ3JvdXA/Lml0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBSZXR1cm5zIHRoZSBmaWx0ZXJlZCBtZW51IGl0ZW1zIGJhc2VkIG9uIGdyb3VwcyBoYXNDaGlsZHJlbi5cclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gZ3JvdXBcclxuICAgKiBAcmV0dXJuIHtNZW51W119XHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0RmlsdGVyZWRHcm91cEFjdGlvbnMoZ3JvdXA6IEdyb3VwTm9kZSk6IE1lbnVbXSB7XHJcbiAgICBjb25zdCBmaWx0ZXJlZE1lbnU6IE1lbnVbXSA9IFtdO1xyXG4gICAgdGhpcy5tZW51SXRlbXM/LmZvckVhY2goKGUpID0+IHtcclxuICAgICAgZS5pc1Rvb2xUaXBOZWVkZWQgPSBmYWxzZTtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIGU/LmlkID09PSBHcm91cEFjdGlvbi5WSUVXX1JPU1RFUiB8fFxyXG4gICAgICAgIGU/LmlkID09PSBHcm91cEFjdGlvbi5FRElUX0dST1VQIHx8XHJcbiAgICAgICAgKGU/LmlkID09PSBHcm91cEFjdGlvbi5ERUxFVEVfR1JPVVAgJiYgIWdyb3VwPy5pdGVtPy5oYXNDaGlsZHJlbikgfHxcclxuICAgICAgICAoZT8uaWQgPT09IEdyb3VwQWN0aW9uLkNSRUFURV9TVUJfR1JPVVAgJiZcclxuICAgICAgICAgIGdyb3VwPy5pdGVtPy5ncm91cFR5cGVJbmZvPy5idXNpbmVzc1J1bGU/LmFsbG93U3ViR3JvdXApXHJcbiAgICAgICkge1xyXG4gICAgICAgIGZpbHRlcmVkTWVudS5wdXNoKGUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBmaWx0ZXJlZE1lbnU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFRha2VzIHRoZSBpbmRleCBhbmQgdGhlIGljb24gYnV0dG9uIGFzIGFyZ3VtZW50cyBhbmQgbmVlZHMgdG8gcmV0dXJuIHRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBpY29uIGJ1dHRvbi5cclxuICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXhcclxuICAgKiBAcGFyYW0ge0ljb25CdXR0b259IGljb25CdXR0b25cclxuICAgKiBAcmV0dXJuIHtudW1iZXJ9XHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGljb25CdXR0b246IEljb25CdXR0b24pOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIGljb25CdXR0b24uaWQ7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIE5nT25EZXN0cm95IHBlcmZvcm1zIG5lY2Vzc2FyeSBjbGVhbnVwIHRhc2tzLCBzdWNoIGFzIHVuc3Vic2NyaWJpbmcgZnJvbSBzdWJzY3JpcHRpb24gd2hlbiB0aGUgY29tcG9uZW50IGlzIGJlaW5nIGRlc3Ryb3llZC5cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzQ29tcG9uZW50XHJcbiAgICovXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJpZWVlc2EtdHJlZVwiPlxyXG4gIDxtYXQtdHJlZVxyXG4gICAgW2RhdGFTb3VyY2VdPVwiZGF0YVNvdXJjZVwiXHJcbiAgICBbdHJlZUNvbnRyb2xdPVwidHJlZUNvbnRyb2xcIlxyXG4gICAgY2xhc3M9XCJpZWVlc2EtdHJlZV9fcm9vdFwiXHJcbiAgICAjcm9vdFNlbGVjdG9yXHJcbiAgICByb2xlPVwidHJlZWdyaWRcIlxyXG4gID5cclxuICAgIDxtYXQtdHJlZS1ub2RlXHJcbiAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlXCJcclxuICAgICAgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgIFttYXRUcmVlTm9kZVBhZGRpbmdJbmRlbnRdPVwidHJlZVBhZGRpbmdJbmRlbnRcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE2XCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLXRyZWVfX25vZGUgdy0xMDAgZC1mbGV4IGdhcC1sZy0zIG15LTAgZ2FwLTAgZ2FwLXNtLTAgZ2FwLW1kLTJcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldEJveFNoYWRvdyhub2RlPy5pdGVtPy5ncm91cFR5cGVJbmZvPy5sZWdlbmRDb2xvcilcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgW25nQ2xhc3NdPVwiXHJcbiAgICAgICAgICAgICFpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUgPyAnaWVlZXNhLXRyZWVfX2NvbGxhcHNlLWljb24nIDogJydcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxyXG4gICAgICAgID48L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICBpZWVlc2FHcm91cE5vZGVPdXRsZXQ7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgIDxtYXQtdHJlZS1ub2RlXHJcbiAgICAgICptYXRUcmVlTm9kZURlZj1cImxldCBub2RlOyB3aGVuOiBoYXNDaGlsZEdyb3Vwc1wiXHJcbiAgICAgIG1hdFRyZWVOb2RlUGFkZGluZ1xyXG4gICAgICBbbWF0VHJlZU5vZGVQYWRkaW5nSW5kZW50XT1cInRyZWVQYWRkaW5nSW5kZW50XCJcclxuICAgICAgY2xhc3M9XCJpZWVlc2EtYm9keS1tZC0xNiBpZWVlc2EtdHJlZV9fcGFyZW50LW5vZGUtd3JhcHBlclwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgIHRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSlcclxuICAgICAgICAgICAgPyAnaWVlZXNhLXRyZWVfX3Jvb3Qtbm9kZS13aGl0ZS1iZydcclxuICAgICAgICAgICAgOiAnaWVlZXNhLXRyZWVfX3Jvb3Qtbm9kZSdcclxuICAgICAgICBcIlxyXG4gICAgICAgIGNsYXNzPVwiaWVlZXNhLXRyZWVfX25vZGUgdy0xMDAgZC1mbGV4IGdhcC1sZy0zIG15LTAgZ2FwLTAgZ2FwLXNtLTAgZ2FwLW1kLTJcIlxyXG4gICAgICAgIFtuZ1N0eWxlXT1cImdldEJveFNoYWRvdyhub2RlPy5pdGVtPy5ncm91cFR5cGVJbmZvPy5sZWdlbmRDb2xvcilcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGRpdiByb2xlPVwiZ3JpZGNlbGxcIj5cclxuICAgICAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCIhaXNHcm91cFNlYXJjaE9yRmlsdGVyQWN0aXZlXCJcclxuICAgICAgICAgICAgKGljb25CdXR0b25DbGljayk9XCJ2aWV3Q2hpbGRHcm91cHMobm9kZSlcIlxyXG4gICAgICAgICAgICBbaWNvbkJ1dHRvbl09XCJnZXRUb2dnbGVCdXR0b25JbmZvKG5vZGUpXCJcclxuICAgICAgICAgID48L2llZWVzYS1pY29uLWJ1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICBpZWVlc2FHcm91cE5vZGVPdXRsZXQ7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LXRyZWUtbm9kZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaWVlZXNhR3JvdXBOb2RlT3V0bGV0IGxldC1ub2RlPlxyXG4gICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpZWVlc2FHcm91cEluZm9PdXRsZXQ7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cIlxyXG4gICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzcz1cImQtZmxleCBkLW5vbmUgZ2FwLTMgZC1zbS1mbGV4IGQtbWQtZmxleCBkLWxnLWZsZXggaWVlZXNhLXRyZWVfX2dyb3VwLWFjdGlvbnNcIlxyXG4gICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICAgID5cclxuICAgICAgICA8bmctY29udGFpbmVyXHJcbiAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxyXG4gICAgICAgICAgICBpZWVlc2FHcm91cEFjdGlvbnNPdXRsZXQ7XHJcbiAgICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiBub2RlIH1cclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGllZWVzYS1tZW51XHJcbiAgICAgICAgW21lbnVJdGVtc109XCJnZXRGaWx0ZXJlZEdyb3VwQWN0aW9ucyhub2RlKVwiXHJcbiAgICAgICAgKG1lbnVJdGVtQ2xpY2spPVwib25Hcm91cEFjdGlvbnNDbGljaygkZXZlbnQpOyBoYW5kbGVHcm91cEFjdGlvbnMobm9kZSlcIlxyXG4gICAgICAgIGNsYXNzPVwiZC1sZy1ub25lIGQtbWQtbm9uZSBkLXNtLW5vbmVcIlxyXG4gICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICAgID48L2llZWVzYS1tZW51PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjaWVlZXNhR3JvdXBJbmZvT3V0bGV0IGxldC1ub2RlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLXRyZWVfX2dyb3VwLWluZm8td3JhcHBlclwiPlxyXG4gICAgICAgIDxkaXZcclxuICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXRyZWVfX2dyb3VwLWluZm8gZC1mbGV4IGZsZXgtY29sdW1uIGZsZXgtc20tY29sdW1uIGZsZXgtbWQtY29sdW1uIGZsZXgtbGctcm93IGFsaWduLWl0ZW1zLXN0YXJ0IGFsaWduLWl0ZW1zLXNtLWJhc2VsaW5lIGFsaWduLWl0ZW1zLW1kLWJhc2VsaW5lIGFsaWduLWl0ZW1zLWxnLWJhc2VsaW5lIGdhcC0yIG1iLTFcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwXHJcbiAgICAgICAgICAgIGNsYXNzPVwiaWVlZXNhLXRyZWVfX25vZGUtZ3JvdXAtbmFtZSBpZWVlc2EtaGVhZGxpbmUtc20tMjZcIlxyXG4gICAgICAgICAgICBbbWF0VG9vbHRpcF09XCJub2RlPy5pdGVtPy5ncm91cE5hbWVcIlxyXG4gICAgICAgICAgICBpZWVlc2FUZXh0VHJ1bmNhdGVkXHJcbiAgICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHt7IG5vZGU/Lml0ZW0/Lmdyb3VwTmFtZSB9fVxyXG4gICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtdHJlZV9fbm9kZS1ncm91cC1hY3JvbnltIGllZWVzYS10aXRsZS1sZy0yNFwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIm5vZGU/Lml0ZW0/Lmdyb3VwQWNyb255bVwiXHJcbiAgICAgICAgICAgIGllZWVzYVRleHRUcnVuY2F0ZWRcclxuICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgbm9kZT8uaXRlbT8uZ3JvdXBBY3JvbnltIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE2IGllZWVzYS10cmVlX19ub2RlLWdyb3VwLWRlc2NcIj5cclxuICAgICAgICAgIHt7IG5vZGU/Lml0ZW0/Lmdyb3VwVHlwZUluZm8/Lm5hbWUgfX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNpZWVlc2FHcm91cEFjdGlvbnNPdXRsZXQgbGV0LW5vZGU+XHJcbiAgICAgIDxpZWVlc2EtaWNvbi1idXR0b25cclxuICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRGaWx0ZXJlZEdyb3VwQWN0aW9ucyhub2RlKTsgdHJhY2tCeTogdHJhY2tCeUZuXCJcclxuICAgICAgICBbaWNvbkJ1dHRvbl09XCJpdGVtXCJcclxuICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cIlxyXG4gICAgICAgICAgb25Hcm91cEFjdGlvbnNDbGljaygkZXZlbnQpOyBoYW5kbGVHcm91cEFjdGlvbnMobm9kZSlcclxuICAgICAgICBcIlxyXG4gICAgICA+XHJcbiAgICAgIDwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L21hdC10cmVlPlxyXG48L2Rpdj5cclxuIl19
|
|
565
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJlZS12aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2dyb3Vwcy9zcmMvbGliL2NvbXBvbmVudHMvdHJlZS12aWV3L3RyZWUtdmlldy5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncm91cHMvc3JjL2xpYi9jb21wb25lbnRzL3RyZWUtdmlldy90cmVlLXZpZXcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxZQUFZLEVBQ1osVUFBVSxFQUNWLEtBQUssRUFFTCxNQUFNLEVBR04saUJBQWlCLEdBQ2xCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFDTCxhQUFhLEVBRWIsbUJBQW1CLEVBRW5CLHNCQUFzQixHQUN2QixNQUFNLDBCQUEwQixDQUFDO0FBQ2xDLE9BQU8sS0FBSyxTQUFTLE1BQU0sNkJBQTZCLENBQUM7QUFDekQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQU0vQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxLQUFLLEVBQWMsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ25FLE9BQU8sRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsYUFBYSxFQUFzQixNQUFNLHdCQUF3QixDQUFDO0FBRzNFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTdELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHdDQUF3QyxDQUFDOzs7Ozs7QUFDM0U7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBQ3BCO0lBQ0UsMENBQTBDO0lBQ25DLElBQWU7SUFDdEIsMENBQTBDO0lBQ25DLFFBQVEsQ0FBQztJQUNoQiwwQ0FBMEM7SUFDbkMsYUFBYSxLQUFLO0lBQ3pCLDBDQUEwQztJQUNuQyxZQUFZLEtBQUssQ0FBQyw2Q0FBNkM7O1FBTi9ELFNBQUksR0FBSixJQUFJLENBQVc7UUFFZixVQUFLLEdBQUwsS0FBSyxDQUFJO1FBRVQsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQUVsQixjQUFTLEdBQVQsU0FBUyxDQUFRO0lBQ3ZCLENBQUM7Q0FDTDtBQUVEOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sTUFBTTtJQUlqQjs7OztPQUlHO0lBQ0gsa0JBQWtCO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQWtCO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxJQUFpQjtRQUMzQixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztRQUMzQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUM1QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQzFELENBQUM7SUFDSixDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCxZQUFZLENBQUMsSUFBZTtRQUMxQixPQUFPLENBQ0wsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLFFBQVEsSUFBSSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsV0FBVyxDQUN0RSxDQUFDO0lBQ0osQ0FBQzs4R0ExQ1UsTUFBTTtrSEFBTixNQUFNLGNBRE8sTUFBTTs7MkZBQ25CLE1BQU07a0JBRGxCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOztBQTZDbEM7Ozs7O0dBS0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBRzNCOzs7O09BSUc7SUFDSCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDO0lBQ2hDLENBQUM7SUFDRDs7O09BR0c7SUFDSCxJQUFJLElBQUksQ0FBQyxLQUFrQjtRQUN6QixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDbkMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVEO0lBQ0UsMENBQTBDO0lBQ2xDLFdBQXVDO0lBQy9DLDBDQUEwQztJQUNsQyxRQUFnQixDQUFDLDZDQUE2Qzs7UUFGOUQsZ0JBQVcsR0FBWCxXQUFXLENBQTRCO1FBRXZDLGFBQVEsR0FBUixRQUFRLENBQVE7UUF2QjFCLGFBQVEsR0FBcUIsSUFBSSxPQUFPLEVBQVcsQ0FBQztRQUNwRCxlQUFVLEdBQUcsSUFBSSxlQUFlLENBQWMsRUFBRSxDQUFDLENBQUM7SUF1Qi9DLENBQUM7SUFFSjs7Ozs7T0FLRztJQUNILE9BQU8sQ0FBQyxnQkFBa0M7UUFDeEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsT0FBTzthQUN0QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUM5QixTQUFTLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtZQUNwQixJQUNHLE1BQXFDLENBQUMsS0FBSztnQkFDM0MsTUFBcUMsQ0FBQyxPQUFPLEVBQzlDO2dCQUNBLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFvQyxDQUFDLENBQUM7YUFDOUQ7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFDLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsSUFBSSxDQUM5RCxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUNyQixDQUFDO0lBQ0osQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxzSUFBc0k7SUFDdEksVUFBVSxDQUFDLGdCQUFrQztRQUMzQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6QixJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsaUJBQWlCLENBQUMsTUFBa0M7UUFDbEQsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFO1lBQ2pCLE1BQU0sQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1NBQzlEO1FBQ0QsSUFBSSxNQUFNLEVBQUUsT0FBTyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxPQUFPO2lCQUNYLEtBQUssRUFBRTtpQkFDUCxPQUFPLEVBQUU7aUJBQ1QsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO1NBQ3BEO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFVBQVUsQ0FBQyxXQUFzQixFQUFFLE1BQWU7UUFDaEQsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1FBQ3JELE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxRQUFRLElBQUksS0FBSyxHQUFHLENBQUMsRUFBRTtZQUMxQixpREFBaUQ7WUFDakQsT0FBTztTQUNSO1FBRUQsSUFBSSxNQUFNLEVBQUU7WUFDVixXQUFXLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1lBQ2hELE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxHQUFHLENBQ3pCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxJQUFJLFNBQVMsQ0FDWCxJQUFJLEVBQ0osV0FBVyxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQ3RCLElBQUksQ0FBQyxRQUFRLEVBQUUsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUNsQyxDQUNKLENBQUM7WUFDRixJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQzNDO2FBQU07WUFDTCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7WUFDZCxLQUNFLElBQUksQ0FBQyxHQUFHLEtBQUssR0FBRyxDQUFDLEVBQ2pCLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssR0FBRyxXQUFXLEVBQUUsS0FBSyxFQUNqRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxvQ0FBb0M7Y0FDakQsR0FBRTtZQUNKLElBQUksQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDckM7UUFFRCxvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUNEOzs7OztHQUtHO0FBa0JILE1BQU0sT0FBTyxpQkFBaUI7SUFvQjVCLElBQ0ksZ0JBQWdCLENBQUMsS0FBa0I7UUFDckMsSUFBSSxDQUFDLFlBQVksR0FBRyxLQUFLLENBQUM7UUFDMUIsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQUksZ0JBQWdCO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFDSSxlQUFlLENBQUMsS0FBa0I7UUFDcEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFDRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUNJLDJCQUEyQixDQUFDLEtBQWM7UUFDNUMsSUFBSSxDQUFDLHFCQUFxQixHQUFHLEtBQUssQ0FBQztJQUNyQyxDQUFDO0lBQ0QsSUFBSSwyQkFBMkI7UUFDN0IsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQ0ksa0JBQWtCLENBQUMsRUFBc0I7UUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUNELElBQUksa0JBQWtCO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBT0QsNkRBQTZEO0lBQzdEO0lBQ0UsMENBQTBDO0lBQ25DLFFBQWdCO0lBQ3ZCLDBDQUEwQztJQUNuQyxVQUFzQjtJQUM3QiwwQ0FBMEM7SUFDbkMsYUFBNEIsQ0FBQyw2Q0FBNkM7O1FBSjFFLGFBQVEsR0FBUixRQUFRLENBQVE7UUFFaEIsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUV0QixrQkFBYSxHQUFiLGFBQWEsQ0FBZTtRQWxFckMsOERBQThEO1FBQzlELGNBQVMsR0FBUSxTQUFTLENBQUM7UUFDM0IsWUFBTyxHQUFXLElBQUksQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQztRQUN0RCxzQkFBaUIsR0FBVyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsQ0FBQztRQUsxRSxhQUFRLEdBQXFCLElBQUksT0FBTyxFQUFXLENBQUM7UUFFcEQseUJBQW9CLEdBQWUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRCwwQkFBcUIsR0FBZSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXBELGNBQVMsR0FBVyxJQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FDdEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNKLENBQUMsQ0FBQyxFQUFFLEtBQUssV0FBVyxFQUFFLGlCQUFpQjtZQUN2QyxDQUFDLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRSxtQkFBbUIsQ0FDNUMsQ0FBQztRQW1CTSwwQkFBcUIsR0FBRyxLQUFLLENBQUM7UUFrQjVCLHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDakQscUJBQWdCLEdBQUcsSUFBSSxZQUFZLEVBQWEsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUEwQixDQUFDO1FBQzVELHFCQUFnQixHQUFHLElBQUksWUFBWSxFQUFhLENBQUM7UUFDakQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBOEIxRDs7OztXQUlHO1FBQ0gsYUFBUSxHQUFHLENBQUMsSUFBZSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO1FBRTVDOzs7O1dBSUc7UUFDSCxpQkFBWSxHQUFHLENBQUMsSUFBZSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDO1FBRXJEOzs7Ozs7V0FNRztRQUNILG1CQUFjLEdBQUcsQ0FBQyxLQUFhLEVBQUUsU0FBb0IsRUFBRSxFQUFFLENBQ3ZELFNBQVMsQ0FBQyxVQUFVLENBQUM7SUEzQ3BCLENBQUM7SUFDSjs7O09BR0c7SUFDSCxRQUFRO1FBQ04sSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNEOzs7T0FHRztJQUNILGVBQWU7UUFDYixJQUFJLENBQUMsVUFBVSxFQUFFLFVBQVU7WUFDekIsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUMvQixTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2QsTUFBTSxhQUFhLEdBQ2pCLElBQUksQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDdEUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQWlCLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3JFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQXdCRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLElBQWU7UUFDN0IsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO1lBQzVCLE9BQU87U0FDUjtRQUNELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDdEMsSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEM7YUFBTTtZQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ0Q7Ozs7O09BS0c7SUFDSCw4REFBOEQ7SUFDOUQsWUFBWSxDQUFDLEtBQWE7UUFDeEIsT0FBTztZQUNMLFNBQVMsRUFDUCxpREFBaUQsR0FBRyxLQUFLLEdBQUcsUUFBUTtTQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUNEOzs7T0FHRztJQUNILGtCQUFrQjtRQUNoQixJQUNFLElBQUksQ0FBQyxVQUFVO1lBQ2YsSUFBSSxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsRUFBRSxLQUFLLGlCQUFpQixDQUFDLE1BQU0sRUFDdEU7WUFDQSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsT0FBTyxDQUFDLENBQUMsZUFBZSxFQUFFLEVBQUU7Z0JBQ2pELElBQ0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsU0FBUyxDQUM5QixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEtBQUssZUFBZSxFQUFFLE9BQU8sQ0FDM0QsS0FBSyxDQUFDLENBQUMsRUFDUjtvQkFDQSxNQUFNLFlBQVksR0FBRyxJQUFJLFNBQVMsQ0FDaEMsZUFBZSxFQUNmLENBQUMsRUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsQ0FDNUMsQ0FBQztvQkFDRixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO29CQUNsRCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3hDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLG1CQUFtQixDQUFDO2lCQUM1QztZQUNILENBQUMsQ0FBQyxDQUFDO1NBQ0o7YUFBTSxJQUNMLElBQUksQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxpQkFBaUIsQ0FBQyxJQUFJLEVBQ3BFO1lBQ0EsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztTQUN2QzthQUFNO1lBQ0wsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLGVBQWUsQ0FDcEMsSUFBSSxDQUFDLFFBQVEsRUFDYixJQUFJLENBQUMsWUFBWSxDQUNsQixDQUFDO1lBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1NBQzFFO0lBQ0gsQ0FBQztJQUNEOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsVUFBdUI7UUFDL0IsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQztRQUNqRCxNQUFNLFVBQVUsR0FBRyxVQUFVLEVBQUUsSUFBSSxDQUNqQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQ1AsSUFBSSxFQUFFLE9BQU8sS0FBSyxJQUFJLENBQUMsMkJBQTJCLEVBQUUsU0FBUyxFQUFFLE9BQU8sQ0FDekUsQ0FBQztRQUNGLGtCQUFrQixFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFO1lBQ25DLElBQ0UsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPO2dCQUNuQixJQUFJLENBQUMsMkJBQTJCLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFDcEQ7Z0JBQ0EsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztnQkFDckQsSUFBSSxDQUFDLElBQUksR0FBRyxVQUF1QixDQUFDO2dCQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxxQkFBcUIsQ0FBQztnQkFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7Z0JBQ3pELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUU7b0JBQzlELElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMvQjthQUNGO1FBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUM1QyxDQUFDO0lBQ0Q7OztPQUdHO0lBQ0gsZUFBZTtRQUNiLElBQUksQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3hELE1BQU0sbUJBQW1CLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUM7UUFDbEQsSUFDRSxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUN0RTtZQUNBLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBQzFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7Z0JBQzNDLE1BQU0sZUFBZSxHQUFHLElBQUksU0FBUyxDQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQ3hCLElBQUksQ0FDTCxDQUFDO2dCQUNGLG1CQUFtQixDQUFDLE1BQU0sQ0FDeEIsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFDL0MsQ0FBQyxFQUNELGVBQWUsQ0FDaEIsQ0FBQztnQkFDRixJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQzthQUMxQztZQUNELElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7Z0JBQ3BELFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsRUFBRTtvQkFDOUIsSUFDRSxJQUFJLENBQUMsVUFBVSxFQUFFLElBQUksRUFBRSxTQUFTLENBQzlCLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSyxTQUFTLEVBQUUsT0FBTyxDQUNyRCxLQUFLLENBQUMsQ0FBQyxFQUNSO3dCQUNBLE1BQU0sWUFBWSxHQUFHLElBQUksU0FBUyxDQUNoQyxTQUFTLEVBQ1QsSUFBSSxDQUFDLGFBQWEsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUM3QixJQUFJLENBQUMsUUFBUSxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FDdkMsQ0FBQzt3QkFDRixNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDO3dCQUNsRCxtQkFBbUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTs0QkFDbkMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0NBQ3pELElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7NkJBQzFDO3dCQUNILENBQUMsQ0FBQyxDQUFDO3dCQUNILG1CQUFtQixDQUFDLE1BQU0sQ0FDeEIsbUJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQ25ELENBQUMsRUFDRCxZQUFZLENBQ2IsQ0FBQzt3QkFDRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksR0FBRyxtQkFBbUIsQ0FBQztxQkFDNUM7Z0JBQ0gsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO2FBQU0sSUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLEtBQUssaUJBQWlCLENBQUMsSUFBSSxFQUNwRTtZQUNBLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQ3RDO2FBQU0sSUFDTCxJQUFJLENBQUMsYUFBYSxDQUFDLG9CQUFvQixFQUFFLEtBQUssaUJBQWlCLENBQUMsTUFBTSxFQUN0RTtZQUNBLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztTQUM5QztJQUNILENBQUM7SUFDRDs7OztPQUlHO0lBQ0gsZUFBZSxDQUFDLGNBQWtDO1FBQ2hELElBQUksSUFBSSxDQUFDLFdBQVcsSUFBSSxjQUFjLEVBQUU7WUFDdEMsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQ3RELENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxjQUFjLENBQy9DLENBQUM7WUFDRixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNoRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2pELElBQUksaUJBQWlCLEVBQUU7Z0JBQ3JCLElBQUksWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO29CQUM3QyxNQUFNLHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FDNUQsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYSxDQUNqRSxDQUFDO29CQUNGLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNoRCx1QkFBdUIsQ0FDeEIsQ0FBQztvQkFDRixJQUFJLGtCQUFrQixJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7d0JBQzlELGtCQUFrQixDQUFDLElBQUksQ0FBQyxZQUFZOzRCQUNsQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQzt3QkFDM0MsSUFBSSxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTs0QkFDOUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7NEJBQzVDLE1BQU0sT0FBTyxHQUFHLElBQUksU0FBUyxDQUMzQixrQkFBa0IsQ0FBQyxJQUFJLEVBQ3ZCLGtCQUFrQixDQUFDLEtBQUssRUFDeEIsS0FBSyxDQUNOLENBQUM7NEJBQ0YsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGlCQUFpQixHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7eUJBQy9EOzZCQUFNOzRCQUNMLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLENBQUMsQ0FBQzt5QkFDbEQ7cUJBQ0Y7aUJBQ0Y7cUJBQU07b0JBQ0wsbUJBQW1CLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUNsRDthQUNGO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsbUJBQW1CLENBQUM7WUFDM0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7U0FDakM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILG1CQUFtQixDQUFDLElBQXVCO1FBQ3pDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7SUFDbEMsQ0FBQztJQUNEOzs7OztPQUtHO0lBQ0gsbUJBQW1CLENBQUMsS0FBZ0I7UUFDbEMsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxLQUFLLENBQUM7WUFBRSxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztRQUMzRSxPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBQ0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQWdCO1FBQ2pDLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsV0FBVyxFQUFFO1lBQzVELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN4QzthQUFNLElBQUksSUFBSSxDQUFDLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7WUFDeEUsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDM0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDekM7YUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEtBQUssV0FBVyxDQUFDLFVBQVUsRUFBRTtZQUNsRSxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxFQUFFLE1BQU07WUFDdkQsOERBQThEO1lBQzlELENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sS0FBSyxLQUFLLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FDbEUsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUM7WUFDWCxJQUFJLENBQUMsMkJBQTJCLEdBQUc7Z0JBQ2pDLFNBQVMsRUFBRSxLQUFLLEVBQUUsSUFBSTtnQkFDdEIsZUFBZSxFQUFFLG1CQUFtQjthQUNyQyxDQUFDO1lBQ0YsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUM7U0FDNUQ7YUFBTSxJQUFJLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFLEtBQUssV0FBVyxDQUFDLFlBQVksRUFBRTtZQUNwRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQztTQUN6QztJQUNILENBQUM7SUFDRDs7Ozs7T0FLRztJQUNILHVCQUF1QixDQUFDLEtBQWdCO1FBQ3RDLE1BQU0sWUFBWSxHQUFXLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzVCLENBQUMsQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1lBQzFCLElBQ0UsQ0FBQyxFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsV0FBVztnQkFDakMsQ0FBQyxFQUFFLEVBQUUsS0FBSyxXQUFXLENBQUMsVUFBVTtnQkFDaEMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLFdBQVcsQ0FBQyxZQUFZLElBQUksQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQztnQkFDakUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxLQUFLLFdBQVcsQ0FBQyxnQkFBZ0I7b0JBQ3JDLEtBQUssRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsRUFDMUQ7Z0JBQ0EsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUN0QjtRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUNEOzs7Ozs7T0FNRztJQUNILFNBQVMsQ0FBQyxLQUFhLEVBQUUsVUFBc0I7UUFDN0MsT0FBTyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFDRDs7O09BR0c7SUFDSCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDOzhHQTNZVSxpQkFBaUI7a0dBQWpCLGlCQUFpQix3Y0MzUDlCLDA2SUE0SEEsK3FRRGtISSxZQUFZLHlsQkFDWixhQUFhLGdoQkFDYixhQUFhLDhCQUNiLGVBQWUsK0JBQ2YsYUFBYSwyR0FDYixtQkFBbUIsb0hBQ25CLGdCQUFnQiwrSEFDaEIsc0JBQXNCOzsyRkFNYixpQkFBaUI7a0JBakI3QixTQUFTOytCQUNFLGFBQWEsY0FDWCxJQUFJLFdBQ1A7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZUFBZTt3QkFDZixhQUFhO3dCQUNiLG1CQUFtQjt3QkFDbkIsZ0JBQWdCO3dCQUNoQixzQkFBc0I7cUJBQ3ZCLGlCQUdjLGlCQUFpQixDQUFDLElBQUk7K0lBdUJqQyxnQkFBZ0I7c0JBRG5CLEtBQUs7Z0JBVUYsZUFBZTtzQkFEbEIsS0FBSztnQkFVRiwyQkFBMkI7c0JBRDlCLEtBQUs7Z0JBU0Ysa0JBQWtCO3NCQURyQixLQUFLO2dCQVNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZUFBZTtzQkFBeEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEluamVjdGFibGUsXHJcbiAgSW5wdXQsXHJcbiAgT25Jbml0LFxyXG4gIE91dHB1dCxcclxuICBBZnRlclZpZXdJbml0LFxyXG4gIE9uRGVzdHJveSxcclxuICBWaWV3RW5jYXBzdWxhdGlvbixcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBNZW51Q29tcG9uZW50LFxyXG4gIE1lbnUsXHJcbiAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICBJY29uQnV0dG9uLFxyXG4gIFRleHRUcnVuY2F0ZWREaXJlY3RpdmUsXHJcbn0gZnJvbSAnQGllZWVzYS1ucG0vcHJlc2VudGF0aW9uJztcclxuaW1wb3J0ICogYXMgY29uc3RhbnRzIGZyb20gJy4uLy4uL2Fzc2V0cy9jb25zdGFudHMuanNvbic7XHJcbmltcG9ydCB7IEdyb3VwQWN0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2dyb3VwLWFjdGlvbi5tb2RlbCc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7XHJcbiAgQ29sbGVjdGlvblZpZXdlcixcclxuICBTZWxlY3Rpb25DaGFuZ2UsXHJcbiAgRGF0YVNvdXJjZSxcclxufSBmcm9tICdAYW5ndWxhci9jZGsvY29sbGVjdGlvbnMnO1xyXG5pbXBvcnQgeyBGbGF0VHJlZUNvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9jZGsvdHJlZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgbWVyZ2UsIE9ic2VydmFibGUsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcclxuaW1wb3J0IHsgTWF0VHJlZU1vZHVsZSwgTWF0VHJlZU5vZGVQYWRkaW5nIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdHJlZSc7XHJcbmltcG9ydCB7IEdyb3VwSW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1pbmZvLm1vZGVsJztcclxuaW1wb3J0IHsgRWRpdEdyb3VwQW5kUGFyZW50SW5mbyB9IGZyb20gJy4uLy4uL21vZGVscy9lZGl0LWdyb3VwLm1vZGVsJztcclxuaW1wb3J0IHsgTWF0VG9vbHRpcE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3Rvb2x0aXAnO1xyXG5pbXBvcnQgeyBHcm91cHNTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZ3JvdXBzLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBHcm91cEZ1bmN0aW9uVHlwZSB9IGZyb20gJy4uLy4uL21vZGVscy9ncm91cC1mdW5jdGlvbi10eXBlLm1vZGVsJztcclxuLyoqXHJcbiAqIER5bmFtaWMgRmxhdCBub2RlIGNyZWF0ZXMgYSBub2RlIHN0cnVjdHVyZVxyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBHcm91cE5vZGVcclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcm91cE5vZGUge1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgaXRlbTogR3JvdXBJbmZvLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgbGV2ZWwgPSAxLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZXhwYW5kYWJsZSA9IGZhbHNlLFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgaXNMb2FkaW5nID0gZmFsc2UgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWVtcHR5LWZ1bmN0aW9uXHJcbiAgKSB7fVxyXG59XHJcblxyXG4vKipcclxuICogR3JvdXBzIHN0b3JlcyB0aGUgcGFyZW50IG5vZGVzIGFuZCBjaGlsZCBub2Rlc1xyXG4gKiBAZXhwb3J0XHJcbiAqIEBjbGFzcyBHcm91cHNcclxuICovXHJcbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXHJcbmV4cG9ydCBjbGFzcyBHcm91cHMge1xyXG4gIHJvb3RMZXZlbE5vZGVzITogR3JvdXBJbmZvW107XHJcbiAgLyoqIEluaXRpYWwgZGF0YSBmcm9tIGRhdGFiYXNlICovXHJcbiAgcHJpdmF0ZSBjaGlsZEdyb3VwcyE6IEdyb3VwSW5mb1tdO1xyXG4gIC8qKlxyXG4gICAqIEdldCB0aGUgQ2hpbGQgZ3JvdXBzIGluZm9cclxuICAgKiBAcmV0dXJuIHsqfSAge0dyb3VwSW5mb1tdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNcclxuICAgKi9cclxuICBnZXRDaGlsZEdyb3Vwc0luZm8oKTogR3JvdXBJbmZvW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuY2hpbGRHcm91cHM7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIENoaWxkIGdyb3VwcyBpbmZvXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gdmFsdWVcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzXHJcbiAgICovXHJcbiAgc2V0Q2hpbGRHcm91cHNJbmZvKHZhbHVlOiBHcm91cEluZm9bXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jaGlsZEdyb3VwcyA9IHZhbHVlO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplIHRoZSBncm91cHMgZGF0YSBhbmQgY3JlYXRlcyB0aGUgbm9kZSBzdHJ1Y3R1cmUgZm9yIG1hdCB0cmVlXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gZGF0YVxyXG4gICAqIEByZXR1cm4geyp9ICB7R3JvdXBOb2RlW119XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1xyXG4gICAqL1xyXG4gIGluaXRpYWxEYXRhKGRhdGE6IEdyb3VwSW5mb1tdKTogR3JvdXBOb2RlW10ge1xyXG4gICAgdGhpcy5yb290TGV2ZWxOb2RlcyA9IGRhdGE7XHJcbiAgICByZXR1cm4gdGhpcy5yb290TGV2ZWxOb2Rlcy5tYXAoXHJcbiAgICAgIChub2RlKSA9PiBuZXcgR3JvdXBOb2RlKG5vZGUsIDAsIHRoaXMuaXNFeHBhbmRhYmxlKG5vZGUpKVxyXG4gICAgKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIHRoZSBub2RlIGlzIGV4cGFuZGFibGUgb3Igbm90XHJcbiAgICogQHBhcmFtIHtHcm91cEluZm99IG5vZGVcclxuICAgKiBAcmV0dXJuIHsqfSAge2Jvb2xlYW59XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc1xyXG4gICAqL1xyXG4gIGlzRXhwYW5kYWJsZShub2RlOiBHcm91cEluZm8pOiBib29sZWFuIHtcclxuICAgIHJldHVybiAoXHJcbiAgICAgICghIW5vZGU/LmNoaWxkcmVuICYmIG5vZGU/LmNoaWxkcmVuPy5sZW5ndGggPiAwKSB8fCBub2RlPy5oYXNDaGlsZHJlblxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIER5bmFtaWMgRGF0YSBTb3VyY2UgaGFuZGxlcyB0aGUgY29ubmVjdGlvbiB3aXRoIGR5bmFtaWMgZGF0YSBiYXNlXHJcbiAqIEBleHBvcnRcclxuICogQGNsYXNzIEdyb3Vwc0RhdGFTb3VyY2VcclxuICogQGltcGxlbWVudHMge0RhdGFTb3VyY2U8R3JvdXBOb2RlPn1cclxuICovXHJcbmV4cG9ydCBjbGFzcyBHcm91cHNEYXRhU291cmNlIGltcGxlbWVudHMgRGF0YVNvdXJjZTxHcm91cE5vZGU+IHtcclxuICBkZXN0cm95JDogU3ViamVjdDxib29sZWFuPiA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XHJcbiAgZGF0YUNoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8R3JvdXBOb2RlW10+KFtdKTtcclxuICAvKipcclxuICAgKiBHZXRzIHRoZSB1cGRhdGVkIHRyZWUgY29udHJvbCBkYXRhXHJcbiAgICogQHR5cGUge0dyb3VwTm9kZVtdfVxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNEYXRhU291cmNlXHJcbiAgICovXHJcbiAgZ2V0IGRhdGEoKTogR3JvdXBOb2RlW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuZGF0YUNoYW5nZT8udmFsdWU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFNldHMgdGhlIGRhdGEgdG8gdHJlZSBjb250cm9sIGFuZCBlbWl0IHRoZSB2YWx1ZSB0byBpbnRpbWF0ZSB0aGUgZGF0YSBjaGFuZ2VcclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzRGF0YVNvdXJjZVxyXG4gICAqL1xyXG4gIHNldCBkYXRhKHZhbHVlOiBHcm91cE5vZGVbXSkge1xyXG4gICAgdGhpcy50cmVlQ29udHJvbC5kYXRhTm9kZXMgPSB2YWx1ZTtcclxuICAgIHRoaXMuZGF0YUNoYW5nZS5uZXh0KHZhbHVlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwcml2YXRlIHRyZWVDb250cm9sOiBGbGF0VHJlZUNvbnRyb2w8R3JvdXBOb2RlPixcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHJpdmF0ZSBkYXRhYmFzZTogR3JvdXBzIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuXHJcbiAgLyoqXHJcbiAgICogSGFuZGxlcyB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSBkYXRhIGJhc2UgYW5kIG1hdCB0cmVlXHJcbiAgICogQHBhcmFtIHtDb2xsZWN0aW9uVmlld2VyfSBjb2xsZWN0aW9uVmlld2VyXHJcbiAgICogQHJldHVybiB7Kn0gIHtPYnNlcnZhYmxlPEdyb3VwTm9kZVtdPn1cclxuICAgKiBAbWVtYmVyb2YgR3JvdXBzRGF0YVNvdXJjZVxyXG4gICAqL1xyXG4gIGNvbm5lY3QoY29sbGVjdGlvblZpZXdlcjogQ29sbGVjdGlvblZpZXdlcik6IE9ic2VydmFibGU8R3JvdXBOb2RlW10+IHtcclxuICAgIHRoaXMudHJlZUNvbnRyb2w/LmV4cGFuc2lvbk1vZGVsPy5jaGFuZ2VkXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgKGNoYW5nZSBhcyBTZWxlY3Rpb25DaGFuZ2U8R3JvdXBOb2RlPikuYWRkZWQgfHxcclxuICAgICAgICAgIChjaGFuZ2UgYXMgU2VsZWN0aW9uQ2hhbmdlPEdyb3VwTm9kZT4pLnJlbW92ZWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMuaGFuZGxlVHJlZUNvbnRyb2woY2hhbmdlIGFzIFNlbGVjdGlvbkNoYW5nZTxHcm91cE5vZGU+KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgcmV0dXJuIG1lcmdlKGNvbGxlY3Rpb25WaWV3ZXI/LnZpZXdDaGFuZ2UsIHRoaXMuZGF0YUNoYW5nZSkucGlwZShcclxuICAgICAgbWFwKCgpID0+IHRoaXMuZGF0YSlcclxuICAgICk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERpc2Nvbm5lY3QgdGhlIGNvbm5lY3Rpb24gd2l0aCBtYXQgdHJlZVxyXG4gICAqIEBwYXJhbSB7Q29sbGVjdGlvblZpZXdlcn0gY29sbGVjdGlvblZpZXdlclxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNEYXRhU291cmNlXHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvbiwgbm8tZW1wdHktZnVuY3Rpb24sIG5vLXVudXNlZC12YXJzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICBkaXNjb25uZWN0KGNvbGxlY3Rpb25WaWV3ZXI6IENvbGxlY3Rpb25WaWV3ZXIpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFkZHMvcmVtb3ZlcyB0aGUgY2hpbGQgbm9kZXMgd2hpbGUgZXhwYW5kcy9jb2xsYXBzZXMgdGhlIHBhcmVudCBub2RlXHJcbiAgICogQHBhcmFtIHtTZWxlY3Rpb25DaGFuZ2U8R3JvdXBOb2RlPn0gY2hhbmdlXHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0RhdGFTb3VyY2VcclxuICAgKi9cclxuICBoYW5kbGVUcmVlQ29udHJvbChjaGFuZ2U6IFNlbGVjdGlvbkNoYW5nZTxHcm91cE5vZGU+KSB7XHJcbiAgICBpZiAoY2hhbmdlPy5hZGRlZCkge1xyXG4gICAgICBjaGFuZ2UuYWRkZWQ/LmZvckVhY2goKG5vZGUpID0+IHRoaXMudG9nZ2xlTm9kZShub2RlLCB0cnVlKSk7XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlPy5yZW1vdmVkKSB7XHJcbiAgICAgIGNoYW5nZS5yZW1vdmVkXHJcbiAgICAgICAgLnNsaWNlKClcclxuICAgICAgICAucmV2ZXJzZSgpXHJcbiAgICAgICAgLmZvckVhY2goKG5vZGUpID0+IHRoaXMudG9nZ2xlTm9kZShub2RlLCBmYWxzZSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVG9nZ2xlIHRoZSBub2RlLCBhZGQvcmVtb3ZlcyB0aGUgbm9kZSBmcm9tIGRpc3BsYXlcclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gY2xpY2tlZE5vZGVcclxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGV4cGFuZFxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIEdyb3Vwc0RhdGFTb3VyY2VcclxuICAgKi9cclxuICB0b2dnbGVOb2RlKGNsaWNrZWROb2RlOiBHcm91cE5vZGUsIGV4cGFuZDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgY2hpbGRyZW4gPSB0aGlzLmRhdGFiYXNlPy5nZXRDaGlsZEdyb3Vwc0luZm8oKTtcclxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5kYXRhPy5pbmRleE9mKGNsaWNrZWROb2RlKTtcclxuICAgIGlmICghY2hpbGRyZW4gfHwgaW5kZXggPCAwKSB7XHJcbiAgICAgIC8vIElmIG5vIGNoaWxkcmVuLCBvciBjYW5ub3QgZmluZCB0aGUgbm9kZSwgbm8gb3BcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChleHBhbmQpIHtcclxuICAgICAgY2xpY2tlZE5vZGUuaXRlbS5ub09mQ2hpbGRyZW4gPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgIGNvbnN0IG5vZGVzID0gY2hpbGRyZW4/Lm1hcChcclxuICAgICAgICAobm9kZSkgPT5cclxuICAgICAgICAgIG5ldyBHcm91cE5vZGUoXHJcbiAgICAgICAgICAgIG5vZGUsXHJcbiAgICAgICAgICAgIGNsaWNrZWROb2RlPy5sZXZlbCArIDEsXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YWJhc2U/LmlzRXhwYW5kYWJsZShub2RlKVxyXG4gICAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmRhdGE/LnNwbGljZShpbmRleCArIDEsIDAsIC4uLm5vZGVzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBjb3VudCA9IDA7XHJcbiAgICAgIGZvciAoXHJcbiAgICAgICAgbGV0IGkgPSBpbmRleCArIDE7XHJcbiAgICAgICAgaSA8IHRoaXMuZGF0YT8ubGVuZ3RoICYmIHRoaXMuZGF0YVtpXT8ubGV2ZWwgPiBjbGlja2VkTm9kZT8ubGV2ZWw7XHJcbiAgICAgICAgaSsrLCBjb3VudCsrIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eVxyXG4gICAgICApIHt9XHJcbiAgICAgIHRoaXMuZGF0YT8uc3BsaWNlKGluZGV4ICsgMSwgY291bnQpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIE5vdGlmeSB0aGUgY2hhbmdlXHJcbiAgICB0aGlzLmRhdGFDaGFuZ2U/Lm5leHQodGhpcy5kYXRhKTtcclxuICB9XHJcbn1cclxuLyoqXHJcbiAqIERpc3BsYXlzIHRoZSBncm91cHMgd2hlcmUgcGFyZW50L2NoaWxkIHJlbGF0aW9uc2hpcHMgYXJlIHJlcHJlc2VudGVkIGluIGEgdHJlZSB2aWV3L2hpZXJhcmNoeS5cclxuICogQGV4cG9ydFxyXG4gKiBAY2xhc3MgVHJlZVZpZXdDb21wb25lbnRcclxuICogQGltcGxlbWVudHMge09uSW5pdH1cclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnaWVlZXNhLXRyZWUnLFxyXG4gIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlLFxyXG4gICAgTWF0VHJlZU1vZHVsZSxcclxuICAgIE1hdEljb25Nb2R1bGUsXHJcbiAgICBNYXRCdXR0b25Nb2R1bGUsXHJcbiAgICBNZW51Q29tcG9uZW50LFxyXG4gICAgSWNvbkJ1dHRvbkNvbXBvbmVudCxcclxuICAgIE1hdFRvb2x0aXBNb2R1bGUsXHJcbiAgICBUZXh0VHJ1bmNhdGVkRGlyZWN0aXZlLFxyXG4gIF0sXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RyZWUtdmlldy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdHJlZS12aWV3LmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyZWVWaWV3Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xyXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgY29uc3RhbnRzOiBhbnkgPSBjb25zdGFudHM7XHJcbiAgYnV0dG9uczogTWVudVtdID0gdGhpcy5jb25zdGFudHM/LnZpZXdHcm91cHM/LmJ1dHRvbnM7XHJcbiAgdHJlZVBhZGRpbmdJbmRlbnQ6IG51bWJlciA9IHRoaXMuY29uc3RhbnRzPy52aWV3R3JvdXBzPy50cmVlUGFkZGluZ0luZGVudDtcclxuICBzZWxlY3RlZEdyb3VwITogR3JvdXBOb2RlO1xyXG4gIHNlbGVjdGVkR3JvdXBBY3Rpb24hOiBNZW51IHwgSWNvbkJ1dHRvbjtcclxuICB0cmVlQ29udHJvbCE6IEZsYXRUcmVlQ29udHJvbDxHcm91cE5vZGU+O1xyXG4gIGRhdGFTb3VyY2UhOiBHcm91cHNEYXRhU291cmNlO1xyXG4gIGRlc3Ryb3kkOiBTdWJqZWN0PGJvb2xlYW4+ID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcclxuICBtYXRUcmVlTm9kZVBhZGRpbmchOiBNYXRUcmVlTm9kZVBhZGRpbmc8R3JvdXBOb2RlPjtcclxuICBwbHVzQ2lyY2xlSWNvbkJ1dHRvbjogSWNvbkJ1dHRvbiA9IHRoaXMuYnV0dG9uc1s0XTtcclxuICBtaW51c0NpcmNsZUljb25CdXR0b246IEljb25CdXR0b24gPSB0aGlzLmJ1dHRvbnNbNV07XHJcbiAgZWRpdEdyb3VwQW5kUGFyZW50R3JvdXBJbmZvITogRWRpdEdyb3VwQW5kUGFyZW50SW5mbztcclxuICBtZW51SXRlbXM6IE1lbnVbXSA9IHRoaXMuYnV0dG9ucz8uZmlsdGVyKFxyXG4gICAgKGUpID0+XHJcbiAgICAgIGUuaWQgIT09IEdyb3VwQWN0aW9uPy5FWFBBTkRfR1JPVVBfVklFVyAmJlxyXG4gICAgICBlLmlkICE9PSBHcm91cEFjdGlvbj8uQ09MTEFQU0VfR1JPVVBfVklFV1xyXG4gICk7XHJcbiAgcHJpdmF0ZSBwYXJlbnRHcm91cHMhOiBHcm91cEluZm9bXTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBwYXJlbnRHcm91cHNJbmZvKHZhbHVlOiBHcm91cEluZm9bXSkge1xyXG4gICAgdGhpcy5wYXJlbnRHcm91cHMgPSB2YWx1ZTtcclxuICAgIGlmICh2YWx1ZSkgdGhpcy5zZXRHcm91cERhdGFTb3VyY2UoKTtcclxuICB9XHJcbiAgZ2V0IHBhcmVudEdyb3Vwc0luZm8oKTogR3JvdXBJbmZvW10ge1xyXG4gICAgcmV0dXJuIHRoaXMucGFyZW50R3JvdXBzO1xyXG4gIH1cclxuICBwcml2YXRlIGNoaWxkR3JvdXBzITogR3JvdXBJbmZvW107XHJcbiAgQElucHV0KClcclxuICBzZXQgY2hpbGRHcm91cHNJbmZvKHZhbHVlOiBHcm91cEluZm9bXSkge1xyXG4gICAgdGhpcy5jaGlsZEdyb3VwcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5sb2FkQ2hpbGRHcm91cHMoKTtcclxuICB9XHJcbiAgZ2V0IGNoaWxkR3JvdXBzSW5mbygpOiBHcm91cEluZm9bXSB7XHJcbiAgICByZXR1cm4gdGhpcy5jaGlsZEdyb3VwcztcclxuICB9XHJcbiAgcHJpdmF0ZSBpc0dyb3VwU2VhcmNoT3JGaWx0ZXIgPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHNldCBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUodmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuaXNHcm91cFNlYXJjaE9yRmlsdGVyID0gdmFsdWU7XHJcbiAgfVxyXG4gIGdldCBpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmUoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0dyb3VwU2VhcmNoT3JGaWx0ZXI7XHJcbiAgfVxyXG4gIHByaXZhdGUgZGVsZXRlZEdyb3VwSWQhOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgQElucHV0KClcclxuICBzZXQgZGVsZXRlZEdyb3VwSWRJbmZvKGlkOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuZGVsZXRlZEdyb3VwSWQgPSBpZDtcclxuICAgIHRoaXMuZGVsZXRlR3JvdXBOb2RlKHRoaXMuZGVsZXRlZEdyb3VwSWQpO1xyXG4gIH1cclxuICBnZXQgZGVsZXRlZEdyb3VwSWRJbmZvKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5kZWxldGVkR3JvdXBJZDtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSB0b2dnbGVHcm91cENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHcm91cEluZm8+KCk7XHJcbiAgQE91dHB1dCgpIGNyZWF0ZUdyb3VwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdyb3VwSW5mbz4oKTtcclxuICBAT3V0cHV0KCkgZWRpdEdyb3VwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEVkaXRHcm91cEFuZFBhcmVudEluZm8+KCk7XHJcbiAgQE91dHB1dCgpIGRlbGV0ZUdyb3VwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPEdyb3VwSW5mbz4oKTtcclxuICBAT3V0cHV0KCkgdmlld1Jvc3RlckNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxHcm91cEluZm8+KCk7XHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzLCBuby1lbXB0eS1mdW5jdGlvblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXHJcbiAgICBwdWJsaWMgZGF0YWJhc2U6IEdyb3VwcyxcclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xyXG4gICAgcHVibGljIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBncm91cHNTZXJ2aWNlOiBHcm91cHNTZXJ2aWNlIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1lbXB0eS1mdW5jdGlvblxyXG4gICkge31cclxuICAvKipcclxuICAgKiBJbml0aWFsaXplcyB0aGUgdHJlZSB2aWV3IGNvbXBvbmVudFxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zZXRHcm91cERhdGFTb3VyY2UoKTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogQXNzaWduIEFSSUEgcm9sZSBmb3IgYWxsIG1hdCB0cmVlIG5vZGVzIGFzIFwicm93XCJcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2U/LmRhdGFDaGFuZ2VcclxuICAgICAgPy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgdHJlZUl0ZW1Ob2RlcyA9XHJcbiAgICAgICAgICB0aGlzLmVsZW1lbnRSZWY/Lm5hdGl2ZUVsZW1lbnQ/LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tyb2xlPXRyZWVpdGVtXScpO1xyXG4gICAgICAgIHRyZWVJdGVtTm9kZXM/LmZvckVhY2goKG5vZGU6IEhUTUxFbGVtZW50KSA9PiAobm9kZS5yb2xlID0gJ3JvdycpKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIEdldHMgdGhlIGxldmVsIG9mIHRoZSBub2RlXHJcbiAgICogQHBhcmFtIHtHcm91cE5vZGV9IG5vZGVcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRMZXZlbCA9IChub2RlOiBHcm91cE5vZGUpID0+IG5vZGU/LmxldmVsO1xyXG5cclxuICAvKipcclxuICAgKiBDaGVja3MgdGhlIG5vZGUgaXMgZXhwYW5kYWJsZSBvciBub3RcclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gbm9kZVxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGlzRXhwYW5kYWJsZSA9IChub2RlOiBHcm91cE5vZGUpID0+IG5vZGU/LmV4cGFuZGFibGU7XHJcblxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiBwYXNzZWQgbm9kZSBoYXMgY2hpbGRyZW4gb3RoZXJ3aXNlIGZhbHNlXHJcbiAgICogQHBhcmFtIHtudW1iZXJ9IGluZGV4XHJcbiAgICogQHBhcmFtIHtHcm91cE5vZGV9IG5vZGVcclxuICAgKiBAcmV0dXJuIHtib29sZWFufVxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGhhc0NoaWxkR3JvdXBzID0gKGluZGV4OiBudW1iZXIsIF9ub2RlRGF0YTogR3JvdXBOb2RlKSA9PlxyXG4gICAgX25vZGVEYXRhLmV4cGFuZGFibGU7XHJcbiAgLyoqXHJcbiAgICogRW1pdHMgdGhlIGdyb3VwIGluZm8gd2hlbiB0aGUgdG9nZ2xlIGdyb3VwIGlzIGNsaWNrZWQgb3IgdG9nZ2xlcyB0aGUgZ3JvdXAgdmlld1xyXG4gICAqIEBwYXJhbSB7R3JvdXBOb2RlfSBncm91cFxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIHZpZXdDaGlsZEdyb3Vwcyhub2RlOiBHcm91cE5vZGUpIHtcclxuICAgIGlmICghbm9kZT8uaXRlbT8uaGFzQ2hpbGRyZW4pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMudHJlZUNvbnRyb2w/LmlzRXhwYW5kZWQobm9kZSkpIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbD8udG9nZ2xlKG5vZGUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLnNldEdyb3VwRnVuY3Rpb25UeXBlKEdyb3VwRnVuY3Rpb25UeXBlLlRPR0dMRSk7XHJcbiAgICAgIHRoaXMudG9nZ2xlR3JvdXBDbGljay5lbWl0KG5vZGU/Lml0ZW0pO1xyXG4gICAgICB0aGlzLnNlbGVjdGVkR3JvdXAgPSBub2RlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBib3ggc2hhZG93IGJhc2VkIG9uIHRoZSBncm91cCB0eXBlIGxlZ2VuZCBjb2xvclxyXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBjb2xvclxyXG4gICAqIEByZXR1cm4geyp9XHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcclxuICBnZXRCb3hTaGFkb3coY29sb3I6IHN0cmluZyk6IGFueSB7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBib3hTaGFkb3c6XHJcbiAgICAgICAgJzBweCAxcHggMHB4IDBweCAjYzljYmQwIGluc2V0LCA2cHggMHB4IDBweCAwcHggJyArIGNvbG9yICsgJyBpbnNldCcsXHJcbiAgICB9O1xyXG4gIH1cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBkYXRhU291cmNlIHdpdGggcGFyZW50IGdyb3VwcyBkYXRhXHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgc2V0R3JvdXBEYXRhU291cmNlKCk6IHZvaWQge1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UgJiZcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmdldEdyb3VwRnVuY3Rpb25UeXBlKCkgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkNSRUFURVxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMucGFyZW50R3JvdXBzSW5mbz8uZm9yRWFjaCgocGFyZW50R3JvdXBOb2RlKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlPy5kYXRhPy5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChub2RlKSA9PiBub2RlPy5pdGVtPy5ncm91cElkID09PSBwYXJlbnRHcm91cE5vZGU/Lmdyb3VwSWRcclxuICAgICAgICAgICkgPT09IC0xXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICBjb25zdCBuZXdHcm91cE5vZGUgPSBuZXcgR3JvdXBOb2RlKFxyXG4gICAgICAgICAgICBwYXJlbnRHcm91cE5vZGUsXHJcbiAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YWJhc2UuaXNFeHBhbmRhYmxlKHBhcmVudEdyb3VwTm9kZSlcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBncm91cE5vZGVzUmVmZXJlbmNlID0gdGhpcy5kYXRhU291cmNlPy5kYXRhO1xyXG4gICAgICAgICAgZ3JvdXBOb2Rlc1JlZmVyZW5jZT8ucHVzaChuZXdHcm91cE5vZGUpO1xyXG4gICAgICAgICAgdGhpcy5kYXRhU291cmNlLmRhdGEgPSBncm91cE5vZGVzUmVmZXJlbmNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0R3JvdXBGdW5jdGlvblR5cGUoKSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuRURJVFxyXG4gICAgKSB7XHJcbiAgICAgIHRoaXMuZWRpdEdyb3VwKHRoaXMucGFyZW50R3JvdXBzSW5mbyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRyZWVDb250cm9sID0gbmV3IEZsYXRUcmVlQ29udHJvbDxHcm91cE5vZGU+KFxyXG4gICAgICAgIHRoaXMuZ2V0TGV2ZWwsXHJcbiAgICAgICAgdGhpcy5pc0V4cGFuZGFibGVcclxuICAgICAgKTtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gbmV3IEdyb3Vwc0RhdGFTb3VyY2UodGhpcy50cmVlQ29udHJvbCwgdGhpcy5kYXRhYmFzZSk7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gdGhpcy5kYXRhYmFzZT8uaW5pdGlhbERhdGEodGhpcy5wYXJlbnRHcm91cHNJbmZvKTtcclxuICAgIH1cclxuICB9XHJcbiAgLyoqXHJcbiAgICogU2V0cyB0aGUgdXBkYXRlZCBub2RlIGluZm9ybWF0aW9uXHJcbiAgICogQHBhcmFtIHtHcm91cEluZm9bXX0gZ3JvdXBzSW5mb1xyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGVkaXRHcm91cChncm91cHNJbmZvOiBHcm91cEluZm9bXSkge1xyXG4gICAgY29uc3QgZ3JvdXBOb2RlUmVmZXJlbmNlID0gdGhpcy5kYXRhU291cmNlPy5kYXRhO1xyXG4gICAgY29uc3QgZWRpdGVkTm9kZSA9IGdyb3Vwc0luZm8/LmZpbmQoXHJcbiAgICAgIChub2RlKSA9PlxyXG4gICAgICAgIG5vZGU/Lmdyb3VwSWQgPT09IHRoaXMuZWRpdEdyb3VwQW5kUGFyZW50R3JvdXBJbmZvPy5ncm91cEluZm8/Lmdyb3VwSWRcclxuICAgICk7XHJcbiAgICBncm91cE5vZGVSZWZlcmVuY2U/LmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgaWYgKFxyXG4gICAgICAgIG5vZGU/Lml0ZW0/Lmdyb3VwSWQgPT09XHJcbiAgICAgICAgdGhpcy5lZGl0R3JvdXBBbmRQYXJlbnRHcm91cEluZm8/Lmdyb3VwSW5mbz8uZ3JvdXBJZFxyXG4gICAgICApIHtcclxuICAgICAgICBjb25zdCBub09mQ2hpbGRyZW5SZWZlcmVuY2UgPSBub2RlLml0ZW0ubm9PZkNoaWxkcmVuO1xyXG4gICAgICAgIG5vZGUuaXRlbSA9IGVkaXRlZE5vZGUgYXMgR3JvdXBJbmZvO1xyXG4gICAgICAgIG5vZGUuaXRlbS5ub09mQ2hpbGRyZW4gPSBub09mQ2hpbGRyZW5SZWZlcmVuY2U7XHJcbiAgICAgICAgbm9kZS5leHBhbmRhYmxlID0gdGhpcy5kYXRhYmFzZS5pc0V4cGFuZGFibGUobm9kZT8uaXRlbSk7XHJcbiAgICAgICAgaWYgKG5vZGUuaXRlbS5oYXNDaGlsZHJlbiAmJiB0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQobm9kZSkpIHtcclxuICAgICAgICAgIHRoaXMudHJlZUNvbnRyb2wudG9nZ2xlKG5vZGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGdyb3VwTm9kZVJlZmVyZW5jZTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTG9hZHMgdGhlIGNoaWxkIGdyb3VwcyBhbmQgdXBkYXRlcyB0aGUgdHJlZSB2aWV3LlxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIGxvYWRDaGlsZEdyb3VwcygpIHtcclxuICAgIHRoaXMuZGF0YWJhc2U/LnNldENoaWxkR3JvdXBzSW5mbyh0aGlzLmNoaWxkR3JvdXBzSW5mbyk7XHJcbiAgICBjb25zdCBncm91cE5vZGVzUmVmZXJlbmNlID0gdGhpcy5kYXRhU291cmNlPy5kYXRhO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0R3JvdXBGdW5jdGlvblR5cGUoKSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuQ1JFQVRFXHJcbiAgICApIHtcclxuICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkR3JvdXA/Lml0ZW0/Lmhhc0NoaWxkcmVuKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZEdyb3VwLml0ZW0uaGFzQ2hpbGRyZW4gPSB0cnVlO1xyXG4gICAgICAgIGNvbnN0IGdyb3VwUGFyZW50Tm9kZSA9IG5ldyBHcm91cE5vZGUoXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXAuaXRlbSxcclxuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cC5sZXZlbCxcclxuICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgICAgIGdyb3VwTm9kZXNSZWZlcmVuY2Uuc3BsaWNlKFxyXG4gICAgICAgICAgZ3JvdXBOb2Rlc1JlZmVyZW5jZS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRHcm91cCksXHJcbiAgICAgICAgICAxLFxyXG4gICAgICAgICAgZ3JvdXBQYXJlbnROb2RlXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnRyZWVDb250cm9sLmV4cGFuZChncm91cFBhcmVudE5vZGUpO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLnRyZWVDb250cm9sLmlzRXhwYW5kZWQodGhpcy5zZWxlY3RlZEdyb3VwKSkge1xyXG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5kYXRhYmFzZS5nZXRDaGlsZEdyb3Vwc0luZm8oKTtcclxuICAgICAgICBjaGlsZHJlbj8uZm9yRWFjaCgoZ3JvdXBOb2RlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZT8uZGF0YT8uZmluZEluZGV4KFxyXG4gICAgICAgICAgICAgIChub2RlKSA9PiBub2RlPy5pdGVtPy5ncm91cElkID09PSBncm91cE5vZGU/Lmdyb3VwSWRcclxuICAgICAgICAgICAgKSA9PT0gLTFcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBjb25zdCBuZXdHcm91cE5vZGUgPSBuZXcgR3JvdXBOb2RlKFxyXG4gICAgICAgICAgICAgIGdyb3VwTm9kZSxcclxuICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkR3JvdXA/LmxldmVsICsgMSxcclxuICAgICAgICAgICAgICB0aGlzLmRhdGFiYXNlPy5pc0V4cGFuZGFibGUoZ3JvdXBOb2RlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBjb25zdCBncm91cE5vZGVzUmVmZXJlbmNlID0gdGhpcy5kYXRhU291cmNlPy5kYXRhO1xyXG4gICAgICAgICAgICBncm91cE5vZGVzUmVmZXJlbmNlLmZvckVhY2goKG5vZGUpID0+IHtcclxuICAgICAgICAgICAgICBpZiAobm9kZS5pdGVtLmdyb3VwSWQgPT09IHRoaXMuc2VsZWN0ZWRHcm91cC5pdGVtLmdyb3VwSWQpIHtcclxuICAgICAgICAgICAgICAgIG5vZGUuaXRlbS5ub09mQ2hpbGRyZW4gPSBjaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZ3JvdXBOb2Rlc1JlZmVyZW5jZS5zcGxpY2UoXHJcbiAgICAgICAgICAgICAgZ3JvdXBOb2Rlc1JlZmVyZW5jZS5pbmRleE9mKHRoaXMuc2VsZWN0ZWRHcm91cCkgKyAxLFxyXG4gICAgICAgICAgICAgIDAsXHJcbiAgICAgICAgICAgICAgbmV3R3JvdXBOb2RlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0YVNvdXJjZS5kYXRhID0gZ3JvdXBOb2Rlc1JlZmVyZW5jZTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChcclxuICAgICAgdGhpcy5ncm91cHNTZXJ2aWNlLmdldEdyb3VwRnVuY3Rpb25UeXBlKCkgPT09IEdyb3VwRnVuY3Rpb25UeXBlLkVESVRcclxuICAgICkge1xyXG4gICAgICB0aGlzLmVkaXRHcm91cCh0aGlzLmNoaWxkR3JvdXBzSW5mbyk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICB0aGlzLmdyb3Vwc1NlcnZpY2UuZ2V0R3JvdXBGdW5jdGlvblR5cGUoKSA9PT0gR3JvdXBGdW5jdGlvblR5cGUuVE9HR0xFXHJcbiAgICApIHtcclxuICAgICAgdGhpcy50cmVlQ29udHJvbD8udG9nZ2xlKHRoaXMuc2VsZWN0ZWRHcm91cCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIERlbGV0ZXMgdGhlIHNlbGVjdGVkIGdyb3VwIGFuZCB1cGRhdGVzIHRoZSB0cmVlIHZpZXcuXHJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRlbGV0ZWRHcm91cElkXHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZGVsZXRlR3JvdXBOb2RlKGRlbGV0ZWRHcm91cElkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnRyZWVDb250cm9sICYmIGRlbGV0ZWRHcm91cElkKSB7XHJcbiAgICAgIGNvbnN0IGRlbGV0ZWRHcm91cEluZGV4ID0gdGhpcy5kYXRhU291cmNlLmRhdGEuZmluZEluZGV4KFxyXG4gICAgICAgIChub2RlKSA9PiBub2RlLml0ZW0uZ3JvdXBJZCA9PT0gZGVsZXRlZEdyb3VwSWRcclxuICAgICAgKTtcclxuICAgICAgY29uc3QgZGVsZXRlZEdyb3VwID0gdGhpcy5kYXRhU291cmNlLmRhdGEuYXQoZGVsZXRlZEdyb3VwSW5kZXgpO1xyXG4gICAgICBjb25zdCBkYXRhU291cmNlUmVmZXJlbmNlID0gdGhpcy5kYXRhU291cmNlLmRhdGE7XHJcbiAgICAgIGlmIChkZWxldGVkR3JvdXBJbmRleCkge1xyXG4gICAgICAgIGlmIChkZWxldGVkR3JvdXA/Lml0ZW0uZ3JvdXBQYXJlbnRJZCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29uc3QgZGVsZXRlZFBhcmVudEdyb3VwSW5kZXggPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5maW5kSW5kZXgoXHJcbiAgICAgICAgICAgIChub2RlKSA9PiBub2RlLml0ZW0uZ3JvdXBJZCA9PT0gZGVsZXRlZEdyb3VwPy5pdGVtLmdyb3VwUGFyZW50SWRcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBjb25zdCBkZWxldGVkUGFyZW50R3JvdXAgPSB0aGlzLmRhdGFTb3VyY2UuZGF0YS5hdChcclxuICAgICAgICAgICAgZGVsZXRlZFBhcmVudEdyb3VwSW5kZXhcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICBpZiAoZGVsZXRlZFBhcmVudEdyb3VwICYmIGRlbGV0ZWRQYXJlbnRHcm91cC5pdGVtLm5vT2ZDaGlsZHJlbikge1xyXG4gICAgICAgICAgICBkZWxldGVkUGFyZW50R3JvdXAuaXRlbS5ub09mQ2hpbGRyZW4gPVxyXG4gICAgICAgICAgICAgIGRlbGV0ZWRQYXJlbnRHcm91cC5pdGVtLm5vT2ZDaGlsZHJlbiAtIDE7XHJcbiAgICAgICAgICAgIGlmIChkZWxldGVkUGFyZW50R3JvdXAuaXRlbS5ub09mQ2hpbGRyZW4gPT09IDApIHtcclxuICAgICAgICAgICAgICBkZWxldGVkUGFyZW50R3JvdXAuaXRlbS5oYXNDaGlsZHJlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIGNvbnN0IG5ld05vZGUgPSBuZXcgR3JvdXBOb2RlKFxyXG4gICAgICAgICAgICAgICAgZGVsZXRlZFBhcmVudEdyb3VwLml0ZW0sXHJcbiAgICAgICAgICAgICAgICBkZWxldGVkUGFyZW50R3JvdXAubGV2ZWwsXHJcbiAgICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgZGF0YVNvdXJjZVJlZmVyZW5jZS5zcGxpY2UoZGVsZXRlZEdyb3VwSW5kZXggLSAxLCAyLCBuZXdOb2RlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBkYXRhU291cmNlUmVmZXJlbmNlLnNwbGljZShkZWxldGVkR3JvdXBJbmRleCwgMSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZGF0YVNvdXJjZVJlZmVyZW5jZS5zcGxpY2UoZGVsZXRlZEdyb3VwSW5kZXgsIDEpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICB0aGlzLmRhdGFTb3VyY2UuZGF0YSA9IGRhdGFTb3VyY2VSZWZlcmVuY2U7XHJcbiAgICAgIHRoaXMuZGVsZXRlZEdyb3VwSWQgPSB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXRzIHRoZSBzZWxlY3RlZCBtZW51IGdyb3VwIGFjdGlvblxyXG4gICAqIEBwYXJhbSB7TWVudX0gbWVudVxyXG4gICAqIEBtZW1iZXJvZiBUcmVlVmlld0NvbXBvbmVudFxyXG4gICAqL1xyXG4gIG9uR3JvdXBBY3Rpb25zQ2xpY2sobWVudTogTWVudSB8IEljb25CdXR0b24pOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbiA9IG1lbnU7XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIENoYW5nZXMgdGhlIGV4cGFuZC9jb2xsYXBzZSBpY29uIGJhc2VkIG9uIHRoZSB0b2dnbGVcclxuICAgKiBAcGFyYW0ge0dyb3VwTm9kZX0gZ3JvdXBcclxuICAgKiBAcmV0dXJuIHsqfSAgeyp9XHJcbiAgICogQG1lbWJlcm9mIFRyZWVWaWV3Q29tcG9uZW50XHJcbiAgICovXHJcbiAgZ2V0VG9nZ2xlQnV0dG9uSW5mbyhncm91cDogR3JvdXBOb2RlKTogSWNvbkJ1dHRvbiB7XHJcbiAgICBpZiAodGhpcy50cmVlQ29udHJvbD8uaXNFeHBhbmRlZChncm91cCkpIHJldHVybiB0aGlzLm1pbnVzQ2lyY2xlSWNvbkJ1dHRvbjtcclxuICAgIHJldHVybiB0aGlzLnBsdXNDaXJjbGVJY29uQnV0dG9uO1xyXG4gIH1cclxuICAvKipcclxuICAgKiBIYW5kbGVzIHRoZSBlbWl0dGVkIGdyb3VwIGFjdGlvbnMgZXZlbnRcclxuICAgKiBAcGFyYW0ge0dyb3VwSW5mb30gZ3JvdXBcclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBoYW5kbGVHcm91cEFjdGlvbnMoZ3JvdXA6IEdyb3VwTm9kZSk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbj8uaWQgPT09IEdyb3VwQWN0aW9uLlZJRVdfUk9TVEVSKSB7XHJcbiAgICAgIHRoaXMudmlld1Jvc3RlckNsaWNrLmVtaXQoZ3JvdXA/Lml0ZW0pO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkR3JvdXBBY3Rpb24/LmlkID09PSBHcm91cEFjdGlvbi5DUkVBVEVfU1VCX0dST1VQKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWRHcm91cCA9IGdyb3VwO1xyXG4gICAgICB0aGlzLmNyZWF0ZUdyb3VwQ2xpY2suZW1pdChncm91cD8uaXRlbSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbj8uaWQgPT09IEdyb3VwQWN0aW9uLkVESVRfR1JPVVApIHtcclxuICAgICAgY29uc3QgZWRpdEdyb3VwUGFyZW50SW5mbyA9IHRoaXMuZGF0YVNvdXJjZT8uZGF0YT8uZmlsdGVyKFxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbT8uaXRlbT8uZ3JvdXBJZCA9PT0gZ3JvdXA/Lml0ZW0/Lmdyb3VwUGFyZW50SWRcclxuICAgICAgKVswXT8uaXRlbTtcclxuICAgICAgdGhpcy5lZGl0R3JvdXBBbmRQYXJlbnRHcm91cEluZm8gPSB7XHJcbiAgICAgICAgZ3JvdXBJbmZvOiBncm91cD8uaXRlbSxcclxuICAgICAgICBwYXJlbnRHcm91cEluZm86IGVkaXRHcm91cFBhcmVudEluZm8sXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuZWRpdEdyb3VwQ2xpY2suZW1pdCh0aGlzLmVkaXRHcm91cEFuZFBhcmVudEdyb3VwSW5mbyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWRHcm91cEFjdGlvbj8uaWQgPT09IEdyb3VwQWN0aW9uLkRFTEVURV9HUk9VUCkge1xyXG4gICAgICB0aGlzLmRlbGV0ZUdyb3VwQ2xpY2suZW1pdChncm91cD8uaXRlbSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qKlxyXG4gICAqIFJldHVybnMgdGhlIGZpbHRlcmVkIG1lbnUgaXRlbXMgYmFzZWQgb24gZ3JvdXBzIGhhc0NoaWxkcmVuLlxyXG4gICAqIEBwYXJhbSB7R3JvdXBOb2RlfSBncm91cFxyXG4gICAqIEByZXR1cm4ge01lbnVbXX1cclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICBnZXRGaWx0ZXJlZEdyb3VwQWN0aW9ucyhncm91cDogR3JvdXBOb2RlKTogTWVudVtdIHtcclxuICAgIGNvbnN0IGZpbHRlcmVkTWVudTogTWVudVtdID0gW107XHJcbiAgICB0aGlzLm1lbnVJdGVtcz8uZm9yRWFjaCgoZSkgPT4ge1xyXG4gICAgICBlLmlzVG9vbFRpcE5lZWRlZCA9IGZhbHNlO1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgZT8uaWQgPT09IEdyb3VwQWN0aW9uLlZJRVdfUk9TVEVSIHx8XHJcbiAgICAgICAgZT8uaWQgPT09IEdyb3VwQWN0aW9uLkVESVRfR1JPVVAgfHxcclxuICAgICAgICAoZT8uaWQgPT09IEdyb3VwQWN0aW9uLkRFTEVURV9HUk9VUCAmJiAhZ3JvdXA/Lml0ZW0/Lmhhc0NoaWxkcmVuKSB8fFxyXG4gICAgICAgIChlPy5pZCA9PT0gR3JvdXBBY3Rpb24uQ1JFQVRFX1NVQl9HUk9VUCAmJlxyXG4gICAgICAgICAgZ3JvdXA/Lml0ZW0/Lmdyb3VwVHlwZUluZm8/LmJ1c2luZXNzUnVsZT8uYWxsb3dTdWJHcm91cClcclxuICAgICAgKSB7XHJcbiAgICAgICAgZmlsdGVyZWRNZW51LnB1c2goZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGZpbHRlcmVkTWVudTtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogVGFrZXMgdGhlIGluZGV4IGFuZCB0aGUgaWNvbiBidXR0b24gYXMgYXJndW1lbnRzIGFuZCBuZWVkcyB0byByZXR1cm4gdGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGljb24gYnV0dG9uLlxyXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleFxyXG4gICAqIEBwYXJhbSB7SWNvbkJ1dHRvbn0gaWNvbkJ1dHRvblxyXG4gICAqIEByZXR1cm4ge251bWJlcn1cclxuICAgKiBAbWVtYmVyb2YgVHJlZVZpZXdDb21wb25lbnRcclxuICAgKi9cclxuICB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaWNvbkJ1dHRvbjogSWNvbkJ1dHRvbik6IG51bWJlciB7XHJcbiAgICByZXR1cm4gaWNvbkJ1dHRvbi5pZDtcclxuICB9XHJcbiAgLyoqXHJcbiAgICogTmdPbkRlc3Ryb3kgcGVyZm9ybXMgbmVjZXNzYXJ5IGNsZWFudXAgdGFza3MsIHN1Y2ggYXMgdW5zdWJzY3JpYmluZyBmcm9tIHN1YnNjcmlwdGlvbiB3aGVuIHRoZSBjb21wb25lbnQgaXMgYmVpbmcgZGVzdHJveWVkLlxyXG4gICAqIEBtZW1iZXJvZiBHcm91cHNDb21wb25lbnRcclxuICAgKi9cclxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcclxuICAgIHRoaXMuZGVzdHJveSQubmV4dCh0cnVlKTtcclxuICAgIHRoaXMuZGVzdHJveSQudW5zdWJzY3JpYmUoKTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImllZWVzYS10cmVlXCI+XHJcbiAgPG1hdC10cmVlXHJcbiAgICBbZGF0YVNvdXJjZV09XCJkYXRhU291cmNlXCJcclxuICAgIFt0cmVlQ29udHJvbF09XCJ0cmVlQ29udHJvbFwiXHJcbiAgICBjbGFzcz1cImllZWVzYS10cmVlX19yb290XCJcclxuICAgICNyb290U2VsZWN0b3JcclxuICAgIHJvbGU9XCJ0cmVlZ3JpZFwiXHJcbiAgPlxyXG4gICAgPG1hdC10cmVlLW5vZGVcclxuICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGVcIlxyXG4gICAgICBtYXRUcmVlTm9kZVBhZGRpbmdcclxuICAgICAgW21hdFRyZWVOb2RlUGFkZGluZ0luZGVudF09XCJ0cmVlUGFkZGluZ0luZGVudFwiXHJcbiAgICAgIGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTZcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtdHJlZV9fbm9kZSB3LTEwMCBkLWZsZXggZ2FwLWxnLTMgbXktMCBnYXAtMCBnYXAtc20tMCBnYXAtbWQtMlwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0Qm94U2hhZG93KG5vZGU/Lml0ZW0/Lmdyb3VwVHlwZUluZm8/LmxlZ2VuZENvbG9yKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBbbmdDbGFzc109XCJcclxuICAgICAgICAgICAgIWlzR3JvdXBTZWFyY2hPckZpbHRlckFjdGl2ZSA/ICdpZWVlc2EtdHJlZV9fY29sbGFwc2UtaWNvbicgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICAgIHJvbGU9XCJncmlkY2VsbFwiXHJcbiAgICAgICAgPjwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgIGllZWVzYUdyb3VwTm9kZU91dGxldDtcclxuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgPG1hdC10cmVlLW5vZGVcclxuICAgICAgKm1hdFRyZWVOb2RlRGVmPVwibGV0IG5vZGU7IHdoZW46IGhhc0NoaWxkR3JvdXBzXCJcclxuICAgICAgbWF0VHJlZU5vZGVQYWRkaW5nXHJcbiAgICAgIFttYXRUcmVlTm9kZVBhZGRpbmdJbmRlbnRdPVwidHJlZVBhZGRpbmdJbmRlbnRcIlxyXG4gICAgICBjbGFzcz1cImllZWVzYS1ib2R5LW1kLTE2IGllZWVzYS10cmVlX19wYXJlbnQtbm9kZS13cmFwcGVyXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIFtuZ0NsYXNzXT1cIlxyXG4gICAgICAgICAgdHJlZUNvbnRyb2wuaXNFeHBhbmRlZChub2RlKVxyXG4gICAgICAgICAgICA/ICdpZWVlc2EtdHJlZV9fcm9vdC1ub2RlLXdoaXRlLWJnJ1xyXG4gICAgICAgICAgICA6ICdpZWVlc2EtdHJlZV9fcm9vdC1ub2RlJ1xyXG4gICAgICAgIFwiXHJcbiAgICAgICAgY2xhc3M9XCJpZWVlc2EtdHJlZV9fbm9kZSB3LTEwMCBkLWZsZXggZ2FwLWxnLTMgbXktMCBnYXAtMCBnYXAtc20tMCBnYXAtbWQtMlwiXHJcbiAgICAgICAgW25nU3R5bGVdPVwiZ2V0Qm94U2hhZG93KG5vZGU/Lml0ZW0/Lmdyb3VwVHlwZUluZm8/LmxlZ2VuZENvbG9yKVwiXHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IHJvbGU9XCJncmlkY2VsbFwiPlxyXG4gICAgICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIiFpc0dyb3VwU2VhcmNoT3JGaWx0ZXJBY3RpdmVcIlxyXG4gICAgICAgICAgICAoaWNvbkJ1dHRvbkNsaWNrKT1cInZpZXdDaGlsZEdyb3Vwcyhub2RlKVwiXHJcbiAgICAgICAgICAgIFtpY29uQnV0dG9uXT1cImdldFRvZ2dsZUJ1dHRvbkluZm8obm9kZSlcIlxyXG4gICAgICAgICAgPjwvaWVlZXNhLWljb24tYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgIGllZWVzYUdyb3VwTm9kZU91dGxldDtcclxuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+PC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9tYXQtdHJlZS1ub2RlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNpZWVlc2FHcm91cE5vZGVPdXRsZXQgbGV0LW5vZGU+XHJcbiAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImllZWVzYUdyb3VwSW5mb091dGxldDsgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVwiXHJcbiAgICAgID48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZC1mbGV4IGQtbm9uZSBnYXAtMyBkLXNtLWZsZXggZC1tZC1mbGV4IGQtbGctZmxleCBpZWVlc2EtdHJlZV9fZ3JvdXAtYWN0aW9uc1wiXHJcbiAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXHJcbiAgICAgICAgICAgIGllZWVzYUdyb3VwQWN0aW9uc091dGxldDtcclxuICAgICAgICAgICAgY29udGV4dDogeyAkaW1wbGljaXQ6IG5vZGUgfVxyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8aWVlZXNhLW1lbnVcclxuICAgICAgICBbbWVudUl0ZW1zXT1cImdldEZpbHRlcmVkR3JvdXBBY3Rpb25zKG5vZGUpXCJcclxuICAgICAgICAobWVudUl0ZW1DbGljayk9XCJvbkdyb3VwQWN0aW9uc0NsaWNrKCRldmVudCk7IGhhbmRsZUdyb3VwQWN0aW9ucyhub2RlKVwiXHJcbiAgICAgICAgY2xhc3M9XCJkLWxnLW5vbmUgZC1tZC1ub25lIGQtc20tbm9uZVwiXHJcbiAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcclxuICAgICAgPjwvaWVlZXNhLW1lbnU+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlICNpZWVlc2FHcm91cEluZm9PdXRsZXQgbGV0LW5vZGU+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJpZWVlc2EtdHJlZV9fZ3JvdXAtaW5mby13cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3M9XCJpZWVlc2EtdHJlZV9fZ3JvdXAtaW5mbyBkLWZsZXggZmxleC1jb2x1bW4gZmxleC1zbS1jb2x1bW4gZmxleC1tZC1jb2x1bW4gZmxleC1sZy1yb3cgYWxpZ24taXRlbXMtc3RhcnQgYWxpZ24taXRlbXMtc20tYmFzZWxpbmUgYWxpZ24taXRlbXMtbWQtYmFzZWxpbmUgYWxpZ24taXRlbXMtbGctYmFzZWxpbmUgZ2FwLTIgbWItMVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBcclxuICAgICAgICAgICAgY2xhc3M9XCJpZWVlc2EtdHJlZV9fbm9kZS1ncm91cC1uYW1lIGllZWVzYS1oZWFkbGluZS1zbS0yNlwiXHJcbiAgICAgICAgICAgIFttYXRUb29sdGlwXT1cIm5vZGU/Lml0ZW0/Lmdyb3VwTmFtZVwiXHJcbiAgICAgICAgICAgIGllZWVzYVRleHRUcnVuY2F0ZWRcclxuICAgICAgICAgICAgcm9sZT1cImdyaWRjZWxsXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3sgbm9kZT8uaXRlbT8uZ3JvdXBOYW1lIH19XHJcbiAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICA8cFxyXG4gICAgICAgICAgICBjbGFzcz1cImllZWVzYS10cmVlX19ub2RlLWdyb3VwLWFjcm9ueW0gaWVlZXNhLXRpdGxlLWxnLTI0XCJcclxuICAgICAgICAgICAgW21hdFRvb2x0aXBdPVwibm9kZT8uaXRlbT8uZ3JvdXBBY3JvbnltXCJcclxuICAgICAgICAgICAgaWVlZXNhVGV4dFRydW5jYXRlZFxyXG4gICAgICAgICAgICByb2xlPVwiZ3JpZGNlbGxcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7eyBub2RlPy5pdGVtPy5ncm91cEFjcm9ueW0gfX1cclxuICAgICAgICAgIDwvcD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWVlZXNhLWJvZHktbWQtMTYgaWVlZXNhLXRyZWVfX25vZGUtZ3JvdXAtZGVzY1wiPlxyXG4gICAgICAgICAge3sgbm9kZT8uaXRlbT8uZ3JvdXBUeXBlSW5mbz8ubmFtZSB9fVxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI2llZWVzYUdyb3VwQWN0aW9uc091dGxldCBsZXQtbm9kZT5cclxuICAgICAgPGllZWVzYS1pY29uLWJ1dHRvblxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGdldEZpbHRlcmVkR3JvdXBBY3Rpb25zKG5vZGUpOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxyXG4gICAgICAgIFtpY29uQnV0dG9uXT1cIml0ZW1cIlxyXG4gICAgICAgIChpY29uQnV0dG9uQ2xpY2spPVwiXHJcbiAgICAgICAgICBvbkdyb3VwQWN0aW9uc0NsaWNrKCRldmVudCk7IGhhbmRsZUdyb3VwQWN0aW9ucyhub2RlKVxyXG4gICAgICAgIFwiXHJcbiAgICAgID5cclxuICAgICAgPC9pZWVlc2EtaWNvbi1idXR0b24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbWF0LXRyZWU+XHJcbjwvZGl2PlxyXG4iXX0=
|